分布式|OneFlow v0.5.0 预览版发布
【分布式|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 均原生支持,易用高效。
新增与 PyTorch 兼容的动态图模式,原 PyTorch 用户可直接上手体验,无额外的学习成本和迁移成本。
https://docs.oneflow.org/master/basics/01_quickstart.html
2、nn.Module 接口
提供面向对象式的接口 nn.Module,使得搭建神经网络更简单。
https://docs.oneflow.org/master/basics/04_build_network.html
3、nn.Graph
长时间以来,动态图的性能、部署短板让人遗憾;静态图的编程门槛让人望而生畏。OneFlow 推出 nn.Graph 方案。
nn.Graph 和 nn.Module 一样,也是面向对象式的接口,并且可以大量复用 nn.Module 中的功能。同时 nn.Graph 保留了 OneFlow 一贯的静态图的高效性能。用户只做少量的改动,就可以将 nn.Module 转为高性能的静态图。如以下示例。
class NeuralGraph(flow.nn.Graph):
def __init__(self):
super().__init__()
self.model = model # model是 nn.Module 对象def build(self, x):
y_pred = self.model(x)
return y_predgraph = NeuralGraph() # Graph 对象
y_pred = graph(x) # 首次调用会编译计算图并运行,后续调用都是直接运行
用户使用 nn.Module,可以快速验证想法,解决正确性、模型效果的问题。
需要优化性能时,再花很少的精力转为 nn.Graph。
https://docs.oneflow.org/master/basics/08_nn_graph.html
4、易用高效的分布式训练
对不少工程师而言,可能还不熟悉分布式训练,为此我们整理了分布式训练专题,它既可以作为用 OneFlow 做分布式训练的用户手册,也可以作为深度学习分布式入门的一手资料。
https://docs.oneflow.org/master/parallelism/01_introduction.html
5、Consistent Tensor
新增动态图模式下的 Consistent Tensor,用户第一次可以简单直观地看到张量在集群中如何被自动分发、组合。OneFlow 提供的一致性视角,让 OneFlow 不借助插件,就能轻松配置各种并行策略。
https://docs.oneflow.org/master/parallelism/03_consistent_tensor.html
6、DDP 模块
新增 DDP模块用于做分布式数据并行。它使得用户只需要改动极少的代码,就能将单机训练脚本扩充为分布式脚本。
https://docs.oneflow.org/master/parallelism/05_ddp.html
7、易用、原生的流水并行支持
使用 nn.Graph,通过设置 Consistent Tensor 的 placement 和 sbp 属性,用户只需要关注流水并行的逻辑。支持高效流水所需的 micro batch、张量缓存分配等问题都由 OneFlow 自动解决。
查看流水并行示例代码:
https://docs.oneflow.org/master/parallelism/06_pipeline.html
其他人都在看
- “我们决定去登月”| OneFlow开源这一年
- 并行机缔造者希利斯和思维机器的浮沉十年
- 对抗软件系统复杂性③:恰当分层,不多不少
- 动态调度的“诅咒”| 原有深度学习框架的缺陷③
- 为OneFlow添加新的前端语言
文章图片
文章图片
推荐阅读
- 深入浅出谈一下有关分布式消息技术(Kafka)
- KubeDL HostNetwork(加速分布式训练通信效率)
- 实操Redission|实操Redission 分布式服务
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- 2021年行业社群孵化的分布式商业趋势
- 啥是负载均衡、高并发、分布式、集群()
- 关于分布式锁|关于分布式锁 Redis 与 Zookeeper 的原理,它们如何实现分布式锁()
- 分布式环境中如何解决|分布式环境中如何解决 Session 的问题
- CentOS|CentOS 7.2搭建FastDFS 分布式文件系统,实现高可用集群
- java|java B2B2C 仿淘宝电子商城系统-Spring Cloud构建分布式电子商务平台