اپنے ہارڈویئر کے لیے AI اصلاح کی حکمت عملیاں منتخب کرنا

درست اصلاحی حکمت عملی منتخب کرنے کی ابتدا اپنے ہارڈویئر آرکیٹیکچر کو کارکردگی کی بنیادی رکاوٹ سے ملانے سے ہوتی ہے۔ ہر پلیٹ فارم حسابی تھروپٹ، میموری بینڈوڈتھ اور گنجائش پر سخت طبعی حدود عائد کرتا ہے۔
1. ہدفی ہارڈویئر آرکیٹیکچر کے سمجھوتے
مختلف ہارڈویئر پلیٹ فارم ٹینسرز کی منتقلی اور ضرب کو بنیادی طور پر مختلف طریقوں سے حل کرتے ہیں۔
| ہارڈویئر کی قسم | میموری آرکیٹیکچر | حسابی انجن | سافٹ ویئر اور کرنل ایکو سسٹم | بنیادی خوبیاں اور سخت حدود |
|---|---|---|---|---|
| ڈیٹا سینٹر NVIDIA GPUs (H100, B200, R100) | علیحدہ HBM3e / HBM4 (80 GB–288 GB، 3.35–19.2 TB/s) + تیز آن چپ SRAM۔ | Tensor Cores (FP16, BF16, FP8, NVFP4) + TMA غیر ہم وقت کاپی یونٹس۔ | CUDA, cuDNN, Triton, TensorRT-LLM, vLLM, NCCL. | سب سے زیادہ خام FLOPS اور ملٹی GPU اسکیلنگ؛ مہنگے اور PCIe/NVLink کی حدود سے محدود۔ |
| صارفین کے NVIDIA GPUs (RTX 4090 / 5090) | علیحدہ GDDR6X / GDDR7 (24 GB–32 GB، ~1.0–1.8 TB/s)۔ | کم FP64/NVLink صلاحیتوں کے ساتھ Tensor Cores (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 کی بہت بڑی گنجائش؛ معتدل میموری بینڈوڈتھ پرامپٹ پری فل کی رفتار محدود کرتی ہے۔ |
| موبائل SoCs (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 Cores کو مسلسل ڈیٹا فراہم کرنا غالب کام ہیں۔
- Python اور میموری کا اضافی بوجھ ختم کریں: torch.compile(mode="max-autotune") اور BF16/FP8 مکسڈ پریسیژن فعال کریں تاکہ ایکٹیویشن میموری آدھی ہوتے ہوئے Tensor Cores پوری رفتار سے چلیں۔
- مواصلات اور حساب کو بیک وقت چلائیں: متعدد GPUs پر گریڈینٹ اکیمیولیشن کے ساتھ PyTorch FSDP2 یا ZeRO-3 استعمال کریں تاکہ All-Gather اور Reduce-Scatter کی منتقلیاں میٹرکس ضرب کے پس منظر میں غیر ہم وقت طور پر ہوں۔
- ایکٹیویشن چیک پوائنٹنگ: اگر بڑے بیچ کے حجم سے Out-Of-Memory (OOM) کی خرابیاں پیدا ہوں تو فارورڈ پاس کے دوران درمیانی تہوں کی ایکٹیویشنز خارج کر دیں اور بیک پروپیگیشن کے دوران انہیں دوبارہ حساب کریں۔ یوں ~25% اضافی حساب کے بدلے بیچ کا حجم بہت بڑھانے کی گنجائش ملتی ہے۔
ہدف B: انفرنس کی تاخیر کو کم سے کم کرنا (TTFT اور Tokens/Sec)
انفرنس Prefill (حساب سے محدود پرامپٹ کی وصولی) اور Decode (میموری بینڈوڈتھ سے محدود ٹوکن جنریشن) میں تقسیم ہوتی ہے۔
- پہلے ٹوکن تک وقت (TTFT) کم کریں: FlashAttention-2/3 اور Prefix Caching (مشترکہ سسٹم پرامپٹس کے لیے KV کیش بلاکس کا دوبارہ استعمال) استعمال کریں تاکہ طویل پرامپٹس غیر ضروری حساب کے بغیر Tensor Cores کی پوری گنجائش استعمال کریں۔
- ٹوکن جنریشن تیز کریں (TPOT): HBM ریڈز کو 2×–4× کم کرنے کے لیے ویٹس کو FP8 یا INT4 (AWQ/Marlin) میں کوانٹائز کریں، CPU کرنل لانچ کے وقفے ختم کرنے کے لیے CUDA Graphs فعال کریں، اور ہر فارورڈ پاس میں 3–5 ٹوکن کی تصدیق کے لیے Speculative Decoding (EAGLE/Medusa) شامل کریں۔
- بیچ کی باہمی مداخلت ختم کریں: کثیر صارف پروڈکشن ماحول میں مسلسل بیچنگ کے ساتھ PagedAttention استعمال کریں، یا Prefill اور Decode کو الگ GPU پولز پر تقسیم کریں، تاکہ بھاری پرامپٹس فعال ٹوکن سلسلوں کو کبھی نہ روکیں۔
ہدف C: میموری کا استعمال گھٹانا (محدود آلات پر ماڈلز سمونا)
جب ماڈل دستیاب VRAM یا موبائل RAM سے بڑا ہو، تو بھرپور کمپریشن اور زیرو کاپی اجرا لازمی ہو جاتے ہیں۔
- سب بائٹ ویٹ کمپریشن: 70B ماڈل کو 140 GB سے ~40 GB، یا 8B ماڈل کو 16 GB سے ~4.9 GB تک گھٹانے کے لیے 4-bit کوانٹائزیشن (Q4_K_M یا AWQ) استعمال کریں۔
- KV کیش کمپریس کریں: طویل گفتگو اکثر ماڈل کے اپنے ویٹس سے زیادہ RAM استعمال کرتی ہے۔ کانٹیکسٹ میموری 50%–90% کم کرنے کے لیے FP8/INT4 KV Cache کوانٹائزیشن، Sliding Window Attention، یا Multi-Head Latent Attention (MLA) والے آرکیٹیکچرز استعمال کریں۔
- زیرو کاپی اسٹریمنگ (mmap): Unified Memory والے لیپ ٹاپس اور فونز پر کوانٹائز شدہ ماڈل فائلوں کو NVMe/UFS اسٹوریج سے براہ راست میموری میپ کریں تاکہ OS ضرورت کے مطابق ویٹس کے پیجز لائے اور اسٹارٹ اپ کے دوران RAM کا استعمال دوگنا نہ ہو۔