查看原文
其他

OneFlow v0.8.0正式发布

OneFlow社区 OneFlow 2022-08-01

今天是 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.graphoneflow.embeddingoneflow.autograd 等模块及环境变量。
 
查看OneFlow v0.8.0完整更新内容,请点击“阅读原文”

其他人都在看


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存