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

الحالات

تعتمد الكتل على بنية البيانات PipelineState وBlockState للتواصل ومشاركة البيانات.

الحالةالوصف
PipelineStateيحافظ على البيانات الإجمالية المطلوبة لتنفيذ خط الأنابيب ويتيح للمكونات قراءة بياناته وتحديثها.
BlockStateيتيح لكل كتلة تنفيذ عملية الحساب الخاصة بها باستخدام البيانات اللازمة من inputs

يشرح هذا الدليل كيفية عمل الحالات وكيفية ربطها بالمكعبات.

PipelineState

يُعدّ PipelineState حاويةً للحالة العامة لجميع الكتل. فهو يحافظ على الحالة التشغيلية الكاملة للخطّ الأنابيب، ويوفّر طريقةً منظمةً للكتل لقراءة البيانات المشتركة والكتابة إليها.

يخزّن PipelineState جميع البيانات في قاموس values، وهو حالة قابلة للتعديل تحتوي على قيم الإدخال التي يوفّرها المستخدم والقيم الوسيطة الناتجة عن الكتل. إذا عدّلت كتلةً ما input، فسيتم انعكاس ذلك في قاموس values بعد استدعاء set_block_state.

PipelineState(
  values={
    'prompt': 'a cat'
    'guidance_scale': 7.0
    'num_inference_steps': 25
    'prompt_embeds': Tensor(dtype=torch.float32, shape=torch.Size([1, 1, 1, 1]))
    'negative_prompt_embeds': None
  },
)

BlockState

يُعدّ BlockState عرضًا محليًا للمتغيرات ذات الصلة التي يحتاجها كل كتل فردي من PipelineState لأداء عملياته الحسابية.

الوصول إلى هذه المتغيرات مباشرةً كخصائص مثل block_state.image.

BlockState(
    image: <PIL.Image.Image image mode=RGB size=512x512 at 0x7F3ECC494640>
)

عند تنفيذ طريقة __call__ في كتلة، تسترجع BlockState باستخدام self.get_block_state(state)، وتقوم بعملياتها، ثم تحدّث PipelineState باستخدام self.set_block_state(state, block_state).

def __call__(self, components, state):
    # retrieve BlockState
    block_state = self.get_block_state(state)

    # computation logic on inputs

    # update PipelineState
    self.set_block_state(state, block_state)
    return components, state

تفاعل الحالة

يُعرَّف التفاعل بين PipelineState وBlockState بواسطة inputs وintermediate_outputs الخاصة بالكتلة.

  • inputs، يمكن للكتلة تعديل مدخل - مثل block_state.image - ويمكن نشر هذا التغيير على مستوى PipelineState عن طريق استدعاء set_block_state.
  • intermediate_outputs، هي متغير جديد ينشئه كتل. يُضاف إلى قاموس values الخاص بـ PipelineState ويتوفر للكتل اللاحقة أو يصل إليه المستخدمون كإخراج نهائي من خط الأنابيب.
Update on GitHub