Uber 如何在 Kubernetes 上运行 Ray
快速阅读: 据《印度分析杂志》称,优步将其机器学习工作负载迁移到Kubernetes,并开发工具确保系统稳定。通过构建统一编排层,实现高效资源管理。Ray作为关键组件,帮助简化分布式计算,获得众多企业信赖。
多家公司正面临是否继续使用或完全放弃Kubernetes的艰难抉择。一些公司选择了彻底舍弃它,而另一些公司在尝试单体架构后,又将工作负载迁回了Kubernetes。然而,无论哪种方式,都存在诸多痛点,且没有单一的完美解决方案。去年,网约车物流巨头优步决定升级其机器学习平台,并将机器学习工作负载转移至Kubernetes。秉承优步一贯的风格,他们不仅完成了工作负载的迁移,还在此过程中构建了自己的工具,以确保系统平稳运行。近期,优步的技术团队在其博客中详细阐述了此次转型及其背后的动因。
机器学习管道通常要处理海量数据,尤其是在模型训练阶段。这些属于批处理作业,可被分解为大量分布式任务,并在流程中相互关联。去年,优步决定将其机器学习平台升级,并将机器学习工作负载迁移到Kubernetes。遵循优步的习惯做法,他们不仅进行了工作负载的迁移,还开发了一些工具以保障系统的顺利运行。截至2023年年中,优步开始利用内部作业网关MADLJ来运行基于Spark和Ray的作业。尽管这一配置能够完成任务,但也引发了一系列问题。机器学习工程师需要精准管理作业分配:选择集群、区域以及具体的GPU型号。一旦出现差错,可能导致长时间排队、闲置GPU,甚至更糟糕的情况——实验中断。部分问题源于MADLJ依赖于Peloton,而后者运行在Apache Mesos之上。由于Mesos已不再流行,优步意识到是时候转向Kubernetes,这是当前行业标准。幸运的是,像Spark和Ray这样的工具已支持Kubernetes,这使得这一决策显得尤为直接。
不过,优步并未完全抛弃原有的系统。它对Peloton的部分自定义功能(如资源池和弹性共享)进行了适配,使其能与Kubernetes协同工作。Anyscale的联合创始人罗伯特·尼希哈拉在评论优步的博客时指出,Ray和Kubernetes如何相辅相成。“这两者结合,构成了面向人工智能的软件栈,满足两方面的需求。”他说。
优步的目标
为了理顺这一混乱的局面,优步为机器学习作业构建了一个统一的编排层。如今,工程师只需定义作业类型(例如Spark或Ray)及资源需求(CPU/GPU、内存),系统便会接管剩余的工作。智能作业调度器依据实时资源可用性、位置和成本,将工作负载路由至多个Kubernetes集群。这套系统的精髓在于联邦资源管理,使优步的计算集群仿佛成为一个单一的资源池。
首先是用户应用层,机器学习管道在此运行。它们通过API交互,并以简洁明了的方式提交作业请求。其次是全局控制平面,这是操作的核心大脑。它运行在Kubernetes之上,并带有定制的API服务器和控制器来处理作业。最后是本地控制平面,即实际运行作业的各个Kubernetes集群。在全局控制平面中,优步引入了自定义的Kubernetes资源来表示作业。它还构建了一个作业控制器,用于监视这些作业请求,并决定在哪里运行它们。一旦找到合适的集群,它就会启动作业,监控直至完成,随后清理一切。
本地控制平面则负责实际运行作业的各个Kubernetes集群。它通过优步内部的所有权系统(uOwn)自动处理密钥管理、生命周期、故障恢复以及团队专属的路由分发。这不仅提升了开发人员的工作体验,也提高了大规模基础设施的效率。其独特之处在于,这不是Ray独有的——它是一个抽象层,适用于任何具有声明式资源规范的作业类型。因此,无论是进行小规模训练实验,还是在GPU上部署大规模分布式任务,平台都会透明地处理编排和扩展。
如果您正在运行分布式机器学习,并希望避免基础设施混乱,优步的Ray-on-Kubernetes堆栈是一个值得研究的参考案例。提到汽车行业,许多公司一直在利用Kubernetes来管理和开发他们的软件。这包括特斯拉、福特、梅赛德斯-奔驰、大众、电装以及自动驾驶公司Waymo、Aurora和Zoox。但这又是另一个故事。
Ray广受信赖
Anyscale的Ray是真正的赢家。深受OpenAI、AWS、Cohere、Canva、Airbnb和Spotify等人工智能领导者的信赖,Ray是一个开源的计算引擎,旨在简化人工智能和Python应用程序的分布式计算。它让开发者能够轻松扩展工作负载——无需深入了解分布式系统。“在OpenAI,Ray让我们能够比以往更快地大规模迭代。我们使用Ray来训练我们的最大模型,包括ChatGPT,”OpenAI联合创始人格雷格·布罗克曼在一篇博客文章中说道。随着人工智能模型的规模和复杂性不断增加,开发者需要突破单机设置,进入多节点、GPU加速的环境。Ray通过一个统一的框架弥合了这一差距,抽象了分布式计算的复杂性。当然,它并非没有问题,但优步通过Kubernetes成功解决了这些问题。📣 现在就准备好参与今年的AI盛会——立即注册Cypher吧!
(以上内容均由Ai生成)