指点云用户44 发表于 2022-7-26 11:56:47

OneFlow v0.8.0正式发布

<p><br/></p><p>今天是 OneFlow 开源的 717 天,OneFlow v0.8.0 正式发布。本次更新包含523个commit,完整更新列表请查看链接:https://github.com/Oneflow-Inc/oneflow/releases/tag/v0.8.0,欢迎下载体验新版本,期待你的反馈。</p><p><br/></p><p>OneFlow v0.8.0 主要包括以下新增亮点功能和优化:</p><p><br/></p><p>1.兼容性</p><p><br/></p><p>PyTorch compatible API 更加完善。新增一系列与 PyTorch 1.10.0 兼容的功能和接口,包括新增与 PyTorch 对齐的 68 个 API, 修复了 84 个算子与接口兼容性 bug,支持用户将更多 PyTorch 模型一键迁移为 OneFlow。</p><p><br/></p><p>2.Global 算子支持</p><p><br/></p><p>所有算子对 Global Tensor 的支持更加完备且高效。修复了 28 个 Global Tensor 相关的 bug,新增 180 个 Global 算子单测,用户可以更加简单且高效地用 Global Tensor 进行分布式模型开发。</p><p><br/></p><p>3.性能</p><p><br/></p><p>Graph 高级特性的性能更加成熟完善:</p><p><br/></p><p>除原本的 ZeRO-DP 以外,ZeRO 零冗余优化器可以与 MP,2-D,3-D 并行搭配使用,进一步节省显存开销。</p><p><br/></p><p>Graph 提出了新的流水并行 API,在简化流水并行配置的同时加速流水并行与 3-D 并行的性能。</p><p><br/></p><p>为了进一步提升 Graph.debug 调试效率,新增关于逻辑图、light plan 物理图、内存分析、Python 栈信息等多维度的调试功能。</p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p>基于 OneFlow v0.8.0 和 LiBai v0.2.0 , GPT 和 BERT 3-D 并行下的速度优化明显,在多个维度上的速度表现都超越相同配置下的 Megatron-LM(数据详见:https://libai.readthedocs.io/en/latest/tutorials/get_started/Benchmark.html)。</p><p><br/></p><p>4.OneEmbedding组件</p><p><br/></p><p>OneEmbedding 是一款专门为大规模推荐系统设计的拓展组件,具备高性能、可拓展、灵活度高等特点。其具备以下特性:</p><p><br/></p><p>支持分层存储,动态扩容的 Embedding,用户可以以较低成本扩展 Embedding 容量</p><p><br/></p><p>混合并行策略,能够轻松地将模型横向拓展到多机多卡的场景</p><p><br/></p><p>通信量化压缩功能,在并行场景下,对通信的数据进行量化压缩,以减少通信量,提升训练速度</p><p><br/></p><p>高效的数据流水线,将模型中没有数据依赖的部分提前执行,在时间上进行重叠</p><p><br/></p><p>支持自动混合精度训练,模型训练过程中将部分计算转换为 FP16 数据类型计算,在减少显存占用的同时提升训练速度,并能保证模型收敛精度</p><p><br/></p><p>针对推荐系统模型的常用操作提供一系列高性能 CUDA 算子</p><p><br/></p><p>支持灵活的模型构建</p><p><br/></p><p>API 文档:</p><p><br/></p><p>https://docs.oneflow.org/master/cookies/one_embedding.html</p><p><br/></p><p>5.多设备适配</p><p><br/></p><p>OneFlow 提供简洁高效易扩展的硬件抽象层 EP(Execution Provider),以应对适配不同硬件的复杂性。引入硬件抽象层之后,用户无需关注底层硬件和框架的具体实现细节,框架的各个模块无需改动便可以适配新的硬件设备,同时,用户只需按照硬件抽象接口的约定和硬件设备的实际情况,实现一系列接口,便可以完成硬件的适配工作。</p><p><br/></p><p>EP 还定义了一组基础计算接口 Primitive,基于 Primitive 接口重新实现了 Kernel。相比 EP 提供的运行时接口,Primitive 提供的接口更加灵活,不同接口之间相互独立,每一个接口表示了某种硬件设备可以提供的特定的计算能力。</p><p><br/></p><p>6.调试工具栈</p><p><br/></p><p>新增调试工具栈 OneFlow-Profiler 与 AutoProf。</p><p><br/></p><p>OneFlow-Profiler 用来在框架执行流程中收集各种性能相关信息的工具。该工具可以统计算子或系统组件的执行时间,内存显存的分配情况,同时可以记录算子对应的的输入和参数信息,这些信息可供开发者分析框架执行中开销最大的部分,以实现针对性优化(https://github.com/Oneflow-Inc/oneflow/pull/8047)。</p><p><br/></p><p><br/></p><p><br/></p><p>AutoProf 是一个测试 OneFlow 和 PyTorch 算子性能的框架,为 OneFlow 提供优雅、高效地检测 OneFlow API 与 PyTorch API 是否对齐的方法,让用户可以自动比较 OneFlow API 与 PyTorch API 的性能结果(https://github.com/Oneflow-Inc/oneflow/pull/8207)。</p><p><br/></p><p>7.异常报错处理</p><p><br/></p><p>大幅完善 OneFlow API 中的异常处理流程,完善 API 在异常情况下的报错提示信息。</p><p><br/></p><p>8.API文档</p><p><br/></p><p>完善 OneFlow API 文档内容共20余处,按照功能对 API 文档进行模块重构。除通用的算子 API 外,详细说明 OneFlow oneflow.nn.graph、oneflow.embedding、oneflow.autograd 等模块及环境变量。</p><p><br/></p><p>查看OneFlow v0.8.0完整更新内容,请点击“阅读原文”。</p><p><br/></p><p>其他人都在看</p><p><br/></p><p>OneFlow源码一览:GDB编译调试</p><p><br/></p><p>解读Pathways:向前一步是OneFlow</p><p><br/></p><p>OneFlow源码解析:算子签名的自动推断</p><p><br/></p><p>Hinton:我的五十年深度学习生涯与研究心法</p><p><br/></p><p>LLVM之父:为什么我们要重建AI基础设施软件</p><p><br/></p><p>并行计算的量化模型及其在深度学习引擎的应用</p><p><br/></p><p>大模型训练难?效率超群、易用的“李白”模型库来了</p><p><br/></p><p>欢迎体验 OneFlow v0.8.0:</p><p>https://github.com/Oneflow-Inc/oneflow/</p><p>https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgithub.com%2FOneflow-Inc%2Foneflow%2F</p><p>————————————————</p><p>版权声明:本文为CSDN博主「OneFlow深度学习框架」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。</p><p>原文链接:https://blog.csdn.net/OneFlow_Official/article/details/125884183</p><p><br/></p><link rel="stylesheet" href="//www.zhidianyun.cn/source/plugin/wcn_editor/public/wcn_editor_fit.css?v134_J5w" id="wcn_editor_css"/>
页: [1]
查看完整版本: OneFlow v0.8.0正式发布