深度学习框架是当前人工智能领域业界公认的最重要的基础设施软件,也被称作AI领域的操作系统,上承算法和应用,下接硬件芯片。深度学习框架技术栈覆盖理论算法、编译器、分布式系统、异构计算等硬核技术。
OneFlow 是世界范围内唯一一款由初创企业开源的通用深度学习框架,由国内创业团队一流科技研发,是深度学习框架事实工业标准的最有力竞争者之一。
本期 “开源软件开发” 课程介绍国产开源深度学习框架OneFlow的开源历程,希望对深度学习框架感兴趣的朋友可以参与OneFlow社区,与优秀的国产开源项目共同成长。
GitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient.OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient. - GitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient./Oneflow-Inc/oneflow/
1、为什么研发OneFlow深度学习框架?
软件平台不仅要解决眼前的需求,更要面向未来的需求。现有的软件平台技术方案大同小异,对于单设备或多设备数据并行这种简单场景的支持已经非常优秀,但从BERT模型开始,GPT-2、GPT-3等超大模型成为常见现象或者具有复杂拓扑结构的神经网络时,易用性和效率都大打折扣,有这种需求的工业级应用只好使用定制化解决方案(譬如英伟达的Megatron),而无法使用通用软件平台实现。
从BERT模型开始,GPT-2、GPT-3等超大模型不断出现,当超过千亿级别特征数量的模型成为常见现象时,硬件水平发展导致内存墙逼近算力的天花板。受限于物理定律,单一设备的算力及内存容量对持续提高芯片的集成越来越困难,难以满足大模型规模扩大的需要。
本质上,设备之间互联带宽远低于设备内访存带宽,面临和传统CPU 上内存墙(Memory Wall)类似的难题,而分布式则是近两年框架领域的核心问题。
OneFlow最早探索这方面的技术路径,并且开创的一些关键技术已经产生了国际影响力。我们在分布式上的杀手锏是通过技术创新解决深度学习框架的效率和编程易用性问题,有了这样的解决方案,让算法工程师等AI应用开发者既能享受软件的灵活和便利,又能享有专用硬件的高效性。
我们坚信,通用的解决方案是技术收敛的方向,只有通用的解决方案才可能成长为Hadoop那样的事实工业标准。
随着AI成为通用技术、更加普惠化,未来的商业机会可能将出现在基础设施层,因为AI Infra的壁垒足够大,而且越往底层标准化程度越高。
2、为什么用创业的方式研发框架?
创业是社会资源组织和分配的一种优秀机制,能最大化这项事业的成功率。首先,社会会赋予创业团队做这件事所需要的资源(资金和人才)、灵活和敏捷,在大公司,未必是最适合做这项事业的人或志同道合的人来承担这样的项目。
其次,在创业团队内部做到最公平的利益分配才能最大激发成员的主观能动性,鼓励创新和承担风险,需要具有聪明材质和热情的人才持久的投入,没有合理的利益分配机制是难以保证的。
3、为什么选择开源OneFlow?
开源代表一种更先进的生产方式,是软件分发效率最高的手段,打破了传统软件销售模式的信息不对称,是一种公平、公正的筛选机制。由于市场和技术的双向选择,开源已经成为了基础软件研发的主流,并且将会成为未来的大多数软件研发的首选模式。
4、为何不担心技术秘密的泄漏?
首先,开源是希望更多人使用和贡献OneFlow,开源软件被最多人使用就成功了,有利于快速构建开源生态,确立事实工业标准的位置,从而实现商业目标,保密反而不利于实现这个目的。
其次,基于Apache 2.0协议,只要给予我们相应的credit,欢迎任一项目使用OneFlow的代码。此外,公开的“秘密”不是秘密,在深度学习框架这种基础软件领域,只是简单复制OneFlow的一些想法远远不够,如果自己没有拥有足够大的创新优势,顶多只是一个跟随者,无益于赢得用户的认可,这种项目不会走远。
5、开源2年,OneFlow做到了什么程度?
OneFlow分布式深度学习框架是基于对人工智能技术和应用发展需求的领先数年的前瞻性思考,针对超大规模训练、分布式、异构等带来的挑战,采用全新的“静态编译+流式系统”架构,突破了自动并行、静态调度、去中心化和全链路异步流式执行四大关键核心技术和一系列创新性难题,不仅能够大幅提升硬件资源利用率,而且能够简单方便地实现基于异构集群训练任务的大规模分布式扩展,将系统整体性能提升到极致。
-3月,历时5年研发后,OneFlow正式开源。从训练效率角度看,OneFlow 的优势可以概括为“人有我优”和“人无我有”。对于参数量不大的CNN 和 BERT等模型, OneFlow 仍会有百分之十以上的性能提升,而对于GPT-3等超大参数量模型, 现有主流深度学习框架只有经过深度定制才能满足这种大模型训练的需求,OneFlow 的运行效率有数量级的优势。
8月,OneFlow v0.5.0版本发布,重点从优化编译、API接口等层面攻关易用性体验,同时持续优化分布式性能,从全局视角打破了深度学习框架易用性和高效性不可兼得的桎梏,继续保持业界技术领先地位。
7月,OneFlow v0.8.0版本发布,过去一年,我们对OneFlow易用性进行持续攻关,那些在PyTorch等框架已被证明的优秀设计思路,OneFlow基于一个效率更高的动态执行引擎实现了编程API完全兼容PyTorch。不仅如此,通过支持Google的一系列编译器(XLA和IREE等)、NVIDIA的TensorRT和Intel的OpenVINO等编译器,以及手工实现了比其它框架更快的一批CUDA算子,在单卡效率上也首屈一指。
第四季度,OneFlow v1.0.0即将发布,敬请期待......
目前,OneFlow引领并代表了新一代深度学习框架的技术演进和产品迭代方向,获得国内外上下游企业的高度认可和关注,以及国内外同行和友商的研究和追随,这在国产开源基础软件领域是罕见的。
6、开源后最大的挑战是什么?
如何让每一位像你一样的AI开发者对OneFlow感兴趣并使用OneFlow。
7、OneFlow的贡献者从何而来?
一方面来自开源项目的发起人、核心开发者,另一方面来自对开源项目感兴趣的开发者和用户。
作为一个早期的硬核开源项目,能为OneFlow提交代码PR的开发者,技术水平相对较高,但对于还不熟悉开源的开发者和用户,我们通过知识分享类的视频、技术文章,可以让他们快速了解OneFlow的相应知识。当然,除了参与研发工作,使用OneFlow、参与社区互动讨论、向他人推荐OneFlow,都是OneFlow社区的贡献者。
8、如何参与 OneFlow 项目?
可能有些没参与过开源项目的朋友,会误以为只有为项目贡献代码才算参与开源项目。其实参与开源项目的入口很广,除了贡献代码外,OneFlow 社区中提交的每一个 issue,报告的每一个 bug,甚至每一次提问,都是开源项目的贡献者。
OneFlow 布道师 @不想吃糖liao 已经针对在校同学的需求以及 OneFlow 项目的特点,制作了一些系列视频教程,可以帮助同学加速了解和参与 OneFlow 开源项目:不想吃糖liao的个人空间_哔哩哔哩_Bilibili
其中包括 Git/GitHub 系列,手把手教你怎么提交 issue、PR,也有讲解现代C++的《C++“新”语法》系列,可以将C++学习融入到OneFlow的具体代码中。此外还有CUDA、CPython等系列,它们都提炼自实际的工作需求,相信不会让你失望。
只需要一台电脑,欢迎下载、安装 OneFlow,用来复现案例:OneFlow -- 全新一代深度学习框架 - OneFlow
只需一个GitHub账号,欢迎在GitHub提issue、PR,或者仅仅只是加入OneFlow社区交流,讨论AI相关技术内容,与社区开发者一起成长。
以下是OneFlow实习生接触开源项目后的感受:
刘馨蔓(多伦多大学研一学生):来到 OneFlow 之后,我了解到开源的精神和意义,也熟悉了开源项目的工作流程,能和全世界各地的开发者们共同为一个项目做贡献还是很快乐。——
左益豪(北京邮电大学研一学生):在 OneFlow 实习之前,自己只是在单方面的开源使用者,并没有深入参加过其他的开源项目,对开源的了解也甚少,或者可以说从未体会到开源的精神以及工作方式。比如之前在使用 MMDetection 的过程中发现了 bug,由于感觉可能会很麻烦也并没有去提个 PR,只是在本地 fix 后继续用。这是我第一次参与开源项目的开发,体验了从创建分支、开发、提交PR、PR合并这个流程。我的主要工作是和推荐组一起搭建推荐模型库,之前并没有接触过,过去的两个月,我用OneFlow复现了DeepFM,并且了解了DeepCTR。我之前也用过PyTorch,OneFlow的语法设计得和PyTorch很像,有利于工程师快速上手,降低学习成本。对OneFlow最大的感受就是快,尤其是开了并行之后,不愧是至简至快的深度学习框架。
王世杰(华中科技大学研二学生):当然,在校生要提升自己的能力,直接去公司实习,参与真实的项目开发,提升是最快的。我身边参与开源项目的同学不多,不过参与开发像OneFlow这样的项目是一件很酷的事,如果能全职做开源,那简直太幸福了。
欢迎参与其中,与国产开源深度学习框架一起乘风破浪!
GitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient.OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient. - GitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient./Oneflow-Inc/oneflow/
OneFlow 还将出现在CSDN的高校开源软件开发课程中,欢迎参与: CSDN 技术社区 / Intro-OSSD · GitCode
OneFlow框架交流QQ群:331883