无性能损失,不用更改代码,Lightning 1.1版本发布(lightning系统)

机器之心报道

作者:杜伟、陈萍

继1.0.0 版本推出不到两个月的时间,grid.ai CEO、纽约大学博士 William Falcon 创建的 PyTorch Lightning 于近日宣布推出 1.1 版本。新版本新增了 sharded training 功能,在多 GPU 上训练深度学习(DL)模型时可以节省 50% 以上的内存,并且没有性能损失,也不需要更改代码。

无性能损失,不用更改代码,Lightning 1.1版本发布(lightning系统)

与 Facebook Research 的 FairScale 团队一道,PyTorch Lightning 团队在 1.1 版本中推出了 Sharded Training beta 版。在下面的博客文章中,PyTorch Lightning 团队的研究工程师 Sean Narenthiran 展示了只需要在 Lightning 训练器中增加单一的 flag,则在多 GPU 上训练 DL 模型时就会实现内存的大幅度降低。

此外,作者还介绍了如何使用 NeMo 来预训练 Transformer LM,并实现 55% 的内存提升,以及训练其他 PyTorch Lightning 赋能模型时进一步的内存降低。除了给出使用 NeMO Transformer LM 时 NLP 中的结果之外,作者还分别展示了语音识别中使用 DeepSpeech 2 以及计算机视觉中训练 SwAV ResNet 和 iGPT 的结果。

PyTorch Lightning 团队正努力增添新的模型并行化技术并保证鲁棒性,并且与 FairScale 团队展开合作提升所有 PyTorch Lightning 研究中的模型扩展性能。

更多使用技巧参考:https://pytorch-lightning.readthedocs.io/en/stable/multi_gpu.html#multi-gpu-training

更大的模型,更高的准确率

语言建模趋向于更大的预训练模型,这种模型在下游任务中表现得更好。OpenAI 的 GPT-3 就是一个很好的例子,该模型有 1750 亿个参数,在训练时需要大量的计算与优化技巧。

无性能损失,不用更改代码,Lightning 1.1版本发布(lightning系统)

比较了语言模型参数随时间变化的曲线,GPT-3 继续在规模上超越。(图源:Microsoft)

训练大型模型时,内存很宝贵。当扩展模型大小时,GPU 的内存会被耗尽,而这又限制了训练模型的大小。这使得团队不断尝试更智能的内存管理技术。

Lightning 的 Sharded Training

无性能损失,不用更改代码,Lightning 1.1版本发布(lightning系统)

传统分布式训练 VS Sharded Training。参数(P)在 GPU 之间拆分,以减少每个 GPU 的内存开销。Sharded Training 则拆分了优化器状态和梯度。

受微软 Zero Redundancy Optimizer (ZeRO) 的启发,Sharded Training 可以减少在多个 GPU 上训练大型模型所需的内存,训练过程中在 GPU 之间「切分」模型。Sharding 包括将参数分割到不同的设备上,减少每个设备所需的内存。特别地,优化器状态和梯度可以独立于模型进行切分,并且可以减少所有架构所需的内存。

Sharded Training 是在 FairScale 基础上构建的,与 PyTorch 兼容并得到优化。FairScale 是一个 PyTorch 扩展库,用于高性能以及大规模训练模型和数据并行。除了切分技术之外,它具有层间和层内并行性以及跨多个 GPU 和主机拆分模型。

通过在 GPU 上进行智能梯度和优化器状态 sharding,可以分别将内存成本(基于微软论文《ZeRO: Memory Optimizations Toward Training Trillion Parameter Models》的数据)降低大约 4 倍和 8 倍。这有利于所有模型,在所有模型架构以及训练过程中提供较低的内存使用率。需要注意的是,由于节点之间所需通信量的增加以及缺乏并行性,「naive implementations」导致运行速度急剧下降。

通过与 FairScale 的紧密合作,现在可以在所有 lightning 模块上实现 55% 以上的内存减少,只需通过一个单一的 flag,这意味着更大的机型可以适应内存有限的多张 GPU。

在不更改代码的情况下启用 Sharded Training

为了展示在 Lightning 中使用 Sharded Training 有多简单,使用 NVIDIA 的一个流行库 NeMo 来训练 Lightning 支持的对话 AI 模型。使用 NeMo 中提供的 vanilla Transformer LM 模型,有 12 亿个参数,该模型对训练内存要求很高。在训练大型语言模型时,内存是提高模型大小或提升 GPU 饱和度的宝贵资源。此外使用 WikiText 数据集训练模型。

首先下载数据集并使用 NVIDIA NeMo 提供的处理脚本进行提取,然后在 NeMo 中找到预配置文件定义模型配置,修改数据输入指向自定义数据集。为了进行基准测试,还构建了一个简单的基于单词的词汇表。

在设置模型参数之后,用户只需要将 Sharded 插件 flag 传递给支持 Sharded Traing 的训练器就可以了。用户还可以通过增加 GPU 数量和启用本地混合精度(native mixed precision)来实现内存和速度的进一步提升。分区优化器和 GPU 之间的通信可以在后台自动处理。

