找回密码
 立即注册

OneFlow v0.8.0正式发布

2022-7-26 11:56:47 · 站长社区


今天是 OneFlow 开源的 717 天,OneFlow v0.8.0 正式发布。本次更新包含523个commit,完整更新列表请查看链接:https://github.com/Oneflow-Inc/oneflow/releases/tag/v0.8.0,欢迎下载体验新版本,期待你的反馈。


OneFlow v0.8.0 主要包括以下新增亮点功能和优化:


1.兼容性


PyTorch compatible API 更加完善。新增一系列与 PyTorch 1.10.0 兼容的功能和接口,包括新增与 PyTorch 对齐的 68 个 API, 修复了 84 个算子与接口兼容性 bug,支持用户将更多 PyTorch 模型一键迁移为 OneFlow。


2.Global 算子支持


所有算子对 Global Tensor 的支持更加完备且高效。修复了 28 个 Global Tensor 相关的 bug,新增 180 个 Global 算子单测,用户可以更加简单且高效地用 Global Tensor 进行分布式模型开发。


3.性能


Graph 高级特性的性能更加成熟完善:


除原本的 ZeRO-DP 以外,ZeRO 零冗余优化器可以与 MP,2-D,3-D 并行搭配使用,进一步节省显存开销。


Graph 提出了新的流水并行 API,在简化流水并行配置的同时加速流水并行与 3-D 并行的性能。


为了进一步提升 Graph.debug 调试效率,新增关于逻辑图、light plan 物理图、内存分析、Python 栈信息等多维度的调试功能。






基于 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)。


4.OneEmbedding组件


OneEmbedding 是一款专门为大规模推荐系统设计的拓展组件,具备高性能、可拓展、灵活度高等特点。其具备以下特性:


支持分层存储,动态扩容的 Embedding,用户可以以较低成本扩展 Embedding 容量


混合并行策略,能够轻松地将模型横向拓展到多机多卡的场景


通信量化压缩功能,在并行场景下,对通信的数据进行量化压缩,以减少通信量,提升训练速度


高效的数据流水线,将模型中没有数据依赖的部分提前执行,在时间上进行重叠


支持自动混合精度训练,模型训练过程中将部分计算转换为 FP16 数据类型计算,在减少显存占用的同时提升训练速度,并能保证模型收敛精度


针对推荐系统模型的常用操作提供一系列高性能 CUDA 算子


支持灵活的模型构建


API 文档:


https://docs.oneflow.org/master/cookies/one_embedding.html


5.多设备适配


OneFlow 提供简洁高效易扩展的硬件抽象层 EP(Execution Provider),以应对适配不同硬件的复杂性。引入硬件抽象层之后,用户无需关注底层硬件和框架的具体实现细节,框架的各个模块无需改动便可以适配新的硬件设备,同时,用户只需按照硬件抽象接口的约定和硬件设备的实际情况,实现一系列接口,便可以完成硬件的适配工作。


EP 还定义了一组基础计算接口 Primitive,基于 Primitive 接口重新实现了 Kernel。相比 EP 提供的运行时接口,Primitive 提供的接口更加灵活,不同接口之间相互独立,每一个接口表示了某种硬件设备可以提供的特定的计算能力。


6.调试工具栈


新增调试工具栈 OneFlow-Profiler 与 AutoProf。


