منصوبے کے بارے میں
Transformer Engine (TE) ایک NVIDIA لائبریری ہے جو NVIDIA GPUs پر Transformer ماڈلز کو تیز کرنے کے لیے بنائی گئی ہے۔ اس کی مرکزی خصوصیت کم-درستگی کمپیوٹیشن ہے: Hopper، Ada اور Blackwell GPUs پر 8-بٹ فلوٹنگ پوائنٹ (FP8)، نیز Blackwell پر MXFP8 اور NVFP4 فارمیٹس، جس کا مقصد ٹریننگ اور انفرنس دونوں میں کارکردگی بہتر بنانا اور میموری کا استعمال کم کرنا ہے۔ یہ Ampere اور بعد کے آرکیٹیکچرز پر FP16 اور BF16 میں بھی آپٹمائزیشنز کی حمایت کرتی ہے۔
یہ لائبریری عام Transformer آرکیٹیکچرز کے لیے انتہائی آپٹمائزڈ بلڈنگ بلاکس اور ایک خودکار مخلوط-درستگی جیسا API فراہم کرتی ہے جسے فریم ورک-مخصوص کوڈ کے ساتھ استعمال کیا جا سکتا ہے۔ ایک فریم ورک-غیرجانبدار C++ API شامل ہے تاکہ دیگر ڈیپ لرننگ لائبریریاں Transformers کے لیے FP8 سپورٹ شامل کر سکیں۔ TE ماڈیولز اندرونی طور پر FP8 ٹریننگ کے لیے درکار اسکیلنگ فیکٹرز اور متعلقہ اقدار کو برقرار رکھتے ہیں، جو صارفین کے لیے مخلوط-درستگی ورک فلو کو آسان بناتا ہے۔
پروجیکٹ کی جانب سے درج نمایاں خصوصیات میں FP8 سپورٹ کے ساتھ Transformer لیئرز بنانے کے لیے استعمال میں آسان ماڈیولز، فیوزڈ-کرنل آپٹیمائزیشنز، Hopper، Ada اور Blackwell پر FP8 سپورٹ، Blackwell پر MXFP8 اور NVFP4 سپورٹ، اور Ampere اور بعد کے آرکیٹیکچرز پر FP16/BF16 میں آپٹیمائزیشنز شامل ہیں۔
PyTorch اور JAX/Flax کے لیے استعمال کی مثالیں دی گئی ہیں۔ PyTorch میں، صارفین transformer_engine.pytorch امپورٹ کرتے ہیں، منتخب FP8 فارمیٹ کے ساتھ DelayedScaling جیسی recipe بناتے ہیں، اور forward pass کو te.autocast میں لپیٹتے ہیں۔ JAX/Flax میں، te_flax ماڈیولز اور ایک recipe کے ساتھ اسی طرح کا autocast استعمال دکھایا گیا ہے۔ مکمل ٹیوٹوریل کے لیے ایک getting-started گائیڈ کا لنک دیا گیا ہے۔
انسٹالیشن کے اختیارات میں NGC Docker کنٹینرز (تجویز کردہ)، PyTorch اور/یا JAX کے لیے extras کے ساتھ pip پیکجز، PyTorch انٹیگریشن کے لیے conda-forge پیکجز، اور سورس بلڈز شامل ہیں۔ سسٹم تقاضوں میں Blackwell، Hopper، Grace Hopper/Blackwell، Ada اور Ampere ہارڈویئر؛ Linux بطور آفیشل OS محدود WSL2 سپورٹ کے ساتھ؛ CUDA 12.1+ (Blackwell کے لیے 12.8+)؛ cuDNN 9.12+؛ GCC 9+ یا Clang 10+ مع C++17؛ اور Python 3.12 تجویز کردہ شامل ہیں۔ FP8 خصوصیات کے لیے compute capability 8.9 یا اس سے زیادہ درکار ہے۔ بلڈ سے متعلق ماحولیاتی متغیرات جیسے CUDA_PATH، CUDNN_PATH، CXX، NVTE_FRAMEWORK، MAX_JOBS اور NVTE_CUDA_ARCHS دستاویزی کیے گئے ہیں۔
README میں PyTorch میں FlashAttention-2 اور FlashAttention-3 سپورٹ کا احاطہ کیا گیا ہے، جب دونوں موجود ہوں تو FlashAttention-3 کو ترجیح دی جاتی ہے، اور نوٹ کیا گیا ہے کہ FlashAttention-2 کمپائلیشن میموری-انٹینسیو ہو سکتی ہے۔ ایک ٹربل شوٹنگ سیکشن ABI مطابقت امپورٹ ایررز، غائب ہیڈرز یا لائبریریاں، بلڈ ریسورس مسائل، verbose بلڈ لاگنگ، UV/ورچوئل-انوائرنمنٹ مسائل بشمول cuDNN سب لائبریری لوڈنگ کی ناکامیاں، اور JAX FFI رجسٹریشن ایررز پر توجہ دیتا ہے۔
v1.7 کے لیے ایک بریکنگ چینج دستاویزی کیا گیا ہے: PyTorch padding mask تعریف تبدیل ہوئی تاکہ True کا مطلب اب کسی پوزیشن کو شامل کرنے کے بجائے mask out کرنا ہے، جس سے فریم ورکس میں mask سیمنٹکس یکساں ہو گئے۔ کنورجنس نوٹس بتاتے ہیں کہ FP8 اور MXFP8 نے آزمائشی کنفیگریشنز میں BF16 ٹریننگ لاس کروز سے کوئی نمایاں فرق نہیں دکھایا، downstream LLM ٹاسکس پر توثیق کے ساتھ، اور MPT-1.3B، Llama2-7B، LLM-8B، MPT-13B، MoE-16B اور Llama2-70B جیسے ماڈلز کو Mosaic Composer، Alibaba Pai اور Megatron Core سمیت فریم ورکس میں درج کیا گیا ہے۔
درج انٹیگریشنز میں DeepSpeed، Hugging Face Accelerate، Lightning، MosaicML Composer، NVIDIA JAX Toolbox، NVIDIA Megatron-LM، NVIDIA NeMo Megatron Bridge، Amazon SageMaker Model Parallel Library، Levanter، GPT-NeoX اور Hugging Face Nanotron شامل ہیں۔ یہ پروجیکٹ Apache-2.0 لائسنس یافتہ ہے اور اپنی CONTRIBUTING گائیڈ کے ذریعے شراکت کا خیرمقدم کرتا ہے۔
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.