Diffusers documentation
كتل خط الأنابيب
كتل خط الأنابيب
ModularPipelineBlocks
الفئة الأساسية لجميع كتل خط الأنابيب: ConditionalPipelineBlocks، AutoPipelineBlocks، SequentialPipelineBlocks، LoopSequentialPipelineBlocks
يوفر ModularPipelineBlocks طريقةً لتحميل وحفظ تعريفات كتل خط المعالجة.
احصل على جميع المدخلات والقيم الوسيطة في قاموس واحد
get_execution_blocks
< source >( **kwargs )
احصل على الكتلة (أو الكتل) التي ستُنفَّذ بالنظر إلى المدخلات. يجب أن تُنفَّذ بواسطة الفئات الفرعية التي تدعم اختيار الكتل الشرطي.
get_workflow
< source >( workflow_name: str )
احصل على كتل التنفيذ لخط سير عمل محدد. يجب أن تُنفَّذ بواسطة الفئات الفرعية التي تُعرّف _workflow_map.
init_pipeline
< source >( 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
< source >( )
كتلة خط أنابيب (Pipeline Blocks) تجمع بين فئات كتل خط الأنابيب المتعددة في كتلة واحدة. عند استدعائها، ستقوم باستدعاء كل كتلة على التوالي.
ترث هذه الفئة من ModularPipelineBlocks. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع كتل خط المعالجة (مثل التحميل أو الحفظ وما إلى ذلك).
from_blocks_dict
< source >( blocks_dict: dictdescription: str | None = None )
ينشئ كائنًا من نوع SequentialPipelineBlocks من قاموس (dictionary) من الكتل.
get_execution_blocks
< source >( **kwargs )
احصل على الكتل التي ستُنفَّذ بالنظر إلى المدخلات المحددة.
عندما يتنقل المسار عبر الكتل المتسلسلة، تُضاف المخرجات الوسيطة من الكتل المُحلّة إلى المدخلات النشطة. وهذا يعني أن الكتل الشرطية التي تعتمد على القيم الوسيطة (مثل «تشغيل img2img إذا كان image_latents موجودًا») ستُحلّ بشكل صحيح، طالما أن الشرط مبني على الوجود أو الغياب (None أو غير None)، وليس على القيمة الفعلية.
LoopSequentialPipelineBlocks
فئة diffusers.LoopSequentialPipelineBlocks
< source >( )
Pipeline هو كتلة تجمع بين فئات كتل الخطوط المتعددة في حلقة For . عند استدعائها، ستقوم باستدعاء كل كتلة على التوالي.
ترث هذه الفئة من ModularPipelineBlocks. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع كتل خط المعالجة (مثل التحميل أو الحفظ وما إلى ذلك).
from_blocks_dict
< source >( blocks_dict: dict )
ينشئ كائنًا من نوع LoopSequentialPipelineBlocks من قاموس (dictionary) من الكتل.
AutoPipelineBlocks
فئة diffusers.AutoPipelineBlocks
< source >( )
المعاملات
- 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)
اختر الكتلة بناءً على مدخل المحفّز الموجود (غير None).
ConditionalPipelineBlocks
فئة diffusers.ConditionalPipelineBlocks
< source >( )
المعاملات
- 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
< source >( **kwargs ) →
ModularPipelineBlocks
احصل على الكتلة (أو الكتل) التي ستُنفَّذ بالنظر إلى المدخلات.
يحلل كتل ConditionalPipelineBlocks المتداخلة بشكل تكراري حتى الوصول إلى أحد ما يلي:
- كتلة ورقة (لا تحتوي على sub_blocks أو LoopSequentialPipelineBlocks) → تُرجع كتلة
ModularPipelineBlocksواحدة - A
SequentialPipelineBlocks→ يُفوّض إلىget_execution_blocks()الذي يعيدSequentialPipelineBlocksيحتوي على كتل التنفيذ المُحدَّدة
select_block
< source >( **kwargs ) → str | 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.