तुमच्या हार्डवेअरसाठी AI ऑप्टिमायझेशन धोरणे निवडणे

योग्य ऑप्टिमायझेशन धोरण निवडण्याची सुरुवात तुमचे हार्डवेअर आर्किटेक्चर तुमच्या मुख्य परफॉर्मन्स अडथळ्याशी जुळवण्यापासून होते. प्रत्येक प्लॅटफॉर्म कॉम्प्युट थ्रुपुट, मेमरी बँडविड्थ आणि क्षमता यांवर कठोर भौतिक मर्यादा घालतो.
1. लक्ष्य हार्डवेअरचे आर्किटेक्चरल ट्रेड-ऑफ
टेन्सरची हालचाल आणि गुणाकार वेगवेगळे हार्डवेअर प्लॅटफॉर्म मूलतः वेगवेगळ्या पद्धतींनी सोडवतात.
| हार्डवेअर वर्ग | मेमरी आर्किटेक्चर | कॉम्प्युट इंजिन | सॉफ्टवेअर आणि कर्नल इकोसिस्टम | मुख्य ताकद आणि कठोर मर्यादा |
|---|---|---|---|---|
| डेटा सेंटर NVIDIA GPU (H100, B200, R100) | डिस्क्रीट HBM3e / HBM4 (80 GB–288 GB, 3.35–19.2 TB/s) + जलद ऑन-चिप SRAM. | Tensor Core (FP16, BF16, FP8, NVFP4) + TMA async कॉपी युनिट. | CUDA, cuDNN, Triton, TensorRT-LLM, vLLM, NCCL. | सर्वाधिक कच्चे FLOPS आणि मल्टी-GPU स्केलिंग; महाग आणि PCIe/NVLink सीमांनी मर्यादित. |
| कन्झ्युमर NVIDIA GPU (RTX 4090 / 5090) | डिस्क्रीट GDDR6X / GDDR7 (24 GB–32 GB, ~1.0–1.8 TB/s). | कमी FP64/NVLink क्षमतांसह Tensor Core (FP16, FP8, FP4). | CUDA, PyTorch, Triton, llama.cpp, ExLlamaV2. | स्थानिक किंमत-ते-परफॉर्मन्समध्ये अतुलनीय; 24–32 GB VRAM मर्यादा आणि NVLink च्या अभावामुळे गंभीरपणे अडथळा. |
| Apple Silicon (M3/M4 Max & Ultra) | CPU/GPU/NPU मध्ये सामायिक Unified Memory (LPDDR5) (192–512 GB पर्यंत, ~400–800 GB/s). | GPU कोर + Simdgroup Matrix युनिट + Apple Neural Engine (ANE). | Metal (MSL), MLX, PyTorch MPS, llama.cpp. | मोठी मॉडेल स्थानिकरीत्या लोड करण्यासाठी प्रचंड RAM क्षमता; मध्यम मेमरी बँडविड्थ प्रॉम्प्ट prefill चा वेग मर्यादित करते. |
| मोबाइल SoC (Snapdragon 8 Elite, Apple A18/A19) | कमी वीजेची LPDDR5X शेअर्ड RAM (8 GB–16 GB, ~50–85 GB/s). | मोबाइल GPU (Adreno/Apple) + समर्पित INT4/INT8 NPU (Hexagon/ANE). | Vulkan, Metal, ExecuTorch, LiteRT, MLC-LLM. | अत्यंत कमी वीज (3–8 W); कठोर थर्मल थ्रॉटलिंग आणि OS अॅपसाठी 3–6 GB ची घट्ट मेमरी मर्यादा. |
2. विशिष्ट अडथळे आणि अभियांत्रिकी उद्दिष्टांचे निराकरण
लक्ष्य हार्डवेअर ओळखल्यावर, प्रत्येक परफॉर्मन्स अडथळा तीन अभियांत्रिकी वर्गांपैकी एकात मोडतो—प्रत्येकाला वेगळ्या तांत्रिक प्लेबुकची गरज असते.
उद्दिष्ट A: ट्रेनिंगचा वेग कमाल करणे (थ्रुपुट आणि स्केलिंग)
ट्रेनिंगमध्ये मुख्य भर अॅक्टिव्हेशन/ग्रेडियंट साठवणे आणि अनेक स्टेपपर्यंत Tensor Core ना डेटा पुरवणे यावर असतो.
- Python आणि मेमरी ओव्हरहेड दूर करा: torch.compile(mode="max-autotune") आणि BF16/FP8 मिक्स्ड प्रिसिजन सक्षम करा, म्हणजे Tensor Core पूर्ण वेगाने चालतील आणि अॅक्टिव्हेशन मेमरी निम्मी होईल.
- कम्युनिकेशन कॉम्प्युटसोबत ओव्हरलॅप करा: अनेक GPU वर, ग्रेडियंट अॅक्युम्युलेशनसह PyTorch FSDP2 किंवा ZeRO-3 वापरा, म्हणजे All-Gather आणि Reduce-Scatter ट्रान्सफर मॅट्रिक्स गुणाकारांच्या मागे असिंक्रोनस पद्धतीने होतात.
- Activation Checkpointing: मोठ्या बॅच साइजमुळे Out-Of-Memory (OOM) त्रुटी आल्यास, फॉरवर्ड पासदरम्यान मध्यवर्ती लेयर अॅक्टिव्हेशन टाकून द्या आणि बॅकप्रोपगेशनदरम्यान पुन्हा मोजा—मोठ्या बॅच साइजच्या मोकळिकीसाठी ~25% अतिरिक्त गणनेची देवाणघेवाण करून.
उद्दिष्ट B: इन्फरन्स लेटन्सी कमी करणे (TTFT आणि टोकन/सेकंद)
इन्फरन्स Prefill (कॉम्प्युट-बाउंड प्रॉम्प्ट इन्जेशन) आणि Decode (मेमरी-बँडविड्थ-बाउंड टोकन जनरेशन) यांत विभागला जातो.
- Time-To-First-Token (TTFT) कमी करा: FlashAttention-2/3 आणि Prefix Caching (शेअर्ड सिस्टम प्रॉम्प्टसाठी KV cache ब्लॉकचा पुनर्वापर) वापरा, म्हणजे लांब प्रॉम्प्ट अनावश्यक गणिताशिवाय Tensor Core पूर्ण वापरतात.
- टोकन जनरेशन वेगवान करा (TPOT): HBM रीड 2×–4× कमी करण्यासाठी वेट FP8 किंवा INT4 (AWQ/Marlin) मध्ये क्वांटाइज करा, CPU कर्नल-लाँच गॅप दूर करण्यासाठी CUDA Graphs सक्षम करा, आणि प्रत्येक फॉरवर्ड पासमध्ये 3–5 टोकन पडताळण्यासाठी Speculative Decoding (EAGLE/Medusa) जोडा.
- बॅच हस्तक्षेप दूर करा: मल्टी-यूझर प्रोडक्शन वातावरणात, continuous batching सह PagedAttention वापरा—किंवा Prefill आणि Decode वेगळ्या GPU पूलवर विभागा—म्हणजे जड प्रॉम्प्ट सक्रिय टोकन स्ट्रीम कधीही थांबवत नाहीत.
उद्दिष्ट C: मेमरी फूटप्रिंट कमी करणे (मर्यादित उपकरणांवर मॉडेल बसवणे)
मॉडेल उपलब्ध VRAM किंवा मोबाइल RAM पेक्षा मोठे झाल्यास, आक्रमक कॉम्प्रेशन आणि झिरो-कॉपी एक्झिक्युशन अनिवार्य ठरतात.
- सब-बाइट वेट कॉम्प्रेशन: 70B मॉडेल 140 GB वरून ~40 GB पर्यंत, किंवा 8B मॉडेल 16 GB वरून ~4.9 GB पर्यंत कमी करण्यासाठी 4-बिट क्वांटायझेशन (Q4_K_M किंवा AWQ) वापरा.
- KV Cache संकुचित करा: लांब संभाषणे अनेकदा मॉडेल वेटपेक्षा जास्त RAM वापरतात. संदर्भ मेमरी 50%–90% कमी करण्यासाठी FP8/INT4 KV Cache क्वांटायझेशन, Sliding Window Attention, किंवा Multi-Head Latent Attention (MLA) असलेले आर्किटेक्चर वापरा.
- झिरो-कॉपी स्ट्रीमिंग (mmap): Unified Memory लॅपटॉप आणि फोनवर, क्वांटाइज्ड मॉडेल फाइल NVMe/UFS स्टोरेजमधून थेट मेमरी-मॅप करा, म्हणजे OS मागणीनुसार वेट पेज करते आणि स्टार्टअपदरम्यान RAM दुप्पट वापरली जात नाही.