Facebook通过10亿单词构建有效的神经网络语言模型

简介:

由于在语言识别、机器翻译和语言建模等领域表现出了优异的性能,为序列预测而设计的神经网络最近再次引起了人们的兴趣,但是这些模型都是计算密集型的,成本非常高。比如在语言建模领域,最新的成果依然需要在大规模GPU集群上训练几周的时间,虽然效果不错,但是这些计算密集型的实践对大规模计算基础设施的依赖性非常强,这限制了其在学术和生产环境中的研究速度与应用。

针对这一计算瓶颈,Facebook AI 研究院(FAIR)设计了一个新的、几乎是为GPU量身定制的softmax函数,能够非常有效地通过大规模词库训练神经网络语言模型。该函数名为自适应softmax,它能根据不均衡的单词分布构建集群,使计算复杂度最小化,避免了对词库大小的线性依赖。同时能够在训练和测试阶段充分利用现代架构的特点和多维向量运算进一步降低计算消耗。与分层softmax、NCE以及重要性抽样等之前的、大部分为标准CPU设计的方法相比,该方法更适合GPU。

此外,FAIR还开发并开源了一个名为torch-rnnlib 的类库,该类库允许研究者设计新的递归模型,并以最小的努力在GPU上测试这些原型。最近Edouard Grave、Justin Chiu 和Armand Joulin在Facebook的网站上发表了一篇文章,介绍了用户如何通过该类库设计新的递归网络。

使用torch-rnnlib构建递归模型

1. 什么是语言建模?

语言建模就是通过给定词典中的单词序列学习其概率分布,根据单词过去的概率计算其条件分布。T个单词序列(w1,..., w[T])的概率可以表示为: 
P(w1,..., w[T])) = P(w[T]|w[T-1],..., w1)...P(w1) 
该问题通常通过非参数化的计数统计模型来解决,但是目前基于递归神经网络的参数化模型已经被广泛应用于语言建模。

2. 如何使用Torch-rnnlib构建标准模型

Torch-rnnlib为递归神经网络的构建提供了三种不同的接口: 
1). nn.{RNN, LSTM, GRU} 接口,用于构建所有层具有相同数量隐藏单元的递归网络。

20161128113515866.png

  2). rnnlib.recurrentnetwork接口,用于构建任意形状的递归网络。

20161128113515292.png

3). nn.SequenceTable 接口,用于将各种计算有效地链接到一起。nn.RecurrentTable 构造器仅是一个轻量级的包装器,它会随着时间的迁移克隆递归模块。要注意的是,这是最底层的接口,必须调用rnnlib.setupRecurrent(model, initializationfunctions) 设置递归隐藏状态行为。

20161128113515667.png

  3. 构建自己的递归模型

可以通过定义cell函数或者cell状态初始化函数来创建自己的模型。下面的代码展示了如何从零开始构建一个RNN:

20161128113515253.png

  4. 在GPU上训练torch-rnnlib

因为torch-rnnlib遵循nn模块接口,所以调用模型的:cuda()方法就能将其拉到GPU上执行。rnnlib的目的就是让用户能够灵活地创建新的cell函数或者使用快基线。

此外,无论使用前面提到的第一个还是第二个接口构建递归网络,都能非常容易地使用cudnn来加速网络。对于第一个接口,通过usecudnn = true来调用构造函数:

20161128113516796.png

对于第二个接口,将rnnlib.makeRecurrent替换成rnnlib.makeCudnnRecurrent,然后将cell函数修改为cudnn接口中的cellstring。例如:

20161128113516923.png

这样模型的递归部分通常会有至少两倍的速度提升。但是这并不是说整个模型会提速至少两倍,特别是当主要计算工作并不在递归部分的时候,此时提升会更小一些。

20161128113516703.png

图:torch-rnnlib及其他torch类库随着隐藏层数量的增加其运行时间的折线图

5. 自适应Softmax

