TorchTitan - منصة تدريب LLM الأصلية PyTorch
TorchTitan هي منصة مفتوحة المصدر أصلية PyTorch لتدريب نماذج المولد (LLM) على نطاق واسع. إنها تطبيق مرجعي نظيف لأحدث تقنيات التدريب الموزعة في PyTorch، والذي يكون التوازي رباعي الأبعاد — بيانات وموتر وخط أنابيب وتوازي السياق — بطريقة معيارية، على قمة FSDP2 و torch.compile والفحص الموزع، مع التوسع المرن. إنها نقطة البداية المفضلة للفرق التي تريد تدريب نماذج باستخدام توسع PyTorch الأصلي بدلاً من مكدس تابع لطرف ثالث.
التدريب الموزع كثيف الاستهلاك للموارد. تحقق من الصحة من الإعدادات على نموذج صغير/مقياس قبل الالتزام بتشغيل متعدد العقد الكبير.
التثبيت
| الطريقة | الأمر |
|---|
| من المصدر | git clone https://github.com/pytorch/torchtitan && cd torchtitan && pip install -e . |
| المتطلبات | PyTorch حديث (غالباً ما يوصى به)، وحدات GPU CUDA |
| مجموعات البيانات | يستخدم مجموعات بيانات HF / المرموزات |
| التحقق | قم بتشغيل إعدادات تصحيح على 1 GPU |
أبعاد التوازي (4D)
| البعد | الانقسامات |
|---|
| التوازي البيانات (FSDP2) | الدفعة، معاملات التجزئة/محسِّن/الأنوية |
| توازي الموتر | الطبقات الفردية عبر وحدات GPU |
| توازي خط الأنابيب | النموذج إلى مراحل عبر وحدات GPU |
| توازي السياق | تسلسلات طويلة عبر وحدات GPU |
هذه تتكون: على سبيل المثال dp × tp × pp × cp يرسم نموذج على شبكة GPU كبيرة.
التكوين
يتم قيادة TorchTitan بواسطة ملفات تكوين TOML بالإضافة إلى تجاوزات سطر الأوامر.
# قم بتشغيل التدريب مع إعداد (متعدد GPU عبر torchrun)
CONFIG_FILE=./train_configs/llama3_8b.toml ./run_train.sh
| قسم التكوين | التحكم |
|---|
[model] | الهندسة المعمارية والحجم والنكهة |
[training] | حجم الدفعة والخطوات وطول المتسلسلة ومعدل التعلم |
[parallelism] | data_parallel_shard_degree، tensor_parallel_degree، pipeline_parallel_degree، context_parallel_degree |
[optimizer] | المحسِّن + المعاملات الفائقة |
[checkpoint] | تكرار/مسارات الفحص الموزعة |
[activation_checkpoint] | سياسة إعادة الحساب |
الميزات الرئيسية
| الميزة | الفائدة |
|---|
| FSDP2 | توازي البيانات المرن الحديث |
torch.compile | تجميع الرسم البياني للسرعة |
| الفحص الموزع غير المتزامن | احفظ/استئنف الأشواط الضخمة بكفاءة |
| Float8 / دقة منخفضة | تدريب أسرع على الأجهزة المدعومة |
| التوسع المرن | التكيف مع توفر GPU المتغير |
| تهيئة الجهاز الوصفي | بناء نماذج ضخمة بدون OOM عند التهيئة |
إطلاق متعدد العقد
# torchrun عبر العقد (مفاهيمي)
torchrun --nnodes=4 --nproc_per_node=8 \
--rdzv_backend=c10d --rdzv_endpoint=$MASTER:29500 \
-m torchtitan.train --job.config_file llama3_70b.toml
| تجاوز | مثال |
|---|
| درجات التوازي | --parallelism.tensor_parallel_degree 8 |
| الخطوات | --training.steps 10000 |
| طول المتسلسلة | --training.seq_len 8192 |
| ترجمة | --training.compile |
المراقبة والفحوصات
| الجانب | الطريقة |
|---|
| التسجيل | دمج TensorBoard / W&B |
| الميتريكا | الخسارة والرموز/الثانية وMFU (استخدام FLOPs النموذج) |
| الفحوصات | فحص نقطة موزعة (DCP) حفظ/تحميل |
| استئناف | وجه الإعداد في خطوة فحص |
TorchTitan مقابل أطر عمل التدريب الأخرى
| الجانب | TorchTitan | Megatron-LM | Nanotron |
|---|
| الأصل | فريق PyTorch | NVIDIA | Hugging Face |
| النمط | PyTorch-native، قابل للتكوين | غني بالميزات، ناضج | بسيط 3D |
| التوازي | 4D (dp/tp/pp/cp) | 3D+ (واسع) | 3D |
| الأفضل لـ | توسع مرجعي PyTorch أصلي | توسع MoE/كثيف أقصى | تدريب 3D صغير وقابل للاختراق |
الموارد