Buckets:
| # | |
| # مرخّص بموجب ترخيص Apache الإصدار 2.0 (المسمى "الترخيص") | |
| # لا يجوز لك استخدام هذا الملف إلا وفقاً لشروط الترخيص. | |
| # يمكنك الحصول على نسخة من الترخيص في | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # ما لم يقتضِ ذلك القانون المعمول به أو ما اتُّفق عليه كتابياً، البرمجيات | |
| # تُوزَّع بموجب الرخصة على أساس "كما هي"، | |
| # بلا أي ضمانات أو شروط من أي نوع، سواء صريحة أو ضمنية. | |
| # راجع الترخيص لمعرفة اللغة المحددة التي تحكم الصلاحيات و | |
| # قيود بموجب الترخيص. --> | |
| # SanaPipeline | |
| [SANA: توليف صور عالية الدقة بكفاءة باستخدام محولات الانتشار الخطية](https://huggingface.co/papers/2410.10629) من NVIDIA وMIT HAN Lab، بقلم Enze Xie وJunsong Chen وJunyu Chen وHan Cai وHaotian Tang وYujun Lin وZhekai Zhang وMuyang Li وLigeng Zhu وYao Lu وSong Han. | |
| ملخص الورقة البحثية هو: | |
| *نقدّم Sana، وهو إطار لتوليد الصور من النص قادر على توليد صور بكفاءة تصل دقتها إلى 4096×4096. يمكن لـ Sana توليد صور عالية الدقة والجودة مع توافق قوي بين النص والصورة بسرعة فائقة، ويمكن نشره على وحدة معالجة رسومية في حاسوب محمول. تشمل التصاميم الأساسية: (1) مُشفِّر تلقائي ضاغط بعمق: على عكس المُشفِّفات التلقائية التقليدية التي تضغط الصور 8× فقط، درّبنا مُشفِّفاً تلقائياً يمكنه ضغط الصور 32×، مما يقلل بشكل فعال عدد الرموز الكامنة. (2) DiT الخطي: استبدلنا كل الانتباه العادي في DiT بالانتباه الخطي، وهو أكثر كفاءة عند الدقات العالية دون التضحية بالجودة. (3) مُشفِّر نصي يعتمد على المُفكِّك فقط: استبدلنا T5 بنموذج لغوي صغير حديث يعتمد على المُفكِّك فقط كمُشفِّر للنص، وصممنا تعليمات بشرية معقدة باستخدام التعلم في السياق لتعزيز التوافق بين الصورة والنص. (4) تدريب وعيّنة فعّالان: نقترح Flow-DPM-Solver لتقليل خطوات العينة، مع تسمية واختيار فعّالين للوصف لتسريع التقارب. ونتيجة لذلك، يُعد Sana-0.6B منافساً قوياً لنماذج الانتشار العملاقة الحديثة (مثل Flux-12B)، فهو أصغر بـ 20 مرة وأسرع بأكثر من 100 مرة في معدل الإنتاج المقاس. علاوة على ذلك، يمكن نشر Sana-0.6B على وحدة معالجة رسومية بحجم 16 جيجابايت في حاسوب محمول، ويستغرق أقل من ثانية واحدة لتوليد صورة بدقة 1024×1024. يتيح Sana إنشاء المحتوى بتكلفة منخفضة. سيتم إصدار الكود والنموذج علنياً.* | |
| > [!TIP] | |
| > تأكد من الاطلاع على [دليل المجدولين](../../using-diffusers/schedulers) لمعرفة كيفية استكشاف التوازن بين سرعة المجدول وجودة النتائج، واطّلع على قسم [إعادة استخدام المكونات عبر خطوط الأنابيب](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) لمعرفة كيفية تحميل نفس المكونات بكفاءة في خطوط أنابيب متعددة. | |
| تمت مساهمة خط المعالجة هذا من قِبَل [lawrence-cj](https://github.com/lawrence-cj) و [chenjy2003](https://github.com/chenjy2003). يمكن العثور على قاعدة الكود الأصلية [هنا](https://github.com/NVlabs/Sana). يمكن العثور على الأوزان الأصلية تحت [hf.co/Efficient-Large-Model](https://huggingface.co/Efficient-Large-Model). | |
| النماذج المتاحة: | |
| | النموذج | نوع البيانات الموصى به | | |
| |:-----:|:-----------------:| | |
| | [`Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers`](https://huggingface.co/Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers) | `torch.bfloat16` | | |
| | [`Efficient-Large-Model/Sana_1600M_1024px_diffusers`](https://huggingface.co/Efficient-Large-Model/Sana_1600M_1024px_diffusers) | `torch.float16` | | |
| | [`Efficient-Large-Model/Sana_1600M_1024px_MultiLing_diffusers`](https://huggingface.co/Efficient-Large-Model/Sana_1600M_1024px_MultiLing_diffusers) | `torch.float16` | | |
| | [`Efficient-Large-Model/Sana_1600M_512px_diffusers`](https://huggingface.co/Efficient-Large-Model/Sana_1600M_512px_diffusers) | `torch.float16` | | |
| | [`Efficient-Large-Model/Sana_1600M_512px_MultiLing_diffusers`](https://huggingface.co/Efficient-Large-Model/Sana_1600M_512px_MultiLing_diffusers) | `torch.float16` | | |
| | [`Efficient-Large-Model/Sana_600M_1024px_diffusers`](https://huggingface.co/Efficient-Large-Model/Sana_600M_1024px_diffusers) | `torch.float16` | | |
| | [`Efficient-Large-Model/Sana_600M_512px_diffusers`](https://huggingface.co/Efficient-Large-Model/Sana_600M_512px_diffusers) | `torch.float16` | | |
| راجع [هذه](https://huggingface.co/collections/Efficient-Large-Model/sana-673efba2a57ed99843f11f9e) المجموعة لمزيد من المعلومات. | |
| ملاحظة: نوع البيانات (dtype) الموصى به المذكور أعلاه هو لأوزان المحوّل (transformer). يجب أن تبقى أوزان مُشفِّر النص (text encoder) ووحدة الترميز/فك الترميز التباينية (VAE) في `torch.bfloat16` أو `torch.float32` لكي يعمل النموذج بشكل صحيح. يُرجى الرجوع إلى مثال الاستدلال أدناه لمعرفة كيفية تحميل النموذج باستخدام نوع البيانات الموصى به. | |
| > [!TIP] | |
| > تأكد من تمرير الحجة `variant` للنقاط الفحصية المُحمّلة لاستخدام مساحة أقراص أقل. اضبطها على `"fp16"` للنماذج التي يُوصى بأن يكون نوع البيانات الخاص بها `torch.float16`، وعلى `"bf16"` للنماذج التي يُوصى بأن يكون نوع البيانات الخاص بها `torch.bfloat16`. افتراضيًا، يتم تحميل أوزان `torch.float32`، والتي تستهلك ضعف مساحة التخزين على القرص. بالإضافة إلى ذلك، يمكن خفض دقة أوزان `torch.float32` أثناء التشغيل عن طريق تحديد الحجة `dtype`. اقرأ المزيد حول ذلك في [التوثيق](https://huggingface.co/docs/diffusers/v0.31.0/en/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained). | |
| ## التكميم | |
| يساعد التكميم (Quantization) في تقليل متطلبات الذاكرة للنماذج الكبيرة جدًا من خلال تخزين أوزان النموذج في نوع بيانات بدقة أقل. ومع ذلك، قد يكون للتكميم تأثير متباين على جودة الفيديو اعتمادًا على نموذج الفيديو المستخدم. | |
| راجع نظرة عامة حول [التكميم](../../quantization/overview) لمعرفة المزيد حول محركات التكميم المدعومة واختيار محرك تكميم يدعم حالتك الاستخدامية. يوضح المثال أدناه كيفية تحميل [SanaPipeline](/docs/diffusers/main/ar/api/pipelines/sana#diffusers.SanaPipeline) مُكمَّم للاستدلال باستخدام bitsandbytes. | |
| ```py | |
| import torch | |
| from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, SanaTransformer2DModel, SanaPipeline | |
| from transformers import BitsAndBytesConfig as BitsAndBytesConfig, AutoModel | |
| quant_config = BitsAndBytesConfig(load_in_8bit=True) | |
| text_encoder_8bit = AutoModel.from_pretrained( | |
| "Efficient-Large-Model/Sana_1600M_1024px_diffusers", | |
| subfolder="text_encoder", | |
| quantization_config=quant_config, | |
| dtype=torch.float16, | |
| ) | |
| quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True) | |
| transformer_8bit = SanaTransformer2DModel.from_pretrained( | |
| "Efficient-Large-Model/Sana_1600M_1024px_diffusers", | |
| subfolder="transformer", | |
| quantization_config=quant_config, | |
| dtype=torch.float16, | |
| ) | |
| pipeline = SanaPipeline.from_pretrained( | |
| "Efficient-Large-Model/Sana_1600M_1024px_diffusers", | |
| text_encoder=text_encoder_8bit, | |
| transformer=transformer_8bit, | |
| dtype=torch.float16, | |
| device_map="balanced", | |
| ) | |
| prompt = "a tiny astronaut hatching from an egg on the moon" | |
| image = pipeline(prompt).images[0] | |
| image.save("sana.png") | |
| ``` | |
| ## SanaPipeline[[diffusers.SanaPipeline]] | |
| #### diffusers.SanaPipeline[[diffusers.SanaPipeline]] | |
| ```python | |
| diffusers.SanaPipeline(tokenizer: GemmaTokenizer, text_encoder: Gemma2PreTrainedModel, vae: AutoencoderDC, transformer: SanaTransformer2DModel, scheduler: DPMSolverMultistepScheduler) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/sana/pipeline_sana.py#L189) | |
| خط أنابيب لتوليد الصور من النص باستخدام [Sana](https://huggingface.co/papers/2410.10629). | |
| #### __call__[[diffusers.SanaPipeline.__call__]] | |
| ```python | |
| __call__(prompt: str | list[str] = None, negative_prompt: str = '', num_inference_steps: int = 20, timesteps: list[int] = None, sigmas: list[float] = None, guidance_scale: float = 4.5, num_images_per_prompt: int | None = 1, height: int = 1024, width: int = 1024, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, clean_caption: bool = False, use_resolution_binning: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 300, complex_human_instruction: list[str] = ["Given a user prompt, generate an 'Enhanced prompt' that provides detailed visual descriptions suitable for image generation. Evaluate the level of detail in the user prompt:", '- If the prompt is simple, focus on adding specifics about colors, shapes, sizes, textures, and spatial relationships to create vivid and concrete scenes.', '- If the prompt is already detailed, refine and enhance the existing details slightly without overcomplicating.', 'Here are examples of how to transform or refine prompts:', '- User Prompt: A cat sleeping -> Enhanced: A small, fluffy white cat curled up in a round shape, sleeping peacefully on a warm sunny windowsill, surrounded by pots of blooming red flowers.', '- User Prompt: A busy city street -> Enhanced: A bustling city street scene at dusk, featuring glowing street lamps, a diverse crowd of people in colorful clothing, and a double-decker bus passing by towering glass skyscrapers.', 'Please generate only the enhanced description for the prompt below and avoid including any additional commentary or evaluations:', 'User Prompt: ']) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/sana/pipeline_sana.py#L673) | |
| **المعاملات:** | |
| prompt (`str` أو `list[str]`، *اختياري*) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير `prompt_embeds` بدلاً من ذلك. | |
| negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`). | |
| num_inference_steps (`int`، *اختياري*، القيمة الافتراضية 20) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال. | |
| timesteps (`list[int]`، *اختياري*) : خطوات زمنية مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل `timesteps` في طريقة `set_timesteps` الخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير `num_inference_steps`. يجب أن تكون بترتيب تنازلي. | |
| sigmas (`list[float]`، *اختياري*) : قيم `sigmas` مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل `sigmas` في طريقة `set_timesteps` الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير `num_inference_steps`. | |
| guidance_scale (`float`، *اختياري*، القيمة الافتراضية 4.5) : مقياس التوجيه كما هو مُعرَّف في [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). يُعرَّف `guidance_scale` على أنه `w` من المعادلة 2. في [Imagen Paper](https://huggingface.co/papers/2205.11487). يتم تفعيل مقياس التوجيه عن طريق تعيين `guidance_scale > 1`. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص `prompt`، وعادةً على حساب انخفاض جودة الصورة. | |
| num_images_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه. | |
| height (`int`، *اختياري*، الافتراضي هو self.unet.config.sample_size) : ارتفاع الصورة المولّدة بالبكسل. | |
| width (`int`، *اختياري*، الافتراضي هو self.unet.config.sample_size) : عرض الصورة المولدة بالبكسل. | |
| eta (`float`، *اختياري*، القيمة الافتراضية 0.0) : يتوافق مع المعامل eta (η) في ورقة DDIM: https://huggingface.co/papers/2010.02502. ينطبق فقط على [schedulers.DDIMScheduler](/docs/diffusers/main/ar/api/schedulers/ddim#diffusers.DDIMScheduler)، وسيتم تجاهله في الحالات الأخرى. | |
| generator (`torch.Generator` أو `list[torch.Generator]`، *اختياري*) : مولّد واحد أو قائمة من [مولّدات torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل التوليد حتميًا. | |
| latents (`torch.Tensor`، *اختياري*) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، سيتم توليد كامنات من خلال الاستخراج باستخدام `generator` العشوائي المُقدَّم. | |
| prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`. | |
| prompt_attention_mask (`torch.Tensor`، *اختياري*) : قناع انتباه مُولّد مسبقًا لتضمينات النص. | |
| negative_prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. بالنسبة إلى PixArt-Sigma، يجب أن يكون هذا الموجه السلبي "". إذا لم يُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`. | |
| negative_prompt_attention_mask (`torch.Tensor`، *اختياري*) : قناع انتباه مُولّد مسبقًا لتضمينات النصوص السلبية. | |
| output_type (`str`، *اختياري*، القيمة الافتراضية `"pil"`) : صيغة الصورة الناتجة عن عملية التوليد. اختر بين [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` أو `np.array`. | |
| return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `~pipelines.stable_diffusion.IFPipelineOutput` بدلاً من tuple عادي. | |
| attention_kwargs : قاموس kwargs يُمرَّر إلى `AttentionProcessor` إذا تم تحديده، كما هو معرّف تحت `self.processor` في [diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). | |
| clean_caption (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تنظيف الوصف قبل إنشاء التضمينات. يتطلب تثبيت `beautifulsoup4` و`ftfy`. إذا لم يتم تثبيت الاعتماديات، فسيتم إنشاء التضمينات من النص الخام. | |
| use_resolution_binning (`bool` الافتراضي هو `True`) : إذا تم ضبطه على `True`، فإن الارتفاع والعرض المطلوبين يُخضعان أولاً للتحويل إلى أقرب دقة باستخدام `ASPECT_RATIO_1024_BIN`. بعد فك ترميز الكمّيات الناتجة إلى صور، يتم تغيير حجمها مرة أخرى إلى الدقة المطلوبة. مفيد لتوليد صور غير مربعة. | |
| callback_on_step_end (`Callable`، *اختياري*) : دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال. تُستدعى الدالة بالحجج التالية: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. سيتضمن `callback_kwargs` قائمة بجميع المصفوفات كما حددتها `callback_on_step_end_tensor_inputs`. | |
| callback_on_step_end_tensor_inputs (`list`، *اختياري*) : قائمة مدخلات المصفوفات (tensors) لدالة `callback_on_step_end`. سيتم تمرير المصفوفات المحددة في القائمة كحجة `callback_kwargs`. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية `._callback_tensor_inputs` لفئة خط الأنابيب (pipeline) الخاص بك. | |
| max_sequence_length (`int` الافتراضي هو `300`) : أقصى طول تسلسل يُستخدم مع `prompt`. | |
| complex_human_instruction (`list[str]`، *اختياري*) : تعليمات للانتباه البشري المعقد: https://github.com/NVlabs/Sana/blob/main/configs/sana_app_config/Sana_1600M_app.yaml#L55. | |
| **يعيد:** [SanaPipelineOutput](/docs/diffusers/main/ar/api/pipelines/sana_sprint#diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput) أو `tuple` | |
| إذا كان `return_dict` هو `True`، يُعاد [SanaPipelineOutput](/docs/diffusers/main/ar/api/pipelines/sana_sprint#diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput)، وإلا يُعاد `tuple` يكون عنصره الأول قائمة بالصور المولّدة | |
| الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد. | |
| أمثلة: | |
| ```py | |
| >>> import torch | |
| >>> from diffusers import SanaPipeline | |
| >>> pipe = SanaPipeline.from_pretrained( | |
| ... "Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers", torch_dtype=torch.float32 | |
| ... ) | |
| >>> pipe.to("cuda") | |
| >>> pipe.text_encoder.to(torch.bfloat16) | |
| >>> pipe.transformer = pipe.transformer.to(torch.bfloat16) | |
| >>> image = pipe(prompt='a cyberpunk cat with a neon sign that says "Sana"')[0] | |
| >>> image[0].save("output.png") | |
| ``` | |
| #### encode_prompt[[diffusers.SanaPipeline.encode_prompt]] | |
| ```python | |
| encode_prompt(prompt: str | list[str], do_classifier_free_guidance: bool = True, negative_prompt: str = '', num_images_per_prompt: int = 1, device: typing.Optional[torch.device] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, clean_caption: bool = False, max_sequence_length: int = 300, complex_human_instruction: list[str] | None = None, lora_scale: float | None = None) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/sana/pipeline_sana.py#L280) | |
| **المعاملات:** | |
| prompt (`str` أو `list[str]`، *اختياري*) : النص الذي سيتم ترميزه | |
| negative_prompt (`str` أو `list[str]`، *اختياري*) : الأمر النصي الذي لا يوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً منه. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`). بالنسبة إلى PixArt-Alpha، يجب أن يكون "". | |
| do_classifier_free_guidance (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم استخدام classifier free guidance أم لا | |
| num_images_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد الصور التي يجب توليدها لكل موجه | |
| device : (`torch.device`, *اختياري*): جهاز torch لوضع التضمينات الناتجة عليه | |
| prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`. | |
| negative_prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. بالنسبة إلى Sana، يجب أن تكون تمثيلات نص "" (فارغ). | |
| clean_caption (`bool`، القيمة الافتراضية `False`) : إذا كانت `True`، سيقوم الدالة بمعالجة الوصف المقدم وتنظيفه قبل الترميز. | |
| max_sequence_length (`int`، القيمة الافتراضية 300) : أقصى طول تسلسل يُستخدم للموجّه. | |
| complex_human_instruction (`list[str]`، الافتراضي `complex_human_instruction`) : إذا لم يكن `complex_human_instruction` فارغًا، فستستخدم الدالة تعليمات Human المعقدة للتلميح. | |
| يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص. | |
| ## SanaPAGPipeline[[diffusers.SanaPAGPipeline]] | |
| #### diffusers.SanaPAGPipeline[[diffusers.SanaPAGPipeline]] | |
| ```python | |
| diffusers.SanaPAGPipeline(tokenizer: GemmaTokenizer, text_encoder: Gemma2PreTrainedModel, vae: AutoencoderDC, transformer: SanaTransformer2DModel, scheduler: FlowMatchEulerDiscreteScheduler, pag_applied_layers: str | list[str] = 'transformer_blocks.0') | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pag/pipeline_pag_sana.py#L147) | |
| خط أنابيب لتوليد الصور من النص باستخدام [Sana](https://huggingface.co/papers/2410.10629). يدعم هذا الخط أنابيب استخدام [Perturbed Attention Guidance (PAG)](https://huggingface.co/docs/diffusers/main/en/using-diffusers/pag). | |
| #### __call__[[diffusers.SanaPAGPipeline.__call__]] | |
| ```python | |
| __call__(prompt: str | list[str] = None, negative_prompt: str = '', num_inference_steps: int = 20, timesteps: list[int] = None, sigmas: list[float] = None, guidance_scale: float = 4.5, num_images_per_prompt: int | None = 1, height: int = 1024, width: int = 1024, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, clean_caption: bool = False, use_resolution_binning: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 300, complex_human_instruction: list[str] = ["Given a user prompt, generate an 'Enhanced prompt' that provides detailed visual descriptions suitable for image generation. Evaluate the level of detail in the user prompt:", '- If the prompt is simple, focus on adding specifics about colors, shapes, sizes, textures, and spatial relationships to create vivid and concrete scenes.', '- If the prompt is already detailed, refine and enhance the existing details slightly without overcomplicating.', 'Here are examples of how to transform or refine prompts:', '- User Prompt: A cat sleeping -> Enhanced: A small, fluffy white cat curled up in a round shape, sleeping peacefully on a warm sunny windowsill, surrounded by pots of blooming red flowers.', '- User Prompt: A busy city street -> Enhanced: A bustling city street scene at dusk, featuring glowing street lamps, a diverse crowd of people in colorful clothing, and a double-decker bus passing by towering glass skyscrapers.', 'Please generate only the enhanced description for the prompt below and avoid including any additional commentary or evaluations:', 'User Prompt: '], pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pag/pipeline_pag_sana.py#L594) | |
| **المعاملات:** | |
| prompt (`str` أو `list[str]`، *اختياري*) : الأمر أو الأوامر التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير `prompt_embeds` بدلاً من ذلك. | |
| negative_prompt (`str` أو `list[str]`، *اختياري*) : الموجه أو الموجهات التي لا ينبغي توجيه توليد الصورة بها. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`). | |
| num_inference_steps (`int`، *اختياري*، القيمة الافتراضية 20) : عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة ذات جودة أعلى على حساب بطء الاستدلال. | |
| timesteps (`list[int]`، *اختياري*) : خطوات زمنية مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل `timesteps` في طريقة `set_timesteps` الخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير `num_inference_steps`. يجب أن تكون بترتيب تنازلي. | |
| sigmas (`list[float]`، *اختياري*) : قيم `sigmas` مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل `sigmas` في طريقة `set_timesteps` الخاصة بهم. إذا لم تُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير `num_inference_steps`. | |
| guidance_scale (`float`، *اختياري*، القيمة الافتراضية 4.5) : مقياس التوجيه كما هو مُعرَّف في [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). يُعرَّف `guidance_scale` على أنه `w` من المعادلة 2. في [Imagen Paper](https://huggingface.co/papers/2205.11487). يتم تفعيل مقياس التوجيه عن طريق تعيين `guidance_scale > 1`. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص `prompt`، وعادةً على حساب انخفاض جودة الصورة. | |
| num_images_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد الصور التي سيتم توليدها لكل موجه. | |
| height (`int`، *اختياري*، الافتراضي هو self.unet.config.sample_size) : ارتفاع الصورة المولّدة بالبكسل. | |
| width (`int`، *اختياري*، الافتراضي هو self.unet.config.sample_size) : عرض الصورة المولدة بالبكسل. | |
| eta (`float`، *اختياري*، القيمة الافتراضية 0.0) : يتوافق مع المعامل eta (η) في ورقة DDIM: https://huggingface.co/papers/2010.02502. ينطبق فقط على [schedulers.DDIMScheduler](/docs/diffusers/main/ar/api/schedulers/ddim#diffusers.DDIMScheduler)، وسيتم تجاهله في الحالات الأخرى. | |
| generator (`torch.Generator` أو `list[torch.Generator]`، *اختياري*) : مولّد واحد أو قائمة من [مولّدات torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل التوليد حتميًا. | |
| latents (`torch.Tensor`، *اختياري*) : كامنات ضجيج مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، سيتم توليد كامنات من خلال الاستخراج باستخدام `generator` العشوائي المُقدَّم. | |
| prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`. | |
| prompt_attention_mask (`torch.Tensor`، *اختياري*) : قناع انتباه مُولّد مسبقًا لتضمينات النص. | |
| negative_prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. بالنسبة إلى PixArt-Sigma، يجب أن يكون هذا الموجه السلبي "". إذا لم يُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخال `negative_prompt`. | |
| negative_prompt_attention_mask (`torch.Tensor`، *اختياري*) : قناع انتباه مُولّد مسبقًا لتضمينات النصوص السلبية. | |
| output_type (`str`، *اختياري*، القيمة الافتراضية `"pil"`) : صيغة الصورة الناتجة عن عملية التوليد. اختر بين [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` أو `np.array`. | |
| return_dict (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `~pipelines.stable_diffusion.IFPipelineOutput` بدلاً من tuple عادي. | |
| clean_caption (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تنظيف الوصف قبل إنشاء التضمينات. يتطلب تثبيت `beautifulsoup4` و`ftfy`. إذا لم يتم تثبيت الاعتماديات، فسيتم إنشاء التضمينات من النص الخام. | |
| use_resolution_binning (`bool` الافتراضي هو `True`) : إذا تم ضبطه على `True`، فإن الارتفاع والعرض المطلوبين يُخضعان أولاً للتحويل إلى أقرب دقة باستخدام `ASPECT_RATIO_1024_BIN`. بعد فك ترميز الكمّيات الناتجة إلى صور، يتم تغيير حجمها مرة أخرى إلى الدقة المطلوبة. مفيد لتوليد صور غير مربعة. | |
| callback_on_step_end (`Callable`، *اختياري*) : دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال. تُستدعى الدالة بالحجج التالية: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. سيتضمن `callback_kwargs` قائمة بجميع المصفوفات كما حددتها `callback_on_step_end_tensor_inputs`. | |
| callback_on_step_end_tensor_inputs (`list`، *اختياري*) : قائمة مدخلات المصفوفات (tensors) لدالة `callback_on_step_end`. سيتم تمرير المصفوفات المحددة في القائمة كحجة `callback_kwargs`. لن تتمكن من تضمين سوى المتغيرات المدرجة في خاصية `._callback_tensor_inputs` لفئة خط الأنابيب (pipeline) الخاص بك. | |
| max_sequence_length (`int` الافتراضي 300) : أقصى طول تسلسل يُستخدم مع `prompt`. | |
| complex_human_instruction (`list[str]`، *اختياري*) : تعليمات للانتباه البشري المعقد: https://github.com/NVlabs/Sana/blob/main/configs/sana_app_config/Sana_1600M_app.yaml#L55. | |
| pag_scale (`float`، *اختياري*، القيمة الافتراضية 3.0) : معامل المقياس للتوجيه الانتباه المُعطَّل. إذا تم ضبطه على 0.0، فلن يُستخدم التوجيه الانتباه المُعطَّل. | |
| pag_adaptive_scale (`float`، *اختياري*، القيمة الافتراضية 0.0) : معامل المقياس التكيفي لمرشد الانتباه المُعطَّل. إذا تم ضبطه على 0.0، يُستخدم `pag_scale`. | |
| **يعيد:** [ImagePipelineOutput](/docs/diffusers/main/ar/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) أو `tuple` | |
| إذا كان `return_dict` هو `True`، يُعاد [ImagePipelineOutput](/docs/diffusers/main/ar/api/pipelines/consistency_models#diffusers.ImagePipelineOutput)، وإلا يُعاد `tuple` يكون عنصره الأول قائمة بالصور المولّدة | |
| الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد. | |
| أمثلة: | |
| ```py | |
| >>> import torch | |
| >>> from diffusers import SanaPAGPipeline | |
| >>> pipe = SanaPAGPipeline.from_pretrained( | |
| ... "Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers", | |
| ... pag_applied_layers=["transformer_blocks.8"], | |
| ... torch_dtype=torch.float32, | |
| ... ) | |
| >>> pipe.to("cuda") | |
| >>> pipe.text_encoder.to(torch.bfloat16) | |
| >>> pipe.transformer = pipe.transformer.to(torch.bfloat16) | |
| >>> image = pipe(prompt='a cyberpunk cat with a neon sign that says "Sana"')[0] | |
| >>> image[0].save("output.png") | |
| ``` | |
| #### encode_prompt[[diffusers.SanaPAGPipeline.encode_prompt]] | |
| ```python | |
| encode_prompt(prompt: str | list[str], do_classifier_free_guidance: bool = True, negative_prompt: str = '', num_images_per_prompt: int = 1, device: typing.Optional[torch.device] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, clean_caption: bool = False, max_sequence_length: int = 300, complex_human_instruction: list[str] | None = None) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pag/pipeline_pag_sana.py#L188) | |
| **المعاملات:** | |
| prompt (`str` أو `list[str]`، *اختياري*) : النص الذي سيتم ترميزه | |
| negative_prompt (`str` أو `list[str]`، *اختياري*) : الأمر النصي الذي لا يوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير `negative_prompt_embeds` بدلاً منه. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كان `guidance_scale` أقل من `1`). بالنسبة إلى PixArt-Alpha، يجب أن يكون "". | |
| do_classifier_free_guidance (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم استخدام classifier free guidance أم لا | |
| num_images_per_prompt (`int`، *اختياري*، القيمة الافتراضية 1) : عدد الصور التي يجب توليدها لكل موجه | |
| device : (`torch.device`, *اختياري*): جهاز torch لوضع التضمينات الناتجة عليه | |
| prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، *مثلًا* وزن الأوامر. إذا لم تُقدَّم، فسيتم توليد تمثيلات النص من معامل الإدخال `prompt`. | |
| negative_prompt_embeds (`torch.Tensor`، *اختياري*) : تمثيلات نصية سالبة مُولّدة مسبقًا. بالنسبة إلى Sana، يجب أن تكون تمثيلات نص "" (فارغ). | |
| clean_caption (`bool`، القيمة الافتراضية `False`) : إذا كانت `True`، سيقوم الدالة بمعالجة الوصف المقدم وتنظيفه قبل الترميز. | |
| max_sequence_length (`int`، القيمة الافتراضية 300) : أقصى طول تسلسل يُستخدم للموجّه. | |
| complex_human_instruction (`list[str]`، الافتراضي `complex_human_instruction`) : إذا لم يكن `complex_human_instruction` فارغًا، فستستخدم الدالة تعليمات Human المعقدة للتلميح. | |
| يقوم بتشفير الموجه إلى حالات مخفية لمشفّر النص. | |
| ## SanaPipelineOutput[[diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput]] | |
| #### diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput[[diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput]] | |
| ```python | |
| diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray) | |
| ``` | |
| [المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/sana/pipeline_output.py#L10) | |
| **المعاملات:** | |
| images (`list[PIL.Image.Image]` أو `np.ndarray`) : قائمة من صور PIL منزوعة الضوضاء بطول `batch_size` أو مصفوفة numpy بأبعاد `(batch_size, height, width, num_channels)`. تمثل صور PIL أو مصفوفة numpy صورًا منزوعة الضوضاء من خط أنابيب الانتشار. | |
| فئة الإخراج لخطوط أنابيب Sana. | |
Xet Storage Details
- Size:
- 39.4 kB
- Xet hash:
- 4315d235056bbedc0bdb3c71cbec85c90eea953a6c70078d934a0d90b6f574a6
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.