2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

优步迁移到 Kubernetes 上的 Ray 的过程

作者:Craig Risi

  • 2025-05-15
    北京
  • 本文字数:1237 字

    阅读完需:约 4 分钟

大小:622.31K时长:03:32
优步迁移到Kubernetes上的Ray的过程

优步详细介绍了最近向在 Kubernetes 上运行基于Ray的机器学习负载的迁移过程。这一基础设施的标志性演变旨在增强可扩展性、效率和开发体验。该公司最近发布了由优步工程团队撰写的两篇文章,深入探讨了在这次迁移过程中遇到的动机、挑战和解决方案。

 

最初,优步的机器学习工作流由米开朗基罗深度学习作业(MADLJ)服务管理,该服务使用 Apache Spark 进行 ETL 流程,使用 Ray 进行模型训练。

 

优步之前的机器学习基础设施面临几个挑战,它们影响了可扩展性和效率。一个主要问题是资源管理不够自动化——机器学习工程师必须自己确定正确的计算资源,同时考虑到 GPU 的可用性和当前集群容量。这种人工流程经常导致次优选择和不必要的延迟。对资源和集群的静态配置设置让问题雪上加霜,这些设置被硬编码到了系统中。这种僵化导致了不均匀的负载分配和资源的低效利用,限制了平台的整体效率。

 

此外,系统无法灵活规划容量也是个问题。平台要么过度配置资源——结果浪费计算能力,要么配置不足,导致作业失败或延迟。这些限制加起来就搞出了一个既低效又难以扩展的环境,促使优步通过迁移到 Kubernetes 和 Ray 来寻求一个适应性更强和更加自动化的解决方案。

 

为了解决这些问题,优步将其机器学习负载迁移到 Kubernetes,目标是实现一个更具声明性和更加灵活的基础设施。这次迁移过程还开发了一个统一平台,让用户可以在不深入了解底层基础设施复杂性的情况下指定作业类型和资源需求。然后系统将根据当前集群负载和作业规范自动分配最优资源。


Kubernetes 中的弹性资源共享。

 

优步将其机器学习负载迁移到 Kubernetes 时,一个重点是通过弹性资源管理提高资源利用率。为了实现这一点,团队实施了一系列策略,使整个组织能够更灵活、更高效地使用计算资源。其中一项策略是引入层化资源池,根据团队或组织边界组织集群资源。这种结构使团队能够更精细地控制其分配的计算资源,并提高了对使用模式的可见性。

 

另一大改进是这些资源池之间的弹性共享。如果一个池有空闲资源,它们可以临时被另一个池借用,提高整体利用率,而无需永久重新分配容量。这些借用的资源是可抢占的,意味着它们可以在需要时被原始池收回。为了确保公平并避免资源争用,团队使用最大/最小公平原则强制执行资源配额。这意味着每个池都保留了资源的保证份额,同时仍能够根据当前需求动态访问额外容量。这些机制使优步能够更有效地扩展并应对机器学习负载的波动需求。


GPU Pod 的过滤器插件。

 

此外,优步实施了优化异构硬件使用的策略。集群配置了支持 GPU 和仅 CPU 的节点。不需要 GPU 的任务,如数据加载和预处理,被分配给 CPU 节点,而 GPU 节点只用于训练任务。

 

优步还开发了一个 GPU 过滤器插件,以确保只有 GPU 负载被安排在 GPU 节点上。Kubernetes 调度器也得到了增强,使用负载感知策略分发非 GPU Pod,并使用装箱策略分发 GPU 负载,以尽量减少资源碎片化。

 

通过这些变化,优步为其机器学习负载实现了一个更高效、更灵活的基础设施,使资源利用和可扩展性得到了更好的提升。

 

原文链接:Uber’s Journey to Ray on Kubernetes

2025-05-15 17:006532

评论

发布
暂无评论

helm 3.8 命令指南

ghostwritten

Kubernetes Helm

转行运维工程师之后,我先把这几个Linux 命令记在了本子上,实干9场景

梦想橡皮擦

5月月更

helm 插件:helm-schema-gen——yaml转换json

ghostwritten

Kubernetes Helm

helm charts openshift Certified 实践

ghostwritten

Kubernetes Helm

2. helm 简介

ghostwritten

Kubernetes Helm

5. helm charts 基础入门

ghostwritten

Kubernetes Helm

helm values.yaml

ghostwritten

Kubernetes Helm

helm 控制流程:循环、判断

ghostwritten

Kubernetes Helm

helm 注意事项

ghostwritten

Kubernetes Helm

helm 自动滚动部署

ghostwritten

Kubernetes Helm

TiDB【城市开拓招募帖】回答“社区活动什么时候来我的城市?”

TiDB 社区干货传送门

Java多线程知识点总结(思维导图+源码笔记

爱好编程进阶

Java 程序员 后端开发

巴延兴:从主导多个SIG组到OpenHarmony “代码贡献之星”,我是如何做到的?

OpenHarmony开发者

OpenHarmony sig

1. helm 目录

ghostwritten

Helm #Kubernetes#

用一个性能提升了666倍的小案例说明在TiDB中正确使用索引的重要性

TiDB 社区干货传送门

helm 命名模板

ghostwritten

Kubernetes Helm

【Python】题集 of ③

謓泽

5月月更

helm v2 hooks

ghostwritten

Kubernetes Helm

AIRIOT物联网低代码平台如何配置db-driver驱动?

AIRIOT

低代码开发 驱动配置

贡献者任务第三期精彩来袭!

第四范式开发者社区

人工智能 机器学习 数据库 开源 贡献者

helm test 测试

ghostwritten

Kubernetes Helm

4. helm 3.8.0 入门

ghostwritten

Kubernetes Helm

helm charts 内置函数

ghostwritten

Kubernetes Helm

TiDB 6.0 Book Rush!一起来分布式创作 6.0 的使用手册吧!

TiDB 社区干货传送门

web技术支持| 从视频元素流式传输到视频元素

anyRTC开发者

前端 Web 音视频 WebRTC 视频通话

helm v2 公共源大全

ghostwritten

Kubernetes Helm

helm 模板函数与管道

ghostwritten

Kubernetes Helm

ansible 远程容器机种方法

ghostwritten

Docker ansible

汽车行业云,如何管“多云”?

BoCloud博云

案例 汽车 云管理平台

helm NOTES.txt

ghostwritten

Kubernetes Helm

java培训redis集群原理分享

@零度

redis JAVA开发

优步迁移到Kubernetes上的Ray的过程_后端_InfoQ精选文章