Ray:大模型时代的AI计算基础设施
8月12日在掘力计划系列活动第21场《解析大语言模型的训练和应用》分享中,蚂蚁(计算智能技术部)Ray团队开源负责人,Ray开源社区Committer宋顾杨应邀作了题为《Ray: 大模型时代的AI计算基础设施》的技术分享。
宋顾杨的分享主题:《Ray:大模型时代的AI计算基础设施》。Ray这个分布式计算引擎框架,可能很多人都没有听说过Ray这个框架,主要是原因作为一个基础设施,Ray往往不以产品的形态出现,而是作为产品的支撑。
如果来说一些基于Ray来支撑的一些产品,大家肯定就耳熟能详了,比如:OpenAI,OpenAI在今年揭露了一些他们的GPT系列产品底层训练所使用到的分布式计算框架,其中Ray框架就被他们重点指出了其所发挥的作用。
1. Ray的演进
Ray从诞生之初,其实是作为一款强化学习方面的框架被创造出来,随着时代的不断变化,Ray也被加入了更多的功能,其定位也在慢慢发生改变,先来看一下Ray的发展历程:
从诞生到现在,Ray经历了七年的发展,从一开始的强化学习方向到现在的AI方向,Ray的团队及其开源社区也做了很多的努力,其中宋顾杨所在的蚂蚁集团从2017年就开始采用Ray框架作为支撑,并为Ray内核贡献了超过26%的代码,所以Ray框架其实在蚂蚁的各个场景内都有涉及,并且蚂蚁集团也为其发展也贡献了不小的力量:
到目前为止,Ray的定位就是一款面向AI的新一代AI计算框架,同时也是一款通用分布式计算框架。
Ray在计算系统中解决的核心问题可以用一张图来概括:
对于任何一个分布式系统研发团队来讲,他们会面临一些很重复的问题,就是上图右边的这些问题,这些问题会耗费整个研发团队很多不必要的经历,Ray来解决的就是这么一个问题,让研发团队更专注于自身的业务系统上而非通用问题上。
2. Ray核心能力
通过上面分享人给的例子图,可以看出Ray对于整个计算任务有很强的优化,无论是从效率还是功能上,都远远超过传统的云原生计算方式。
Ray能有这么大的提高,离不开它的一些核心设计点:
不绑定计算模式:把单机编程中的基本概念分布式化。无状态计算单元:通过简单的注解就可以让一个本地方法放到远程机器上执行。有状态的计算单元:轻松将一个本地类部署到远程机器上,类serverless。分布式Object:多节点之前Object传输,自动垃圾回收。多语言和跨语言:Ray支持Java、Python、C++,并且可以做跨语言调用。资源调度:注解声明式任务需要分配的资源,比如CPU,是否同一节点。自动故障恢复:Ray所有组件都具有自动恢复功能,用户无需关心其底层细节,声明其实现即可。运行时环境依赖:针对不同的任务可以直接声明不同的运行环境,比如需要一个带tensorflow的python环境。运维:完善的运维与监控功能与可视化页面。虽然实现了这么多强大的功能,Ray的架构却是非常的简洁高效:
具体想要了解具体Ray的架构协作方式可以参考他们的官方文档,在这里就不多做阐述了。
3. Ray的开源生态与案例
上图就是Ray支持的AI生态的全景图,几乎涵盖了市面上所有主流框架,也就是说,在Ray里面可以很方便的上面这些框架做集成。
通过这些框架集成,Ray也可以将整个AI pipeline执行过程串联成以下四个大步骤:
Data -> train -> tune -> serve,这四步涵盖了所有分布式训练的主要功能:
数据预处理。深度学习。深度调优。在线推理。在Ray中,你可以通过短短百行代码完成以上所有步骤。
在开源大模型训练方面,也有许多大型项目在使用Ray:
在企业级应用方面,大家最耳熟能详的应该就是ChatGPT-4了:
除了OpenAI之外,还有许多来自全球各地的公司在深度使用Ray:
最后,如果大家对 Ray 这个框架感兴趣,可以去其官网了解关于它的更多内容~
- 免责声明
- 本文所包含的观点仅代表作者个人看法,不代表新火种的观点。在新火种上获取的所有信息均不应被视为投资建议。新火种对本文可能提及或链接的任何项目不表示认可。 交易和投资涉及高风险,读者在采取与本文内容相关的任何行动之前,请务必进行充分的尽职调查。最终的决策应该基于您自己的独立判断。新火种不对因依赖本文观点而产生的任何金钱损失负任何责任。
热门文章