在处理语言模型等大规模输出空间的时候,分类器可能是模型的计算瓶颈。过去提出的很多解决方案通常都是针对标准CPU而设计的,很少充分利用GPU所特有的能力。

Facebook开发的、新的自适应softmax能够根据数据的分布情况调配计算资源。它能通过加快常用类的访问速度,提供更多计算资源,来实现更好近似值和更快运行时间之间的平衡。更确切地说,它实现了一种k-way 分层softmax,能够根据GPU的架构,通过动态规划算法实现计算资源的有效分配。为了进一步降低分类器的计算负担,自适应softmax还使用了一些技巧:使用浅树(shallow trees)避免顺序计算;为每个集群设置类数量的最小值,避免浪费GPU的并行计算能力。

正如图表1所展示的那样,自适应softmax的性能与完整softmax的性能几乎不相上下,但是训练时间非常短。

20161128113516157.jpg

  图表1:基于Text8的性能。 ppl越低越好。

20161128113516555.png

  图:不同softmax近似函数语言模型的收敛性。该数据基于LSTM。

测试结果

Facebook两个模型的参数配置如下:小模型使用了有2048个单元的单层LSTM,大模型使用了每层有2048个神经元的双层LSTM。训练模型使用Adagrad,权重调整使用L2。批处理大小为128,反向传播窗口大小为20。

20161128113516205.jpg

  图表2:基于10亿单词进行训练后的模型复杂度(越低越好)的比较。

如图表2所示,小模型经过几天的训练复杂度达到了43.9,大模型经过6天的时间复杂度达到了39.8。目前最佳复杂度是由Jozefowicz et al.在2016年实现的30.0,但是Jozefowicz et al.达到这一数值使用了32颗GPU,花了3周多的时间;而Facebook仅用1颗GPU花了几天时间。