下面介绍了使用 Lightning 内置 Sharding 与普通 GPU 扩展时每台设备的内存提升情况,每台设备的内存分配保持不变。不仅如此,Lightning 团队还给出了 SwAW、DeepSpeech 2 和 iGPT 等其他 PyTorch Lightning 支持模型的测试结果。

结果表明,每个 GPU 上最高节省内存 15GiB,从而可以增加模型能力。例如,在硬件一样的情况下,训练 Transformer LM 时模型参数量可以从 12 亿增至 20 亿。

无性能损失,不用更改代码,Lightning 1.1版本发布(lightning系统)

使用 8 个 A100s 时训练 Transformer LM、SwAV Wide ResNet、DeepSpeech2 和 iGPT 时的平均峰值内存比较。

随着 GPU 之间通信的优化,与标准分布式加速器相比,节点内性能的扩展效果更好。请注意,随着向很多节点的扩展,内存降低的效果开始减弱,这是因为其他因素成为了瓶颈。但是,Sharded training 依然带来良好的 throughout 扩展。

无性能损失,不用更改代码,Lightning 1.1版本发布(lightning系统)

在 8 个具有相同超参数和批大小的 A100s 上的平均 Epoch time 比较,越低越好。

博客地址:https://seannaren.medium.com/introducing-pytorch-lightning-sharded-train-sota-models-with-half-the-memory-7bcc8b4484f

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月16日 上午10:30
下一篇 2024年5月16日 上午10:42

相关推荐

  • 建行烟台分行:人力资源部打造“以人为本,六心人力”党建品牌

    来源:【烟台日报-大小新闻】 建行烟台分行人力资源部深入践行新时代党的组织路线,扎实落实省行及市分行党委工作要求,强化“以人为本”理念,以“六心”为工作标准,为全行高质量发展提供坚…

    科研百科 2023年3月3日
    281
  • 党建考核须做好“+”文章(党建考核的意义及重要性)

    当前,全面从严治党正向纵深推进,“抓好党建是最大政绩”的理念逐渐成为各级党员领导干部的共识。但从共识到落实,不会自动生成,需要通过考核来推动。党建工作“虚”、党建指标“软”、考核结…

    科研百科 2023年11月11日
    146
  • 造价工程师注册管理系统个人版操作指南(造价工程师注册管理办法)

    近段时间正是领取造价师工程证书的时候,证书领取后注册个人版操作指南如下: 登录中国建设工程造价管理系统:如下图: 点击上图中的个人登录,进入下图页面: 考过后第一次登录该系统的需要…

    科研百科 2024年4月29日
    276
  • 中国管理科学研究院咨询部工程技术管理科学委员会

    中国管理科学研究院咨询部工程技术管理科学委员会 中国管理科学研究院咨询部工程技术管理科学委员会是由中国管理科学研究院旗下的一支专业的咨询团队,致力于工程技术和管理领域的研究和咨询工…

    科研百科 2024年12月4日
    0
  • 使用 DocuWare 员工管理软件,提高人力资源团队灵活性

    简化您在 HR 中的生活,重新关注有助于员工的战略计划。 您的人力资源团队再也无法承受分散的员工记录和容易出错的手动流程所带来的成本流失、安全风险和时间浪费。 您的需求很明确:消除…

    科研百科 2022年9月1日
    164
  • 工程项目管理的主体是

    工程项目管理的主体 工程项目管理是项目管理中的重要组成部分,涉及到项目规划、执行、控制和收尾等多个阶段。在工程项目管理中,项目经理需要协调和管理团队,确保项目的顺利完成。本文将探讨…

    科研百科 2024年9月22日
    30
  • 玮轩字体管理

    玮轩字体管理 玮轩字体管理是一款专注于中文字体管理的工具,旨在帮助用户管理和保存中文字体。玮轩字体管理可以帮助用户轻松地管理多种中文字体,包括正文字体、标题字体、粗体、斜体、下划线…

    科研百科 2024年12月8日
    0
  • 项目管理八大

    项目管理八大 项目管理是许多组织中非常重要的一个环节。通过有效的管理,项目团队可以确保项目按时、按质量完成,并达到预定的目标。然而,在实际项目中,常常会出现一些问题,使得项目管理变…

    科研百科 2024年7月15日
    53
  • 企业税务风险如何规避?教你几招(怎么规避税务风险)

    站在企业的角度来说,税务风险分为广义和狭义。 广义的税务风险:是指纳税人或者税务机关因为违反税收的法律法规,从而导致将来利益受损,这里面注意包含纳税人和税务机关征税这两个方面 。 …

    科研百科 2022年6月29日
    260
  • 营销项目管理软件

    营销项目管理软件 随着现代商业的快节奏和数字化,营销项目管理软件已经成为了现代营销团队中不可或缺的一部分。这些软件可以帮助营销团队更高效地管理项目,提高生产力,减少错误率,并最终提…

    科研百科 2024年5月25日
    87