مشاركة مشتركة من NVIDIA وHugging Face. شكر خاص لساياك بول من Hugging Face لمساهماتهم في أعمال التكامل ولمشاركتهم في تأليف هذه المدونة.
تعمل نماذج الانتشار على تشغيل بعض الإصدارات مفتوحة المصدر الأكثر إثارة في العامين الماضيين – مثل FLUX.1-dev لتحويل النص إلى صورة وWan 2.1 وHunyuanVideo لتحويل النص إلى فيديو. أصبحت مكتبة 🤗 Diffusers الموطن الفعلي لهذه النماذج، مما يمنح الباحثين والبنائين واجهة واحدة متسقة للاستدلال والتكيف وتكوين خطوط الأنابيب.
بالإضافة إلى ذلك، فإن نماذج التدريب والنشر الدقيقة آخذة في الارتفاع أيضًا، مما يتطلب أدوات مساعدة توفر تقسيمًا فعالاً للذاكرة، وتخزينًا مؤقتًا كامنًا، وتخزينًا متعدد الحلول، وتكوينات تتدرج بسلاسة من وحدة معالجة رسومات واحدة إلى المئات.
لتلبية هذه المتطلبات التقنية، نقدم مكتبة NVIDIA NeMo Automodel مفتوحة المصدر. اليوم، نسلط الضوء على التعاون بين NVIDIA وHugging Face الذي يوفر تدريبًا على النشر الموزع على مستوى الإنتاج لأي نموذج بتنسيق Diffusers على Hugging Face Hub – بدون تحويل نقاط التفتيش ولا إعادة كتابة نموذج لأي نموذج جديد. تم توثيق التكامل في دليل تدريب Diffusers وهو مفتوح المصدر بالكامل ضمن Apache 2.0.
جدول المحتويات
ما هو نيمو موديل السيارة؟
NeMo Automodel هي مكتبة تدريب أصلية مفتوحة المصدر لـ PyTorch DTensor، وهي جزء من إطار عمل NVIDIA NeMo، مبنية على مبدأين من مبادئ التصميم التي تهم النظام البيئي Diffusers:
- معانقة الوجه مواطن. نقطة
pretrained_model_name_or_pathفي أي معرف نموذج للناشرين على المركز وابدأ التدريب. يستخدم NeMo Automodel فئات نماذج الناشرين (على سبيل المثالWanTransformer3DModel) لخطوط أنابيب التحميل والناشرات (WanPipeline) للجيل. تقوم نقاط التفتيش برحلة ذهابًا وإيابًا بشكل نظيف إلى النظام البيئي للناشرين. - برنامج واحد، أي نطاق. يمكن تعديل الوصفات ونصوص التدريب بسهولة لتناسب التدريب على أي نطاق. التوازي هو اختيار تكوين، وليس إعادة كتابة التعليمات البرمجية – قم بالتبديل بين FSDP2، ومتوازي الموتر، ومتوازي الخبراء، ومتوازي السياق، ومتوازي خطوط الأنابيب من خلال الإعلان عن التكوينات، وليس إعادة كتابة النماذج.
يدعم AutoModel حاليًا نماذج مطابقة التدفق فقط. تحت الغطاء، يستخدم مطابقة التدفق كهدف للتدريب، مع التدريب على المساحة الكامنة (عبر مخرجات VAE المشفرة مسبقًا) وتحميل البيانات المجمعة متعددة الحلول لتسريع الإنتاجية.
نماذج الانتشار المدعومة
يأتي تكامل NeMo Automodel مزودًا بوصفات ضبط دقيقة جاهزة للاستخدام لنماذج النشر المفتوحة أدناه. تعكس القائمة الوصفات الموجودة حاليًا examples/diffusion/finetune.
ما يفتحه هذا التعاون
بالنسبة لمستخدمي الناشرين، تنقسم المكاسب العملية إلى عدد قليل من القدرات الملموسة.
لا يوجد تحويل نقطة تفتيش. تعمل الأوزان المدربة مسبقًا من المحور خارج الصندوق. لا يوجد “تنسيق تدريب” منفصل للتحويل إليه ثم التحويل مرة أخرى. يتم تحميل نقطة التفتيش المضبوطة بدقة مباشرة في ملف DiffusionPipeline للاستدلال، أو العودة إلى المحور للمشاركة. أدوات المصب – التكميم، والتجميع، ومحولات LoRA، وأخذ العينات المخصصة – كلها تستمر في العمل.
مسار سريع لدعم النموذج الجديد. عندما يصل نموذج نشر جديد إلى Diffusers، فإن تمكينه في NeMo Automodel يتطلب إضافة رمز صغير ومضمن – معالج معالجة مسبقة للبيانات ومحول نموذج – بدلاً من نص تدريبي مخصص كامل. تبقى بقية مجموعة الوصفات (FSDP2، وتحميل البيانات المجمعة، وفحص التفتيش، والإنشاء) دون تغيير، وينطبق نفس سير العمل المستند إلى YAML.
ضبط دقيق كامل وفعال للمعلمات. يتم دعم كل من الضبط الدقيق الكامل ونمط LoRA PEFT، بحيث يمكنك الاختيار بين أقصى جودة (FT كامل على مجموعة كبيرة) أو أقصى قدر من الكفاءة (LoRA على عقدة واحدة). نفس هيكل الوصفة يتعامل مع كليهما.
تدريب قابل للتطوير يتجاوز ما تقدمه البرامج النصية المضمنة. يضيف NeMo Automodel مخططات تقسيم مثل FSDP2، والموتر، والسياق، وتوازيات خطوط الأنابيب، والتنسيق متعدد العقد (SLURM اليوم، وKubernetes قادمًا)، والتجميع متعدد الحلول. هذه الإمكانات تجعل تدريب نماذج أكبر مثل FLUX.1-dev (12B) وHunyuanVideo (13B) أمرًا ممكنًا.
نظرة على سير العمل الدقيق
في هذا القسم، نستعرض سير العمل النموذجي لتحسين أي من النماذج المدعومة. الطريقة الموصى بها لتثبيت Automodel هي حاوية NeMo Automodel Docker (nvcr.io/nvidia/nemo-automodel:26.06)، والذي يأتي مع PyTorch، وTransformerEngine، وغيرها من التبعيات المجمعة بواسطة CUDA المعدة مسبقًا. وبدلاً من ذلك، قم بالتثبيت باستخدام pip3 install nemo-automodel أو من المصدر(pip3 install git+https://github.com/NVIDIA-NeMo/Automodel.git); راجع دليل التثبيت لجميع الخيارات.
يستعرض هذا الدليل ضبطًا دقيقًا للمحول الكامل لـ FLUX.1-dev على مجموعة بيانات Rider–Waite Tarot المكونة من 78 بطاقة، ثم يتم التوليد من نقطة التفتيش الناتجة. فهو يعيد استخدام تكوينات YAML التي تم تسجيلها ويطبق الإعدادات الخاصة بالتشغيل كتجاوزات لسطر الأوامر، لذلك لا يلزم وجود ملفات تكوين جديدة.
1. قم بتشفير مجموعة البيانات مسبقًا
تستهلك وصفة النشر ملفات VAE الكامنة وتضمينات النص المخزنة مؤقتًا بدلاً من تشفير صور المصدر أثناء كل خطوة تدريب. قم ببث صور 78 Rider–Waite مباشرة من Hugging Face وقم بتوزيع المعالجة المسبقة عبر جميع وحدات معالجة الرسومات المرئية:
uv run --locked --no-default-groups \
--extra diffusion \
--extra diffusion-media \
python -m tools.diffusion.preprocessing_multiprocess image \
--dataset_name multimodalart/1920-raider-waite-tarot-public-domain \
--dataset_media_column image \
--dataset_caption_column caption \
--dataset_streaming \
--max_images 78 \
--output_dir /cache/flux_tarot \
--processor flux \
--model_name black-forest-labs/FLUX.1-dev \
--max_pixels 245760
التسميات التوضيحية تحتوي بالفعل على trtcrd رمز الزناد. باستخدام ميزانية البكسل هذه ونسبة العرض إلى الارتفاع الرأسية لمجموعة البيانات، تقوم المعالجة المسبقة بتعيين العينات إلى مجموعة 384 × 640 المستخدمة في عرض العرض.
للتدريب على الصور، تنتج المعالجة المسبقة .pt ملفات ذاكرة التخزين المؤقت والبيانات الوصفية المجزأة:
/cache/flux_tarot/
├── 384x640/
│ ├── <hash1>.pt
│ └── ...
├── metadata_shard_0000.json
├── metadata.json
└── _hf_dataset/
└── images/
2. إطلاق التدريب باستخدام FLUX YAML الحالي
يستخدم examples/diffusion/finetune/flux_t2i_flow.yaml مباشرة. يختار YAML بالفعل FLUX.1-dev، والضبط الكامل للمحول، ومحول مطابقة التدفق FLUX، وحجم دفعة فعال يبلغ 32، وFSDP2 بثمانية اتجاهات.
قم بتوفير المسارات والإعدادات الخاصة بالتارو كتجاوزات لسطر الأوامر:
uv run --locked --no-default-groups --extra diffusion \
torchrun --nproc-per-node=8 \
examples/diffusion/finetune/finetune.py \
-c examples/diffusion/finetune/flux_t2i_flow.yaml \
--model.transformer_engine_fp8 false \
--data.dataloader.cache_dir /cache/flux_tarot \
--data.dataloader.base_resolution '[384,640]' \
--lr_scheduler.lr_decay_style constant \
--lr_scheduler.lr_warmup_steps 20 \
--step_scheduler.max_steps 200 \
--step_scheduler.ckpt_every_steps 50 \
--checkpoint.checkpoint_dir /tmp/flux_tarot/checkpoints/full \
--checkpoint.save_consolidated true \
--seed 2026
يؤدي التشغيل إلى إنشاء نقاط تفتيش عند الخطوات 50، و100، و150، و200. ويتم تسمية نقطة التفتيش النهائية epoch_66_step_199; التسمية تعتمد على الصفر على الرغم من أنها تمثل خطوة المحسن رقم 200 المكتملة.
3. قم بالتوليد من نقطة التفتيش الدقيقة
استخدم جيل FLUX الحالي YAML ونقطة model.checkpoint عند نقطة تفتيش التدريب الكاملة:
uv run --locked --no-default-groups --extra diffusion \
python examples/diffusion/generate/generate.py \
-c examples/diffusion/generate/configs/generate_flux.yaml \
--model.checkpoint /tmp/flux_tarot/checkpoints/full/epoch_66_step_199 \
--inference.height 640 \
--inference.width 384 \
--inference.prompts '["a trtcrd of an astronaut tending a rose garden on Mars, \"the gardener\""]' \
--output.output_dir /tmp/flux_tarot/generations/full/step_200 \
--seed 2026
يشمل trtcrd لاستدعاء أسلوب التارو المستفادة. لإجراء مقارنة تحكم، أبقِ البذرة والمشهد ثابتين ولكن احذف المشغل:
uv run --locked --no-default-groups --extra diffusion \
python examples/diffusion/generate/generate.py \
-c examples/diffusion/generate/configs/generate_flux.yaml \
--model.checkpoint /tmp/flux_tarot/checkpoints/full/epoch_66_step_199 \
--inference.height 640 \
--inference.width 384 \
--inference.prompts '["an astronaut tending a rose garden on Mars, \"the gardener\""]' \
--output.output_dir /tmp/flux_tarot/generations/control \
--seed 2026
نتائج
في الخطوة 200، تحتفظ مطالبات رائد الفضاء المثارة بالمحتوى المطلوب مع الحصول على لوحة ألوان كريمية وحمراء وسوداء عتيقة، وخطوط حبر ثقيلة، وحقول ألوان مسطحة، ونغمات ورق قديمة، وتركيبة بطاقة مجازية. يبقى رائد الفضاء غير المثار مصورًا، مما يدل على أن التأثير المكتسب يرتبط بشكل كبير به trtcrd بدلاً من استبدال النموذج الأساسي عالميًا.
4. الأداء
تم جمع جميع القياسات على عقدة واحدة باستخدام وحدات معالجة الرسومات 8 × NVIDIA H100 بسعة 80 جيجابايت. النتائج تعني ± عينة الانحراف المعياري على ثلاث نوافذ ذات حالة ثابتة مكونة من 10 خطوات.
تحويل النص إلى صورة – 512 × 512 (انظر ما إذا كان من الممكن محاذاة الثواني)
| نموذج | تمرين | التوازي | غيغابايت / رطل | وقت الخطوة | الصور/الصور | الصور/الصور/وحدة معالجة الرسومات | الذروة المخصصة/وحدة معالجة الرسومات |
|---|---|---|---|---|---|---|---|
| FLUX.1-ديف | ممتلىء | FSDP2 | 32 / 4 | 0.902 ± 0.039 ثانية | 35.51 ± 1.55 | 4.44 ± 0.19 | 63.88 جيجا بايت |
| FLUX.1-ديف | لورا r64 | DDP | 48 / 6 | 0.894 ± 0.008 ثانية | 53.73 ± 0.48 | 6.72 ± 0.06 | 67.43 جيجا بايت |
| صورة كوين | ممتلىء | FSDP2 | 40 / 5 | 0.974 ± 0.075 ثانية | 41.21 ± 3.06 | 5.15 ± 0.38 | 53.55 جيجا بايت |
| صورة كوين | لورا r64 | DDP | 24 / 3 | 0.515 ± 0.006 ثانية | 46.63 ± 0.54 | 5.83 ± 0.07 | 66.33 جيجا بايت |
تحويل النص إلى فيديو – 512×512×49 إطارًا
كل عينة عبارة عن مقطع فيديو واحد مكون من 49 إطارًا.
| نموذج | تمرين | غيغابايت / رطل | فحص التنشيط | وقت الخطوة | مقاطع / ثانية | مقاطع / ثانية / وحدة معالجة الرسومات | الذروة المخصصة/وحدة معالجة الرسومات |
|---|---|---|---|---|---|---|---|
| وان 2.1 1.3 ب | ممتلىء | 8 / 1 | عن | 0.942 ± 0.038 ثانية | 8.50 ± 0.35 | 1.06 ± 0.04 | 6.09 جيجا بايت |
| وان 2.1 14 ب | ممتلىء | 8 / 1 | على | 3.798 ± 0.017 ثانية | 2.107 ± 0.006 | 0.263 ± 0.006 | 33.35 جيجا بايت |
| وان 2.1 14 ب | لورا r64 | 16 / 2 | على | 7.585 ± 0.014 ثانية | 2.110 ± 0.000 | 0.263 ± 0.000 | 24.07 جيجا بايت |
| وان 2.2 A14B، عالي الضوضاء | ممتلىء | 8 / 1 | على | 4.628 ± 0.031 ثانية | 1.730 ± 0.010 | 0.217 ± 0.006 | 23.57 جيجا بايت |
| هونيوانفيديو 1.5 | ممتلىء | 8 / 1 | على | 5.926 ± 0.046 ثانية | 1.350 ± 0.010 | 0.170 ± 0.000 | 15.90 جيجا بايت |
| هونيوانفيديو 1.5 | لورا r64 | 8 / 1 | على | 5.575 ± 0.006 ثانية | 1.433 ± 0.006 | 0.180 ± 0.000 | 10.58 جيجا بايت |
تفاصيل القياس
أمثلة أخرى لـ Finetuned/LoRA
تُظهر نتائج الضبط الدقيق وLoRA قوة NeMo Automodel لتخصص المجال. على سبيل المثال، أدى الضبط الدقيق لنموذج Wan 2.1 على مجموعة بيانات فيديو Ghibli إلى تكييف نمط الإخراج بنجاح، وهو ما يتضح من خلال التغيير الملحوظ في مظهر الزهرة مقارنة بخط الأساس.
خط الأساس:
تم ضبطه على مقاطع فيديو جيبلي:
لاحظنا أيضًا التأثير الواضح لاستخدام LoRA، حيث أدى تطبيق المحول على Wan 2.1 إلى اعتماد الفيديو لأسلوب Ghibli المميز، والذي يظهر بشكل خاص في تسليط الضوء على عيون الشخصيات.
لا لورا:
لورا:
تؤكد هذه الأمثلة، بما في ذلك تلك الخاصة بـ FLUX.2، أنه يمكن للمستخدمين تحقيق أقصى قدر من الجودة من خلال الضبط الدقيق الكامل والحد الأقصى من الكفاءة عبر PEFT على طراز LoRA، وتخصيص الإخراج لمجالات أسلوبية محددة.
جربه اليوم
تعرف على المزيد حول التكامل واعثر على المزيد من أمثلة الضبط الدقيق في وثائق NeMo Automodel
التالي: واجهات برمجة التطبيقات الخاصة بالوصفات البايثونية
يعد YAML مناسبًا تمامًا للتكوين القابل للتكرار، خاصة للفرق التي تريد الملفات التي يمكنهم تسجيلها ومراجعتها وإعادة استخدامها، ولكن العديد من الفرق تحتاج أيضًا إلى واجهة برمجية.
في إصدار NeMo Automodel القادم، نخطط لتسليط الضوء على وصفات الانتشار من خلال واجهة برمجة تطبيقات Pythonic المكتوبة بالكامل أيضًا. سيتمكن المستخدمون من إنشاء نفس النموذج، والبيانات، والمُحسِّن، وPEFT/LoRA، والتوازي، ونقاط التفتيش، وقطع التوليد مباشرة من Python.
يهدف مسار Pythonic إلى تسهيل استخدام الوصفات من أكواد التدريب الحالية والدفاتر وسير العمل التجريبي، وتقديم واجهة Pythonic من الدرجة الأولى إلى جانب مسار البدء السريع YAML.
موارد
