Diffusers documentation
UNet
UNet
تستهدف بعض طرق التدريب - مثل LoRA وCustom Diffusion - عادةً طبقات الانتباه في UNet، لكن يمكن لهذه الطرق التدريبية أن تستهدف أيضًا طبقات غير انتباهية أخرى. وبدلًا من تدريب جميع معاملات النموذج، يتم تدريب مجموعة فرعية فقط من المعاملات، وهو ما يكون أسرع وأكثر كفاءة. تكون هذه الفئة مفيدة إذا كنت تحمّل الأوزان في UNet فقط. إذا كنت بحاجة إلى تحميل الأوزان في مشفّر النص أو في مشفّر النص وUNet معًا، فحاول استخدام دالة load_lora_weights() بدلاً من ذلك.
توفر فئة UNet2DConditionLoadersMixin دوال لتحميل وحفظ الأوزان، ودمج وإلغاء دمج LoRA، وتعطيل وتفعيل LoRA، وإعداد وحذف المحوِّلات.
للتعرف على المزيد حول كيفية تحميل أوزان LoRA، راجع دليل LoRA.
UNet2DConditionLoadersMixin
حمّل طبقات LoRA إلى UNet2DCondtionModel.
load_attn_procs
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]**kwargs )
المعاملات
- pretrained_model_name_or_path_or_dict (
strأوos.PathLikeأوdict) — يمكن أن يكون أحد ما يلي:- سلسلة نصية، معرّف النموذج (على سبيل المثال
google/ddpm-celebahq-256) لنموذج مُدرَّب مسبقًا مستضاف على المركز (Hub). - مسار إلى مجلد (على سبيل المثال
./my_model_directory) يحتوي على أوزان النموذج المحفوظة باستخدام ModelMixin.save_pretrained(). - حالة torch.
- سلسلة نصية، معرّف النموذج (على سبيل المثال
- cache_dir (
str | os.PathLike، اختياري) — المسار إلى مجلد حيث يتم تخزين إعدادات النموذج المُدرَّب مسبقًا المُحمَّل مؤقتًا إذا لم يُستخدم المجلد المؤقت القياسي. - force_download (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إجبار إعادة تنزيل أوزان النموذج وملفات الإعداد، مع تجاوز النسخ المخزنة مؤقتًا إذا كانت موجودة. - proxies (
dict[str, str]، اختياري) — قاموس لخوادم الوكيل (proxy) للاستخدام حسب البروتوكول أو نقطة النهاية، على سبيل المثال{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. تُستخدم هذه الوكلاء في كل طلب. - local_files_only (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم تحميل أوزان النموذج وملفات الإعداد المحلية فقط أم لا. إذا تم ضبطه علىTrue، فلن يتم تنزيل النموذج من Hub. - token (
strأو bool، اختياري) — الرمز الذي يُستخدم كتفويض حامل HTTP للملفات البعيدة. إذا كانTrue، يُستخدم الرمز المولّد منdiffusers-cli login(المخزّن في~/.huggingface). - revision (
str، اختياري، القيمة الافتراضية"main") — الإصدار المحدد من النموذج الذي سيتم استخدامه. يمكن أن يكون اسم فرع، أو اسم وسم، أو معرف commit، أو أي معرّف مسموح به بواسطة Git. - subfolder (
str، اختياري، الافتراضي"") — موقع المجلد الفرعي لملف النموذج داخل مستودع نموذج أكبر على Hub أو محليًا. - weight_name (
str، اختياري، القيمة الافتراضية هي None) — اسم ملف state dict المُسلسَل.
حمّل طبقات معالج الانتباه (attention processor) المُسبقة التدريب من Custom Diffusion إلى UNet2DConditionModel. يجب أن تكون طبقات معالج الانتباه معرّفة في attention_processor.py وأن تكون فئة torch.nn.Module. لتحميل طبقات LoRA، استخدم load_lora_adapter() بدلاً من ذلك.
save_attn_procs
< source >( save_directory: str | os.PathLikeis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = True**kwargs )
المعاملات
- save_directory (
strأوos.PathLike) — المجلد الذي يُحفظ فيه مُعالج الانتباه (سيتم إنشاؤه إذا لم يكن موجودًا). - is_main_process (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كانت العملية التي تستدعي هذا هي العملية الرئيسية أم لا. مفيد أثناء التدريب الموزع عندما تحتاج إلى استدعاء هذه الدالة على جميع العمليات. في هذه الحالة، اضبطis_main_process=Trueعلى العملية الرئيسية فقط لتجنب حالات السباق. - save_function (
Callable) — الدالة المستخدمة لحفظ قاموس الحالة. مفيدة أثناء التدريب الموزع عندما تحتاج إلى استبدالtorch.saveبطريقة أخرى. يمكن ضبطها باستخدام متغير البيئةDIFFUSERS_SAVE_MODE. - safe_serialization (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم حفظ النموذج باستخدامsafetensorsأو باستخدامpickle.
احفظ طبقات معالج الانتباه الخاص بتخصيص الانتشار (Custom Diffusion) في مجلد حتى يمكن إعادة تحميلها باستخدام طريقة load_attn_procs(). لحفظ طبقات LoRA، استخدم save_lora_adapter() بدلاً من ذلك.
مثال:
import torch
from diffusers import DiffusionPipeline
pipeline = DiffusionPipeline.from_pretrained(
"CompVis/stable-diffusion-v1-4",
torch_dtype=torch.float16,
).to("cuda")
pipeline.unet.load_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")
pipeline.unet.save_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")