OneFlow v0.8.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.o rg /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  等模块及环境变量。

猜你喜欢

转载自www.oschina.net/news/204352/oneflow-0-8-0-released
今日推荐