好久不见!OneFlow 1.0全新版本上线
内容提要
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方式。