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

كتل خط الأنابيب

ModularPipelineBlocks

فئة diffusers.ModularPipelineBlocks

< >

( )

الفئة الأساسية لجميع كتل خط الأنابيب: ConditionalPipelineBlocks، AutoPipelineBlocks، SequentialPipelineBlocks، LoopSequentialPipelineBlocks

يوفر ModularPipelineBlocks طريقةً لتحميل وحفظ تعريفات كتل خط المعالجة.

get_block_state

< >

( state: PipelineState )

احصل على جميع المدخلات والقيم الوسيطة في قاموس واحد

get_execution_blocks

< >

( **kwargs )

المعاملات

  • **kwargs — أسماء المدخلات وقيمها. المدخلات المحفّزة فقط هي التي تؤثر على اختيار الكتلة.

احصل على الكتلة (أو الكتل) التي ستُنفَّذ بالنظر إلى المدخلات. يجب أن تُنفَّذ بواسطة الفئات الفرعية التي تدعم اختيار الكتل الشرطي.

get_workflow

< >

( workflow_name: str )

المعاملات

  • workflow_name — اسم سير العمل المطلوب استرجاعه.

احصل على كتل التنفيذ لخط سير عمل محدد. يجب أن تُنفَّذ بواسطة الفئات الفرعية التي تُعرّف _workflow_map.

init_pipeline

< >

( pretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = None )

أنشئ ModularPipeline، مع قبول pretrained_model_name_or_path بشكل اختياري للتحميل من المستودع.

SequentialPipelineBlocks

فئة diffusers.SequentialPipelineBlocks

< >

( )

المعاملات

  • block_classes — قائمة بفئات الكتل المستخدمة
  • block_names — قائمة بادئات لكل كتلة

كتلة خط أنابيب (Pipeline Blocks) تجمع بين فئات كتل خط الأنابيب المتعددة في كتلة واحدة. عند استدعائها، ستقوم باستدعاء كل كتلة على التوالي.

ترث هذه الفئة من ModularPipelineBlocks. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع كتل خط المعالجة (مثل التحميل أو الحفظ وما إلى ذلك).

from_blocks_dict

< >

( blocks_dict: dictdescription: str | None = None )

المعاملات

  • blocks_dict — قاموس يربط أسماء الكتل بفئات الكتل أو أمثلتها

ينشئ كائنًا من نوع SequentialPipelineBlocks من قاموس (dictionary) من الكتل.

get_execution_blocks

< >

( **kwargs )

المعاملات

  • **kwargs — أسماء المدخلات وقيمها. المدخلات المحفّزة فقط هي التي تؤثر على اختيار الكتلة.

احصل على الكتل التي ستُنفَّذ بالنظر إلى المدخلات المحددة.

عندما يتنقل المسار عبر الكتل المتسلسلة، تُضاف المخرجات الوسيطة من الكتل المُحلّة إلى المدخلات النشطة. وهذا يعني أن الكتل الشرطية التي تعتمد على القيم الوسيطة (مثل «تشغيل img2img إذا كان image_latents موجودًا») ستُحلّ بشكل صحيح، طالما أن الشرط مبني على الوجود أو الغياب (None أو غير None)، وليس على القيمة الفعلية.

LoopSequentialPipelineBlocks

فئة diffusers.LoopSequentialPipelineBlocks

< >

( )

المعاملات

  • block_classes — قائمة بفئات الكتل المستخدمة
  • block_names — قائمة بادئات لكل كتلة

Pipeline هو كتلة تجمع بين فئات كتل الخطوط المتعددة في حلقة For . عند استدعائها، ستقوم باستدعاء كل كتلة على التوالي.

ترث هذه الفئة من ModularPipelineBlocks. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع كتل خط المعالجة (مثل التحميل أو الحفظ وما إلى ذلك).

from_blocks_dict

< >

( blocks_dict: dict )

المعاملات

  • blocks_dict — قاموس يربط أسماء الكتل بأمثلة الكتل

ينشئ كائنًا من نوع LoopSequentialPipelineBlocks من قاموس (dictionary) من الكتل.

AutoPipelineBlocks

فئة diffusers.AutoPipelineBlocks

< >

( )

المعاملات

  • block_classes — قائمة بفئات الكتل المستخدمة. يجب أن يكون طولها مطابقًا لطول block_names و block_trigger_inputs.
  • block_names — قائمة بأسماء كل كتلة. يجب أن يكون لها نفس طول block_classes وblock_trigger_inputs.
  • block_trigger_inputs — قائمة بأسماء المدخلات حيث يحدد كل عنصر مدخل التفعيل الخاص بالكتلة المقابلة. استخدم None لتحديد الكتلة الافتراضية.

كتل خط أنابيب (Pipeline Blocks) تختار تلقائيًا كتلةً لتنفيذها بناءً على وجود مدخلات التفعيل.

