Buckets:

hf-doc-build/doc / diffusers /main /ar /modular_diffusers /modular_diffusers_states.md
mishig's picture
|
download
raw
4.6 kB

الحالات

تعتمد الكتل على بنية البيانات 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 ويتوفر للكتل اللاحقة أو يصل إليه المستخدمون كإخراج نهائي من خط الأنابيب.

Xet Storage Details

Size:
4.6 kB
·
Xet hash:
c090516751fe07aaee2adb1c6ab1ced46139734acc4b68f1672e12342c168576

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.