Diffusers documentation

UNet

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

UNet

تستهدف بعض طرق التدريب - مثل LoRA وCustom Diffusion - عادةً طبقات الانتباه في UNet، لكن يمكن لهذه الطرق التدريبية أن تستهدف أيضًا طبقات غير انتباهية أخرى. وبدلًا من تدريب جميع معاملات النموذج، يتم تدريب مجموعة فرعية فقط من المعاملات، وهو ما يكون أسرع وأكثر كفاءة. تكون هذه الفئة مفيدة إذا كنت تحمّل الأوزان في UNet فقط. إذا كنت بحاجة إلى تحميل الأوزان في مشفّر النص أو في مشفّر النص وUNet معًا، فحاول استخدام دالة load_lora_weights() بدلاً من ذلك.

توفر فئة UNet2DConditionLoadersMixin دوال لتحميل وحفظ الأوزان، ودمج وإلغاء دمج LoRA، وتعطيل وتفعيل LoRA، وإعداد وحذف المحوِّلات.

للتعرف على المزيد حول كيفية تحميل أوزان LoRA، راجع دليل LoRA.

UNet2DConditionLoadersMixin

فئة diffusers.loaders.UNet2DConditionLoadersMixin

< >

( )

حمّل طبقات LoRA إلى UNet2DCondtionModel.

load_attn_procs

< >

( 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() بدلاً من ذلك.

مثال:

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")

save_attn_procs

< >

( 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")
Update on GitHub