好久不见!OneFlow 1.0全新版本上线

💡 原文中文,约5100字,阅读约需12分钟。
📝

内容提要

OneFlow开源框架发布了v1.0.0版本,包含80多个新特性和130多个功能改进与问题修复。性能优于PyTorch,新增了PyTorch兼容性接口、Eager运行时优化与重构、静态图分布式物理执行计划支持分离编译功能、函数式自动微分接口、Insight模块和OneFlow Serving功能升级。

🔎

延伸解读

PyTorch兼容接口的实用价值

OneFlow v1.0.0新增的compile_from_torch接口,允许在共享参数显存的情况下,将PyTorch的Module实例转化为OneFlow的Module实例,并支持直接Eager运行或转化为静态图nn.Graph进行MLIR编译加速。该接口目前支持动态形状编译,并在ResNet50、Faster RCNN、Stable Diffusion三个典型模型上做了验证。对于已有PyTorch代码的用户,这降低了迁移成本,可以更便捷地利用OneFlow的性能优势。

分离编译对大规模训练的意义

静态图分布式物理执行计划支持分离编译功能,每个进程独立编译自己所需的执行计划,使得编译时间不再随GPU规模线性增长。该功能支持3D混合并行场景,可与LiBai一同使用。在128卡A100-PCIE-40GB设备上配合LiBai在GPT2模型上的测试结果显示,分离编译能有效控制大规模分布式训练的编译开销,提升扩展效率。

性能优势的具体场景

根据文章,OneFlow在深度学习编译后使用Graph模式运行,以及Eager模式运行,在典型模型上相比PyTorch都有明显领先优势。具体测试中,OneFlow compile_from_torch相比PyTorch compile接口编译时间更短,在Stable Diffusion模型上执行性能更优;在ResNet50和Bert模型的小batch场景下,OneFlow Eager相对PyTorch Eager也有明显性能优势。这些结果基于特定GPU和软件版本,实际表现可能因环境而异。

新增工具与部署能力

OneFlow v1.0.0新增了函数式自动微分接口,包括jvp、vjp、hvp、vhp、jacobian、hessian,为高阶微分等场景提供支持。Insight模块支持可视化展示kernel调用、执行时间等信息,帮助性能分析。OneFlow Serving在原有Cpp后端基础上,新增Python和Lite后端,分别适用于快速部署和端侧设备部署。LiBai v0.3.0支持大语言模型的finetune和分布式推理,并可使用lm-eval-harness进行评测。

❓

Q&A

OneFlow v1.0.0版本有哪些主要新特性?

OneFlow v1.0.0版本包含80多个新特性和130多个功能改进与问题修复,新增PyTorch兼容性接口、Eager运行时优化、静态图分布式物理执行计划支持分离编译等。

OneFlow与PyTorch在性能上有什么区别?

OneFlow在深度学习编译后使用Graph模式和Eager模式的运行时性能优于PyTorch,尤其在典型模型上表现明显。

如何将PyTorch模型转换为OneFlow模型?

可以使用新的compile_from_torch接口,将PyTorch的Module实例转化为OneFlow的Module实例,支持直接Eager运行或转化为静态图。

OneFlow的Eager运行时做了哪些优化?

Eager运行时进行了统一内存池、优化指令调度机制、引入指令融合机制等多项优化与重构。

OneFlow的Insight模块有什么功能?

Insight模块支持可视化展示kernel调用、执行时间等信息,帮助用户分析性能。

LiBai v0.3.0版本更新了哪些功能?

LiBai v0.3.0版本支持大语言模型的finetune和分布式推理,提供多种finetune方式。

🏷️

标签

➡️

继续阅读