Xiaoyu Xu
Xiaoyu Xu
### megatron的痛点 单卡和多卡的代码无法复用; 开发新模型,无法拼装,需要fork代码,然后改代码; 保存的模型,是多机分块的,需要手动拼接成一个完整的模型; ### 如何设计,解决这些问题 提供一个预训练模型组件库libai。这个库oneflow model / 合作方【当前多个合作的预训练语言模型】 / 新算法 都可以复用。 提供单卡torch风格的基础module 提供oneflow的分布式moudle 用submodule引用组件库的模块,积木一样搭建新模型 数据预处理(如中文)组件
> eager to graph的转换不能做出抽象吗,如果能做出来,那用户就几乎感知不到eager和graph的区别了,也可以避免每写一个模型,就定义两个graph。建议问问框架组的同事。很多步骤这些都是固定的,只是无法使用**kwargs传参,想办法绕过,或者写个基类,模型传参部分由用户实现,其余部分由框架规定。 之前基于老的函数接口,参考lightning设计,做过一个解决该问题的设计。当时想的是一套代码,支持动静切换 + train和eval,可以参考。 例子: https://github.com/Oneflow-Inc/oneflow/blob/master/python/oneflow/compatible/single_client/test/models/test_alexnet_model.py#L68 实现: https://github.com/Oneflow-Inc/oneflow/blob/master/python/oneflow/framework/model.py#L206 虽然比keras和mindspore要灵活,但是做完后感觉还是比较笨重和受限。需要按约定的接口写代码。另外动静的优化方式也不同,还是存在很多细节问题的。所以我的观点和 @CPFLAME 类似,可以先不做太高层次的API封装,而是做可拼装的组件。 这是当时的一个调研和对比:https://github.com/Oneflow-Inc/OneTeam/issues/193#issuecomment-768853923
projects/DALLE2/dalle2/data/bpe_simple_vocab_16e6.txt 这个文件应该不用提到 git 吧,超大
> > projects/DALLE2/dalle2/data/bpe_simple_vocab_16e6.txt > > 这个文件应该不用提到 git 吧,超大 > > 这个大约3M,感觉不是很大。。 代码变更数量:+266,903
不符合预期,需要看看是怎么来的~
看起来是的 ``` I20220419 11:41:22.487932 2724642 eager_boxing_logger.cpp:42] Boxing route: symmetric-acyclic-nd-sbp-to-nd-sbp -> naive-b-to-1 -> naive-1-to-1 -> naive-1-to-p // ? -> symmetric-acyclic-nd-sbp-to-nd-sbp I20220419 11:41:22.488044 2724642 eager_boxing_logger.cpp:43] Logical shape: (256,100) I20220419 11:41:22.488057 2724642 eager_boxing_logger.cpp:44]...
为了避免 PR 过大,这个 PR 在 Loss 和 相对性能 正常的情况下,可以先推动合并
> 可以附上优化效果吗? 只是先做了拆分、传递 sub graph,然后执行。 还没加上并行,加上并行后我测下效果。
## 测评 plan push pull 拆分 ### 拆分后 plan 大小 ``` E20220907 13:28:30.692723 4087476 nn_graph.cpp:362] rank id 0 plan size 16552127 E20220907 13:28:30.903695 4087476 nn_graph.cpp:391] rank id 0 push plan...
``` I20220908 14:55:18.135390 3711249 time_util.h:81] plan_GraphBase_0_r_3 add op attr time elapsed: 79 milliseconds I20220908 14:55:18.145119 3711248 time_util.h:81] plan_GraphBase_0_r_2 add op attr time elapsed: 88 milliseconds I20220908 14:55:18.145119 3711250 time_util.h:81] plan_GraphBase_0_r_4...