GPU-nods和ML计算
简短摘要
GPU上成功的ML堆栈是铁,软件,计划,数据和可观察性解决方案的集合。群集应该能够同样好:1.训练模型(高回收率,快速检查点,抗干扰性),
2.服务地狱(高转化率下的p95潜伏期),
3.值得可预测的钱(FinOps,配额,多重影响),
4.安全(绝缘、供应链、权重/数据控制)。
铁和拓扑
GPU和内存
HBM容量和频段比LLM/RecSys的"原始TFLOPS"更重要。
对于地狱,许多次要查询是嵌入式内存优先级(KV-cache)和高clocks/power limit。
连通性
NVLink/NVSwitch-在节点内进行快速全重置。
InfiniBand/RoCE是DDP/FSDP(≥ 100-200 Gb/s)的节点间交换。
PCIe树:试着让NIC和GPU坐在一个NUMA节点上;避免"热"PCIe-switch bottleneck。
BIOS/节点基本调音
性能模式,禁用C状态(或提升最小值),NUMA awareness,在关键PCIe上关闭ASPM。
电源:稳定的配置文件,不积极的电源保存-否则,"颤抖"p99。
基本软件堆栈
NVIDIA+CUDA+cuDNN/TensorRT驱动程序在兼容性矩阵上一致。
NVIDIA容器工具包,用于容器内的GPU。
NCCL(团队),UCX(运输),Apex/xFormers/Flash-Attention-用于速度。
可选地GDS (GPUDirect Storage)用于快速NVMe/IB-加快数据流。
用于GPU的Kubernetes
关键组件
NVIDIA GPU操作员(驱动程序,DCGM,设备插件)。
NVIDIA设备插件-导出'nvidia资源。com/gpu`.
MIG(A100/H100)-将单个物理GPU除以孤立的配置文件(例如'1g。10gb`).
时间滑动是GPU对次要地狱任务的逻辑时间分解。
Node Feature Discovery是GPU/拓扑类型的标签。
规划和隔离
Taints/Tolerations/NodeSelectors分离培训/地狱/实验。
用于NUMA对齐的Topology Manager和CPU Manager(静态)。
Volcano/Slurm on K8s/Ray-大跳跃的队列、优先级、预测。
yaml resources:
limits:
nvidia. com/gpu: 1 # or MIG profile: nvidia. com/mig-1g. 10gb: 1 requests:
nvidia. com/gpu: 1
用于专用训练池的taint/affinity示例:
yaml tolerations:
- key: "gpu-train"
operator: "Exists"
effect: "NoSchedule"
nodeSelector:
gpu. pool: "train"
培训: 规模和可持续性
并发
DDP是标准数据并发。
FSDP/ZeRO-参数/grads/Optimiser的散列,减少内存。
Tensor/Pipeline Parallel-用于非常大的LLM;需要NVLink/IB。
Gradient Accumulation-在不增长内存峰的情况下增加有效的击球。
溷合精度和内存优化
AMP (bf16/fp16) + loss scaling;对于H100/新-在可能的情况下FP8。
Activation/Gradient Checkpointing,用于长序列的Flash-Attention。
Paged/Chunked KV-cache为地狱做准备。
Checpoint和容错性
对快速NVMe/重置对象频繁进行增量检查。
等效乔巴(可重复的伤口标识符)。
弹性:捕获SIGTERM,快速排泄状态;调度程序将joba返回队列。
NCCL/网络重要变量(示例)
bash
NCCL_IB_HCA=mlx5_0
NCCL_SOCKET_IFNAME=eth1
NCCL_P2P_LEVEL=NVL
NCCL_MIN_NRINGS=8
NCCL_NET_GDR_LEVEL=SYS
地狱: 低潜伏率,高回报
伺服框架
Triton Inference Server是TensorRT/ONNX/TS/PyTorch的单个服务器。
vLLM/TGI/TensorRT-LLM-LLM专业人员(插头,有效的KV-cache,连续击球)。
加速技术
Quantization: INT8/FP8/quant。-aware (AWQ, GPTQ)-VRAM减少,TPS增长。
Batching/Continuous batching:在没有p95增长的情况下提供一揽子请求。
HBM中的KV-cache pinning,上下文的减少;专用解码(草稿模型)。
GPU上的串联:MIG/时间段下的多个流/模型。
目标配置文件(示例SLO)
p95聊天模型响应的潜在性≤每个前缀/令牌为300毫秒;
Throughput ≥目标配置文件上的200 个电流/s/GPU;
P99尾巴控制着游动(QoS类和上下文限制)。
Triton部署(片段)
yaml env:
- name: CUDA_VISIBLE_DEVICES value: "0"
- name: TRITONSERVER_MODEL_CONTROL value: "explicit"
args: ["--backend-config=tensorrt,output_memory_pool_size=1024"]
数据和pipline
格式:Parquet/Arrow, webdataset (tar shards)用于流式读取。
Prefetch/Async I/O: DataLoader-ы с pin-memory, prefetch-pipelines, GDS.
Feature Store for online fitch (antifrod/推荐)。
转化:DVC/LakeFS/MLflow模型注册;捕获数据表、代码和超参数。
可观察性和SLO
DCGM/Prometheus度量(最低)
`dcgm_sm_util`, `dcgm_fb_used`, `dcgm_power_usage`, `dcgm_pcie_rx/tx`, `dcgm_dram_bw`
温度/频率和ECC错误(每升高的变量)。
成熟的占领和坚硬的理想(狭窄的核心层)。
服务指标
生成模型:令牌/秒,p50/p95/p99,queue depth,内存故障。
培训:步骤/秒,时代时间,全效率,I/O的百分比时间。
SLO面板:合规性p95,"错误预算"(≥ 99。5%的"成功"地狱)。
`fb_used / fb_total > 0.95` 5 мин → throttle/scale-out.
在相同的处置下,TPS下降N%-模型/代码退化。
ECU/温度升高 →铁迁移率/事件。
安全与隔离
多重性:MIG配置文件或noda "per-team",namespaces/quotas。
IOMMU/PSP,cgroups,禁止特权容器,限制"CAP_"。
MPS(多过程服务)-整洁:处置更高,但分离比MIG弱。
供应链:容器签名(cosign),工件验证,模型上载控制。
数据/权重:磁盘加密,访问控制(ABAC/RBAC),"水印"/哈希模型注册表。
FinOps: 成本、配额、汽车轨道
节点池:"train"(点播/备份),"infer"(点播+点混合),"exp"(点播)。
点弹性:频繁的checkpoint,快速的重新启动逻辑,具有优先级的Volcano队列。
储备/RI/储蓄计划到稳定的基础;自动关闭空的节点。
实例化模型:量化/LoRA适配器而不是"完整"模型;选择SLA下的MIG配置文件。
预算大纲:按团队计算的GPU时钟配额,"1k查询/令牌成本"。
YAML模板和工件
1) MIG Profile(概念)
yaml apiVersion: nvidia. com/v1 kind: MigStrategy metadata: { name: mig-a100-1g10gb }
spec:
deviceFilter: "a100"
mode: single resources:
- profile: "1g. 10gb"
count: 7
2) Volcano排队训练
yaml apiVersion: scheduling. volcano. sh/v1beta1 kind: Queue metadata: { name: train-q }
spec:
weight: 100 reclaimable: true capability:
resources:
- name: nvidia. com/gpu quantity: 64
3)KEDA用于轮流深度自动地狱
yaml apiVersion: keda. sh/v1alpha1 kind: ScaledObject metadata: { name: llm-infer }
spec:
scaleTargetRef: { name: llm-deploy }
pollingInterval: 5 minReplicaCount: 2 maxReplicaCount: 80 triggers:
- type: rabbitmq metadata:
queueName: infer-queue mode: QueueLength value: "200"
GPU群集启动清单
- NVLink/IB拓扑图;单个NUMA上的NIC/GPU。
- 驱动程序/CUDA是一致的,操作员/设备插件已安装。
- MIG/time-slicing配置文件和neimspace配额。
- DDP/FSDP管道在站台上绕行;快速的支票。
[] Triton/vLLM с continuous batching;设定了p95和TPS目标。
- DCGM/Prometheus/Grafana+alerta ECC/温度/内存/TPS。
- 安全政策(PSP、cosign、溷淆/权重控制)。
- FinOps: spot/ri池,报告"$/1k令牌",auto-shootdown idle.
典型错误
在没有触摸的情况下将训练和地狱混合在一起→ GPU/IO彼此"锯"。
没有Checkpoints和Preemption逻辑→在现场失去进展。
缺乏DCGM度量→"盲目"处置和过热。
NUMA/PCIe拓扑忽略→低NCCL带。
错误的MIG/time-slice → p99潜伏期和"Out of Memory"配置文件。
CPU下的HPA代替TPS/潜伏期 →后期滑行。
iGaming/fintech的细节
反亲和力/得分:地狱的SLA ≤关键路径上的50 ms p95(付款/结论);保持轻型"fallback"模型。
建议/个性化:夜间在线/非策略性学习,在线功能-低潜伏。
聊天助理/RAG:内容缓存,请求重复,guardrails;分隔矢量搜索索引。
高峰(比赛/锦标赛):预热模型/kv-cache,minReplicas的增加,VIP的QoS类。
底线
当铁(HBM/NVLink/IB),软矩阵(CUDA/NCCL),调度(MIG,队列,taints),数据(快速管道线/GDS),可观察性(DD)时,GPU计算堆栈变得非常有效。CGM/SLO)和成本(FinOps/配额)协同工作。将此固定在IaC和集群政策中-并且您将获得可预测的学习速度,稳定的p95潜伏期低地狱和GPU时钟的透明经济性。