Aioga
AI资讯 / 技巧观点
返回 AI资讯

Google 详解 Ray AI 库在 TPU 上的运行:Serve、Data 与 Train 抽象化多主机调度与分布式训练

Google Developers Blog(RSS)Aioga 编辑团队2026-07-24T16:41:14.622Z热度 39

Google 在第二篇技术文章中展示了 Ray Serve、Ray Data 和 JaxTrainer 如何抽象化 TPU 切片上的 AI 工作负载复杂性。Ray Serve...

技巧观点Google Developers Blog(RSS)

今日 AI 情报摘要

Google 在第二篇技术文章中展示了 Ray Serve、Ray Data 和 JaxTrainer 如何抽象化 TPU 切片上的 AI 工作负载复杂性。

Ray Serve 通过简单拓扑配置实现多主机模型的 gang-scheduling,Ray Data 以原生 JAX 批次直接供给加速器以消除数据加载瓶颈,JaxTrainer 则自动处理跨切片协调、检查点与容错,简化分布式训练。

中文正文 · AI 翻译

简要总结:第2部分,总共2部分。第1部分:https://developers.googleblog.com/run-ray-on-tpu-part-1-the-foundations/ 介绍了你需要的一个硬件概念和下面的两层(GKE 和 Ray Core)。本部分展示了你实际构建时使用的库:Ray Serve、Ray Data 和 Ray Train。

Google for Developers
header

如果你是第一次看到这里,快速回顾一下。将 Ray 运行在 TPU 上归结为一个注意事项:TPU 芯片被固定分组称为切片(主机虚拟机共享一个称为 ICI 的高速链接),多主机模型必须落在一个完整的切片上,否则其工作节点无法互相访问,作业会挂起。

配备 Ray Operator 插件的 Google Kubernetes Engine (GKE) 会提供切片并标记其主机,Ray Core 原语 slice_placement_group() 可以一次性预留整个切片。你声明一个拓扑(切片形状,例如 16 块芯片的 4x4),下面的库会为你处理放置问题。

有了 Core 在底层处理放置,所有库都遵循同样的模式:声明一个拓扑,让 Core 预留切片。各个库不同的只是你声明的对象。我们将按大多数团队采用的顺序介绍,从 serving 开始。

大多数团队从 Serving 开始。一种需要多个 GPU 才能适配的模型可以运行在单个 TPU 主机上,并且 TPU 通常在推理中更可用且性价比高。Ray Serve 为你提供常见的自动伸缩、负载均衡和多模型组合,并在 TPU 上通过 vLLM(一个高吞吐量引擎)服务于 LLMs。

抱歉,你的浏览器不支持播放此视频。

最困难的情况是模型太大以至于无法放入一个主机(假设一个张量并行切片跨 16 块芯片)。这时 Serve 只需一个额外字段 topology 就能解决问题。

了解这个字段是值得的,因为搞错它是典型的多主机 TPU 故障。当拓扑设置好后,Serve 的 TPU 后端会跳过通常的前置放置组,而是延迟到副本,由副本在启动时创建切片放置组。这种延迟使得张量并行模型的工作节点保持在一个共享的 ICI 网格上。若关闭该字段,Serve 将回退到按芯片的捆绑;在多主机模型中,这些捆绑可能会分散到两个切片上,而由于切片之间没有 ICI,工作节点无法完成第一次聚合操作。你不会遇到崩溃,而是会得到一个一直处于 DEPLOYING 状态的部署,同时你白白消耗 TPU 小时寻找实际上只缺一行 YAML 的错误。所以记住,topology 字段决定了差别。

在实际操作中,你会在一个发布的 vLLM TPU 镜像上部署 RayService(推荐用于生产环境而非原始 RayCluster),等待它达到 Running 状态,然后 curl 该端点。官方 GKE 教程涵盖 v5e 上的 Llama 3 8B 和 Mistral 7B,v6e 上的 Llama 3.1 70B,以及 Stable Diffusion。get-started 示例的 serve 步骤:https://github.com/GoogleCloudPlatform/kubernetes-engine-samples/tree/main/ai-ml/gke-ray/tpu/get-started/serve 讲解了完整的端到端部署流程。

