Diffusers documentation
OmniGenTransformer2DModel
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
< source >( in_channels: int = 4patch_size: int = 2hidden_size: int = 3072rms_norm_eps: float = 1e-05num_attention_heads: int = 32num_key_value_heads: int = 32intermediate_size: int = 8192num_layers: int = 32pad_token_id: int = 32000vocab_size: int = 32064max_position_embeddings: int = 131072original_max_position_embeddings: int = 4096rope_base: int = 10000rope_scaling: dict = Nonepos_embed_max_size: int = 192time_step_dim: int = 256flip_sin_to_cos: bool = Truedownscale_freq_shift: int = 0timestep_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) — معرّف رمز الحشو. - vocab_size (
int، الافتراضي32064) — حجم مفردات قاموس التضمين. - rope_base (
int، الافتراضي10000) — قيمة ثيتا الافتراضية المستخدمة عند إنشاء 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
< source >( hidden_states: Tensortimestep: typing.Union[int, float, torch.FloatTensor]input_ids: Tensorinput_img_latents: listinput_image_sizes: dictattention_mask: Tensorposition_ids: Tensorreturn_dict: bool = True ) → ~models.transformer_2d.Transformer2DModelOutput or tuple
المعاملات
- hidden_states (
torch.Tensorمن الشكل(batch_size, in_channels, height, width)) — مدخلاتhidden_states. - timestep (
torch.LongTensor) — يُستخدم للإشارة إلى خطوة إزالة الضوضاء. - input_ids (
torch.Tensor) — معرّفات رموز النص متعددة الوسائط المستخدمة كشرط. - input_img_latents (
listoftorch.Tensor) — قائمة من المتغيرات الكامنة (latents) للصور المدخلة المستخدمة كشرط (conditioning). - 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 الأمامية.