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時鐘的透明經濟性。