一个快速的加速器的有用性取决于你能否持续地向其输送数据,而 TPU 足够快,以至于原始加载器会成为瓶颈。这就是 iter_jax_batches() 解决的问题。它为你提供已经是 JAX 数组且已经设备分片好的批次,因此训练输入管道或大批量推理任务可以直接从 Ray Data 管道中拉取,无需主机端的 NumPy 到 JAX 复制来阻塞步骤。

iter_jax_batches API 会为你处理设备分片,并且它通过明确选择丢弃(drop)、填充(pad)或抛出(raise)来处理不完整的最后一个批次(即不是批次大小整倍数的批次),而不会在运行三小时后出现形状错误。

你可以把它用作 JaxTrainer 任务的输入端,它本身对于在 TPU 切片上进行大数据集的离线批处理推理也同样有用。它最近已加入 Ray,get-started 示例的数据步骤使用它来进行数据集准备和批处理推理。

TPU 上的 Ray Train:使用 JaxTrainer 进行分布式训练

在 TPU 上,训练曾经是 Ray 的一个令人困惑的部分,因为需要处理拓扑结构,并且在代码中考虑切片形状。JaxTrainer 解决了这一问题。它将 Ray Train 的训练循环(检查点、容错、多切片扩展)引入到 JAX 中——这是 Google 的数组和自动求导库,也是 TPU 的原生框架。你只需提供一个训练函数和一个切片形状,Ray 就会为每个主机启动一个工作器,将它们连接到单个网格中,并在每个工作器上运行你的函数。

在这个片段中,有两点你需要记住以节省调试时间。import jax 放在 train_loop_per_worker 内部,而不是文件顶部,因为每个工作器在其自己的 TPU 上下文中初始化 JAX;如果在模块作用域中导入,你将在第一步之前遇到神秘的设备初始化错误。topology="4x4" 就是整个布局声明,它取代了以前那一块手写的协调代码。与 GPU 上的 JaxTrainer 或 TorchTrainer 相比,唯一真正的区别是 use_tpu=True 和一个拓扑,而不是 GPU 数量。

其余部分就是运行。这是因为 Ray Train 拥有训练循环,你可以获得检查点和容错重启,这使得在可抢占容量上运行长时间的 TPU 训练实际上能够完成,并且当一个切片不足时,topology 可以扩展到多切片(Ray 会处理跨切片协调)。示例 get-started 的训练步骤:https://github.com/GoogleCloudPlatform/kubernetes-engine-samples/tree/main/ai-ml/gke-ray/tpu/get-started/train 是一个完整的 JaxTrainer DPO 运行示例。

作为一流加速器支持的一部分,Ray 现在发布官方 rayproject/ray:*-tpu 镜像,内置 JAX/TPU 堆栈(jax[tpu]、flax、optax、orbax-checkpoint)和分析工具,因此你不必手动组装可用的 TPU 环境。你只需基于标记为 -tpu 的镜像即可。

在监控方面,Ray Dashboard——Ray 内置的集群和作业状态 Web UI——现在在 Cluster 标签页上显示 TPU 利用率和内存,与 CPU 和 GPU 一起显示,同时 ray.util.tpu.init_jax_profiler() 会暴露每个工作器的 JAX 分析器,仪表板可以附加使用。

fig4alt

在本开发者指南中,我们介绍了从 Ray 在 TPU 上的运行到 AI 工作负载运行的整个过程。