هذه نسخة متخصصة من ConditionalPipelineBlocks حيث:

  • لكل كتلة مدخل محفّز واحد (تطابق 1:1)
  • يتم تحديد الكتلة تلقائيًا: تُختار أول كتلة يكون مدخل المحفّز الخاص بها حاضرًا
  • يجب أن يكون لـblock_trigger_inputs نفس طول block_names وblock_classes
  • استخدم None في block_trigger_inputs لتحديد الكتلة الافتراضية، أي الكتلة التي ستُنفَّذ إذا لم تكن هناك مدخلات محفّزة

مثال:

    class MyAutoBlock(AutoPipelineBlocks):
        block_classes = [InpaintEncoderBlock, ImageEncoderBlock, TextEncoderBlock]
        block_names = ["inpaint", "img2img", "text2img"]
        block_trigger_inputs = ["mask_image", "image", None]  # text2img is the default

مع هذا التعريف:

  • طالما تم توفير mask_image، يتم تشغيل كتلة “inpaint” (سواء تم توفير image أم لا)
  • إذا لم يُقدَّم mask_image لكن تم تقديم image، يتم تشغيل كتلة “img2img”
  • وإلا، يتم تشغيل كتلة “text2img” (الافتراضي، المحفّز هو None)

select_block

< >

( **kwargs )

اختر الكتلة بناءً على مدخل المحفّز الموجود (غير None).

ConditionalPipelineBlocks

فئة diffusers.ConditionalPipelineBlocks

< >

( )

المعاملات

  • block_classes — قائمة بفئات الكتل المستخدمة. يجب أن يكون طولها مطابقًا لطول block_names.
  • block_names — قائمة بأسماء كل كتلة. يجب أن يكون طولها مطابقًا لطول block_classes.
  • block_trigger_inputs — قائمة بأسماء المدخلات التي يستخدمها select_block() لتحديد الكتلة التي يجب تشغيلها. بالنسبة إلى ConditionalPipelineBlocks، لا يلزم أن تتوافق هذه القائمة مع block_names وblock_classes. أما بالنسبة إلى AutoPipelineBlocks، فيجب أن تكون لها نفس طول block_names وblock_classes، حيث يحدد كل عنصر مدخل التفعيل للكتلة المقابلة.
  • default_block_name — اسم الكتلة الافتراضية التي تُنفَّذ عندما لا تتطابق أي مدخلات محفّزة. إذا كانت القيمة None، يمكن تخطي هذه الكتلة بالكامل عندما لا تُوفَّر أي مدخلات محفّزة.

كتل Pipeline التي تختار بشكل شرطي كتلةً لتنفيذها بناءً على المدخلات. يجب أن تنفّذ الفئات الفرعية طريقة select_block لتعريف منطق اختيار الكتلة. حاليًا، ندعم فقط منطق الاختيار بناءً على وجود المدخلات أو غيابها (أي، ما إذا كانت None أم لا)

ترث هذه الفئة من ModularPipelineBlocks. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع كتل خط المعالجة (مثل التحميل أو الحفظ وما إلى ذلك).

get_execution_blocks

< >

( **kwargs ) →

  • ModularPipelineBlocks

المعاملات

  • **kwargs — أسماء المدخلات وقيمها. المدخلات المحفّزة فقط هي التي تؤثر على اختيار الكتلة.

يعيد

  • ModularPipelineBlocks

كتلة ورقة أو SequentialPipelineBlocks محلول

  • None: إذا كان هذا الكتلة سيتم تخطيها (لم يتطابق أي محفّز ولا يوجد افتراضي)

احصل على الكتلة (أو الكتل) التي ستُنفَّذ بالنظر إلى المدخلات.

يحلل كتل ConditionalPipelineBlocks المتداخلة بشكل تكراري حتى الوصول إلى أحد ما يلي:

  • كتلة ورقة (لا تحتوي على sub_blocks أو LoopSequentialPipelineBlocks) → تُرجع كتلة ModularPipelineBlocks واحدة
  • A SequentialPipelineBlocks → يُفوّض إلى get_execution_blocks() الذي يعيد SequentialPipelineBlocks يحتوي على كتل التنفيذ المُحدَّدة

select_block

< >

( **kwargs ) → str | None

المعاملات

  • **kwargs — أسماء مدخلات التفعيل وقيمها من الحالة.

يعيد

str | None

اسم الكتلة التي سيتم تشغيلها، أو None لاستخدام الافتراضي/التخطي.

اختر الكتلة التي سيتم تشغيلها بناءً على مدخلات المحفّز. يجب على الفئات الفرعية تنفيذ هذه الطريقة لتعريف منطق اختيار الكتلة.

Note: When trigger inputs include intermediate outputs from earlier blocks, the selection logic should only depend on the presence or absence of the input (i.e., whether it is None or not), not on its actual value. This is because get_execution_blocks() resolves conditions statically by propagating intermediate output names without their runtime values.

Update on GitHub