Diffusers documentation

خط أنابيب

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

خط أنابيب

ModularPipeline

فئة diffusers.ModularPipeline

< >

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

المعاملات

  • blocks — ModularPipelineBlocks، الكتل المستخدمة في خط المعالجة

الفئة الأساسية لجميع خطوط الأنابيب المعيارية.

from_pretrained

< >

( 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.

get_component_spec

< >

( name: str )

load_components

< >

( 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

< >

( **kwargs )

المعاملات

  • **kwargs — حُجج بكلمات مفتاحية حيث تكون المفاتيح أسماء المكونات والقيم كائنات المكونات. على سبيل المثال، register_components(unet=unet_model, text_encoder=encoder_model)

سجّل المكونات مع مواصفاتها المقابلة.

تتولى هذه الطريقة المسؤولية عن:

  1. يُعيّن كائنات المكوّنات كخصائص على المُحمِّل (مثل self.unet = unet)
  2. يحدّث قاموس الإعدادات، الذي سيُحفظ باسم modular_model_index.json أثناء save_pretrained (للمكوّنات من from_pretrained فقط)
  3. يضيف المكونات إلى مدير المكونات إذا كان مرفقًا (للمكونات من 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.json during save_pretrained
  • component_specs are updated to match the new component outside of this method, e.g. in update_components() method

save_pretrained

< >

( 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().

إلى

< >

( *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

< >

( names: list[str] | str )

المعاملات

  • names — اسم المكوّن أو قائمة بأسماء المكوّنات التي سيتم تفريغها.

تفريغ المكونات المحددة، مما يحرر ذاكرتها.

يُعاد تعيين خاصية المكوّن إلى None، وإذا كان مكوّن ComponentsManager مرفقًا، يُزال المكوّن منه. تبقى مواصفات المكوّن دون تغيير، لذا يمكن تحميل المكوّن مرة أخرى لاحقًا باستخدام load_components().

update_components

< >

( **kwargs )

المعاملات

  • **kwargs — كائنات المكونات أو قيم الإعدادات التي يجب تحديثها:
    • كائنات المكونات: تُوسم النماذج المحمّلة عبر AutoModel.from_pretrained() أو ComponentSpec.load() تلقائيًا بمعلومات التحميل. يمكن تمرير كائنات ConfigMixin التي لا تحتوي على أوزان (مثل المجدولين والموجهين) مباشرة.
    • قيم الإعداد: قيم بسيطة لتحديث إعدادات التهيئة (مثل requires_safety_checker=False)

حدّث المكوّنات وقيم الإعدادات والمواصفات بعد إنشاء خط الأنابيب.

تتيح لك هذه الطريقة:

  1. استبدال المكونات الموجودة بأخرى جديدة (مثل تحديث self.unet أو self.text_encoder)
  2. تحديث قيم الإعدادات (مثل تغيير علم 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 التي لا تحتوي على أوزان (مثل المجدولين والموجهين) مباشرة.
Update on GitHub