生产架构:契约、节点池与平面划分
草稿
在写 YAML 之前先写契约:工作负载契约是硬件、节点池、配额与 SLO 的共同依据。
工作负载契约
契约内容:模型与版本、精度、内存占用、序列长度、批次、并发、延迟/吞吐目标、故障恢复、检查点、数据路径、安全边界和预期增长。它与基准与验收的验收清单是同一件事的两面:一份定义“要什么”,一份验证“拿到了什么”。
GPU 节点池是产品档位
不要把异构机群当作每个节点都可互换来运营。按 GPU 世代、内存档位、外形规格、互连、工作负载类别、可用区和生命周期阶段建池,一致地打标签和污点(见放置策略),实验池与生产池分开。每个池对应一种平台责任边界与一种成本结构(见容量经济)。
五个平面
| 平面 | 职责 | 控制手段 |
|---|---|---|
| 控制 | API、调度器、准入、自动伸缩、策略 | RBAC、配额、优先级、队列 |
| GPU 计算 | 驱动、运行时、插件、工作负载容器 | 金丝雀节点、污点、版本锁定 |
| 数据 | 数据集、模型、缓存、检查点 | 局部性、完整性、加密、保留 |
| 网络 | 训练集合通信与服务流量 | RDMA 策略、分段、拥塞 |
| 可观测 | 健康、容量、作业、SLO、成本 | DCGM、Prometheus、日志、追踪 |
这张表与控制面地图的分层互为镜像:地图讲“哪些组件在哪一层”,平面讲“哪类责任归谁管”。
命名空间契约
apiVersion: v1
kind: ResourceQuota
metadata:
name: gpu-team-quota
namespace: ai-team
spec:
hard:
requests.nvidia.com/gpu: "8"
limits.nvidia.com/gpu: "8"
requests.cpu: "64"
requests.memory: 512Gi
---
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: inference-pdb
namespace: ai-team
spec:
minAvailable: 2
selector:
matchLabels:
app: inference具体的配额键与控制器行为应对照集群的资源模型验证,尤其在使用 DRA 或共享设备时。
总结
生产架构 = 契约(要什么)+ 节点池(放在哪)+ 平面(谁负责)+ 命名空间(归谁用)。这四件事写清楚,端到端实战中的每一条命令才有了上下文。