其他
OneFlow v0.5.0 预览版发布
今天是 OneFlow 开源的第 410 天,OneFlow 0.5.0 预览版发布。点击“阅读原文”,欢迎下载体验最新版本。
本次版本更新包含以下重点:
新增动态图特性:OneFlow 默认以动态图模式(eager)运行,与静态图模式(graph)相比,更容易搭建网络、调试和验证算法。
面向对象式的动态图接口 nn.Module,熟悉 PyTorch 的用户可以轻松上手。
“一行代码转换 OneFlow 与 PyTorch 网络”:与 PyTorch 对齐的算子数目增加至200+。在 ResNet50、AlexNet 等常用网络上已通过 import oneflow as torch 和 import torch as flow 验证。注意:此特性是为方便用户由 PyTorch 迁移至 OneFlow 而设计,并不是承诺完全兼容 PyTorch。
面向对象式的静态图接口:新增面向对象的静态图接口 nn.Graph。保留了 OneFlow 静态图性能优势的同时,让静态图的编程门槛与动态图接近,期待更多的算法工程师把 OneFlow 的高性能优势玩起来。附一个用 nn.Graph 搭建的ResNet50示例:https://github.com/Oneflow-Inc/models/tree/main/resnet50)
易用高效的分布式训练:分布式训练是大势所趋,此版本新增的 Consistent Tensor,让用户可以像操作单机单卡一样操作整个集群,并立即看到效果。新增的 launch 模块、DDP 模块配合 OneFlow 的一致性视角让用户轻松启动分布式训练,无论是数据并行、模型并行、还是流水并行,OneFlow 均原生支持,易用高效。
def __init__(self):
super().__init__()
self.model = model # model是 nn.Module 对象
def build(self, x):
y_pred = self.model(x)
return y_pred
graph = NeuralGraph() # Graph 对象
y_pred = graph(x) # 首次调用会编译计算图并运行,后续调用都是直接运行