Nanotron - إطار عمل تدريب LLM ثلاثي الأبعاد المبسط
Nanotron (من Hugging Face) هو إطار عمل بسيط لتدريب نماذج اللغة الكبيرة بتوازي ثلاثي الأبعاد — بيانات وموتر وأنابيب متوازية — مطبقة بـ Python مقروء بقصد. الهدف منه أن يكون صغيراً وقابل للاختراق بما يكفي لفهمه بالفعل، مع الاستمرار في توزيع التدريب عبر وحدات GPU العديدة. إنه خيار قوي عندما تريد تعلم أو تخصيص ميكانيكا التدريب الموزعة دون تعقيد أكبر أطر العمل.
التدريب المسبق يتطلب موارد حسابية كبيرة؛ ابدأ صغيراً. تحقق من الصحة من إعداد على نموذج صغير وزوج من وحدات GPU قبل التوسع.
التثبيت
| الطريقة | الأمر |
|---|
| من المصدر | git clone https://github.com/huggingface/nanotron && cd nanotron && pip install -e . |
| الانتباه الفلاش | pip install flash-attn (موصى به) |
| المتطلبات | PyTorch + وحدات GPU CUDA |
| التحقق | قم بتشغيل مثال إعداد على 1-2 GPU |
توازي ثلاثي الأبعاد
| البعد | الانقسامات | مفتاح التكوين |
|---|
| التوازي البيانات (DP) | الدفعة عبر النسخ المتماثلة | dp |
| توازي الموتر (TP) | الطبقات عبر وحدات GPU | tp |
| توازي خط الأنابيب (PP) | النموذج إلى مراحل | pp |
يجب أن يساوي المنتج dp × tp × pp عدد وحدات GPU الإجمالي.
التكوين (YAML)
يتم تحديد تدريب Nanotron بواسطة ملف تكوين YAML يصف النموذج والبيانات والتوازي والمحسِّن.
parallelism:
dp: 2
tp: 2
pp: 2
pp_engine: 1f1b # جدول خط الأنابيب
model:
model_config:
hidden_size: 2048
num_hidden_layers: 24
num_attention_heads: 16
optimizer:
learning_rate_scheduler:
learning_rate: 3.0e-4
optimizer_factory:
adam_beta1: 0.9
adam_beta2: 0.95
tokens:
sequence_length: 2048
micro_batch_size: 4
batch_accumulation_per_replica: 8
إطلاق التدريب
# عقدة واحدة وحدات GPU متعددة
torchrun --nproc_per_node=8 run_train.py --config-file config.yaml
# إنشاء إعداد بدء تشغيل
python examples/config_tiny_llama.py
| المفتاح | المعنى |
|---|
run_train.py | نقطة دخول التدريب الرئيسية |
--config-file | تكوين التدريب YAML |
pp_engine | جدول خط الأنابيب (على سبيل المثال 1F1B، AFAB) |
micro_batch_size | دفعة صغيرة لكل خطوة |
batch_accumulation_per_replica | تراكم التدرج |
البيانات
| الخيار | ملاحظة |
|---|
| مجموعات البيانات المرموزة مسبقاً | أشر الإعداد إلى بيانات معاملة |
| مجموعات بيانات HF | البث/الأحمال عبر Hugging Face |
| Nanoset | صيغة مجموعة البيانات الفعالة Nanotron |
| المرموز | تعيين عبر إعداد المرموز |
الفحوصات والاستئناف
| الجانب | الطريقة |
|---|
| حفظ التكرار | checkpoints.checkpoint_interval |
| حفظ المسار | checkpoints.checkpoints_path |
| استئناف | --config-file + أشر إلى فحص محفوظ |
| متعدد الأجزاء | الفحوصات هي توازي يقظة |
المراقبة
| الميتريكا | المعنى |
|---|
| الخسارة / lm_loss | خسارة التدريب |
| الرموز/الثانية | الإنتاجية |
| معايرة التدرج | حجم التدرج (الاستقرار) |
| التسجيل | دمج W&B / TensorBoard |
Nanotron مقابل أطر عمل التدريب الأخرى
| الجانب | Nanotron | TorchTitan | Megatron-LM |
|---|
| الفلسفة | بسيط، قابل للاختراق | مرجع PyTorch-native | غني بالميزات، توسع أقصى |
| التوازي | 3D (dp/tp/pp) | 4D (إضافة السياق) | 3D+ واسع |
| القراءة | عالية (تعلم من ذلك) | عالية | أقل (مقاعد البدلاء كبيرة) |
| الأفضل لـ | فهم/تخصيص 3D | توسع مرجعي PyTorch الأصلي | تدريب توسع الحدود |
الموارد