GPU 노드 및 ML 계산
간략한 요약
GPU의 성공적인 ML 스택은 하드웨어, 소프트웨어, 계획, 데이터 및 관찰 가능성 솔루션 모음입니다. 클러스터는 똑같이 잘할 수 있어야합니다
1. 열차 모델 (높은 활용, 빠른 체크 포인트, 인터럽트 허용 오차)
2. 추론 (높은 전환에서 낮은 p95- 대기 시간),
3. 비용 예측 가능한 돈 (FinOps, 할당량, 다중 임대),
4. 안전하다 (격리, 공급망, 스케일/데이터 세트 제어).
하드웨어 및 토폴로지
GPU 및 메모리
HBM 볼륨 및 밴드는 LLM/RecSys의 "원시 TFLOPS" 보다 중요합니다.
내장 메모리 (KV- 캐시) 의 우선 순위와 높은 시계/전력 제한과 같은 많은 작은 요청이 추론됩니다.
연결
NVLink/NVSwitch-빠른 모든 축소를 위해 노드 내부.
InfiniBand/RoCE-DDP/FSDP를위한 노드 간 교환 (100-200 Gb/s).
PCIe 트리: NIC와 GPU를 동일한 NUMA 노드에 유지하십시오. 뜨거운 PCIe 스위치 병목 현상을 피하십시오.
기본 BIOS/호스트 튜닝
성능 모드, C- 상태 비활성화 (또는 최소 증가), NUMA 인식, 중요한 PCIe에서 ASPM을 종료합니다.
힘: 안정적인 프로파일, 공격적인 전원 절약이 아님-그렇지 않으면 p99 "trembles".
기본 소프트 스택
NVIDIA + CUDA + cuDNN/TensorRT 호환성 매트릭스는 드라이버와 일치했습니다.
컨테이너 내부의 GPU 용 NVIDIA 컨테이너 툴킷.
NCCL (집단), UCX (전송), Apex/xFormers/Flash-Attention-속도.
빠른 NVMe/IB의 옵션 GDS (GPUDirect Storage) -데이터 흐름 속도를 높입니다.
GPU 용 Kubernetes
주요 구성 요소
NVIDIA GPU 운영자 (드라이버, DCGM, 장치 플러그인).
NVIDIA 장치 플러그인 - 자원 내보내기 'nvidia. com/gpu '.
MIG (A100/H100) - 하나의 물리적 GPU를 분리 된 프로파일 (예: '1g. 10gb ').
시간 경사-작은 추론 작업을 위해 GPU의 논리적 분할.
노드 기능 발견-GPU 유형/토폴로지 별 레이블.
계획 및 격리
훈련/추론/실험을 분리하기위한 테인/공차/NodeSelectors.
NUMA 정렬을위한 토폴로지 관리자 및 CPU 관리자 (정적).
K8/Ray의 화산/슬럼-대기열, 우선 순위, 큰 일자리 선점.
Pod의 GPU 요청 예는 다음과 같습니다
yaml resources:
limits:
nvidia. com/gpu: 1 # or MIG profile: nvidia. com/mig-1g. 10gb: 1 requests:
nvidia. com/gpu: 1
전용 교육 풀에 대한 오염/친화력의 예:
yaml tolerations:
- key: "gpu-train"
operator: "Exists"
effect: "NoSchedule"
nodeSelector:
gpu. pool: "train"
학습: 규모와 지속 가능성
동시성
DDP-표준 데이터 동시성.
FSDP/ZeRO-샤딩 매개 변수/hail/optimizer는 메모리를 줄입니다.
텐서/파이프 라인 병렬-매우 큰 LLM의 경우; NVLink/IB가 필요합니다.
그라디언트 축적-메모리 피크를 늘리지 않고 유효 배치를 증가시킵니다.
혼합 정확도 및 메모리 최적화
AMP (bf16/fp16) + 손실 스케일링; 가능한 경우 H100/newn-FP8의 경우.
활성화/그라디언트 체크 포인팅, 긴 시퀀스에 대한 플래시주의.
추론을 준비하기 위해 페이지/청크 된 KV 캐시.
체크 포인트 및 내결함
재 포장이있는 빠른 NVMe/오브젝트에 대한 빈번한 증분 체크 포인트.
Idempotent jabs (반복적 인 상처 식별자).
스팟 안정성: 우리는 SITERM을 잡고 빠르게 상태를 병합합니다. 스케줄러는 작업을 대기열로 되돌립니다.
중요 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 캐시, 연속 배치).
가속 기술
양자화: INT8/FP8/양자. 인식 (AWQ, GPTQ) -VRAM이 감소하고 TPS가 증가합니다.
배칭/연속 타격: p95 성장없이 요청 버스트를 제공하십시오.
HBM의 KV 캐시 피닝, 컨텍스트 감소; 투기 해독 (초안 모델).
GPU의 동시성: MIG/타임 슬라이스가있는 여러 스레드/모델.
대상 프로필 (SLO 예)
채팅 모델 응답의 p95 대기 시간 (접두사/토큰 당 300 ms);
처리량은 대상 프로파일에서 200 개 이상의 전류/s/GPU입니다.
p99 테일은 셔들 링 (QoS 클래스 및 컨텍스트 제한) 에 의해 제어됩니다.
트리톤 배포 (조각)
yaml env:
- name: CUDA_VISIBLE_DEVICES value: "0"
- name: TRITONSERVER_MODEL_CONTROL value: "explicit"
args: ["--backend-config=tensorrt,output_memory_pool_size=1024"]
데이터 및 파이프 라인
형식: Parquet/Arrow, 스트리밍 판독 용 웹 데이터 세트 (tar-shards).
프리 페치/아 싱크 I/O: DataLoader-fin-memory, 프리 페치-파이프 라인, GDS.
온라인 기능을위한 기능 저장소 (사기 방지/권장 사항).
Versioning: DVC/LakeFS/MLflow Model Registry; 데이터 세트, 코드 및 하이퍼 매개 변수를 캡처합니다.
관찰 가능성 및 SLO
DCGM/Prometheus 지표 (최소)
'dcgm _ sm _ util', 'dcgm _ fb _ used', 'dcgm _ power _ usage', 'dcgm _ pcie _ rx/tx', 'dcgm _ dram _ bw'
온도/주파수 및 ECC 오류 (성장 경고).
점유 및 실속 이유 달성 (좁은 코어 레이어).
서비스 메트릭
생성 모델: 토큰/초, p50/p95/p99, 큐 깊이, 메모리 오류.
교육: 단계/초, 시대 시간, 완전 감소 효율성, I/O의% 시간
SLO 패널: 규정 준수 p95, "오류 예산" ( 5% "성공적인" 추론).
경고 (아이디어)
'fb _ used/fb _ total> 0. 스로틀/스케일 아웃.
모델/코드 저하와 동일한 폐기로 TPS가 N% 감소합니다.
ECC/온도 상승 → 작업/사고 철 마이그레이션.
안전과 격리
멀티 테넌시: MIG 프로파일 또는 팀 당 노드, 네임 스페이스/할당량.
IOMMU/PSP, cgroup, 권한있는 컨테이너 금지, CAP _ 제약.
MPS (멀티 프로세스 서비스) -깔끔한: 더 높은 폐기이지만 분리는 MIG보다 약합니다.
공급망: 컨테이너 서명 (cosign), 아티팩트 검증, 모델 업로드 제어.
데이터/가중치: 디스크의 암호화, 액세스 제어 (ABAC/RBAC), 워터 마크/해시 모델 레지스터.
FinOps: 비용, 할당량, 오토 스케일
노드 풀: '기차' (주문형/매장량), '주문형' (주문형 + 스팟), 'exp' (스팟 헤비).
스팟 안정성: 빈번한 체크 포인트, 빠른 재시작 로직, 우선 순위가있는 화산 대기열.
안정적인 기지에 대한 예비/RI/저축 계획; 빈 노드를 자동 비활성화합니다.
올바른 크기 모델: "전체" 모델 대신 양자화/LoRA 어댑터; SLA에서 MIG 프로파일을 선택하십시오.
예산 개요: 팀당 GPU 시간 할당량, "1k 요청/토큰 비용".
YAML 패턴 및 아티팩트
1) MIG 프로파일 (개념)
yaml apiVersion: nvidia. com/v1 kind: MigStrategy metadata: { name: mig-a100-1g10gb }
spec:
deviceFilter: "a100"
mode: single resources:
- profile: "1g. 10gb"
count: 7
2) 훈련을위한 화산 대기열
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/타임 슬라이싱 프로파일 및 할당량.
- 준비시 테스트 된 DDP/FSDP 파이프 라인; 체크 포인트가 빠릅니다.
- Triton/vLLM 연속 타격; p95 및 TPS 대상이 설정됩니다.
- DCGM/Prometheus/Grafana + ECC 경고/온도/메모리/TPS.
- 보안 정책 (PSP, cosign, 무게 난독 화/제어).
- FinOps: 스팟/리 풀, $/1k 토큰 보고서, 유휴 자동 종료.
공통 오류
훈련과 추론은 견인없이 동일한 노드에서 혼합됩니다. → GPU/IO는 서로 "톱" 됩니다.
체크 포인트 및 선점 논리가 없습니다. → 현장에서의 진행 상황 손실.
DCGM- 메트릭스의 부재 → "맹인" 폐기 및 과열.
NUMA/PCIe 토폴로지 무시 → 낮은 NCCL 대역폭.
잘못된 MIG/타임 슬라이스 → p99 대기 시간 및 "Out of Memory" 프로파일.
TPS/대기 시간 → 늦은 스케일 대신 CPU 별 HPA.
iGaming/fintech 특이성
사기 방지/점수: 중요한 경로 (지불/결론) 에 대한 SLA 추론 약 50ms p95; "폴백" 모델을 밝게 유지하십시오.
권장 사항/개인화: 야간 정책/비 정책 학습, 온라인 기능-대기 시간이 짧습니다.
채팅 어시스턴트/RAG: 컨텐츠 캐시, 요청 제거, 가드 레일; 벡터 검색 지수를 선명하게합니다.
봉우리 (경기/토너먼트): 예열 전 모델/kv-cash, minReplicas, VIP QoS 클래스 증가.
합계
GPU 컴퓨팅 스택은 하드웨어 (HBM/NVLink/IB), 소프트웨어 매트릭스 (CUDA/NCCL), 스케줄링 (MIG, 큐, 테인), 데이터 (고속 파이프 라인/GDS), 관찰 가능성 (DCGM/SLO) 및 비용 (FinOps/quotas) 이 함께 작동합니다. 이를 IaC 및 클러스터 정책에 적용하면 예측 가능한 학습 속도, 안정적인 낮은 p95 대기 시간 추론 및 투명한 GPU 클럭 경제성을 얻을 수 있습니다.