Diffusers documentation
وظائف Hugging Face
وظائف Hugging Face
يعمل Hugging Face Jobs على وحدات معالجة الرسوميات الخاصة بـ Hugging Face، لذا لا حاجة إلى إعداد جهاز، كما أن التشغيل يستمر حتى بعد إغلاق الطرفية. تعمل سكربتات التدريب الخاصة بـ Diffusers على Jobs مباشرةً من عنوان GitHub الخاص بها دون الحاجة إلى استنساخ المستودع أو تثبيت أي شيء محليًا.
قبل أن تبدأ، اتبع دليل البدء السريع للمهام لتثبيت واجهة hf سطر الأوامر، وتسجيل الدخول، وإضافة الرصيد إلى حسابك.
تدريب LoRA على Jobs
تدرّب الأوامر أدناه نموذج LoRA على FLUX.2-klein-4B باستخدام صور الكلاب الخمس الموجودة في diffusers/dog-example. يعمل الأمر على بطاقة A10G واحدة ويدفع نموذج LoRA إلى نطاقك على Hub.
# 20 steps is a test run. For a real run, raise --max_train_steps
# (the FLUX.2 README uses 500) and --timeout to match.
hf jobs uv run --flavor a10g-small --timeout 30m -s HF_TOKEN -- \
https://raw.githubusercontent.com/huggingface/diffusers/main/examples/dreambooth/train_dreambooth_lora_flux2_klein.py \
--pretrained_model_name_or_path black-forest-labs/FLUX.2-klein-4B \
--dataset_name diffusers/dog-example \
--instance_prompt "a photo of sks dog" \
--resolution 512 --mixed_precision bf16 --guidance_scale 1 \
--gradient_checkpointing --cache_latents \
--optimizer adamW --use_8bit_adam --learning_rate 1e-4 \
--max_train_steps 20 --seed 0 \
--output_dir /tmp/out \
--push_to_hub --hub_model_id your-username/klein-dog-loraيقوم uv بتثبيت التبعيات المدرجة في ترويسة # /// script الخاصة بالسكريبت، بما في ذلك Diffusers من main. لا تحصل المهام على رمز Hugging Face افتراضيًا، لذا يقوم -s HF_TOKEN بإحالة رمزك الخاص للسماح للسكريبت بدفع نموذج LoRA. يتم التخلص من قرص المهمة عند انتهائها، وأي شيء لا تدفعه سيُفقد. تشرح أدلة DreamBooth وLoRA حُجج التدريب.
إدارة مهمة
تُطبع سجلات التدريب في طرفية النظام أثناء تشغيل المهمة. إغلاق الطرفية أو الضغط على Ctrl+C لا يوقف التدريب، لأن المهمة تعمل على أجهزة Hugging Face. لإطلاق عملية تدريب طويلة دون إبقاء طرفية النظام مشغولة، أضف -d قبل --. سيطبع الأمر معرّف المهمة ثم يعيد.
استخدم معرّف المهمة (Job ID) لإعادة الاتصال بالسجلات، أو التحقق من ذاكرة وحدة معالجة الرسوميات (GPU) ومستوى استخدامها أثناء تدريب النموذج، أو إيقاف تشغيل.
hf jobs logs -f <job_id>
hf jobs stats <job_id>
hf jobs cancel <job_id>إذا فشلت العملية، يعرض hf jobs inspect <job_id> رسالة الخطأ. راجع إدارة المهام للاطلاع على الأوامر الأخرى.
الدراسة على صورك الخاصة
لتدريب النموذج على صورك، اربط مجلد الصور بالـ Job باستخدام -v ومرر مسار الربط إلى --instance_data_dir بدلاً من --dataset_name. يقوم Jobs برفع المجلد إلى دلو خاص قبل بدء الـ Job ثم يربطه للقراءة فقط. عند رفع نفس المجلد مرة أخرى، يتم إرسال الملفات الجديدة أو المعدلة فقط.
hf jobs uv run --flavor a10g-small --timeout 30m -s HF_TOKEN \
-v ./my-dog:/data -- \
https://raw.githubusercontent.com/huggingface/diffusers/main/examples/dreambooth/train_dreambooth_lora_flux2_klein.py \
--pretrained_model_name_or_path black-forest-labs/FLUX.2-klein-4B \
--instance_data_dir /data \
--instance_prompt "a photo of sks dog" \
--resolution 512 --mixed_precision bf16 --guidance_scale 1 \
--gradient_checkpointing --cache_latents \
--optimizer adamW --use_8bit_adam --learning_rate 1e-4 \
--max_train_steps 20 --seed 0 \
--output_dir /tmp/out \
--push_to_hub --hub_model_id your-username/klein-dog-loraيفتح النص البرمجي كل ملف في --instance_data_dir كصورة، لذا احتفظ بالصور فقط في المجلد. يؤدي وجود ملف مخفي مثل .DS_Store إلى فشل التشغيل. راجع المجلدات المحلية لمزيد من المعلومات حول تركيب المجلد.
باستخدام --with_prior_preservation، يقوم السكربت بإنشاء صور الفئات في --class_data_dir قبل بدء التدريب. وجّهه إلى مسار يمكن للوظيفة الكتابة فيه. لإعادة استخدام صور الفئات في التشغيلات اللاحقة، ضعها في وحدة تخزين قابلة للقراءة والكتابة مثل تلك الموجودة في حفظ نقاط التفتيش للتشغيلات الطويلة.
التدريب في FP8
تستقبل سكربتات DreamBooth LoRA الخاصة بـ FLUX.2 و Z-Image و Ideogram 4 و Krea 2 معامل --do_fp8_training للتدريب باستخدام FP8 عبر torchao، مما يُقلل من استهلاك الذاكرة. بما أن ترويسة أي سكربت لا تتضمن torchao، أضف --with torchao قبل --. كما يتطلب FP8 معالجًا رسوميًا (GPU) بقابلية حسابية 8.9 أو أعلى، مثل L4 (l4x1) أو L40S (l40sx1). ولا يدعم A10G (8.6) و A100 (8.0) هذه الميزة.
تشغيل سكربت بدون ترويسة تبعيات
تُعلن سكربتات مجلدي examples/dreambooth و examples/advanced_diffusion_training فقط عن تبعياتها في كتلة # /// script في أعلى الملف. بعض السكربتات في تلك المجلدات، مثل train_dreambooth_lora_sdxl.py، لا تحتوي على هذه الكتلة.
بالنسبة إلى سكربت لا يحتوي على ترويسة، مرّر كل اعتماد باستخدام --with. ثبّت Diffusers من المصدر، لأن سكربتات التدريب تتطلب الإصدار التطويري. أما الاعتمادات الأخرى فتأتي من ملف requirements.txt الخاص بالسكربت واستيراداته.
hf jobs uv run --flavor a10g-small --timeout 30m -s HF_TOKEN \
--with "diffusers @ git+https://github.com/huggingface/diffusers.git" \
--with torch --with torchvision --with accelerate --with transformers \
--with peft --with datasets --with bitsandbytes \
--with ftfy --with tensorboard --with Jinja2 -- \
https://raw.githubusercontent.com/huggingface/diffusers/main/examples/dreambooth/train_dreambooth_lora_sdxl.py \
--pretrained_model_name_or_path stabilityai/stable-diffusion-xl-base-1.0 \
--pretrained_vae_model_name_or_path madebyollin/sdxl-vae-fp16-fix \
--dataset_name diffusers/dog-example \
--instance_prompt "a photo of sks dog" \
--resolution 1024 --mixed_precision fp16 \
--gradient_checkpointing --use_8bit_adam --learning_rate 1e-4 \
--max_train_steps 20 --seed 0 \
--output_dir /tmp/out \
--push_to_hub --hub_model_id your-username/sdxl-dog-loraحفظ نقاط التفتيش للتشغيلات الطويلة
قد يستغرق تشغيل يستمر لساعات حتى ينقطع أو يتعطل قبل اكتماله. للحفاظ على تقدمه، اربط Storage Bucket بالوظيفة باستخدام -v وجعل --output_dir يشير إليه. أنشئ الدلو أولاً باستخدام hf buckets create.
يحفظ السكربت مجلد checkpoint-<step> في --output_dir كل --checkpointing_steps خطوة (500 خطوة افتراضيًا)، لذا تُحفظ نقاط التفتيش في الدلو أثناء تقدم التدريب. يحدد --checkpoints_total_limit الحد الأقصى لعدد النقاط المحفوظة. يختار --resume_from_checkpoint latest الاستئناف من أحدث نقطة تفتيش في --output_dir، ويبدأ من الصفر إذا لم توجد نقطة، مما يجعل الأمر نفسه يعمل للتشغيل الأول ولكل إعادة تشغيل.
hf jobs uv run --flavor a10g-small --timeout 8h -s HF_TOKEN \
-v hf://buckets/your-username/checkpoints:/ckpt -- \
https://raw.githubusercontent.com/huggingface/diffusers/main/examples/dreambooth/train_dreambooth_lora_flux2_klein.py \
--pretrained_model_name_or_path black-forest-labs/FLUX.2-klein-4B \
--dataset_name diffusers/dog-example \
--instance_prompt "a photo of sks dog" \
--resolution 1024 --mixed_precision bf16 --guidance_scale 1 \
--gradient_checkpointing --cache_latents \
--optimizer adamW --use_8bit_adam --learning_rate 1e-4 \
--max_train_steps 5000 --seed 0 \
--checkpointing_steps 500 --checkpoints_total_limit 3 \
--resume_from_checkpoint latest \
--output_dir /ckpt/klein-dogعند انتهاء التدريب، يُحفظ LoRA في الدلو على شكل pytorch_lora_weights.safetensors. راجع Volumes لمعرفة خيارات التركيب.
لا تضف
--push_to_hubعندما يحتوي--output_dirعلى نقاط التفتيش. فعملية الرفع تتخطى مجلداتstep_*وepoch_*فقط، لذا تُرفع مجلداتcheckpoint-<step>إلى مستودع النموذج إلى جانب LoRA. بدلاً من ذلك، ارفعpytorch_lora_weights.safetensorsإلى مستودع النموذج بنفسك.
الخطوات التالية
- اقرأ تدريب النماذج على المهام في توثيقات Hub للاطلاع على الفحوصات التي يجب تنفيذها قبل مهمة طويلة وكيفية قراءة مهمة فاشلة.
- حمّل نموذج LoRA المدرّب لديك للاستدلال باستخدام دليل LoRA.
- تصفّح ملفات DreamBooth README للحصول على الأوامر وخيارات الذاكرة الخاصة بكل نموذج.