12 搭建迷你 TI-ONE 平台实战
12 搭建迷你 TI-ONE 平台实战
阶段四前半段,也是整套资料的收口:把前面所有层(接入→调度→训练编排→推理→可观测→队列配额)组装成一个能跑训练+推理的迷你 AI 平台,并对标腾讯云 TI-ONE。这是你面试能「3 分钟讲清架构与取舍」的作品底座。
💡 给你的话:这一章就是把前 11 章的零件拼成一辆车。你的 K8s 工程经验在这里全用上——本质就是「在 K8s 上装一堆 Operator + CRD + 监控」,和你搭过的基础设施平台没本质区别,只是组件换成 AI 相关的。
12.1 ⭐ 平台组件栈全景图(装配图纸)
┌─────────────────────────────────────────────────────────────┐
│ 用户入口 / UI │
│ (Jupyter Notebook / 训练任务提交页 / 模型仓库) │
├─────────────────────────────────────────────────────────────┤
│ 队列与配额层 Kueue / Koordinator / Volcano Queue │ ← 谁先跑、多少配额、抢占
├─────────────────────────────────────────────────────────────┤
│ 调度层 kube-scheduler + Plugin/Extender │ ← Gang / 亲和 / 混部
│ Volcano / Gödel / Koordinator │
├─────────────────────────────────────────────────────────────┤
│ 工作负载编排层 Kubeflow Training Operator │ ← PyTorchJob / MPIJob
│ Ray (Ray Train / Ray Serve) │
│ KServe / Seldon(推理) │
├─────────────────────────────────────────────────────────────┤
│ 资源接入层 GPU Operator (device-plugin/GFD/DCGM) │ ← 让 K8s 看见 GPU
│ MIG / qGPU(切分共享) │
├─────────────────────────────────────────────────────────────┤
│ 硬件层 GPU 卡(N/H/B 系列)/ 国产卡 / TPU 等 │
│ 互联:NVLink(卡间) + IB/RoCE(机间) │
├─────────────────────────────────────────────────────────────┤
│ 存储层 并行文件系统 / 对象存储(数据集 + 模型权重) │ ← 数据流水线
├─────────────────────────────────────────────────────────────┤
│ 可观测层 Prometheus + DCGM-Exporter + Grafana │ ← GPU 指标 / 告警
└─────────────────────────────────────────────────────────────┘
⭐ 这张图就是你的「装配图纸」。每一层都对应前面某一章:硬件/互联→
02/09.6,接入→04,切分→05,调度→06/07/08,编排→09.8,推理→10,可观测→11,队列→08.4/08.7。面试时把这张图默画出来,再讲每层取舍,直接封神。
💡 类比:这和你搭过的「K8s 应用平台」结构一样——存储层、网络层、调度层、编排层、监控层、用户入口。只是每一层的组件换成了 AI 专用的。你的平台工程能力 100% 可迁移。
12.2 架构分层说明
| 层 | 选什么 | 为什么 |
|---|---|---|
| 接入 | NVIDIA GPU Operator + (国产卡对应 operator) | 一键管驱动/device-plugin/监控 |
| 切分 | MIG(训练硬隔离)/ qGPU(推理细粒度) | 提利用率,呼应 05 |
| 调度 | Volcano(Gang Job)+ Kueue(队列) | 训练排队+整组调度 |
| 编排 | Kubeflow Training Operator / Ray | 算法方只写 CRD,不用管底层 |
| 推理 | KServe + vLLM/SGLang 后端 | 弹性、灰度、缩到 0 |
| 可观测 | Prometheus + DCGM + Grafana | GPU 指标全链路 |
| 存储 | 对象存储(模型) + 并行 FS(数据) | 训练 IO 不拖后腿 |
| 混部(进阶) | Koordinator | 在线+离线同集群提利用率 |
12.3 分步装配(命令流)
# ① 接入层:GPU Operator(让 K8s 看见卡 + 自动监控)
helm install gpu-operator nvidia/gpu-operator -n gpu-operator --create-namespace
# ② 调度层:Volcano(Gang)+ Kueue(队列)
helm install volcano volcano/volcano -n volcano-tns --create-namespace
kubectl apply -f https://github.com/kubernetes-sigs/kueue/releases/latest/download/manifests.yaml
# ③ 编排层:Kubeflow Training Operator
kubectl apply -k "github.com/kubeflow/training-operator/manifests?ref=master"
# ④ 推理层:KServe(依赖 Knative,先装 knative)
kubectl apply -f https://github.com/kserve/kserve/releases/latest/download/kserve.yaml
# ⑤ 可观测层:Prometheus + Grafana(用 kube-prometheus-stack 最省事)
helm install monitor prometheus-community/kube-prometheus-stack -n monitoring --create-namespace
# DCGM-Exporter 已随 GPU Operator 就绪,加 scrape job 即可
# ⑥ 队列:建一个 Kueue ClusterQueue + Volcano Queue 给 team-a
无真实 GPU 时,用
fake-device-plugin或 CPU 模拟节点把「接入→调度→编排→可观测」链路跑通,重点验证组件能不能协同,而非真训模型。
12.4 容错与弹性训练(平台必备,但常被忽略)
大模型训练动辄数天/数周,节点故障是常态:
- Checkpoint 续训:定期落盘模型+优化器状态,故障后从最近检查点恢复(不是从头训)。
- 名词解释:Checkpoint(检查点):训练中途存盘的模型状态快照,含参数/优化器/进度。
- 弹性训练:PyTorch Elastic / Elastic Horovod 支持节点动态增减,Spot 抢占后能自动重组
WORLD_SIZE。- 名词解释:Spot 实例(抢占式):云上便宜但可能被随时回收的实例。弹性训练让 Spot 可用于训练,降成本。
- 优先级与抢占:Kueue/Volcano 的抢占让高优任务回收低优资源,配合 Koordinator 在离线混部。
- 平台落地:Kubeflow PyTorchJob 内置
restartPolicy: OnFailure / Never,配持久化存储放 checkpoint。
⭐ 面试加分:能说「我的平台对长训练做了 checkpoint + 弹性 + 抢占三层容错」,比「能跑训练」高一个量级。
⚠️ 内幕:万卡训练平均每天掉几张卡是常态(硬件故障、网络抖动)。没有 checkpoint + 弹性,训到第 5 天崩了从头来,几百万美元打水漂——这就是为什么容错是平台「必备」而非「加分」。
12.5 AI 存储(数据流水线,吞吐天花板常在这)
- 数据集加载常是隐藏瓶颈:GPU 在等数据 → 见
11.4数据瓶颈。 - 方案:对象存储(模型权重/小数据)+ 并行文件系统(大模型训练高吞吐)+ 本地 SSD 缓存热点。
- 名词解释:并行文件系统(Parallel File System):能把数据分散到多节点多磁盘并行读写的文件系统,如 Lustre、WEKA、DeepSeek 开源的 3FS。
- DataLoader 调优:
num_workers、预取、分片读取(避免单 Pod 读全量)。 - 平台视角:把「数据集挂载 + 缓存 + 版本管理」做成自助能力,算法方不用关心存储细节。
⚠️ 内幕:很多人忽视存储,结果 GPU 算力 100% 但训练还是慢——因为数据喂不上。3FS(Fire-Flyer File System) 是 DeepSeek 2025 开源的高吞吐文件系统,专为 AI 训练设计,国内很火。JuiceFS 是另一个流行的云原生选择。
12.6 多租户与配额(平台 vs 单机脚本的分水岭)
- 多租户:多团队共用集群,各有配额、互不影响。靠 Kueue 的
ClusterQueue/LocalQueue+ Volcano Queue 实现。 - RBAC + 命名空间隔离:每个团队一个 namespace,配 ResourceQuota。
- 计费:按 GPU·时(GPU-hour)统计用量,DCGM 指标 + 自定义计量。
- 名词解释:GPU-hour:一张 GPU 用一小时的计费单位,云厂商常用。
⭐ 这一层是把「能跑训练」升级成「平台」的关键——单机脚本不需要,多团队平台必须有。
12.7 平台 README 模板(你的项目门面)
# 迷你 TI-ONE(Mini-TI-ONE)
## 定位
面向小团队的 K8s AI 训推平台:资源层 + 调度层 + 训练/推理编排 + 可观测。
## 架构
(贴 12.1 全景图)
## 能力矩阵
| 能力 | 实现 | 对应章节 |
|---|---|---|
| GPU 接入 | GPU Operator | 04 |
| 切分共享 | MIG / qGPU | 05 |
| Gang 调度 | Volcano | 07 |
| 队列配额 | Kueue | 08.4 |
| 训练编排 | Kubeflow PyTorchJob | 09.8 |
| 推理服务 | KServe + vLLM | 10 |
| 监控 | Prometheus + DCGM | 11 |
| 容错 | Checkpoint + Elastic | 12.4 |
## 快速开始
(12.3 命令流)
## 已知边界
- 单集群、未做多租户强隔离
- 未接入国产卡/TPU(可扩展,见 02.9 / 04.5)
12.8 与腾讯云 TI-ONE 对照
| TI-ONE 能力 | 你的迷你版 | 差距/可扩展 |
|---|---|---|
| 算力接入(多厂商 GPU) | GPU Operator + device-plugin | 加国产卡 operator 即对齐 04.5 |
| 任务调度(训练/Notebook) | Volcano + Kubeflow | 基本对齐 |
| 推理部署 | KServe + vLLM | 对齐;TI-ONE 还有更多运行时 |
| 监控运维 | Prometheus + DCGM | 对齐 |
| 数据/特征/标注 | 对象存储 + 并行 FS | TI-ONE 有完整数据工程链路,你仅做挂载 |
| 多租户/权限/计费 | Kueue 配额 + 待补 | 需加 RBAC/配额计费 |
| 自动化 ML / pipeline | 手动提交 | 可接 KFP(Kubeflow Pipeline) |
名词解释:TI-ONE(腾讯云智能钛机器学习平台) 是腾讯云的 AI 训推一体平台,你的对标对象。KFP(Kubeflow Pipelines) 是 Kubeflow 的流水线编排,做自动化 ML 实验。
⭐ 对照思维:面试讲「我的平台和 TI-ONE 的差距在 X/Y,我的架构能怎么补」——比单纯说「我搭了个平台」更有深度。
⚠️ 内幕:国内类似平台还有阿里 PAI(机器学习平台)、百度 百舸(异构计算平台)、字节 火山方舟(大模型平台)。它们的架构分层和你的迷你版本质同构,只是工程化程度和规模差异。能讲清「工业平台 = 这些层的成熟产品化」就够专业。
12.9 自测题
- ⭐ 默画「K8s AI 平台组件栈全景图」,从硬件层讲到用户入口。
- 接入层/调度层/编排层分别用什么组件?各自解决什么?
- 平台为什么要做「容错 + 弹性训练」?具体哪三层?万卡训练为什么必须有?
- AI 存储为什么常是训练吞吐瓶颈?3FS/JuiceFS 是什么?怎么缓解?
- 多租户/配额/计费为什么是「平台 vs 单机脚本」的分水岭?GPU-hour 是什么?
- 你的迷你平台和 TI-ONE 的主要差距在哪几层?国内类似平台有哪些?
- 无 GPU 时怎么验证平台链路跑通?
阶段四前半段完成。下一步
13——把作品变成面试资本(知识域/高频题/话术/简历)。