Buckets:

hf-doc-build/doc / diffusers /main /ar /api /models /omnigen_transformer.md
mishig's picture
|
download
raw
7.99 kB

OmniGenTransformer2DModel

نموذج Transformer يقبل تعليمات متعددة الوسائط لتوليد صور لـ OmniGen.

ملخص الورقة البحثية هو:

أدى ظهور نماذج اللغة الكبيرة (LLMs) إلى توحيد مهام توليد اللغة وقلب موازين التفاعل بين الإنسان والآلة. ومع ذلك، في مجال توليد الصور، لا يزال النموذج الموحّد القادر على التعامل مع مهام متنوعة ضمن إطار عمل واحد غير مستكشف إلى حد كبير. في هذا العمل، نعرّف OmniGen، وهو نموذج انتشار جديد لتوليد الصور الموحّد. يتسم OmniGen بالخصائص التالية: 1) التوحيد: لا يُظهر OmniGen قدرات توليد الصور من النص فحسب، بل يدعم بشكل جوهري مهامًا لاحقة متنوعة، مثل تحرير الصور، والتوليد الموجّه بالموضوع، والتوليد الشرطي البصري. 2) البساطة: البنية المعمارية لـ OmniGen مبسطة للغاية، مما يلغي الحاجة إلى إضافات خارجية. علاوة على ذلك، مقارنةً بنماذج الانتشار الحالية، فهو أكثر سهولة في الاستخدام، ويمكنه إكمال المهام المعقدة من البداية إلى النهاية عبر التعليمات دون الحاجة إلى خطوات وسيطة إضافية، مما يبسّط بشكل كبير سير عمل توليد الصور. 3) نقل المعرفة: بفضل التعلم في صيغة موحدة، ينقل OmniGen المعرفة بفعالية عبر مهام مختلفة، ويتعامل مع المهام والمجالات غير المرئية، ويعرض قدرات جديدة. كما نستكشف قدرات الاستدلال للنموذج والتطبيقات المحتملة لآلية سلسلة الأفكار. يمثل هذا العمل المحاولة الأولى لنموذج توليد صور عام، وسننشر مواردنا على https://github.com/VectorSpaceLab/OmniGen لتعزيز التطورات المستقبلية.

import torch
from diffusers import OmniGenTransformer2DModel

transformer = OmniGenTransformer2DModel.from_pretrained("Shitao/OmniGen-v1-diffusers", subfolder="transformer", dtype=torch.bfloat16)

OmniGenTransformer2DModel[[diffusers.OmniGenTransformer2DModel]]

diffusers.OmniGenTransformer2DModel[[diffusers.OmniGenTransformer2DModel]]

diffusers.OmniGenTransformer2DModel(in_channels: int = 4, patch_size: int = 2, hidden_size: int = 3072, rms_norm_eps: float = 1e-05, num_attention_heads: int = 32, num_key_value_heads: int = 32, intermediate_size: int = 8192, num_layers: int = 32, pad_token_id: int = 32000, vocab_size: int = 32064, max_position_embeddings: int = 131072, original_max_position_embeddings: int = 4096, rope_base: int = 10000, rope_scaling: dict = None, pos_embed_max_size: int = 192, time_step_dim: int = 256, flip_sin_to_cos: bool = True, downscale_freq_shift: int = 0, timestep_activation_fn: str = 'silu')

المصدر

المعاملات:

in_channels (int، القيمة الافتراضية 4) : عدد القنوات في المدخلات.

patch_size (int، القيمة الافتراضية 2) : حجم البقع المكانية المستخدمة في طبقة تضمين البقع.

hidden_size (int، القيمة الافتراضية 3072) : بُعد الطبقات المخفية في النموذج.

rms_norm_eps (float، القيمة الافتراضية 1e-5) : قيمة Eps لطبقة RMSNorm.

num_attention_heads (int، القيمة الافتراضية 32) : عدد الرؤوس المستخدمة في الانتباه متعدد الرؤوس.

num_key_value_heads (int، القيمة الافتراضية 32) : عدد الرؤوس المستخدمة للمفاتيح والقيم في الانتباه متعدد الرؤوس.

intermediate_size (int، القيمة الافتراضية 8192) : بُعد الطبقة المخفية في طبقات FeedForward.

num_layers (int، الافتراضي 32) : عدد طبقات كتل التحويل (transformer blocks) المستخدمة.

pad_token_id (int، الافتراضي 32000) : المعرّف (id) لرمز الحشو (padding token).

vocab_size (int، القيمة الافتراضية 32064) : حجم مفردات التضمين.

rope_base (int، القيمة الافتراضية هي 10000) : القيمة الافتراضية لثيتا (theta) المستخدمة عند إنشاء RoPE.

rope_scaling (dict, اختياري) : عوامل التوسيع الخاصة بـ RoPE. يجب أن تحتوي على short_factor وlong_factor.

pos_embed_max_size (int، الافتراضي 192) : الحد الأقصى لحجم التضمينات الموضعية.

time_step_dim (int، القيمة الافتراضية 256) : بُعد المخرجات لتضمينات خطوة الزمن.

flip_sin_to_cos (bool، الافتراضي True) : ما إذا كان يجب عكس sin و cos في التضمينات الموضعية عند إعداد تضمينات خطوة الزمن.

downscale_freq_shift (int، الافتراضي 0) : إزاحة التردد المستخدمة عند تصغير تضمينات خطوات الزمن.

timestep_activation_fn (str، الافتراضي silu) : دالة التنشيط المستخدمة لتضمينات خطوة الزمن.

نموذج Transformer الذي تم تقديمه في OmniGen (https://huggingface.co/papers/2409.11340).

forward[[diffusers.OmniGenTransformer2DModel.forward]]

forward(hidden_states: Tensor, timestep: typing.Union[int, float, torch.FloatTensor], input_ids: Tensor, input_img_latents: list[torch.Tensor], input_image_sizes: dict[int, list[int]], attention_mask: Tensor, position_ids: Tensor, return_dict: bool = True)

المصدر

المعاملات:

hidden_states (torch.Tensor من الشكل (batch_size, in_channels, height, width)) : مدخلات hidden_states.

timestep (torch.LongTensor) : يُستخدم للإشارة إلى خطوة إزالة الضوضاء.

input_ids (torch.Tensor) : معرّفات رموز نصية متعددة الوسائط تُستخدم كشرط.

input_img_latents (list من torch.Tensor) : قائمة بالمتغيرات الكامنة (latents) للصور المدخلة المستخدمة كشرط.

input_image_sizes (dict من int إلى list من int) : تعيين من فهرس العينة إلى المواضع التي يجب وضع تضمينات صورة الإدخال فيها ضمن تسلسل الشرط.

attention_mask (torch.Tensor) : قناع الانتباه (Attention mask) للتسلسل متعدد الوسائط المشترك.

position_ids (torch.Tensor) : معرّفات المواقع المستخدمة لحساب التضمينات الموضعية.

return_dict (bool، اختياري، القيمة الافتراضية True) : ما إذا كان يجب إرجاع ~models.transformer_2d.Transformer2DModelOutput بدلاً من tuple عادي.

يعيد: ~models.transformer_2d.Transformer2DModelOutput أو tuple

إذا كان return_dict صحيحًا، يُعاد ~models.transformer_2d.Transformer2DModelOutput، وإلا يُعاد tuple عادي.

طريقة OmniGenTransformer2DModel الأمامية.

Xet Storage Details

Size:
7.99 kB
·
Xet hash:
cb8978f8b0cdb1b84404b0909018e004b195cea57130ea474ab379277dfd0a7c

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