第1部分:https://developers.googleblog.com/run-ray-on-tpu-part-1-the-foundations/ 显示,在TPU上运行Ray归结为一个注意事项,即将多主机模型保存在单个完整切片上,而GKE(通过Ray Operator插件)和Ray Core(通过slice_placement_group())会为你处理这个问题。这部分在其之上放置了AI库:Ray Serve 利用单个 accelerator_config.topology 字段将多主机模型统一调度到一个切片上,Ray Data 通过 iter_jax_batches() 将切片传入 JAX 原生批次,JaxTrainer 则从一个 ScalingConfig 运行分布式训练循环。你已经在GPU上使用的同一个Ray,现在可以在TPU上使用。

更多内容即将到来。Google Cloud的Ray团队正在扩大TPU支持,详情见:https://discuss.google.dev/t/google-cloud-tpus-are-now-a-first-class-accelerator-in-ray/345281#p-914268-whats-next-in-progress-and-future-work-3:更深入的Ray Data和Ray LLM TPU集成,SkyRL 在多主机TPU上的强化学习和后训练,以及动态超/子切片支持都在规划中。对于你下一步,我的建议是:克隆入门示例:https://github.com/GoogleCloudPlatform/kubernetes-engine-samples/tree/main/ai-ml/gke-ray/tpu/get-started,启动集群,然后运行 serve、data 或 train。或者只需在集群上启用 --enable-ray-operator,然后在小切片上运行一个Ray任务看看效果。使用TPU不必成为专家,只要尝试一下即可。现在,非常感谢你的阅读!如果你有任何额外问题或反馈,也可以在社交平台上联系我(LinkedIn:https://www.linkedin.com/in/ivan-nardini, X:https://x.com/ivnardini)。

新来的?第1部分:https://developers.googleblog.com/run-ray-on-tpu-part-1-the-foundations/ 解释了切片、GKE以及Ray Core,这些是上面所有内容的基础。

在Gemini企业代理平台中扩展选择:引入通过并行网络搜索进行的Grounding

Bridging the Domain Gap: AI Race Coach built with Antigravity and Gemini

弥合领域差距:使用Antigravity和Gemini构建的AI赛跑教练

Run Ray on TPU, Part 1: The foundations

在TPU上运行Ray,第1部分:基础

Measuring What Matters with Jules

情报判断

Aioga 编辑摘要

Aioga 编辑摘要:Google 在第二篇技术文章中展示了 Ray Serve、Ray Data 和 JaxTrainer 如何抽象化 TPU 切片上的 AI 工作负载复杂性。 Aioga 将其归入「技巧观点」方向,重点关注它对真实使用和行业竞争的影响。

背景分析

背景分析:实践类内容的价值在于是否能被复现、是否有明确边界,以及它能否转化为稳定的开发或工作流方法。

Aioga 观点

Aioga 判断:这条动态更适合作为行业观察信号,当前信息足以建立线索,但不足以推导长期结论。

影响与后续

影响分析:对相关团队而言,短期应先核对来源、可用范围和实际成本,再判断是否值得接入或跟进。 后续观察:继续观察示例是否可复现、工具版本变化、社区反馈和实际成本。

来源与版权说明

本页正文由公开来源页面提取并按原有信息整理,同时保留来源、发布时间和原文入口。版权归原作者及来源网站所有,请通过原文链接核验和阅读来源版本。

抓取通道: RSS · 原始域名: developers.googleblog.com

来源: Google Developers Blog(RSS)

原文链接: 打开原始来源

Aioga 归档: 查看情报页

Content record: source-page · Updated: 2026-07-24T16:41:14.622Z

API 中转站
API RELAY · DEVELOPER INFRASTRUCTURE

API 中转站

统一接入主流 AI 模型 API,为开发、测试与生产环境提供稳定调用入口。

立即访问 api.w173.com
AIOGA SHARE POSTER

分享这篇 AI 情报

Google 在第二篇技术文章中展示了 Ray Serve、Ray Data 和 JaxTrainer 如何抽象化 TPU 切片上的 AI 工作负载复杂性。Ray Serve...

Google Developers Blog(RSS)2026-07-24T16:41:14.622Z
扫码打开文章详情扫码直达文章详情

Aioga 自动聚合全球 AI 动态,并保留来源信息用于核验与引用。