很高兴地宣布新版本的OneFlow,这是一个深度学习框架,旨在实现用户友好、可扩展和高效。OneFlow v0.8.0 更新包含 523 个提交。有关完整的 changlog,请查看:
https://github.com/Oneflow-Inc/oneflow/releases/tag/v0.8.0
论文:
https://arxiv.org/abs/2110.15032
代码:
https://github.com/Oneflow-Inc/oneflow
欢迎安装 OneFlow v0.8.0 以获得全新的用户体验。您的反馈将不胜感激!
此版本的亮点和优化:
1. PyTorch API 兼容性
OneFlow v0.8.0 提供了更多更好的 PyTorch 兼容 API。在 v0.8.0 中,一系列与 PyTorch 1.10.0 兼容的新特性和接口已经到位,包括 68 个与 PyTorch 对齐的新 API;修复84个Bug,保证算子和接口更好的兼容,让用户一键转移更多PyTorch模型到OneFlow。
2. 更广泛的全球运营商支持
所有算子都更广泛、更高效地支持 Global Tensor。修复了 28 个 Global Tensor 相关的 bug,增加了 180 个 Global 算子单元测试,使得使用 Global Tensor 开发分布式模型更快更容易。
3. 更好的性能
Graph 的高级功能已得到改进,以获得更好的性能:
除了原有的ZeRO-DP,ZeRO还可以与MP、2-D、3-D并行使用,进一步降低内存开销。
为 Graph 添加了新的管道并行 API,以简化管道并行的配置并在使用管道并行和 3-D 并行时加速训练。
增加了逻辑图、光照计划物理图、内存分析、Python栈信息等多维度调试功能,进一步提升Graph.debug的效率。
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 是一个专门为大规模推荐系统设计的扩展组件。它具有出色的性能、可扩展性和灵活性。
API 文档:
https://docs.oneflow.org/en/master/cookies/one_embedding.html
5.多设备适配
OneFlow v0.8.0提供了一个简洁、高效、易于扩展的硬件抽象层EP(Execution Provider),以适应不同的硬件。引入硬件抽象层后,无论任何底层硬件或框架的实现细节如何,框架的任何模块都无需修改即可适应新的硬件设备。
为了使新的硬件设备能够正常工作,用户只需要根据硬件抽象接口的协议和硬件设备的现状,实现一系列接口即可。
EP 还定义了一组基本的计算接口原语,允许重新实现内核。原语提供的接口比 EP 提供的运行时接口更灵活。不同的接口相互独立,每个接口代表了某种硬件设备所能提供的一种计算能力。
6.调试工具栈
新的调试工具:OneFlow-Profiler 和 AutoProf。
OneFlow-Profiler 是用于在框架执行期间收集性能信息的工具。它可以记录算子和系统组件的执行时间、内存的分配情况以及算子的相应输入和参数。所有这些信息都有助于开发人员找出框架执行中开销的主要来源,从而实现有针对性的优化。
AutoProf 是一个用于测试 OneFlow 和 PyTorch 算子性能的框架。它提供了一种优雅高效的方法来检测 OneFlow API 和 PyTorch API 之间的对齐情况,使用户可以方便地比较 OneFlow API 和 PyTorch API 的性能。
7.错误信息
改进了包含更多详细信息的错误消息。重构异常处理。
8. API 文档
对 OneFlow API 文档进行了 20 多次修订,根据特性对文档进行了重构,并在通用算子 API 的基础上进一步完善了模块和环境变量,包括 OneFlow oneflow.nn.graph、oneflow.embedding 和 oneflow.autograd .