本文转自d1net(转载)

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
目录
相关文章
|
9天前
|
安全 网络安全 数据安全/隐私保护
网络堡垒的构建者:洞悉网络安全与信息安全的深层策略
【4月更文挑战第9天】在数字化时代,数据成为了新的价值核心。然而,随之而来的是日益复杂的网络安全威胁。从漏洞利用到信息泄露,从服务中断到身份盗用,攻击手段不断演变。本文深入剖析了网络安全的关键组成部分:识别和防范安全漏洞、加密技术的应用以及提升个体和企业的安全意识。通过探讨这些领域的最佳实践和最新动态,旨在为读者提供一套全面的策略工具箱,以强化他们在数字世界的防御能力。
|
26天前
|
存储 安全 网络安全
云计算与网络安全:构建数字化时代的坚固防线
在当今数字化时代,云计算和网络安全已经成为企业和个人信息安全的重要保障。本文探讨了云服务、网络安全以及信息安全等技术领域的相关议题,旨在帮助读者深入了解这些关键领域的发展和挑战,以构建更加坚固的数字化防线。
12 2
|
27天前
|
存储 安全 网络安全
云计算与网络安全:构建数字化安全堡垒
在当今数字化时代,云计算技术的快速发展为企业提供了更便捷高效的信息化解决方案,然而,随之而来的网络安全隐患也备受关注。本文将探讨云计算与网络安全的紧密关系,分析云服务、网络安全、信息安全等技术领域的发展现状,以及如何通过有效的策略和技术手段构建数字化安全堡垒,确保信息安全与数据隐私。
12 1
|
25天前
|
SQL 安全 网络安全
网络堡垒的构建者:深入网络安全与信息安全的核心
在数字化时代,每一次点击、每一条信息的传递都可能成为安全威胁的载体。本文将探讨网络安全漏洞的本质,加密技术的进展以及提升个人和企业的安全意识的重要性。我们将深入分析如何通过技术手段和教育措施,构筑起防御网络攻击的坚固防线,确保信息传输的安全性和隐私保护。
|
3天前
|
数据采集 API 数据安全/隐私保护
畅游网络:构建C++网络爬虫的指南
本文介绍如何使用C++和cpprestsdk库构建高效网络爬虫,以抓取知乎热点信息。通过亿牛云爬虫代理服务解决IP限制问题,利用多线程提升数据采集速度。示例代码展示如何配置代理、发送HTTP请求及处理响应,实现多线程抓取。注意替换有效代理服务器参数,并处理异常。
畅游网络:构建C++网络爬虫的指南
|
11天前
|
机器学习/深度学习 人工智能 运维
构建未来:AI驱动的自适应网络安全防御系统
【4月更文挑战第7天】 在数字时代的浪潮中,网络安全已成为维系信息完整性、保障用户隐私和确保商业连续性的关键。传统的安全防御策略,受限于其静态性质和对新型威胁的响应迟缓,已难以满足日益增长的安全需求。本文将探讨如何利用人工智能(AI)技术打造一个自适应的网络安全防御系统,该系统能够实时分析网络流量,自动识别并响应未知威胁,从而提供更为强大和灵活的保护机制。通过深入剖析AI算法的核心原理及其在网络安全中的应用,我们将展望一个由AI赋能的、更加智能和安全的网络环境。
25 0
|
24天前
|
机器学习/深度学习 自然语言处理 PyTorch
【PyTorch实战演练】基于全连接网络构建RNN并生成人名
【PyTorch实战演练】基于全连接网络构建RNN并生成人名
23 0
|
27天前
|
安全 算法 网络安全
数字堡垒的构建者:网络安全与信息安全的深度剖析
【2月更文挑战第31天】 在数字化时代,数据成为了新的石油,但随之而来的是网络安全威胁的日益增加。本文将深入探讨网络安全漏洞的本质,加密技术的进展以及提升个人和企业的安全意识的重要性。通过对当前网络攻击手段的分析,我们将了解如何通过多层次防御策略来保护信息资产。同时,文章还将介绍最新的加密技术,如量子加密和区块链技术,它们如何为数据传输提供更坚固的保障。最后,强调培养良好的安全习惯对于打造稳固的网络安全防线至关重要。
12 0
|
27天前
|
弹性计算 网络协议 关系型数据库
网络技术基础阿里云实验——企业级云上网络构建实践
实验地址:<https://developer.aliyun.com/adc/scenario/65e54c7876324bbe9e1fb18665719179> 本文档指导在阿里云上构建跨地域的网络环境,涉及杭州和北京两个地域。任务包括创建VPC、交换机、ECS实例,配置VPC对等连接,以及设置安全组和网络ACL规则以实现特定服务间的互访。例如,允许北京的研发服务器ECS-DEV访问杭州的文件服务器ECS-FS的SSH服务,ECS-FS访问ECS-WEB01的SSH服务,ECS-WEB01访问ECS-DB01的MySQL服务,并确保ECS-WEB03对外提供HTTP服务。
|
28天前
|
Cloud Native 安全 网络安全
构建未来:云原生架构在企业数字化转型中的关键角色网络安全与信息安全:防御前线的关键技术
【2月更文挑战第30天】 随着数字转型的浪潮席卷各行各业,企业正寻求更加灵活、可扩展的解决方案以适应不断变化的市场需求。本文将深入探讨云原生架构如何成为支持这一转型的核心技术,分析其优势和挑战,并提出实施策略。云原生技术的采用不仅加速了开发过程,还提供了自动化运维、弹性伸缩等特性,为企业带来了前所未有的敏捷性和效率。然而,迁移至云原生架构也伴随着技术复杂性增加和安全风险的挑战。文章最后,我们将提供一系列最佳实践,帮助企业在采纳云原生技术的过程中规避风险,实现持续创新。 【2月更文挑战第30天】 在数字化时代,数据成为核心资产,而网络安全与信息安全则是维护这些资产不可或缺的屏障。本文深入探讨了

热门文章

最新文章