Diffusers documentation
Bria 3.2
Bria 3.2
Bria 3.2 هو نموذج توليد الصور من النص من الجيل التالي الجاهز للاستخدام التجاري. ومع 4 مليارات من المعاملات فقط، يوفر جماليات استثنائية وعرضًا للنص، وقد تم تقييمه ليوفر نتائج مماثلة للنتائج التي يقدمها النماذج مفتوحة المصدر الرائدة، ويتفوق على النماذج المرخّصة الأخرى. إلى جانب كونه مبنيًا بالكامل على بيانات مرخّصة، يوفر 3.2 عدة مزايا للاستخدام المؤسسي والتجاري:
- حساب فعّال - النموذج أصغر بثلاثة أضعاف من النماذج المكافئة في السوق (4 مليارات من المعاملات مقابل 12 مليار من المعاملات في النماذج مفتوحة المصدر الأخرى)
- اتساق البنية: نفس البنية الموجودة في الإصدار 3.1—مثالي للمستخدمين الذين يبحثون عن الترقية دون أي انقطاع.
- تسريع الضبط الدقيق: تسريع الضبط الدقيق بمقدار الضعف على L40S و A100.
يمكن العثور على نقاط التفتيش الأصلية للنموذج الخاص بـ Bria 3.2 هنا. يمكن العثور على مستودع Github الخاص بـ Bria 3.2 هنا.
إذا كنت ترغب في معرفة المزيد عن منصة Bria والحصول على وصول تجريبي مجاني، يرجى زيارة bria.ai.
الاستخدام
بما أن النموذج محمي، فقبل استخدامه مع diffusers عليك أولاً الانتقال إلى صفحة Bria 3.2 على Hugging Face، وملء النموذج وقبول شروط الحماية. بعد الدخول، عليك تسجيل الدخول حتى يعرف نظامك أنك قد قبلت شروط الحماية.
استخدم الأمر أدناه لتسجيل الدخول:
hf auth login
BriaPipeline
فئة diffusers.BriaPipeline
< source >( transformer: BriaTransformer2DModelscheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | diffusers.schedulers.scheduling_utils.KarrasDiffusionSchedulersvae: AutoencoderKLtext_encoder: T5EncoderModeltokenizer: T5Tokenizerimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = None )
المعاملات
- transformer (BriaTransformer2DModel) — بنية Transformer الشرطية (MMDiT) لإزالة الضوضاء من كامنات الصورة المُرمّزة.
- scheduler (FlowMatchEulerDiscreteScheduler) —
جدول زمني يُستخدم بالاقتران مع
transformerلإزالة الضوضاء من كائنات الصورة المُرمّزة. - vae (AutoencoderKL) — نموذج الترميز التبايني التلقائي (VAE) لتشفير وفك تشفير الصور إلى تمثيلات كامنة ومنها.
- text_encoder (
T5EncoderModel) — مُشفِّر نص ثابت. تستخدم Bria T5، وتحديداً النسخة t5-v1_1-xxl. - tokenizer (
T5TokenizerFast) — مُقسِّم من فئة T5Tokenizer.
بناءً على FluxPipeline مع عدة تغييرات:
- لا توجد تمثيلات مجمّعة
- نستخدم التوسيع الصفري (zero padding) للموجّهات
- لا يوجد تضمين إرشادي لأن هذه ليست نسخة مُقطّرة
__call__
< source >( prompt: str | list[str] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 30timesteps: list[int] = Noneguidance_scale: float = 5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']max_sequence_length: int = 128clip_value: None | float = Nonenormalize: bool = False ) → ~pipelines.bria.BriaPipelineOutput or tuple
المعاملات
- prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمريرprompt_embedsبدلاً من ذلك. - height (
int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) — ارتفاع الصورة المولّدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج. - width (
int، اختياري، القيمة الافتراضية هي self.unet.config.sample_size * self.vae_scale_factor) — عرض الصورة المولدة بالبكسلات. يتم ضبطه على 1024 افتراضيًا للحصول على أفضل النتائج. - num_inference_steps (
int، اختياري، القيمة الافتراضية 50) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال. - timesteps (
list[int], اختياري) — خطوات زمنية مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معاملtimestepsفي طريقةset_timestepsالخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمريرnum_inference_steps. يجب أن تكون بترتيب تنازلي. - guidance_scale (
float، اختياري، القيمة الافتراضية 5.0) —
يعيد
~pipelines.bria.BriaPipelineOutput أو tuple
~pipelines.bria.BriaPipelineOutput إذا كان
return_dict هو True، وإلا فسيكون tuple. عند إرجاع tuple، يكون العنصر الأول قائمة
تحتوي على الصور المولّدة.
الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.
<<<<<<< HEAD
مقياس التوجيه كما هو مُعرَّف في التوجيه الانتشاري بدون مُصنِّف
Classifier-Free Diffusion Guidance. يُعرَّف guidance_scale على أنه w من المعادلة 2.
في ورقة Imagen. يتم تفعيل مقياس التوجيه عن طريق تعيين guidance_scale > 1. يشجّع مقياس توجيه أعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص prompt، وعادةً على حساب انخفاض جودة الصورة.
negative_prompt ( str or list[str] , اختياري ):
مقياس التوجيه كما هو معرّف في التوجيه الانتشاري بدون مُصنِّف. يُعرَّف guidance_scale على أنه w من المعادلة 2. في ورقة Imagen. يتم تفعيل مقياس التوجيه عن طريق تعيين guidance_scale > 1. يشجّع مقياس توجيه أعلى على توليد صور مرتبطة ارتباطًا وثيقًا بنص prompt، وعادةً على حساب انخفاض جودة الصورة.
negative_prompt (str أو list[str]، اختياري):
main الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه توليد الصورة. إذا لم تُعرَّف، يجب تمرير
negative_prompt_embedsبدلاً من ذلك. يتم تجاهلها عند عدم استخدام التوجيه (أي يتم تجاهلها إذا كانguidance_scaleأقل من1). num_images_per_prompt (int، اختياري، القيمة الافتراضية 1): عدد الصور المراد توليدها لكل موجّه. generator (torch.Generatorأوlist[torch.Generator]، اختياري): مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتمياً. latents (torch.FloatTensor، اختياري): متغيرات كامنة ضجيجية مُولَّدة مسبقاً، مٌستخرجة من توزيع غاوسي، لاستخدامها كمدخلات لتوليد الصورة. يمكن استخدامها لتعديل نفس التوليد بموجّهات مختلفة. إذا لم تٌوفَّر، سيتم توليد متجه latents عن طريق الاستخراج باستخدامgeneratorالعشوائي المُقدَّم. prompt_embeds (torch.FloatTensor، اختياري): تضمينات نصية مٌولَّدة مسبقاً. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلاً وزن الموجّه. إذا لم تٌوفَّر، سيتم توليد التضمينات النصية من معامل الإدخالprompt. negative_prompt_embeds (torch.FloatTensor، اختياري): تضمينات نصية سلبية مٌولَّدة مسبقاً. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلاً وزن الموجّه. إذا لم تٌوفَّر، سيتم توليد negative_prompt_embeds من معامل الإدخالnegative_prompt. output_type (str، اختياري، القيمة الافتراضية"pil"): صيغة الإخراج للصورة المٌولَّدة. اختر بين PIL:PIL.Image.Imageأوnp.array. return_dict (bool، اختياري، القيمة الافتراضيةTrue): ما إذا كان يجب إرجاع~pipelines.bria.BriaPipelineOutputبدلاً من tuple عادي. attention_kwargs (dict، اختياري): قاموس kwargs الذي إذا تم تحديده يٌمرَّر إلىAttentionProcessorكما هو مٌعرَّف تحتself.processorفي diffusers.models.attention_processor. 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، اختياري): قائمة مدخلات المتجهات لدالةcallback_on_step_end. سيتم تمرير المتجهات المحددة في القائمة كحجةcallback_kwargs. لن تتمكن من تضمين متغيرات غير مدرجة في خاصية._callback_tensor_inputsلفئة خط الأنابيب الخاص بك. max_sequence_length (intالقيمة الافتراضية 256): أقصى طول تسلسل لاستخدامه معprompt. clip_value (float، اختياري): إذا تم ضبطه، يتم قص الضجيج المٌتنبَّأ به إلى النطاق[-clip_value, clip_value]في كل خطوة إزالة ضجيج. normalize (bool، اختياري، القيمة الافتراضيةFalse): ما إذا كان يجب تطبيع الضجيج المٌتنبَّأ به في كل خطوة إزالة ضجيج.
أمثلة:
>>> import torch
>>> from diffusers import BriaPipeline
>>> pipe = BriaPipeline.from_pretrained("briaai/BRIA-3.2", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
# BRIA's T5 text encoder is sensitive to precision. We need to cast it to bfloat16 and keep the final layer in float32.
>>> pipe.text_encoder = pipe.text_encoder.to(dtype=torch.bfloat16)
>>> for block in pipe.text_encoder.encoder.block:
... block.layer[-1].DenseReluDense.wo.to(dtype=torch.float32)
# BRIA's VAE is not supported in mixed precision, so we use float32.
>>> if pipe.vae.config.shift_factor == 0:
... pipe.vae.to(dtype=torch.float32)
>>> prompt = "Photorealistic food photography of a stack of fluffy pancakes on a white plate, with maple syrup being poured over them. On top of the pancakes are the words 'BRIA 3.2' in bold, yellow, 3D letters. The background is dark and out of focus."
>>> image = pipe(prompt).images[0]
>>> image.save("bria.png")encode_prompt
< source >( prompt: str | list[str]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 128lora_scale: float | None = None )
المعاملات
- prompt (
strأوlist[str]، اختياري) — الموجّه الذي سيتم ترميزه - device — (
torch.device): جهاز torch - num_images_per_prompt (
int) — عدد الصور التي يجب توليدها لكل موجه - do_classifier_free_guidance (
bool) — ما إذا كان سيتم استخدام classifier free guidance أم لا - negative_prompt (
strأوlist[str]، اختياري) — الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه توليد الصورة. إذا لم يُعرَّف، يجب تمريرnegative_prompt_embedsبدلاً من ذلك. يتم تجاهله عند عدم استخدام التوجيه (أي يتم تجاهله إذا كانguidance_scaleأقل من1). - prompt_embeds (
torch.FloatTensor, اختياري) — تضمينات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد تضمينات النص من معامل الإدخالprompt. - negative_prompt_embeds (
torch.FloatTensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد negative_prompt_embeds من معامل الإدخالnegative_prompt.