Diffusers documentation
المكوّنات والإعدادات
المكوّنات والإعدادات
ComponentSpec
فئة diffusers.ComponentSpec
< source >( name: str | None = Nonetype_hint: typing.Optional[typing.Type] = Nonedescription: str | None = Noneconfig: diffusers.configuration_utils.FrozenDict | None = Nonepretrained_model_name_or_path: str | list[str] | None = Nonesubfolder: str | None = ''variant: str | None = Nonerevision: str | None = Nonedefault_creation_method: typing.Literal['from_config', 'from_pretrained'] = 'from_pretrained'repo: str | list[str] | None = None )
المعاملات
- name — اسم المكوّن
- type_hint — نوع المكوّن (مثل UNet2DConditionModel)
- description — وصف اختياري للمكوّن
- config — قاموس إعدادات اختياري لإنشاء init
- pretrained_model_name_or_path — مسار اختياري لـ pretrained_model_name_or_path لإنشاء from_pretrained
- subfolder — مجلد فرعي اختياري داخل pretrained_model_name_or_path
- variant — متغير اختياري في pretrained_model_name_or_path
- revision — نسخة اختيارية في pretrained_model_name_or_path
- default_creation_method — طريقة الإنشاء المفضلة - “from_config” أو “from_pretrained”
مواصفة لمكوّن خط أنابيب.
يمكن إنشاء مكوّن بطريقتين:
- من الصفر باستخدام init مع قاموس إعدادات
- باستخدام
from_pretrained
إنشاء
< source >( config: diffusers.configuration_utils.FrozenDict | dict[str, typing.Any] | None = None**kwargs )
إنشاء مكوّن باستخدام from_config مع config.
decode_load_id
< source >( load_id: str )
فكّ ترميز سلسلة load_id مرة أخرى إلى قاموسٍ يحتوي على حقول التحميل وقيمها.
from_component
< source >( name: strcomponent: Any )
إنشاء ComponentSpec من Component.
يدعم حالياً:
- المكوّنات التي تم إنشاؤها باستخدام طريقة
ComponentSpec.load() - المكوّنات التي هي فئات فرعية من ConfigMixin لكنها ليست nn.Modules (مثل المجدولين والموجّهين)
قم بتحميل المكوّن باستخدام from_pretrained.
إرجاع أسماء جميع الحقول المتعلقة بالتحميل (أي تلك التي يكون فيها field.metadata[“loading”] True).
ConfigSpec
مواصفة لبارامتر تكوين خط أنابيب.
ComponentsManager
سجل مركزي ونظام لإدارة مكوّنات النماذج عبر خطوط أنابيب متعددة.
يوفر ComponentsManager طريقة موحدة لتسجيل مكونات النموذج وتتبعها وإعادة استخدامها (مثل UNet وVAE ومشفرات النص، وغيرها) عبر خطوط الأنابيب المعيارية المختلفة. ويتضمن ميزات للكشف عن التكرار، وإدارة الذاكرة، وتنظيم المكونات.
> هذه ميزة تجريبية ومن المرجح أن تتغير في المستقبل.
مثال:
from diffusers import ComponentsManager
# Create a components manager
cm = ComponentsManager()
# Add components
cm.add("unet", unet_model, collection="sdxl")
cm.add("vae", vae_model, collection="sdxl")
# Enable auto offloading
cm.enable_auto_cpu_offload()
# Retrieve components
unet = cm.get_one(name="unet", collection="sdxl")إضافة
< source >( name: strcomponent: Anycollection: str | None = None ) → str
أضف مكوّنًا إلى ComponentsManager.
تعطيل النقل التلقائي إلى وحدة المعالجة المركزية لجميع المكونات.
enable_auto_cpu_offload
< source >( device: str | int | torch.device = Nonememory_reserve_margin = '3GB'offload_strategy = None )
المعاملات
- device (str | int | torch.device) — جهاز التنفيذ الذي تُنقل إليه النماذج لإجراء عمليات المرور الأمامي
- memory_reserve_margin (str) — هوامش الاحتياطي من الذاكرة المستخدمة، والافتراضي هو 3GB. هذه هي كمية الذاكرة التي يجب إبقاؤها فارغة على الجهاز لتجنب نفاد الذاكرة أثناء تنفيذ النموذج (مثل التفعيلات الوسيطة، والتدرجات، وما إلى ذلك).
- offload_strategy — أي دالة قابلة للاستدعاء تحمل التوقيع
(hooks, model_id, model, execution_device) -> hooks، وتعيد النماذج المقيمة التي يجب نقلها قبل تحميل النموذج الوارد. القيمة الافتراضية هيAutoOffloadStrategy، والتي تُحرّر أصغر مجموعة كافية.
تفعيل التفريغ التلقائي إلى وحدة المعالجة المركزية لجميع المكونات.
يعمل الخوارزمية على النحو التالي:
- تبدأ جميع النماذج على وحدة المعالجة المركزية (CPU) افتراضيًا
- عند استدعاء تمرير الأمامي (forward pass) للنموذج، يتم نقله إلى جهاز التنفيذ
- إذا كانت الذاكرة غير كافية، يتم نقل النماذج الأخرى الموجودة على الجهاز مرة أخرى إلى وحدة المعالجة المركزية (CPU)
- تسعى المنظومة إلى تفريغ أصغر تركيبة من النماذج التي تتيح تحرير مساحة ذاكرة كافية
- تبقى النماذج على جهاز التنفيذ حتى تحتاج نموذج آخر إلى ذاكرة فيُجبرها على مغادرته
يشارك نموذج مُحمَّل ضمن مجموعة في هذه العملية لكنه يضع نفسه: إذ يمكنه ما زال أن يُفسح مكانًا عن طريق نقل نماذج أخرى جانبًا، ولا يُنقل أبدًا لفسح مكان لها. يعمل أي ترتيب — إما التحميل ضمن المجموعة قبل تفعيل هذه الميزة أو بعدها. يحدد AutoOffloadStrategy قراراته بناءً على بصمات ذاكرة النموذج، والتي لا تصف نموذجًا يحتفظ بمجموعة واحدة في كل مرة، لذا مرّر offload_strategy يتخذ قراراته بناءً على سير العمل.
get_components_by_ids
< source >( ids: list[str]return_dict_with_names: bool | None = True ) → dict[str, Any]
المعاملات
- ids (list[str]) — قائمة معرّفات المكونات
- return_dict_with_names (bool | None) — ما إذا كان يجب إرجاع قاموس بأسماء المكونات كمفاتيح:
يعيد
dict[str, Any]
قاموس المكونات.
- إذا كان return_dict_with_names=True، فإن المفاتيح هي أسماء المكونات.
- إذا كان return_dict_with_names=False، فإن المفاتيح هي معرّفات المكوّنات.
يرفع
ValueError
ValueError— إذا تم العثور على أسماء مكوّنات مكررة في نتائج البحث عندما تكون return_dict_with_names=True
احصل على المكونات من خلال قائمة معرّفات.
get_components_by_names
< source >( names: list[str]collection: str | None = None ) → dict[str, Any]
احصل على المكونات من خلال قائمة أسماء، مع إمكانية التصفية اختيارياً حسب المجموعة.
get_ids
< source >( names: str | list[str] = Nonecollection: str | None = None ) → list[str]
احصل على معرّفات المكوّنات من خلال قائمة أسماء، مع إمكانية التصفية اختيارياً حسب المجموعة.
get_model_info
< source >( component_id: strfields: str | list[str] | None = None )
احصل على معلومات شاملة عن مكوّن.
get_one
< source >( component_id: str | None = Nonename: str | None = Nonecollection: str | None = Noneload_id: str | None = None )
احصل على مكوّن واحد إما عن
- البحث بالاسم (مطابقة الأنماط)، المجموعة، أو load_id.
- عند تمرير component_id يُطلق خطأً إذا تطابقت عدة مكوّنات أو لم يُعثر على أيٍّ منها.
إزالة
< source >( component_id: str = None )
إزالة مكوّن من ComponentsManager.
إزالة مكوّن من مجموعة.
search_components
< source >( names: str | None = Nonecollection: str | None = Noneload_id: str | None = Nonereturn_dict_with_names: bool = True )
المعاملات
- names — اسم المكوّن أو الأسماء أو الأنماط
الأنماط:
- “unet” : يطابق أي مكوّن باسم أساسي “unet” (مثل unet_123abc)
- “!unet”: كل شيء باستثناء المكونات التي يكون اسمها الأساسي “unet”
- “unet*” : أي شيء يبدأ اسم قاعدته بـ “unet”
- “!unet*” : أي شيء لا يبدأ اسمه الأساسي بـ “unet”
- ”unet” : أي شيء يحتوي اسمه الأساسي على “unet”
- “!unet” : أي شيء لا يحتوي اسمه الأساسي على “unet”
- “refiner|vae|unet” : أي شيء يطابق اسمه الأساسي تمامًا مع “refiner” أو “vae” أو “unet”
- “!refiner|vae|unet” : أي شيء لا يطابق اسمه الأساسي تمامًا “refiner” أو “vae” أو “unet”
- “unet|vae”: أي شيء يبدأ اسمه الأساسي بـ “unet” أو يبدأ بـ “vae”
- collection — مجموعة اختيارية للترشيح حسبها
- load_id — load_id اختياري للتصفية
- return_dict_with_names — إذا كانت القيمة True، تُرجع قاموسًا تُستخدم فيه أسماء المكونات كمفاتيح، وتُطلق خطأً إذا وُجدت مكونات متعددة تحمل نفس الاسم. وإذا كانت القيمة False، تُرجع قاموسًا تُستخدم فيه معرّفات المكونات كمفاتيح
ابحث عن المكونات بالاسم باستخدام مطابقة الأنماط البسيطة. يمكنك اختيارياً التصفية حسب المجموعة أو load_id.
set_offload_strategy
< source >( offload_strategy )
استبدل استراتيجية الإزاحة على جميع النماذج المُدارة. صالح فقط أثناء تمكين الإزاحة التلقائية إلى وحدة المعالجة المركزية.