Diffusers documentation
خط أنابيب
خط أنابيب
ModularPipeline
فئة diffusers.ModularPipeline
< source >( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )
الفئة الأساسية لجميع خطوط الأنابيب المعيارية.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike | Nonetrust_remote_code: bool | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = None**kwargs )
المعاملات
- pretrained_model_name_or_path (
strأوos.PathLike، اختياري) — المسار إلى إعداد خط أنابيب مُدرَّب مسبقًا. سيحاول أولًا تحميل الإعداد منmodular_model_index.json، ثم يعود إلىmodel_index.jsonلضمان التوافق مع المستودعات القياسية غير المعيارية. إذا لم يحتوي pretrained_model_name_or_path على أي إعداد لخط أنابيب، فسيتم تعيينه إلى None أثناء التهيئة. - trust_remote_code (
bool, اختياري) — ما إذا كان يجب الثقة بالكود البعيد عند تحميل خط الأنابيب، ويجب تعيينه إلى True إذا كنت ترغب في إنشاء كتل خط أنابيب مبنية على الكود المخصص فيpretrained_model_name_or_path - components_manager (
ComponentsManager, اختياري) — مثال على ComponentsManager لإدارة عدة مكوّنات عبر خطوط أنابيب مختلفة وتطبيق استراتيجيات التفريغ. - collection (
str, اختياري) — اسم المجموعة لتنظيم المكونات في ComponentsManager. - workflow (
str, اختياري) — اسم سير عمل مُعلن بواسطة كتل خط المعالجة. إذا تم تقديمه، تُقصّ الكتل إلى كتل التنفيذ الخاصة بذلك السير عمل، بحيث يتوقع خط المعالجة فقط — ولا يحمّلload_components()إلا — المكونات التي يستخدمها ذلك السير عمل.
تحميل ModularPipeline من مستودع في huggingface hub.
load_components
< source >( names: list[str] | str | None = Noneworkflow: str | None = None**kwargs )
المعاملات
- names — list of component names to load. If None, will load all components with default_creation_method == “from_pretrained”. If provided as a list or string, will load only the specified components.
- workflow — اسم سير عمل مُعلن بواسطة كتل خط الأنابيب. إذا تم تقديمه، يتم تحميل المكونات التي تستخدمها كتل تنفيذ سير العمل فقط. لا يمكن دمجه مع
names. - **kwargs — معاملات إضافية تُمرَّر إلى
from_pretrained().يمكن أن تكون:- قيمة واحدة تُطبَّق على جميع المكونات التي سيتم تحميلها، مثل dtype=torch.bfloat16
- قوام (dict)، على سبيل المثال dtype={“unet”: torch.bfloat16, “default”: torch.float32}
- if potentially override ComponentSpec if passed a different loading field in kwargs, e.g.
pretrained_model_name_or_path,variant,revision, etc. - if potentially override ComponentSpec if passed a different loading field in kwargs, e.g.
pretrained_model_name_or_path,variant,revision, etc.
تحميل المكونات المحددة من المواصفات.
register_components
< source >( **kwargs )
سجّل المكونات مع مواصفاتها المقابلة.
تتولى هذه الطريقة المسؤولية عن:
- يُعيّن كائنات المكوّنات كخصائص على المُحمِّل (مثل self.unet = unet)
- يحدّث قاموس الإعدادات، الذي سيُحفظ باسم
modular_model_index.jsonأثناءsave_pretrained(للمكوّنات من from_pretrained فقط) - يضيف المكونات إلى مدير المكونات إذا كان مرفقًا (للمكونات من from_pretrained فقط)
يتم استدعاء هذه الطريقة عند:
- تُهيَّأ المكوّنات أولاً في init:
- مكوّنات from_pretrained غير محمّلة أثناء init لذا يتم تسجيلها على أنها None؛
- تُنشأ مكوّنات non from_pretrained أثناء init وتُسجَّل كالكائن نفسه
- يتم تحديث المكونات باستخدام طريقة
update_components()؛ على سبيل المثال loader.update_components(unet=unet) أو loader.update_components(guider=guider_spec) - (from_pretrained) يتم تحميل المكونات باستخدام طريقة
load_components(): على سبيل المثال، loader.load_components(names=[“unet”]) أو loader.load_components() لتحميل جميع المكونات الافتراضية
ملاحظات:
- When registering None for a component, it sets attribute to None but still syncs specs with the config
dict, which will be saved as
modular_model_index.jsonduringsave_pretrained - component_specs are updated to match the new component outside of this method, e.g. in
update_components()method
save_pretrained
< source >( save_directory: str | os.PathLikesafe_serialization: bool = Truevariant: str | None = Nonemax_shard_size: int | str | None = Nonepush_to_hub: bool = False**kwargs )
المعاملات
- save_directory (
strأوos.PathLike) — المجلد الذي سيتم حفظ خط الأنابيب فيه. سيتم إنشاؤه إذا لم يكن موجودًا. - safe_serialization (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم حفظ النموذج باستخدامsafetensorsأو بالطريقة التقليدية الخاصة بـ PyTorch باستخدامpickle. - variant (
str، اختياري) — إذا تم تحديده، تُحفظ الأوزان بالتنسيقpytorch_model.<variant>.bin. - max_shard_size (
intأوstr، القيمة الافتراضيةNone) — الحد الأقصى لحجم نقطة التفتيش قبل تقسيمها إلى أجزاء. ستكون نقاط التفتيش المقسمة كل منها بحجم أقل من هذا الحجم. إذا عُبر عنها كنص، فيجب أن تتكون من أرقام تليها وحدة (مثل"5GB"). إذا عُبر عنها كعدد صحيح، تكون الوحدة هي البايت. - push_to_hub (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم دفع خط المعالجة إلى مركز نماذج Hugging Face بعد حفظه. - **kwargs — معلمات إضافية:
overwrite_modular_index(bool، اختياري، القيمة الافتراضيةTrue): ما إذا كان يجب تحديثmodular_model_index.jsonبحيث تشير مواصفة التحميل لكل مكوّن محفوظ إلى الوجهة:repo_idعند الدفع إلى Hub، وإلاsave_directory. المكوّنات التي لم يتم تحميلها لا تُحفظ وتحتفظ دائمًا بمواصفات التحميل المسجلة لها. مرّرFalseللحفاظ أيضًا على المواصفات المسجلة للمكوّنات التي يتم حفظها (مثل فهرس يشير عمدًا إلى مستودعات أخرى)؛ أما المكوّنات التي لا تحمل معرّف تحميل (مثل النماذج المخصصة المضافة عبرupdate_components) فتُعاد كتابتها على أي حال لأنها لا تملك مصدرًا مسجلًا.repo_id(str، اختياري): معرّف المستودع الذي سيتم دفع خط الأنابيب إليه. الافتراضي هو المكوّن الأخير منsave_directory.commit_message(str، اختياري): رسالة الالتزام لعملية الدفع إلى المستودع.private(bool، اختياري): ما إذا كان يجب أن يكون المستودع خاصًا.create_pr(bool، اختياري، القيمة الافتراضيةFalse): ما إذا كان يجب إنشاء طلب سحب بدلاً من الدفع مباشرة.token(str، اختياري): رمز Hugging Face المستخدم للمصادقة.
احفظ خط الأنابيب وجميع مكوّناته في مجلد، بحيث يمكن إعادة تحميله باستخدام طريقة الفئة from_pretrained().
إلى
< source >( *args**kwargs ) → DiffusionPipeline
المعاملات
- dtype (
torch.dtype، اختياري) — يعيد خط أنابيب معdtypeالمحدد - device (
torch.Device، اختياري) — يعيد خط أنابيب معdeviceالمحدد - silence_dtype_warnings (
str، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب تجاهل التحذيرات إذا لم يكنdtypeالمستهدف متوافقًا معdeviceالمستهدف.
يعيد
تم تحويل خط الأنابيب إلى dtype و/أو dtype المحدد.
يُنفّذ تحويل نوع البيانات (dtype) و/أو الجهاز (device) الخاص بـ Pipeline. يتم استنتاج torch.dtype وtorch.device من معاملات self.to(*args, **kwargs).
> إذا كان خط الأنابيب يحتوي بالفعل على torch.dtype وtorch.device الصحيحين، فإنه يُعاد كما هو. وإلا، > فإن خط الأنابيب المُعاد هو نسخة من self مع torch.dtype وtorch.device المطلوبين.
إليك طرق استدعاء to:
to(dtype, silence_dtype_warnings=False) → DiffusionPipelineلإرجاع خط أنابيب بالـdtypeالمحددto(device, silence_dtype_warnings=False) → DiffusionPipelineلإرجاع خط أنابيب معdeviceالمحددto(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipelineلإرجاع خط أنابيب معdeviceوdtypeالمحددين
unload_components
< source >( names: list[str] | str )
تفريغ المكونات المحددة، مما يحرر ذاكرتها.
يُعاد تعيين خاصية المكوّن إلى None، وإذا كان مكوّن ComponentsManager مرفقًا، يُزال المكوّن منه. تبقى مواصفات المكوّن دون تغيير، لذا يمكن تحميل المكوّن مرة أخرى لاحقًا باستخدام load_components().
update_components
< source >( **kwargs )
المعاملات
- **kwargs — كائنات المكونات أو قيم الإعدادات التي يجب تحديثها:
- كائنات المكونات: تُوسم النماذج المحمّلة عبر
AutoModel.from_pretrained()أوComponentSpec.load()تلقائيًا بمعلومات التحميل. يمكن تمرير كائنات ConfigMixin التي لا تحتوي على أوزان (مثل المجدولين والموجهين) مباشرة. - قيم الإعداد: قيم بسيطة لتحديث إعدادات التهيئة
(مثل
requires_safety_checker=False)
- كائنات المكونات: تُوسم النماذج المحمّلة عبر
حدّث المكوّنات وقيم الإعدادات والمواصفات بعد إنشاء خط الأنابيب.
تتيح لك هذه الطريقة:
- استبدال المكونات الموجودة بأخرى جديدة (مثل تحديث
self.unetأوself.text_encoder) - تحديث قيم الإعدادات (مثل تغيير علم
self.requires_safety_checker)
بالإضافة إلى تحديث المكونات وقيم الإعدادات كخصائص للخط، يقوم هذا الإجراء أيضًا بتحديث:
- المواصفات المقابلة في
_component_specsو_config_specs - قائمة
configالتي سيتم حفظها باسمmodular_model_index.jsonأثناءsave_pretrained
أمثلة:
# Update pre-trained model
pipeline.update_components(unet=new_unet_model, text_encoder=new_text_encoder)
# Update configuration values
pipeline.update_components(requires_safety_checker=False)ملاحظات:
- ستحتفظ المكوّنات المحمّلة عبر
AutoModel.from_pretrained()أوComponentSpec.load()بمواصفات التحميل لأغراض التسلسل. أما المكوّنات المخصصة أو المحمّلة محليًا دون مراجع إلى Hub فسيتم تحديث إدخالاتها فيmodular_model_index.jsonتلقائيًا أثناءsave_pretrained(). - يمكن تمرير كائنات ConfigMixin التي لا تحتوي على أوزان (مثل المجدولين والموجهين) مباشرة.