קשרי GPU וחישובי ML
תקציר
מחסנית ML מוצלחת על GPU היא אוסף של חומרה, תוכנה, תכנון, נתונים ופתרונות תצפית. האשכול אמור להצליח באותה מידה:1. דגמי רכבת (ניצול גבוה, נקודות ביקורת מהירות, הפרעה לסובלנות)
2. לשרת הסקה (low p95-latency בהמרה גבוהה),
3. עולה כסף צפוי (פינוקים, מכסות, ריבוי דירות),
4. להיות בטוח (בידוד, שרשרת אספקה, שליטה על מאזניים/נתונים).
חומרה וטופולוגיות
GPU וזיכרון
HBM volume and band חשוב יותר מאשר TFLOPS עבור LLM/Recsys.
לצורך הסקת בקשות קטנות רבות - העדיפות של הזיכרון המובנה (KV-cache) והגבלת הכוח והשעונים הגבוהים.
קישוריות
המכשפה NVLink/NVSch - בתוך הצומת לצמצום כל מהיר.
InfiniBand/RoCE - inter-node exchange for DDP/FSDP (100-200 Gb/s).
עץ PCIE: נסה לשמור את ה-NIC וה-GPU באותו צומת NUMA; הימנע מצוואר הבקבוק החם של פי-סי-אל.
בסיסי BIOS/HOST Tuning
מצבי ביצועים, ביטול מצב C-states (או מינימום מוגבר), מודעות NUMA, ASPM על PCIE קריטי.
כוח: פרופילים יציבים, לא אגרסיביים חסכון בכוח - אחרת p99 ”רועד”.
ערימה רכה בסיסית
מטריצת התאימות של NVIDIA + CUDA + cuDNN/TensorRT הותאמה לנהגים.
מיכל NVIDIA ערכת כלים עבור GPUs בתוך מכולות.
NCCL (קולקציות), UCX (תחבורה), Apex/XFlash-Introl - למהירות.
אחסון GDS אופציונלי (GPUDirect Storage) במהירות NVMe/IB - מאיץ את זרימת הנתונים.
קוברנטס עבור GPU
רכיבי מפתח
מפעיל GPU של NVIDIA (נהגים, DCGM, תוסף התקנים).
תוסף התקנים NVIDIA - משאב יצוא nvidia. com/gpu '.
MIG (A100/H100) - חלוקה של GPU פיזי אחד לפרופילים מבודדים (לדוגמה, 1g. 10gb).
חיתוך זמן - פיצול הגיוני של GPU בזמן למשימות הסקה קטנות.
Node Feature Discovery - תוויות של סוג/טופולוגיה של GPU.
תכנון ובידוד
Tains/Tolerations/Nodeselectors להפרדת אימון/הסקה/ניסויים.
מנהל טופולוגיה ומנהל מעבד (סטטי) ליישור NUMA.
הר געש/סלורם על K8s/Ray - תורים, סדר עדיפויות, הקדמה לעבודות גדולות.
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"
למידה: קנה מידה וקיימות
concurncy
DDP - נתונים סטנדרטיים.
FSDP/ZeRO - פרמטרים חדים/ברד/אופטימיזרים, מפחיתים את הזיכרון.
מקביל טנזור/צינור - עבור LLMs גדול מאוד; דורש NVLink/IB.
Gradient הצטברות - מגדיל את אצווה יעיל ללא הגדלת פסגות זיכרון.
דיוק מעורב ומיטיבים זיכרון
(AMP (bf16/fp16 + איבוד קנה מידה; עבור H100/new - FP8 היכן שאפשר.
הפעלה/נקודת ביקורת מדורגת, תשומת לב פלאש לרצפים ארוכים.
זימון/זימון מטמון KV כדי להתכונן להסיק מסקנות.
נקודות ביקורת וסובלנות פגומה
נקודות ביקורת אינקרמנטליות תכופות עבור NVME/אובייקט מהיר עם החזרה.
דקירות אידמפוטנטיות (זיהוי פצע חוזר).
ספוט-יציבות: אנחנו תופסים את SIGTERM, ממוזגים במהירות; לוח הזמנים מחזיר את העבודה לתור.
משתני NCCL/Network (דוגמה)
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/quantum. (AWQ, GPTQ) - ירידה ב-VRAM, עלייה ב-TPS.
חבורה/חבורה רציפה: להגיש פרצי בקשות ללא גידול p95.
KV-cache pinning in HBM, צמצום הקשר; פענוח ספקולטיבי (מודל טיוטה).
קונקורנסי על GPU: מספר אשכולות/דגמים עם מיג/פרוסת זמן.
פרופילי יעד (SLO דוגמה)
p95 latency of the chatter model response 300 ms per prefix/token;
GPU 200 הזרם/S על פרופיל המטרה;
זנבות 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, webdataset (רסיסי זפת) לקריאה.
Prefetch/Async I/O: DataLoader-comploader-compin-memory, prefetch-cipline, GDS.
חנות תכונה לתכונות מקוונות (אנטי הונאה/המלצות).
Versioning: DVC/LockFS/MLFlow Model Registry; ללכוד נתונים, קוד, והיפרפרמטרים.
תצפית ו SLO
DCGM/Prometheus metrics (מינימום)
'dcgm _ sm _ util', 'dcgm _ fb _ used', 'dcgm _ power _ usage', 'dcgm _ pcie _ rx/tx', 'dcgm _ dram _ bwfuss
טמפרטורות/תדרים ושגיאות ECC (התראה לצמיחה).
הושגו סיבות תפוסה ודוכן (שכבת ליבה צרה).
מטריצות שירות
מודלים יצירתיים: אסימונים/שניות, p50/p95/p99, עומק תור, כשל זיכרון.
אימונים: צעדים/שניות, זמן עידן, יעילות כל-לצמצם, זמן% ב-I/O.
לוח SLO: ציות p95, ”תקציב שגיאה” (image 99. 5% הסקת ”מוצלח”).
התראה (רעיונות)
'fb _ משמש/ fb_total> 0. 95 '5:00 לפנות בוקר.
טיפת TPS ב ־ N% עם אותו סילוק - הדגם/הקוד מושפל.
ECC/טמפרטורה עולה = עבודה/נדידת ברזל תקרית.
בטיחות ובידוד
פרופילי MIG או צמתים לכל קבוצה, שמות/מכסות.
IOMMU/PSP, cgroups, canter abring חסוי, cap _ constrint.
MPS (שירות רב תהליכים) - מסודר: סילוק גבוה יותר, אבל ההפרדה חלשה יותר מ-MIG.
שרשרת אספקה: חתימות מכל (cossign), אימות של חפצים, שליטה על העלאת מודלים.
נתונים/משקולות: הצפנה בדיסק, בקרת גישה (ABAC/RBAC), סימני מים/חשיש של מודלים.
פינוקס: עלות, מכסות, אוטוסקלה
בריכות Node: 'רכבת' (על פי דרישה/שמורות), 'infer' (מיקס על פי דרישה + ספוט), 'exp' (ספוט-כבד).
נקודת יציבות: נקודות ביקורת תכופות, היגיון התחלה מהיר, תורים הר געש עם סדר עדיפויות.
רזרבות/RI/תוכניות חיסכון לבסיס יציב; צמתים ריקים לנטרול אוטומטי.
מודלים מימניים: מתאם קוונטיזציה/LoRA במקום מודל ”מלא”; בחר פרופילי MIG תחת SLA.
מתווה התקציב: מכסות GPU-שעות לכל צוות, ”עלות עבור 1 k בקשות/אסימונים”.
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) KDA להסקת עומק התור אוטומטית
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; NIC/GPU על NUMA אחד.
[ ] נהגים/CUDA עקבי, מפעיל/תוסף התקן מותקן.
[ ] פרופילים של MIG/זמן חיתוך ומכסות עבור שמות.
[ ] צינור DDP/FSDP שנבדק על ההיערכות; נקודות ביקורת הן מהירות.
[ ] Triton/vLLM לחבורה רציפה; מטרות P95 ו-TPS מוגדרות.
[ ] DCGM/Prometheus/Grafana + ECC מתריע/טמפרטורה/זיכרון/TPS.
[ מדיניות הביטחון ] (PSP, coseign, weight avuscation/control).
[ ] FinOps: ספוט/ri בריכות, $1k אסימונים לדווח, סרק כיבוי אוטומטי.
שגיאות נפוצות
אימון והסקת מסקנות מעורבבים על אותם צמתים ללא קוצים * GPU/IO ”מנוסרים” זה לזה.
אין נקודות ביקורת ולוגיקה הקדמה = אובדן התקדמות במקום.
היעדר DCGM-metrics = ”עיוור” סילוק וחימום יתר.
התעלמות מטופולוגיית NUMA/PCIe = רוחב פס NCCL נמוך.
MIG/time-פרוסה = p99 latency ו- ”Out of Memory” profiles.
HPA על ידי CPU במקום TPS/latency = קנה מידה מאוחר.
iGaming/fintech ספציפית
אנטיפראוד/ניקוד: SLA inference que 50 ms p95 on critical pats (תשלומים/מסקנות); שמור על ”נפילה לאחור” מודל אור.
המלצות/פרסונליזציה: על מדיניות/מחוץ למדיניות למידה בלילה, מאפיינים מקוונים - איחור נמוך.
עוזרי צ 'אט/RAG: מטמון תוכן, בקשה לשיכפול, מעקות בטיחות; מחרוזת מדדי חיפוש וקטורי.
פסגות (גפרורים/טורנירים): טרום חימום מודלים/kv-cache, הגדלת minReplicas, כיתות QOS עבור VIP.
סך הכל
מחסנית המחשוב GPU נעשית יעילה מאוד כאשר חומרה (HBM/NVLink/IB), מטריצת תוכנה (CUDA/NCCL), תזמון (MIG, תור, צינורות מהירות/GDS), יכולת תצפית (DCGM )/SLO) ועלות (FinOps/Cutas) עבודה בקונצרט. להצמיד את זה למדיניות IAC ואשכול - ואתה מקבל מהירויות למידה צפויות, יציבה p95-latency inference, וכלכלת שעון GPU שקופה.