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