人工智能的最新趋势是, 更大的自然语言模型可以提供更好的准确性, 但是由于成本, 时间和代码集成的障碍, 较大的模型难以训练. 微软日前开源了一个深度学习优化库 DeepSpeed, 通过提高规模, 速度, 可用性并降低成本, 可以在当前一代的 GPU 集群上训练具有超过 1000 亿个参数的深度学习模型, 极大促进大型模型的训练.
根据微软的介绍, DeepSpeed 库中有一个名为 ZeRO(零冗余优化器, Zero Redundancy Optimizer) 的组件, 这是一种新的并行优化器, 它可以大大减少模型和数据并行所需的资源, 同时可以大量增加可训练的参数数量. 研究人员利用这些突破创建了图灵自然语言生成模型 (Turing-NLG), 这是最大的公开语言模型, 参数为 170 亿.
ZeRO 作为 DeepSpeed 的一部分, 是一种用于大规模分布式深度学习的新内存优化技术, 它可以在当前的 GPU 集群上训练具有 1000 亿个参数的深度学习模型, 其吞吐量是当前最佳系统的 3 到 5 倍. 它还为训练具有数万亿个参数的模型提供了一条清晰的思路.
ZeRO 具有三个主要的优化阶段, 分别对应于优化器状态,梯度和参数分区.
ZeRO 克服了数据并行和模型并行的局限性, 同时实现两者的优点, 它通过跨数据并行进程将模型状态划分为上图所示的参数, 梯度和优化器状态分区, 而不是复制它们, 从而消除了数据并行进程之间的内存冗余. 在训练期间使用动态通信规划 (dynamic communication schedule), 在分布式设备之间共享必要的状态, 以保持数据并行的计算粒度和通信量.
目前实施了 ZeRO 的第一阶段, 即优化器状态分区 (简称 ZeRO-OS), 具有支持 1000 亿参数模型的强大能力, 此阶段与 DeepSpeed 一起发布.
DeepSpeed 与 PyTorch 兼容, DeepSpeed API 是在 PyTorch 上进行的轻量级封装, 这意味着开发者可以使用 PyTorch 中的一切, 而无需学习新平台. 此外, DeepSpeed 管理着所有样板化的 SOTA 训练技术, 例如分布式训练, 混合精度, 梯度累积和检查点, 开发者可以专注于模型开发. 同时, 开发者仅需对 PyTorch 模型进行几行代码的更改, 就可以利用 DeepSpeed 独特的效率和效益优势来提高速度和规模.
DeepSpeed 在以下四个方面都表现出色:
更具体的介绍查看微软的博客:
https://www.microsoft.com/en-us/research/blog/zero-deepspeed-new-system-optimizations-enable-training-models-with-over-100-billion-parameters
本文由用户 五嘎子 自行上传分享, 仅供网友学习交流. 所有权归原作者, 若您的权利被侵害, 请联系管理员.
来源: http://www.open-open.com/news/view/5325041110634423345