OneFlow-Profiler 用来在框架执行流程中收集各种性能相关信息的工具。该工具可以统计算子或系统组件的执行时间,内存显存的分配情况,同时可以记录算子对应的的输入和参数信息,这些信息可供开发者分析框架执行中开销最大的部分,以实现针对性优化(https://github.com/Oneflow-Inc/oneflow/pull/8047)。




AutoProf 是一个测试 OneFlow 和 PyTorch 算子性能的框架,为 OneFlow 提供优雅、高效地检测 OneFlow API 与 PyTorch API 是否对齐的方法,让用户可以自动比较 OneFlow API 与 PyTorch API 的性能结果(https://github.com/Oneflow-Inc/oneflow/pull/8207)。


7.异常报错处理


大幅完善 OneFlow API 中的异常处理流程,完善 API 在异常情况下的报错提示信息。


8.API文档


完善 OneFlow API 文档内容共20余处,按照功能对 API 文档进行模块重构。除通用的算子 API 外,详细说明 OneFlow oneflow.nn.graph、oneflow.embedding、oneflow.autograd 等模块及环境变量。


查看OneFlow v0.8.0完整更新内容,请点击“阅读原文”。


其他人都在看


OneFlow源码一览:GDB编译调试


解读Pathways:向前一步是OneFlow


OneFlow源码解析:算子签名的自动推断


Hinton:我的五十年深度学习生涯与研究心法


LLVM之父:为什么我们要重建AI基础设施软件


并行计算的量化模型及其在深度学习引擎的应用


大模型训练难?效率超群、易用的“李白”模型库来了


欢迎体验 OneFlow v0.8.0:

https://github.com/Oneflow-Inc/oneflow/

https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgithub.com%2FOneflow-Inc%2Foneflow%2F

————————————————

版权声明:本文为CSDN博主「OneFlow深度学习框架」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/OneFlow_Official/article/details/125884183


全部评论 0


今天是 OneFlow 开源的 717 天,OneFlow v0.8.0 正式发布。本次更新包含523个commit,完整更新列表请查看链接:https://github.com/Oneflow-Inc/oneflow/releases/tag/v0.8.0,欢迎下载体验新版本,期待你的反馈。


OneFlow v0.8.0 主要包括以下新增亮点功能和优化:


1.兼容性


PyTorch compatible API 更加完善。新增一系列与 PyTorch 1.10.0 兼容的功能和接口,包括新增与 PyTorch 对齐的 68 个 API, 修复了 84 个算子与接口兼容性 bug,支持用户将更多 PyTorch 模型一键迁移为 OneFlow。


2.Global 算子支持


所有算子对 Global Tensor 的支持更加完备且高效。修复了 28 个 Global Tensor 相关的 bug,新增 180 个 Global 算子单测,用户可以更加简单且高效地用 Global Tensor 进行分布式模型开发。


3.性能


Graph 高级特性的性能更加成熟完善:


除原本的 ZeRO-DP 以外,ZeRO 零冗余优化器可以与 MP,2-D,3-D 并行搭配使用,进一步节省显存开销。


Graph 提出了新的流水并行 API,在简化流水并行配置的同时加速流水并行与 3-D 并行的性能。


为了进一步提升 Graph.debug 调试效率,新增关于逻辑图、light plan 物理图、内存分析、Python 栈信息等多维度的调试功能。






基于 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)。


4.OneEmbedding组件


OneEmbedding 是一款专门为大规模推荐系统设计的拓展组件,具备高性能、可拓展、灵活度高等特点。其具备以下特性:


支持分层存储,动态扩容的 Embedding,用户可以以较低成本扩展 Embedding 容量


混合并行策略,能够轻松地将模型横向拓展到多机多卡的场景


通信量化压缩功能,在并行场景下,对通信的数据进行量化压缩,以减少通信量,提升训练速度


高效的数据流水线,将模型中没有数据依赖的部分提前执行,在时间上进行重叠


支持自动混合精度训练,模型训练过程中将部分计算转换为 FP16 数据类型计算,在减少显存占用的同时提升训练速度,并能保证模型收敛精度


针对推荐系统模型的常用操作提供一系列高性能 CUDA 算子


支持灵活的模型构建


API 文档:


https://docs.oneflow.org/master/cookies/one_embedding.html


5.多设备适配


OneFlow 提供简洁高效易扩展的硬件抽象层 EP(Execution Provider),以应对适配不同硬件的复杂性。引入硬件抽象层之后,用户无需关注底层硬件和框架的具体实现细节,框架的各个模块无需改动便可以适配新的硬件设备,同时,用户只需按照硬件抽象接口的约定和硬件设备的实际情况,实现一系列接口,便可以完成硬件的适配工作。


EP 还定义了一组基础计算接口 Primitive,基于 Primitive 接口重新实现了 Kernel。相比 EP 提供的运行时接口,Primitive 提供的接口更加灵活,不同接口之间相互独立,每一个接口表示了某种硬件设备可以提供的特定的计算能力。


6.调试工具栈


新增调试工具栈 OneFlow-Profiler 与 AutoProf。


OneFlow-Profiler 用来在框架执行流程中收集各种性能相关信息的工具。该工具可以统计算子或系统组件的执行时间,内存显存的分配情况,同时可以记录算子对应的的输入和参数信息,这些信息可供开发者分析框架执行中开销最大的部分,以实现针对性优化(https://github.com/Oneflow-Inc/oneflow/pull/8047)。




AutoProf 是一个测试 OneFlow 和 PyTorch 算子性能的框架,为 OneFlow 提供优雅、高效地检测 OneFlow API 与 PyTorch API 是否对齐的方法,让用户可以自动比较 OneFlow API 与 PyTorch API 的性能结果(https://github.com/Oneflow-Inc/oneflow/pull/8207)。


7.异常报错处理


大幅完善 OneFlow API 中的异常处理流程,完善 API 在异常情况下的报错提示信息。


8.API文档


完善 OneFlow API 文档内容共20余处,按照功能对 API 文档进行模块重构。除通用的算子 API 外,详细说明 OneFlow oneflow.nn.graph、oneflow.embedding、oneflow.autograd 等模块及环境变量。


查看OneFlow v0.8.0完整更新内容,请点击“阅读原文”。


其他人都在看


OneFlow源码一览:GDB编译调试


解读Pathways:向前一步是OneFlow


OneFlow源码解析:算子签名的自动推断


Hinton:我的五十年深度学习生涯与研究心法


LLVM之父:为什么我们要重建AI基础设施软件


并行计算的量化模型及其在深度学习引擎的应用


大模型训练难?效率超群、易用的“李白”模型库来了


欢迎体验 OneFlow v0.8.0:

https://github.com/Oneflow-Inc/oneflow/

https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgithub.com%2FOneflow-Inc%2Foneflow%2F

————————————————

版权声明:本文为CSDN博主「OneFlow深度学习框架」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/OneFlow_Official/article/details/125884183


热门推荐
您需要登录后才可以回帖 立即登录
说说你的想法......
0
0
0
返回顶部