文章插图
作者 | Just
出品 | CSDN(CSDNnews)
“我发现,软件研发总会延期 。”一流科技CEO袁进辉说 。
按照他的预期,深度学习框架OneFlow做两年就能开源给开发者检验,但时间向后延长了近一年半,“确实预计的不准” 。
但无论如何,经过1300多天的打磨,一个由30多人团队打造的基于静态调度和流式执行技术的OneFlow深度学习框架终于问世 。
对于刚刚在GitHub开源的OneFlow,袁进辉总体打85分 。
与其他几个“国产”AI框架相比,袁进辉认为,在完备性上,OneFlow比在今年3月开源的MindSpore和MegEngine要更好,不过支持的模型库还是比2016年就开源的PaddlePaddle要少 。
效率方面,OneFlow的一类优势是“人有我优”,比如其他框架做数据并行得90分,他们进一步“挖油水”,做到接近100分;还有一类叫“人无我有”,其他框架基本只有深度定制才能支持超大模型,而OneFlow可以轻易做到 。袁进辉给出了一组数据对比,显示其他框架在大规模模型训练效率上与OneFlow对比,有数量级的差距 。
而在多卡的易用性上,OneFlow要比其他框架要好,但在支持动态图方面,袁进辉也坦承与PyTorch有差距,不过很快可以追上 。
文章插图
2017年1月,Pytorch正式推出,TensorFlow正如日中天 。彼时,国内外除了一线大厂,鲜有创业公司敢去啃AI框架这一硬骨头,但刚刚成立的一流科技却对此很坚定,即便那时从资金、团队、生态、品牌各个维度上来看,外界认为他们做的是Mission Impossible 。
他们的信心源自对底层技术方向的把握 。2015年,当时还在微软亚洲研究院的袁进辉(网名:老师木)已经研究了快两年的AI框架,和内部专家有过很多交流碰撞,这让他坚定要做一款不同技术方向的AI框架,但那时在研究院找不到工程团队支持 。袁进辉相信,如果能找到数十个“袁进辉”组团,就可以搞定这件大事 。
2020年年初,在又一次估错开源时间后,OneFlow团队最终搞定,开源了二、三十万行代码 。他希望,把这个框架的精妙和创新之处,与每一位使用它的开发者分享 。
GitHub链接:https://github.com/Oneflow-Inc/oneflow
OneFlow地址:https://www.oneflow.org/#
文章插图
为什么是静态调度和流式执行
CSDN:显然,现在OneFlow是真正接受广大开发者检验的时候了,跟之前的预期相比,你给目前开源的版本整体打多少分?
袁进辉:预期的肯定是想让框架综合来说都很好,但这样做工程量实在太大,所以现在只能在一个维度上非常有特色,有优势,整体我打85分,在扩展性这一个维度上是非常好的 。
易用性方面,Pytorch是非常好的 。TensorFlow完备性非常好,用户用这个框架做训练之后,要在服务器端部署,就要serving,在终端上部署要有轻量级版本,要搞可视化,要支持很多的算子,模型库要丰富,要能支持图像、强化学习,自然语言、广告推荐等应用,要什么要有什么,TensorFlow在这方面非常好 。
还有扩展性或效率,就是算的快不快,比如用户投入10倍或100倍资源,能不能真的让它加速10倍或100倍,以及现在业界出现的Bert、GPT-3等大模型,你的框架能不能做 。
OneFlow框架比较大的优势或特色,就是效率 。
CSDN:像GPT-3这些最新的模型OneFlow都会支持?
袁进辉:GPT-3是土豪才能玩的模型,不单是技术问题,暂时还不支持 。Bert是支持的,还有像广告推荐、人脸识别、检测、图像分类,最常见的十几个模型一开源就会支持 。
CSDN:OneFlow架构大致分为哪几层?
袁进辉:最上面是模型库,模型库支持CNN等各种经典模型应用,还有Python的API层,基本上其它框架主要也是Python 。最底层就是跟硬件打交道的,还有XLA、TVM这些编译器 。
中间两层是OneFlow和其他框架差别比较大的地方,分别是编译层和执行层 。编译层其实就是静态调度的实现,执行层就是计算图的执行 。
CSDN:OneFlow框架的设计理念和技术创新是什么?
袁进辉:架构是为目的服务的 。我们最大的追求是降低用户使用多机多卡的难度,提升这方面的用户体验 。
但不幸的是,目前的框架只解决这个需求里最简单的部分,也就是数据并行 。如果神经网络模型参数量本身不大的话,现在所有框架都能有比较满意的结果,但后来又出现很多像Bert、GPT-3这种参数量巨大的新模型,以及超大规模的人脸识别,大规模广告推荐,这就需要支持参数分割的模型并行,模型运行在框架层面是一个非常挑战的难题,到今天绝大部分主流框架都没有这个功能,即使定制之后能跑通,效率也很惨,满足不了工业级需求 。
推荐阅读
- 软件测试|3面支付宝!一个从业4年软件测试工程师面试结束后想说的
- 适用于软件工程师编码面试的十大算法
- 初级运维工程师必须掌握的哪些技能?
- 每个工程师都应该知道的关于Hashmap的知识
- 网络工程师快速入门---网络架构及传输介质详解
- 200 个工具分析机器学习十年:前途未卜、工程师是核心
- 机器学习工程师养成计划-开篇语
- 含解答 海康威视嵌入式软件工程师笔试题分享
- 初级入门IT网络工程师?收下这份关于NTP网络时间协议解读 纯干货
- 职称业绩怎么写?想评工程师中级职称的看过来