<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Ray | Feisky</title><link>https://feisky.xyz/tags/ray/</link><description>极客时间专栏作者，专注于 Kubernetes、AI Infra、AI Agent 领域的深度技术分享，让 AI 成为你的第二大脑</description><generator>Hugo 0.167.0</generator><language>zh-CN</language><managingEditor>Pengfei Ni</managingEditor><webMaster>Pengfei Ni</webMaster><lastBuildDate>Mon, 12 Oct 2026 01:13:21 +0000</lastBuildDate><atom:link href="https://feisky.xyz/tags/ray/index.xml" rel="self" type="application/rss+xml"/><item><title>开源 TauGrid：Kubernetes 上的云原生 GPU 基础设施</title><link>https://feisky.xyz/posts/2026-09-01-taugrid%E6%AD%A3%E5%BC%8F%E5%BC%80%E6%BA%90/</link><pubDate>Tue, 01 Sep 2026 20:00:00 +0800</pubDate><dc:creator>Pengfei Ni</dc:creator><category>AI Infra</category><category>Kubernetes</category><category>GPU</category><category>Kueue</category><category>Ray</category><category>TauGrid</category><category>开源</category><guid>https://feisky.xyz/posts/2026-09-01-taugrid%E6%AD%A3%E5%BC%8F%E5%BC%80%E6%BA%90/</guid><description>&lt;p&gt;在 Kubernetes 上搭过 AI 训练平台的人应该都有这个感觉：配额排队要装 Kueue，分布式训练要装 KubeRay，GPU 健康检测要装 Node Problem Detector 和 DCGM，监控又是 Prometheus 一整套。一个一个装起来倒也不难，难的是怎么把这些东西攒成一套有机整合的统一平台。中间还得自己写一堆胶水：提交脚本、队列封装、健康检查、结果拉取，每样都得自己写，各种异常也得小心处理。&lt;/p&gt;</description><content:encoded>&lt;![CDATA[<p>在 Kubernetes 上搭过 AI 训练平台的人应该都有这个感觉：配额排队要装 Kueue，分布式训练要装 KubeRay，GPU 健康检测要装 Node Problem Detector 和 DCGM，监控又是 Prometheus 一整套。一个一个装起来倒也不难，难的是怎么把这些东西攒成一套有机整合的统一平台。中间还得自己写一堆胶水：提交脚本、队列封装、健康检查、结果拉取，每样都得自己写，各种异常也得小心处理。</p><p>这让只想跑个训练任务的研究员不只需要学习 Kubernetes，还得去学习一大堆的生态项目，否则出了问题都不知道从哪儿查起。</p><p>我们做<a href="https://github.com/Azure/taugrid">TauGrid</a> 就是为了把这些不同组件收到一起，并把整个系统全部开源了。我们把这几样核心组件收进了一套 Kubernetes 原生栈：<code>tau</code> CLI、<a href="https://kueue.sigs.k8s.io/">Kueue</a> 队列、<a href="https://ray-project.github.io/kuberay/">KubeRay</a> 编排、GPU 健康监控和可观测性，再到为平台和研究员提供不同视图的 Web Portal。从数据准备、模型训练一路到推理服务，支持整套 AI Stack 的统一管理。</p><p>以前这些组件得一个个搭，组件之间的集成也得自己维护。现在一个 tau 命令全部搞定。平台团队有一个统一的入口，研究员只要一个 CLI 就够了：提交任务、看进度、从失败恢复、拉回结果，全不再需要去碰 Kubernetes 和各种内部组件。</p><p>今天的文章，我就带你一起来看看 TauGrid 到底是什么。</p><h2 id="taugrid-是什么">TauGrid 是什么</h2><p>说白了，TauGrid 就是把托管 AI 平台该有的东西搬到你自己的集群上。任务提交、分布式计算、GPU 共享、实验追踪、运维管控，全部通过同一个平台搞定。并且 TauGrid 是开源的，你可以自托管，部署到你自己管理的云或者数据中心里。</p><p>TauGrid 让研究员和平台团队可以各管各的。研究员从代码仓库和 Tau CLI 出发，平台团队负责配好工作区、队列、GPU 配置、存储、身份和可观测性。TauGrid 把所有底层组件和配置串起来，训练、微调、批量推理、模型服务都能覆盖。</p><p>有了 TauGrid 之后，平台团队可以少维护开头提到的多套系统，研究员上手也容易得多。</p><p><img src="/images/2026-09-01-TauGrid-architecture.png" alt="TauGrid 架构：从研究人员意图，经过 TauGrid 工作流层，到 Kubernetes 执行" loading="lazy" decoding="async"/></p><h2 id="工作原理">工作原理</h2><p>你只要写一个<code>tau.yaml</code>，就能把工作负载描述清楚。下面这个例子是在单张 A100 上跑 PyTorch 训练：</p><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">schema_version</span>:<span style="color:#ae81ff">1</span></span></span><span style="display:flex;"><span><span style="color:#f92672">name</span>:<span style="color:#ae81ff">aks-gpu-quickstart</span></span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span><span style="color:#f92672">run</span>:</span></span><span style="display:flex;"><span><span style="color:#f92672">entrypoint</span>:<span style="color:#ae81ff">train.py</span></span></span><span style="display:flex;"><span><span style="color:#f92672">workload_kind</span>:<span style="color:#ae81ff">rayjob</span></span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span><span style="color:#f92672">compute</span>:</span></span><span style="display:flex;"><span><span style="color:#f92672">gpus</span>:<span style="color:#ae81ff">1</span></span></span><span style="display:flex;"><span><span style="color:#f92672">workers</span>:<span style="color:#ae81ff">1</span></span></span><span style="display:flex;"><span><span style="color:#f92672">cpus</span>:<span style="color:#ae81ff">16</span></span></span><span style="display:flex;"><span><span style="color:#f92672">memory</span>:<span style="color:#ae81ff">64Gi</span></span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span><span style="color:#f92672">runtime</span>:</span></span><span style="display:flex;"><span><span style="color:#f92672">image</span>:<span style="color:#ae81ff">mcr.microsoft.com/aks/ai-runtime/ray:py3.12-ray2.56.0-cuda13.0</span></span></span><span style="display:flex;"><span><span style="color:#f92672">pip</span>:</span></span><span style="display:flex;"><span> -<span style="color:#ae81ff">torch&gt;=2.4.0</span></span></span></code></pre></div><p>有了配置之后，执行<code>tau run</code> 提交任务，它会先解析平台策略，渲染成 KubeRay 的 RayJob，再交给 Kueue 排队。整个过程里，TauGrid 会一直帮你盯着状态、日志、checkpoint 和 evidence。evidence record 把元数据、配置、日志、指标、checkpoint、执行历史全保存到持久化存储中。后续的复现、排查、审计，也都有充分的数据依据。</p><p>这一整套覆盖了 GPU 工作负载从头到尾的生命周期。下面这个动画是一个工作负载从数据准备到分布式训练、微调，再到推理端点就绪的全过程，整个过程就一份记录：</p><p><img src="/images/2026-09-01-TauGrid-taugrid-workload-lifecycle.gif" alt="一个工作负载经过数据准备、分布式训练、微调，到推理端点就绪" loading="lazy" decoding="async"/></p><p>每个阶段 TauGrid 具体做什么，一张表说清楚：</p><table><thead><tr><th>阶段</th><th>TauGrid 做的事</th></tr></thead><tbody><tr><td>提交</td><td>校验配置，渲染成 Kubernetes Job 或 KubeRay RayJob</td></tr><tr><td>排队</td><td>通过 Kueue 管理配额准入和优先级</td></tr><tr><td>执行</td><td>在 Kubernetes 上启动和管理分布式 Ray 工作负载</td></tr><tr><td>监控</td><td>全程跟踪状态、日志和 GPU 健康指标</td></tr><tr><td>恢复</td><td>支持重试、从 checkpoint 恢复和故障诊断</td></tr><tr><td>Evidence</td><td>保留工作负载历史、指标和产物，保证可复现</td></tr></tbody></table><p>多个团队共用一个集群的时候，各自的工作负载进同一个 Kueue ClusterQueue。Kueue 按配额和优先级决定谁先运行，Kubernetes 再把任务放到健康的 GPU 上。</p><p><img src="/images/2026-09-01-TauGrid-taugrid-control-room.gif" alt="三个工作区的任务共享一个 Kueue ClusterQueue，队首任务获得 GPU 配额，Kubernetes 把它调度到两块健康的 GPU 上" loading="lazy" decoding="async"/></p><p>有一点需要说明的是：TauGrid 会一直聚焦在 AI 训练工作流和工作负载生命周期这一层。集群创建、Pod 调度、配额管控这些 Kubernetes 和 Kueue 已经做好的事，还有框架内部实现和模型代码，都还是使用大家熟悉的开源生态项目来实现。</p><h2 id="快速上手">快速上手</h2><p>你需要一个 Kubernetes 1.30 以上的集群，外加<code>kubectl</code>、Helm 3 和 Git。先装 Tau CLI：</p><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -fsSL https://github.com/Azure/taugrid/releases/latest/download/install.sh | sh</span></span><span style="display:flex;"><span>export PATH<span style="color:#f92672">=</span><span style="color:#e6db74">"</span>$HOME<span style="color:#e6db74">/.local/bin:</span>$PATH<span style="color:#e6db74">"</span></span></span><span style="display:flex;"><span>tau version --short</span></span></code></pre></div><p>把 TauGrid 装到集群上：</p><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>tau cluster install</span></span><span style="display:flex;"><span>tau cluster validate installation</span></span></code></pre></div><p>建一个工作区，等它 Ready：</p><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>tau workspace create<span style="color:#e6db74">"taugrid-default"</span> --apply</span></span><span style="display:flex;"><span/></span><span style="display:flex;"><span>kubectl wait<span style="color:#ae81ff">\</span></span></span><span style="display:flex;"><span> --for<span style="color:#f92672">=</span>jsonpath<span style="color:#f92672">=</span><span style="color:#e6db74">'{.status.phase}'</span><span style="color:#f92672">=</span>Ready<span style="color:#ae81ff">\</span></span></span><span style="display:flex;"><span> workspaces.tau.azure.com/taugrid-default<span style="color:#ae81ff">\</span></span></span><span style="display:flex;"><span> --namespace tau-system<span style="color:#ae81ff">\</span></span></span><span style="display:flex;"><span> --timeout<span style="color:#f92672">=</span>5m</span></span></code></pre></div><p>跑第一个工作负载：</p><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git clone https://github.com/Azure/taugrid.git</span></span><span style="display:flex;"><span>cd taugrid</span></span><span style="display:flex;"><span>tau run --config examples/cpu-multi-interest-ray/tau.yaml</span></span><span style="display:flex;"><span>tau run status cpu-multi-interest-ray --watch</span></span><span style="display:flex;"><span>tau run logs cpu-multi-interest-ray -f</span></span></code></pre></div><p>这个例子跑的是 CPU 任务，不需要 GPU 节点。集群准备、工作区配置、GPU 任务、交接给研究员这一整套分步指南，都在<a href="https://azure.github.io/taugrid/docs/platform-admin-guide/installation-guides/">Getting Started on Kubernetes</a> 里。</p><p>仓库里还有几个可以直接跑的例子：</p><table><thead><tr><th>示例</th><th>演示内容</th></tr></thead><tbody><tr><td><a href="https://azure.github.io/taugrid/docs/examples/cpu-queueing/">CPU 队列</a></td><td>Kueue 准入、pending 状态和团队间借用，不需要 GPU</td></tr><tr><td><a href="https://azure.github.io/taugrid/docs/examples/gpu-ray-tune/">GPU Ray Tune</a></td><td>单 GPU 上的超参搜索，带确定性验证</td></tr><tr><td><a href="https://azure.github.io/taugrid/docs/examples/experiment-evidence/">实验 evidence</a></td><td>持久化指标、Stellar 可视化和 evidence 验证</td></tr><tr><td><a href="https://azure.github.io/taugrid/docs/examples/full-cluster/">完整集群</a></td><td>Terraform 创建的 AKS 集群，带 GPU 节点，端到端验证</td></tr></tbody></table><p>更多示例和详细演练都在仓库的<a href="https://azure.github.io/taugrid/docs/examples/">examples</a> 里。</p><h2 id="后续规划">后续规划</h2><p>TauGrid 现在还在快速迭代，完整的<a href="https://github.com/Azure/taugrid/blob/main/ROADMAP.md">roadmap</a> 都放在仓库里。大方向有这么几个。</p><p>多租户这块，后续会支持多个工作区，按工作区隔离的身份、权限和配额，再加一个交互式门户，可以直接在上面提交和管理工作负载。分布式训练这块，会补上 PyTorch DDP、FSDP、DeepSpeed 和 Hugging Face LoRA/QLoRA 的端到端示例，再加上完整的数据集生命周期：获取、暂存、校验、分词、注册。</p><p>推理方面，vLLM、SGLang、TensorRT-LLM 的服务示例都会补上。多集群和多云这块，支持跨云执行工作负载，数据、checkpoint 和产物可移植，再加上不锁定云厂商的可观测性和成本归因。</p><h2 id="下一步">下一步</h2><p>TauGrid 刚开源，要做的事还很多。我们想在开放环境下把它做好，你的反馈对我们很重要。欢迎安装尝试，遇到任何问题都可以提 issue，更欢迎提 PR 一起增强完善这个项目，觉得哪里设计得不对也请告诉我。</p><p>相关链接：</p><ul><li>文档：<a href="https://azure.github.io/taugrid">https://azure.github.io/taugrid</a></li><li>代码：<a href="https://github.com/Azure/taugrid">https://github.com/Azure/taugrid</a></li></ul>
]]></content:encoded><dc:extent>5 min read</dc:extent></item></channel></rss>