快捷搜索:

您的位置:环球彩票登陆 > 环球彩票登陆 > 年度大盘点:机器学习开源项目及框架环球彩票

年度大盘点:机器学习开源项目及框架环球彩票

发布时间:2019-12-08 04:03编辑:环球彩票登陆浏览(129)

    推荐一:Pytext—Facebook AI 的工业级 NLP 开源框架

    PyTorch 1.0引入了一组编译工具Torch.jit,这将弥补生产和研究之间的差距。Torch.jit中包含Python中的Torch Script语言,在PyTorch 1.0中,我们可以使用图形模式构建模型,这在开发高性能和低延迟的应用程序中非常有用。

    此外,代码库的一部分利用tensorflow-cpu执行TFRecords的数据加载以进行BERT训练。

    Jax 结合了Autograd和XLA,基于XLA在GPU和TPU上编译和运行 NumPy程序,实现了硬件加速,同样的数学运算,用JAX版的numpy可以加快30-40倍。Jax还可对包含多个numpy运算的函数通过jax.jit()进行 JIT(just-in-time) 编译,进一步加快运算速度。jax.grad()支持自动微分,为反向传播(backpropagation)训练模型提供了基础。推荐三:Reaver—星际争霸II深度强化学习代理

    DeOldify

    2.最快的BERT推理速度,只需2.2ms

    该项目旨在在低分辨率测量的基础上生成视觉良好的高分辨率图像,使用2018年美国东北大学提出的残差密集网络进行图像超分辨率,该网络结合残差网络与密集连接网络的特性充分利用原始LR图像的所有分层特征,因而能重构出高质量的图像。项目提供了一个Keras网络实现,并设置了一个Docker镜像来进行训练和测试。只需几个命令,就可以使用AWS和 nvidia-docker在本地或云上进行训练。推荐五:bert-as-service—用BERT模型将可变长度语句映射到固定长度的向量

    Graph Nets是用于构建Sonnet和TensorFlow的DeepMind库。Graph 网络输入一个图形,输出也是一个图形。

    图4:模型(左)和模型 数据(右)随着GPU的数量并行地进行weak scaling。

    BERT是由Google开发的NLP预训练模型,全称 Bidirectional Encoder Representation from Transformers,即对Transformer的双向编码进行调整后的算法。它利用网上公开提供的大量纯文本数据,进行非监督训练。它的神经网络深而窄,可以在无需大幅架构修改的前提下进行双向训练。BERT模型还能够联合神经网络所有层中的上下文来进行训练,且只需微调就可以适应很多类型的NLP任务,可谓是开启了NLP新时代的最强NLP模型。bert-as-service使用BERT作为语句编码器并通过ZeroMQ将其作为服务托管,只用两行代码就可将句子映射到固定长度的表征。

    Horizon是一个基于PyTorch构建的强化学习平台,并使用Caffe2为模型提供服务。Horizon的主要优势在于,设计者在设计这一平台的时候,考虑了生产用例。想要了解更多详细内容,请查看Facebook Research官方文档。另外,如果你想使用Horizon,可查看该使用文档。

    图2:(a): MLP, (b):transformer的self attention block。

    最近小编发现很多朋友对Python的关注度非常高,也有很多Python初学者在后台留言领取相关学习教程。今天我就结合受欢迎程度、参与度和新近度等指标给大家推荐5个Python开源项目,希望这些开源项目能给大家的工作和学习带来新的启发和帮助。

    环球彩票登陆 1

    要使用此脚本,请 --train-data以loose json格式放置,每行一个json。json字典的文本字段应该对应于 --text-key。

    PyText是一个基于PyTorch构建的基于深度学习的NLP建模框架。它是 Facebook正在使用的主要自然语言处理建模框架,目前每天为 Facebook及其应用程序系列的用户提供超过10亿次AI任务处理。PyText解决了实现快速实验和大规模服务模型的冲突问题: 提供简化的工作流程,加速实验。 提供一大批预构建的模型架构和用于文本处理和词汇管理的工具,以促进大规模部署。 提供利用PyTorch生态系统的能力,包括由NLP社区中的研究人员、工程师预构建的模型和工具。推荐二:Jax—Google开源TensorFlow 简化库

    MAMEToolKit是一个训练街机游戏强化学习算法的库,使用该工具可以跟踪游戏状态,同时也可以接收游戏帧数据。

    最快的推理速度

    Reaver是一个深度强化学习代理,专为训练各种基于星际争霸II的任务设计。主要旨在跟随DeepMind的脚步,通过玩具有类似人类界面和限制的现代视频游戏这一角度切入,推动该领域的最新技术。Reaver背后的理念类似星际争霸II游戏本身——为不同水平玩家提供不同体验。对于业余爱好者程序员,Reaver通过仅修改代理的一小部分来提供训练DRL代理所需的所有工具。对于经验丰富的研究人员,Reaver提供简单但性能优化、模块化架构的代码库,代理,模型和环境是分离的,可以随意置换。

    在今年10月份举办的PyTorch会议期间,Facebook发布了PyTorch 1.0预览版。PyTorch 1.0解决了以下问题:训练耗时长、联网问题、缓慢的可扩展性以及Python编程语言带来的一些不灵活性。

    --lr-decay-style已切换为cosine decay等等。

    环球彩票登陆 2

    Horizon

    为了训练GPT-2模型,我们创建了一个从_Reddit_下载的37 GB _WebText_ dataset,它类似于原始GPT-2论文中描述的webtext数据集。数据集最终有810万个url。我们将WebText数据集随机分割为95:5的比例,分别得到训练集和验证集。我们考虑了4种参数规模的模型:3.45亿、7.75亿、25亿和83亿。

    推荐四:image-super-resolution—残差密集网络(Residual Dense Network)图像超分辨率的Keras实现。

    MAMEToolkit

    我们在512台NVIDIA V100 GPU上高效地训练了83亿参数的语言模型(分别比BERT和GPT-2大24倍和5.6倍),具有8路模型并行性,并在整个应用程序中实现了高达15.1千万亿次浮点运算(PetaFLOPS)。

    现在已经有一些可以允许开发人员在浏览器上运行模型的Javascript框架,比如TensorFlow.js和Keras.js。其模型实现与使用的方法,与Keras或TensorFlow等常规框架非常相似。

    英伟达官方GitHub项目已开源!

    DeepCreamPy

    这使得我们可以在GPU之间分割每个attention head参数和工作负载,并且不需要任何即时通信来完成self attention。

    AdaNet

    GPT-2 8B模型使用原生PyTorch进行训练,在512 GPU上有8路模型并行和的64路数据并行。实验是在DGX SuperPOD上进行的,其基准模型为12亿个参数,适用于单个V100 GPU。在单个GPU上运行此基线模型的端到端训练pipeline可实现39 TeraFLOPS的算力,这是V100 GPU的理论峰值算力的30%。

    Auto-Keras

    最重要的是,代码已开源!

    我们先来看看Mybridge AI 中排名靠前的顶级开源项目,再聊聊机器学习今年都有哪些发展,最后探寻下新的一年中会有哪些有值得我们期待的事情。

    安装

    DeOldify是一个用于着色和恢复旧图像的深度学习库。开发者结合了几种不同的方法,来实现这一目标,其中的几种方法包括:带自注意力机制的生成对抗网络(Self-Attention Generative Adversarial Networks),Progressive Growing of GANs,以及TTUR( Two Time-Scale Update Rule)。

    如果你觉得上面的堆硬件太过暴力,英伟达也给出更低配置下的训练速度。他们在“只有”16个V100 GPU的NVIDIA DGX-2用2.8天内训练了BERT-Large,展示了英伟达GPU对于会话AI的可扩展性。

    环球彩票登陆 3

    提供了5个预训练BERT的脚本和3个预训练GPT2的脚本。使用 --save 和 --load 保存并加载模型检查点(checkpoint)。

    TensorFlow Serving

    我们通过在512个GPU上训练一个transformer语言模型证明了这种方法的有效性,该模型具有8路模型并行性和64路数据并行性,83亿参数,使其成为有史以来规模最大的基于transformer的语言模型,其大小为BERT的24倍,GPT-2的5.6倍。我们已经在GitHub存储库中发布了实现此方法的代码。

    使用TensorFlow Serving系统,我们能更加轻松的将TensorFlow模型部署到生产环境中。虽然TensorFlow Serving在2017年就已经发布,但是今年更加注重将模型应用到生产环境环节。

    此外,还提供 GPT2 脚本,用于在wiki文本和LAMBADA上生成GPT2的交互式文本生成和零样本(zero shot)评估。

    PocketFlow项目是一个加速和压缩深度学习模型的框架。它解决了大多数深度学习模型的计算费用问题。该项目最初由腾讯AI实验室的研究人员开发,了解其实现及官方文档请点击这里。

    我们将模型参数扩展到83亿,使用512个GPU,通过8路模型并行化,在整个应用程序中我们实现了高达15.1 PetaFLOPS的持续性能,与单GPU相比,扩展效率达到76%。图1显示了扩展的结果。

    TRFL项目可用于编写TensorFlow中的强化学习代理,具体的操作文档在这里。

    BERT预训练

    摘要: 2018年马上就要结束了,我们来回顾一下过去的这一年中,机器学习领域有哪些有趣的事情吧!

    表2:attention heads 数量对scaling的影响。

    TRFL

    它与前一个脚本格式大致相同,但有一些值得注意的差异:

    BERT

    于是,英伟达提出了Faster Transformer,并在GitHub上开源了代码。

    PyTorch 1.0

    GPT2 预训练

    你或许听过自动化机器学习(automated machine learning),即自动化搜索机器学习模型的最佳参数。除Auto-Keras之外,还有其他的自动化机器学习模型,比如Google的AutoML。Auto-Keras是基于Keras和ENAS编写的,其中,ENAS是神经网络结构搜索的最新版本。

    为了研究这些几十亿参数的Transformer网络,英伟达还开源了Megatron项目。

    Maskrcnn-benchmark

    英伟达也不甘示弱,用1472个V100 GPU首次实现在一个小时之内训练完BERT模型。

    本文为云栖社区原创内容,未经允许不得转载。

    Faster Transformer是一个BERT Transformer单层前向计算的高效实现,代码简洁,后续可以通过简单修改支持多种Transformer结构。

    环球彩票登陆 4

    在这项工作中,我们通过对现有PyTorch transformer实现进行少量有针对性的修改,实现了一种简单而有效的模型并行方法。我们的代码是用原生Python编写的,利用混合精度训练,并利用NCCL库在GPU之间进行通信。

    PocketFlow

    通过8路并行模型将模型扩展到512个GPU上的83亿个参数,NVIDIA团队在整个应用程序中实现了高达15.1 PetaFLOPS的持续性能,并且与基线相比达到了76%的扩展效率。

    Machine Learning Javascript

    最大的BERT模型

    AdaNet是一个基于TensorFlow的库,它可以自动学习模型,且不需要很多的技术人员参与,该项目基于AdaNet算法。访问AdaNet的官方文档,请点击这里。

    我们的实验是在英伟达的DGX SuperPOD上进行的。在没有模型并行性的情况下,我们可以在单个V100 32GB GPU上训练一个12亿参数的基线模型,并在整个训练过程中保持39 TeraFLOPS,这是DGX2-H服务器上单个GPU理论峰值的30%。

    DeepCreamPy是一个深度学习工具,可以像Photoshop一样重建图像中被删除的区域。我们使用图像编辑工具将删减的区域填充为绿色,神经网络可以对其进行复原。该项目在Github中有6365颗星。

    英伟达使用运行TensorRT的T4 GPU,仅在2.2毫秒内就对BERT-Base SQuAD数据集进行了推理,远低于许多实时应用的10毫秒处理阈值。

    Graph Nets

    MegatronLM,堪称 NLP 界的“威震天”!

    本文作者:

    在小batch size情况下,12层Transformer在P4和T4上的性能表现如下:

    2019年马上就要到了,随着Auto-Keras等自动化工具的发展,开发人员的工作有望变得更加轻松。除此以外,我们还拥有先进的研究以及优秀的社区,各类机器学习框架的性能还会更上一层楼。

    英伟达使用了92个DGX-2H节点、1,472个V100 GPU的DGX SuperPOD系统来训练BERT模型,将BERT-Large训练时间从几天缩短到到53分钟。

    阅读原文

    训练这些模型需要数以百计exaflops级的计算力和巧妙的内存管理,以换取减少内存占用的重新计算。然而,对于超过10亿参数的超大型的模型,单个GPU上的内存不足以匹配模型以及训练所需的参数,需要利用模型并行性来将参数分割到多个GPU上。有几种建模并行性的方法,但是它们很难使用,因为它们依赖于自定义编译器,或者扩展性很差,或者需要对优化器进行更改。

    Maskrcnn-benchmark项目可以帮助我们在Pytorch中构建对象检测和分割工具。这个库的优势在于速度快、内存效率高,可以进行多个GPU训练和推断,且为推断提供CPU支持。

    此脚本运行单个gpu BERT预训练,主要用于调试目的。优化参数设置为64路分布式训练。

    BERT,全称为Bidirectional Encoder Representations from Transformers,是一种基于TensorFlow解决自然语言处理的新方法,且性能更好。我们可以使用BERT中的 预训练模型解决问题,该模型在性能上具有很大优势,比如可以识别句子中的上下文。在Github中非常受欢迎,有8848个星,完整学术论文请访问这里。

    GPT-2评估

    有钱任性:训练史上最大语言模型需要多少GPU?

    更大的语言模型对于诸如文章完成、问题回答和对话系统等NLP任务非常有用。最近,训练最大的神经语言模型已经成为提高NLP应用水平的最佳方法。

    表3:wikitext perplexity(越低越好)和Lambada完形精度(越高越好)的评估结果。

    建议要么使用./docker/中提供的Dockerfile,要么创建一个虚拟环境(以避免破坏现有的tf安装)并安装requirements.txt。

    GitHub项目地址:-LM

    今年以来,NLP领域的“军备竞赛”越来越激烈。基于Transformer架构的模型,如谷歌的XLNet和Facebook的RoBERTa,在GLUE、SQuAD这些基准测试榜单头名争夺中你方唱罢我登场。

    transformer层由一个self attention block和一个2层的多层感知器(MLP)组成。我们分别在这两个模块中引入模型并行性。

    然而,正如我们在工作中所展示的,NLP仍然需要合适的数据集、问题和技术来正确地训练这些大型语言模型,否则会出现过拟合。

    更多细节内容,读者可前往官方GitHub浏览:-LM

    英伟达测试了不同生产环境下Faster Transformer前向计算的执行时间以及与TensorFlow XLA的性能比较。

    图3:GPT-2 transformer层的模型并行性。

    图5显示了验证的困惑度(perplexity)。我们发现。最大的83亿参数的语言模型在——6epoch之后开始overfit,一种1 epoch被定义为15200次迭代。我们认为这可以通过使用更大规模的数据集来缓解,类似于XLNet和RoBERTa等最近论文中使用的数据集。

    用法

    在此过程中,我们成功地突破了传统的单GPU训练的限制,实现了一种简单而高效的模型并行方法,只需对现有PyTorch transformer实现进行少量有针对性的修改。

    文章来源:新智元

    我们利用 transformer网络的结构,通过添加一些同步primitives来创建一个简单的模型并行实现。

    1.最快的BERT训练速度,只需53分钟

    所有的实验都是在NVIDIA的DGX SuperPOD上进行的,我们使用了多达32台DGX- 2h服务器(总共512个Tesla V100 SXM3 32GB GPU)。该系统针对多节点深度学习应用程序进行了优化,服务器内部GPU之间的带宽为300 GB/s,服务器之间的互连带宽为100 GB/s。

    为了测试我们的实现的计算性能,我们考虑了表1中四组参数的GPT-2模型。

    图5:训练子集的验证困惑度。在对37GB数据集过拟合之后,8.3B模型提前停止了。

    目前优化集中在编码器的前向计算。底层由CUDA和cuBLAS实现,支持FP16和FP32两种计算模式,其中FP16可以充分利用Volta和Turing架构GPU上的张量核心单元。

    图4显示了模型和模型 数据并行性的扩展值。我们在这两种设置中都观察到了出色的扩展数字。例如,8路(8 GPU)模型并行的83亿参数模型实现了77%的线性扩展。模型 数据并行性要求在反向传播步骤之后进一步通信梯度,因此扩展数略有下降。然而,即使是运行在512个GPU上的最大配置(83亿参数),相对于强大的基准单GPU配置(12亿个参数),我们仍然可以实现74%的扩展性。

    项目地址:-LM

    英伟达在官方GitHub上对MegatronLM开源了代码,也提供了相应的教程。

    如图2(b)所示,在self attention block上,我们利用multihead attention操作中的固有并行性,以列并行方式划分与键,查询和值相关联的 GEMM。

    官方只支持 Python 3.6。请安装支持GPU的最新版本PyTorch。

    性能

    为了分析大型语言模型的训练性能,我们在wikitext-103数据集上计算了perplexity,在Lambada数据集上计算了closize风格的预测精度。

    结论

    这种方法对于MLP和self-attention层都融合了两个GEMM的组,消除了中间的同步点,并获得了更好的scaling性能。这使我们能够在一个简单的transformer层中执行所有GEMM,只使用前向路径的2个all reduce和后向路径的2个all reduce,如图3所示。

    世界上最大的语言模型来了,顺便还破了个记录!英伟达宣布,目前已经训练出了世界上最大的语言模型——MegatronLM。这个模型有多大?83亿个参数!比谷歌的 BERT 大24倍,比 OpenAI 的 GPT-2 大5.6倍!不仅如此,英伟达还宣布打破了实时对话 AI 的记录——耗时53分钟就可以训练出行业标准的BERT模型、2毫秒左右就能对答案做出推断。AI硬(he)件(dan)厂商英伟达今天宣布,他们在NLP模型上取得了三大突破,为今后会话AI的落地应用铺平了道路。

    最后,我们研究了attention heads对模型并行扩展的影响。为此,我们考虑了83亿参数、具有8路模型并行性的参数配置,并将attention heads的数目从16个改为32个。结果如表2所示。随着attention heads数量的增加,self attention层中的一些GEMM变小,同时softmax中的元素数量增加。这导致了轻微的scaling decrease。未来的研究在设计大型transformer模型时应该警惕这种超参数,平衡模型性能和模型效率。

    另外,GPT2使用来自BERT的不同参数初始化,用于训练深度残差网络。要使用此初始化来训练BERT,请使用--deep-init。

    正如预期的一样,wikitext perplexity随着模型尺寸的增大而减小,lambada准确率随着模型尺寸的增大而增加(表3)。

    我们发现,与较小的transformer模型相比,更大的transformer模型可以在相同的时间内进行训练,并且可以显著提高性能。

    3.最大的BERT模型,包含83亿参数

    但是Transformer在这些落地化场景中却遇到了困难。这是因为在推理部署阶段,计算性能会面临巨大的挑战。以BERT为原型的多层Transformer模型,其性能常常难以满足在线业务对于低延迟和高吞吐的要求。

    模型并行训练可以通过跨多个GPU划分模型来克服这一限制。近年来出现了几个通用模型并行框架,如GPipe和Mesh-TensorFlow。gPipe在不同的处理器上划分层组,而Mesh-TensorFlow使用层内模型并行性。我们的方法在概念上类似于Mesh-TensorFlow,我们关注层内并行性并融合GEMM以减少同步。然而,我们只对现有PyTorch transformer实现进行了一些有针对性的修改,以便使用模型并行性来训练大型transformers。我们的方法很简单,不需要任何新的编译器或代码重新连接来实现模型并行性,并且可以通过插入一些简单的primitives(图2中的f和g 算子)完全实现。

    固定句子长度为32,标准模型和裁剪模型在不同batch size下,12层Transformer在V100上实现了2倍的速度提升:

    为了实现这一壮举,英伟达利用模型的并行性,将一个神经网络分割成多个部分,创建了因数据太大无法容纳在单个GPU的训练模型。

    图1:模型并行(蓝色):多达8路模型并行弱扩展,每个GPU大约有10亿个参数(例如2个GPU有20亿参数,4个GPU有40亿参数)。模型 数据并行(绿色):类似于模型并行的64路数据并行的配置。

    Megatron开源地址:-LM

    GPT-2训练

    上面的推理部分太过“烧钱”,而英伟达在BERT推理上取得的进步可以让普通开发者也能用上。因为现在一些实时处理的任务也开始用上了Transformer,比如语音合成、语音识别。

    环球彩票登陆 5

    多GPU并行性

    Faster Transformer开源地址:

    我们将我们的工作开源,以便社区就可以复制并扩展它们。

    --tokenizer-type已切换为GPT2BPETokenizer;

    训练模型的典型范例是利用 weak scaling 方法和分布式数据并行性,根据GPU的数量来扩展训练批大小。这种方法允许模型在更大的数据集上进行训练,但有一个约束,即所有参数必须适合一个GPU。

    这种方法实现起来很简单,因为它只需要在向前和向后传递中添加一些额外的all-reduce操作。它不需要编译器,并且与gPipe等方法提倡的那种pipeline模型并行性是正交的。

    在这项工作中,我们在现有的深度学习硬件、软件和模型的基础上,构建了世界上最大的基于transformer的语言模型。

    考虑到开发人员对大型NLP模型不断增长的需求,英伟达建立并训练了世界上最大的基于Transformer的语言模型GPT-2 8B,它具有83亿个参数,是BERT-Large的24倍、GPT-2的5.6倍。

    两大公司为了刷榜的消耗了大量的时间和计算资源。为了提高BERT的训练速度,谷歌堆上了1024块TPU,用76分钟训练出了BERT模型。Facebook用上了1024个英伟达V100 GPU。

    英伟达表示,这项研究能够帮助企业使用实时会话AI更自然地与客户互动,帮助开发人员将最先进的NLP模型大规模部署在应用程序中。

    最近的两篇论文,BERT和GPT-2,展示了大规模语言建模的好处。这两篇论文都利用了计算机和可用文本语料库的进步,在自然语言理解、建模和生成方面显著超越了当前的最优水平。

    此脚本运行单gpu gpt2预训练,主要用于调试目的。优化参数设置为64路分布式训练。

    表1:用于scaling 研究的参数。

    英伟达用自己的硬件与并行计算软件相结合,在BERT模型的训练和推理上创下三项世界纪录:

    如图2a所示,这是MLP的结构,由两个GEMM组成,中间有一个GeLU非线性,后面有一个dropout层。我们以列并行方式划分第一个GEMM。这使得GeLU 非线性可以独立地应用于每个分块GEMM的输出。模块中的第二个GEMM沿着行并行化,直接获取GeLU层的输出,不需要任何通信。然后,在将输出传递到dropout层之前,跨GPU减少第二个GEMM的输出。这种方法将MLP block中的GEMM跨GPU分割了,只需要在正向传递(g算子)中执行一个all-reduce操作,在反向传递(f算子)中执行一个all-reduce操作。

    本文由环球彩票登陆发布于环球彩票登陆,转载请注明出处:年度大盘点:机器学习开源项目及框架环球彩票

    关键词: 环球彩票登陆 项目 开源 框架 热门