# Emu3

## نظرة عامة

قُدِّم نموذج Emu3 في [Emu3: Next-Token Prediction is All You Need](https://huggingface.co/papers/2409.18869) من قِبل Xinlong Wang وXiaosong Zhang وZhengxiong Luo وQuan Sun وYufeng Cui وJinsheng Wang وFan Zhang وYueze Wang وZhen Li وQiying Yu وYingli Zhao وYulong Ao وXuebin Min وTao Li وBoya Wu وBo Zhao وBowen Zhang وLiangdong Wang وGuang Liu وZheqi He وXi Yang وJingjing Liu وYonghua Lin وTiejun Huang وZhongyuan Wang.

Emu3 هو نموذج لغة كبير متعدد الوسائط يستخدم التكميم المتجهي لتجزئة الصور إلى رموز منفصلة. تُدمج رموز الصور المتجزئة لاحقًا مع معرّفات رموز النص لتوليد الصور والنصوص. كما يمكن للنموذج توليد صور إضافية من خلال التنبؤ بمعرّفات رموز الصور.

المستخلص من الورقة البحثية هو كالتالي:

*على الرغم من أن التنبؤ بالرمز التالي يُعد مسارًا واعدًا نحو الذكاء الاصطناعي العام، إلا أنه واجه صعوبات في التميز في المهام متعددة الوسائط، التي لا تزال تتحكم فيها نماذج الانتشار (مثل Stable Diffusion) والمناهج التركيبية (مثل CLIP مع LLMs). في هذه الورقة، نقدم Emu3، وهو مجموعة جديدة من النماذج متعددة الوسائط المتقدمة التي تم تدريبها حصريًا باستخدام التنبؤ بالرمز التالي. من خلال تحويل الصور والنصوص والفيديوهات إلى فضاء منفصل، قمنا بتدريب محول واحد من الصفر على خليط من التسلسلات متعددة الوسائط. يتفوق Emu3 على عدة نماذج محددة للمهام راسخة في كل من مهام التوليد والإدراك، متجاوزًا النماذج الرائدة مثل SDXL وLLaVA-1.6، مع القضاء على الحاجة إلى معماريات الانتشار أو التركيبية. كما يمكن لـ Emu3 توليد فيديو عالي الدقة من خلال التنبؤ بالرمز التالي في تسلسل الفيديو. نبسّط تصاميم النماذج المعقدة متعددة الوسائط من خلال التوجه نحو تركيز واحد: الرموز، مما يفتح إمكانات كبيرة للتوسع أثناء التدريب والاستدلال. تُظهر نتائجنا أن التنبؤ بالرمز التالي مسار واعد لبناء ذكاء عام متعدد الوسائط يتجاوز اللغة. نفتح مصادر التقنيات والنماذج الرئيسية لدعم مزيد من البحث في هذا الاتجاه.*

نصائح:

- ننصح المستخدمين بإعداد `processor.tokenizer.padding_side = "left"` قبل التوليد المجمّع، لأن ذلك يؤدي إلى نتائج أكثر دقة.

- لاحظ أن النموذج تم تدريبه على تنسيق محدد للبرومبتات الخاصة بالدردشة. استخدم `processor.apply_chat_template(my_conversation_dict)` لتنسيق البرومبتات الخاصة بك بشكل صحيح.

- يحتوي Emu3 على نقطتي تفتيش مختلفتين، واحدة لتوليد الصور وأخرى لتوليد النصوص، لذا تأكد من استخدام نقطة التفتيش الصحيحة عند تحميل النموذج. ولتوليد صورة، يُنصح باستخدام `prefix_constraints` بحيث تُسحب الرموز المولّدة حصريًا من الرموز المتاحة للصور. راجع الأمثلة أدناه للاستخدام.

> [!TIP]
> تستخدم عملية تنفيذ Emu3 في Transformers رمز صورة خاصًا للإشارة إلى المكان الذي يجب فيه دمج تمثيلات الصورة. ليس رمز الصورة الخاص جديدًا، بل يستخدم أحد الرموز المحجوزة: `<|extra_0|>`. يجب عليك إضافة `<image>` إلى مطالبتك في المكان الذي ينبغي فيه تضمين الصورة من أجل التوليد الصحيح.

تمت مساهمة هذا النموذج من قِبل [RaushanTurganbay](https://huggingface.co/RaushanTurganbay). يمكن العثور على الكود الأصلي [هنا](https://github.com/baaivision/Emu3).

## مثال على الاستخدام

### استدلال توليد النص

إليك كيفية تحميل النموذج وتنفيذ الاستدلال بدقة نصفية (`torch.bfloat16`) لتوليد مخرجات نصية من مدخلات نصية أو من مدخلات نصية وصورية:

```python
import requests
from PIL import Image

from transformers import Emu3ForConditionalGeneration, Emu3Processor

processor = Emu3Processor.from_pretrained("BAAI/Emu3-Chat-hf")
model = Emu3ForConditionalGeneration.from_pretrained("BAAI/Emu3-Chat-hf", device_map="auto")

# prepare image and text prompt
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
prompt = "What do you see in this image?<image>"

inputs = processor(images=image, text=prompt, return_tensors="pt").to(model.device)

# autoregressively complete prompt
output = model.generate(**inputs, max_new_tokens=50)
print(processor.decode(output[0], skip_special_tokens=True))
```

### استدلال توليد الصور

يمكن لـ Emu3 أيضاً توليد الصور من مدخلات نصية. إليك الطريقة:

```python
processor = Emu3Processor.from_pretrained("BAAI/Emu3-Gen-hf")
model = Emu3ForConditionalGeneration.from_pretrained("BAAI/Emu3-Gen-hf", device_map="auto", attn_implementation="flash_attention_2")

inputs = processor(
    text=["a portrait of young girl. masterpiece, film grained, best quality.", "a dog running under the rain"],
    padding=True,
    return_tensors="pt",
    return_for_image_generation=True,
)
inputs = inputs.to(device=model.device)

neg_prompt = "lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry."
neg_inputs = processor(text=[neg_prompt] * 2, return_tensors="pt").to(device=model.device)

image_sizes = inputs.pop("image_sizes")
HEIGHT, WIDTH = image_sizes[0]
VISUAL_TOKENS = model.vocabulary_mapping.image_tokens

def prefix_allowed_tokens_fn(batch_id, input_ids):
    height, width = HEIGHT, WIDTH
    visual_tokens = VISUAL_TOKENS
    image_wrapper_token_id = torch.tensor([processor.tokenizer.image_wrapper_token_id], device=model.device)
    eoi_token_id = torch.tensor([processor.tokenizer.eoi_token_id], device=model.device)
    eos_token_id = torch.tensor([processor.tokenizer.eos_token_id], device=model.device)
    pad_token_id = torch.tensor([processor.tokenizer.pad_token_id], device=model.device)
    eof_token_id = torch.tensor([processor.tokenizer.eof_token_id], device=model.device)
    eol_token_id = processor.tokenizer.encode("<|extra_200|>", return_tensors="pt").to(model.device)[0]

    position = torch.nonzero(input_ids == image_wrapper_token_id, as_tuple=True)[0][0]
    offset = input_ids.shape[0] - position
    if offset % (width + 1) == 0:
        return (eol_token_id, )
    elif offset == (width + 1) * height + 1:
        return (eof_token_id, )
    elif offset == (width + 1) * height + 2:
        return (eoi_token_id, )
    elif offset == (width + 1) * height + 3:
        return (eos_token_id, )
    elif offset > (width + 1) * height + 3:
        return (pad_token_id, )
    else:
        return visual_tokens

out = model.generate(
    **inputs,
    max_new_tokens=50_000, # make sure to have enough tokens for one image
    prefix_allowed_tokens_fn=prefix_allowed_tokens_fn,
    return_dict_in_generate=True,
    negative_prompt_ids=neg_inputs.input_ids, # indicate for Classifier-Free Guidance
    negative_prompt_attention_mask=neg_inputs.attention_mask,
)

image = model.decode_image_tokens(out.sequences[:, inputs.input_ids.shape[1]: ], height=HEIGHT, width=WIDTH)
images = processor.postprocess(list(image.float()), return_tensors="PIL.Image.Image").to(model.device) # internally we convert to np but it's not supported in bf16 precision
for i, image in enumerate(images['pixel_values']):
    image.save(f"result{i}.png")

```

## Emu3Config[[transformers.Emu3Config]]

#### transformers.Emu3Config[[transformers.Emu3Config]]

```python
transformers.Emu3Config(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vq_config: dict | transformers.models.emu3.configuration_emu3.Emu3VQVAEConfig | None = None, text_config: dict | transformers.models.emu3.configuration_emu3.Emu3TextConfig | None = None, vocabulary_map: dict[str, int] | None = None, tie_word_embeddings: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/configuration_emu3.py#L123)

**المعاملات:**

vq_config (`Union[dict, ~models.emu3.configuration_emu3.Emu3VQVAEConfig]`، *اختياري*) : قاموس إعدادات وحدة التكميم المتجهي.

text_config (`Union[dict, ~models.emu3.configuration_emu3.Emu3TextConfig]`، *اختياري*) : كائن الإعدادات أو قاموس العمود الفقري النصي.

vocabulary_map (`dict`، *اختياري*) : قاموس يحتوي على خريطة المفردات من مُجزّئ النص. يُستخدم للحصول على الرموز من مدخلات الصورة.

tie_word_embeddings (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب ربط ترميزات الأوزان وفقاً لخريطة `tied_weights_keys` الخاصة بالنموذج.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Emu3Model. تُستخدم لاستحداث نموذج Emu3 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [Emu3-community/Emu3-Chat-hf](https://huggingface.co/Emu3-community/Emu3-Chat-hf)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

## Emu3VQVAEConfig[[transformers.Emu3VQVAEConfig]]

#### transformers.Emu3VQVAEConfig[[transformers.Emu3VQVAEConfig]]

```python
transformers.Emu3VQVAEConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, codebook_size: int = 32768, embed_dim: int = 4, latent_channels: int = 4, double_latent: bool = False, in_channels: int = 3, out_channels: int = 3, temporal_downsample_factor: int = 4, base_channels: int = 256, channel_multiplier: list[int] | tuple[int, ...] = (1, 2, 2, 4), num_res_blocks: int = 2, attn_resolutions: list[int] | tuple[int, ...] = (3,), hidden_size: int = 1024, num_attention_heads: int = 1, attention_dropout: float | int = 0.0)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/configuration_emu3.py#L26)

**المعاملات:**

codebook_size (`int`، *اختياري*، القيمة الافتراضية `32768`) : عدد كتيّبات الأكواد المتوازية التي يستخدمها النموذج.

embed_dim (`int`، *اختياري*، القيمة الافتراضية 4) : بُعد المتجه المُكمَّم في دفتر الرموز.

latent_channels (`int`، *اختياري*، القيمة الافتراضية `4`) : عدد القنوات في الفضاء الكامن.

double_latent (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم استخدام قنوات z المزدوجة.

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

out_channels (`int`، *اختياري*، القيمة الافتراضية 3) : قناة المخرج لفك الترميز.

temporal_downsample_factor (`int`، *اختياري*، القيمة الافتراضية 4) : عامل تقليل العينات الزمنية.

base_channels (`int`، *اختياري*، القيمة الافتراضية 256) : عدد القنوات الأساسي للكتل الوسيطة.

channel_multiplier (`list[int]`، *اختياري*، القيمة الافتراضية `[1, 2, 2, 4]`) : معامل توسيع القنوات في الكتل الوسيطة.

num_res_blocks (`int`، *اختياري*، القيمة الافتراضية 2) : رقم كتلة البقايا في كل مرحلة.

attn_resolutions (`list[int]`، *اختياري*، القيمة الافتراضية `[3]`) : فهارس المراحل التي تُطبَّق عليها الانتباه.

hidden_size (`int`، *اختياري*، القيمة الافتراضية `1024`) : بُعد التمثيلات المخفية.

num_attention_heads (`int`، *اختياري*، القيمة الافتراضية `1`) : عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer.

attention_dropout (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.0`) : نسبة الإسقاط (dropout) لاحتمالات الانتباه.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Emu3Model. تُستخدم لاستحداث نموذج Emu3 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [Emu3-community/Emu3-Chat-hf](https://huggingface.co/Emu3-community/Emu3-Chat-hf)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

```python
>>> from transformers import Emu3VQVAE, Emu3VQVAEConfig

>>> # Initializing a video VQ model of Emu3 configuration
>>> configuration = Emu3VQVAEConfig()

>>> # Initializing a model from the Emu3 VQ model style configuration
>>> model = Emu3VQVAE(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## Emu3TextConfig[[transformers.Emu3TextConfig]]

#### transformers.Emu3TextConfig[[transformers.Emu3TextConfig]]

```python
transformers.Emu3TextConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 184622, hidden_size: int = 4096, intermediate_size: int = 14336, num_hidden_layers: int = 32, num_attention_heads: int = 32, num_key_value_heads: int | None = 8, hidden_act: str = 'silu', max_position_embeddings: int = 9216, rms_norm_eps: float = 1e-05, use_cache: bool = True, pad_token_id: int = 151643, bos_token_id: int = 151849, eos_token_id: int | list[int] | None = 151850, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None, attention_dropout: float | int = 0.1, initializer_range: float = 0.02, tie_word_embeddings: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/configuration_emu3.py#L78)

**المعاملات:**

vocab_size (`int`، *اختياري*، القيمة الافتراضية `184622`) : حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة `input_ids`.

hidden_size (`int`، *اختياري*، القيمة الافتراضية `4096`) : بُعد التمثيلات المخفية.

intermediate_size (`int`، *اختياري*، القيمة الافتراضية `14336`) : بُعد تمثيلات MLP.

num_hidden_layers (`int`، *اختياري*، القيمة الافتراضية `32`) : عدد الطبقات المخفية في مُفكِّك Transformer.

num_attention_heads (`int`، *اختياري*، القيمة الافتراضية `32`) : عدد رؤوس الانتباه في كل طبقة انتباه داخل مُفكِّك Transformer.

num_key_value_heads (`int`، *اختياري*، القيمة الافتراضية `8`) : يمثل هذا عدد رؤوس key_value التي يجب استخدامها لتنفيذ Grouped Query Attention. إذا كان `num_key_value_heads=num_attention_heads`، فسيستخدم النموذج Multi Head Attention (MHA)، وإذا كان `num_key_value_heads=1` فسيستخدم النموذج Multi Query Attention (MQA)، وإلا فسيتم استخدام GQA. عند تحويل نقطة تفتيش متعددة الرؤوس إلى نقطة تفتيش GQA، يجب بناء كل رأس key و value ضمن المجموعة عن طريق meanpooling جميع الرؤوس الأصلية داخل تلك المجموعة. لمزيد من التفاصيل، راجعوا [هذا البحث](https://huggingface.co/papers/2305.13245). إذا لم يتم تحديد القيمة، فستتخذ القيمة الافتراضية `num_attention_heads`.

hidden_act (`str`، *اختياري*، القيمة الافتراضية `silu`) : دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، `"gelu"`، `"relu"`، `"silu"`، وما إلى ذلك.

max_position_embeddings (`int`، *اختياري*، القيمة الافتراضية `9216`) : الحد الأقصى لطول التسلسل الذي قد يُستخدم به هذا النموذج على الإطلاق.

rms_norm_eps (`float`، *اختياري*، القيمة الافتراضية `1e-05`) : قيمة الإيبسلون المستخدمة في طبقات تطبيع rms.

use_cache (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كان `config.is_decoder=True` أو عندما يكون النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط.

pad_token_id (`int`، *اختياري*، القيمة الافتراضية `151643`) : معرّف الرمز المستخدم للتعبئة في المفردات.

bos_token_id (`int`، *اختياري*، القيمة الافتراضية `151849`) : معرّف الرمز المستخدم لبدء البث في المفردات.

eos_token_id (`Union[int, list[int]]`، *اختياري*، القيمة الافتراضية `151850`) : معرّف الرمز المستخدم لنهاية البث في المفردات.

rope_parameters (`Union[~modeling_rope_utils.RopeParameters, dict]`، *اختياري*) : قاموس يحتوي على معاملات التهيئة الخاصة بتضمينات RoPE. يجب أن يحتوي القاموس على قيمة لـ `rope_theta`، وبشكل اختياري معاملات تُستخدم للتوسيع في حال رغبتَ في استخدام RoPE مع `max_position_embeddings` أطول.

attention_dropout (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.1`) : نسبة الإسقاط (dropout) لاحتمالات الانتباه.

initializer_range (`float`، *اختياري*، القيمة الافتراضية `0.02`) : الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.

tie_word_embeddings (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب ربط ترميزات الأوزان وفقاً لخريطة `tied_weights_keys` الخاصة بالنموذج.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Emu3Model. تُستخدم لاستحداث نموذج Emu3 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [Emu3-community/Emu3-Chat-hf](https://huggingface.co/Emu3-community/Emu3-Chat-hf)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

مثال:

```python
>>> from transformers import Emu3Model, Emu3Config

>>> # Initializing a Emu3-community/Emu3-Chat-hf style configuration
>>> configuration = Emu3Config()

>>> # Initializing a model from the Emu3-community/Emu3-Chat-hf style configuration
>>> model = Emu3Model(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## Emu3Processor[[transformers.Emu3Processor]]

#### transformers.Emu3Processor[[transformers.Emu3Processor]]

```python
transformers.Emu3Processor(image_processor, tokenizer, chat_template = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/processing_emu3.py#L57)

**المعاملات:**

image_processor (`Emu3ImageProcessor`) : مُعالج الصور هو مدخل مطلوب.

tokenizer (`GPT2Tokenizer`) : المُقسِّم هو مدخل إلزامي.

chat_template (`str`) : قالب Jinja لتحويل قوائم الرسائل في المحادثة إلى نص قابل للتحويم.

ينشئ معالج Emu3Processor يجمع معالج الصور ومعالج الرموز في معالج واحد.

يوفر [Emu3Processor](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3Processor) جميع وظائف [Emu3ImageProcessor](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3ImageProcessor) و[GPT2Tokenizer](/docs/transformers/main/ar/model_doc/gpt2#transformers.GPT2Tokenizer). راجع [~Emu3ImageProcessor](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3ImageProcessor) و[~GPT2Tokenizer](/docs/transformers/main/ar/model_doc/gpt2#transformers.GPT2Tokenizer) لمزيد من المعلومات.

#### __call__[[transformers.Emu3Processor.__call__]]

```python
__call__(images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None, text: str | list[str] | list[list[str]] | None = None, **kwargs: *<class 'transformers.models.emu3.processing_emu3.Emu3ProcessorKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/processing_emu3.py#L77)

**المعاملات:**

images (`Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]`, *اختياري*) : الصورة التي سيتم معالجتها مسبقًا. يتوقع صورة واحدة أو دفعة من الصور بقيم بكسل تتراوح بين 0 و255. إذا كنت تمرر صورًا بقيم بكسل بين 0 و1، فاضبط `do_rescale=False`.

text (`Union[str, list[str], list[list[str]]]`، *اختياري*) : التسلسل أو الدفعة من التسلسلات المراد ترميزها. يمكن أن يكون كل تسلسل نصًا أو قائمة من النصوص (نص مُجزَّأ مسبقًا). إذا مررت مدخلات مُجزَّأة مسبقًا، فاضبط `is_split_into_words=True` لتجنب الغموض مع المدخلات المُجمَّعة في دفعات.

return_for_image_generation (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان النص المُعالَج مخصصًا لمهام توليد الصور. عند تعيين `True`، يُعدّ المُعالِج المدخلات لتوليد الصور عن طريق إضافة رموز بداية الصورة ومعلومات الحجم إلى الاستدعاء، ولا ينبغي تقديم الصور. عند تعيين `False`، يُعدّ المُعالِج المدخلات لتوليد النص من الصور والنص، مما يتطلب تقديم كلا المدخلين.

ratio (`str`، *kwargs*، *اختياري*، القيمة الافتراضية هي `"1 --1"`): نسبة الصورة لإعادة تغيير حجم الصورة.

image_area (`int`، *kwargs*، *اختياري*، القيمة الافتراضية `518400`) : مساحة الصورة لإعادة تغيير حجم الصورة.

return_tensors (`str` أو [TensorType](/docs/transformers/main/ar/internal/file_utils#transformers.TensorType)، *اختياري*) : إذا تم تعيينه، فسيُرجع تينسورات من إطار عمل محدد. القيم المقبولة هي:  - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من NumPy.

- ****kwargs** ([ProcessingKwargs](/docs/transformers/main/ar/main_classes/processors#transformers.ProcessingKwargs)، *اختياري*) : خيارات معالجة إضافية لكل نمط (نص، صور، مقاطع فيديو، صوت). تُدرج المعلمات الخاصة بالنموذج أعلاه؛ راجع فئة TypedDict للحصول على القائمة الكاملة للحجج المدعومة.

**يعيد:** `~feature_extraction_utils.BatchFeature`

- **data** (`dict`، *اختياري*) -- قاموس من القوائم/المصفوفات/الموترات التي تُعاد بواسطة طرائق __call__/pad ('input_values'، 'attention_mask'، وما إلى ذلك).
- **tensor_type** (`Union[None, str, TensorType]`، *اختياري*) -- يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.
- **skip_tensor_conversion** (`list[str]` أو `set[str]`، *اختياري*) -- قائمة أو مجموعة من المفاتيح التي يجب ألا يتم تحويلها إلى متجهات، حتى عند تحديد `tensor_type`.

## Emu3ImageProcessor[[transformers.Emu3ImageProcessor]]

#### transformers.Emu3ImageProcessor[[transformers.Emu3ImageProcessor]]

```python
transformers.Emu3ImageProcessor(do_resize: bool = True, resample: Resampling = <Resampling.BICUBIC: 3>, do_rescale: bool = True, rescale_factor: int | float = 0.00392156862745098, do_normalize: bool = True, image_mean: float | list[float] | None = None, image_std: float | list[float] | None = None, do_convert_rgb: bool = True, do_pad: bool = True, min_pixels: int = 262144, max_pixels: int = 1048576, spatial_factor: int = 8, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/image_processing_emu3.py#L94)

**المعاملات:**

do_resize (`bool`, *اختياري*, الافتراضي `True`) : ما إذا كان سيتم تغيير أبعاد الصورة (الارتفاع، العرض).

resample (`PILImageResampling`، *اختياري*، الافتراضي `Resampling.BICUBIC`) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة.

do_rescale (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إعادة تحجيم الصورة حسب معامل التحجيم المحدد `rescale_factor`.

rescale_factor (`int` أو `float`، *اختياري*، القيمة الافتراضية `1/255`) : معامل المقياس المستخدم عند إعادة تحجيم الصورة.

do_normalize (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم تطبيع الصورة.

image_mean (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية هي `[0.48145466, 0.4578275, 0.40821073]`) : المتوسط المستخدم عند تطبيع الصورة. وهو عدد عشري أو قائمة من الأعداد العشرية لكل قناة في الصورة.

image_std (`float` أو `list[float]`، *اختياري*، القيمة الافتراضية `[0.26862954, 0.26130258, 0.27577711]`) : الانحراف المعياري المستخدم عند تطبيع الصورة. وهو عدد عشري أو قائمة من الأعداد العشرية لكل قناة في الصورة.

do_convert_rgb (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم تحويل الصورة إلى RGB.

do_pad (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب ملء الصورة. إذا كانت `True`، فسيتم ملء بُعد الباتش (patch) للصور في الدفعة (batch) حتى أكبر عدد من الباتشات في الدفعة. سيتم تطبيق الملء في الأسفل واليمين باستخدام الأصفار.

min_pixels (`int`، *اختياري*، القيمة الافتراضية `512 * 512`) : الحد الأدنى لعدد بكسلات الصورة لإعادة تغيير حجم الصورة.

max_pixels (`int`، *اختياري*، القيمة الافتراضية `1024 * 1024`) : الحد الأقصى لعدد بكسلات الصورة لإعادة تغيير حجم الصورة.

spatial_factor (`int`، *اختياري*، القيمة الافتراضية 8) : عامل التصغير المكاني الذي سيُصغَّر به حجم الصورة في مرحلة استخراج الميزات

ينشئ معالج صور Emu3 يقوم بتغيير حجم الصور ديناميكيًا بناءً على الصور الأصلية.

#### preprocess[[transformers.Emu3ImageProcessor.preprocess]]

```python
preprocess(images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']], do_resize: bool | None = None, size: dict[str, int] | None = None, resample: PIL.Image.Resampling | None = None, do_rescale: bool | None = None, rescale_factor: float | None = None, do_normalize: bool | None = None, image_mean: float | list[float] | None = None, image_std: float | list[float] | None = None, do_convert_rgb: bool | None = None, do_pad: bool = True, return_tensors: str | transformers.utils.generic.TensorType | None = None, data_format: transformers.image_utils.ChannelDimension | None = <ChannelDimension.FIRST: 'channels_first'>, input_data_format: str | transformers.image_utils.ChannelDimension | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/image_processing_emu3.py#L298)

**المعاملات:**

images (`ImageInput`) : صورة للمعالجة المسبقة. يتوقع صورة واحدة أو دفعة من الصور بقيم بكسل تتراوح بين 0 و255. إذا كنت تمرر صوراً بقيم بكسل بين 0 و1، فاضبط `do_rescale=False`.

do_resize (`bool`، *اختياري*، الافتراضي `self.do_resize`) : ما إذا كان يجب تغيير حجم الصورة.

size (`dict[str, int]`، *اختياري*، القيمة الافتراضية هي `self.size`) : حجم الصورة بعد تغيير حجمها. يتم تغيير حجم أقصر حافة في الصورة إلى size["shortest_edge"]، مع تغيير حجم أطول حافة للحفاظ على نسبة أبعاد الإدخال.

resample (`int`، *اختياري*، القيمة الافتراضية `self.resample`) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعداد `PILImageResampling`. لا يؤثر إلا إذا كانت `do_resize` مضبوطة على `True`.

do_rescale (`bool`، *اختياري*، الافتراضي `self.do_rescale`) : ما إذا كان يجب إعادة تحجيم الصورة.

rescale_factor (`float`، *اختياري*، القيمة الافتراضية `self.rescale_factor`) : عامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان `do_rescale` مضبوطًا على `True`.

do_normalize (`bool`، *اختياري*، الافتراضي `self.do_normalize`) : ما إذا كان سيتم تطبيع الصورة.

image_mean (`float` أو `list[float]`، *اختياري*، الافتراضي `self.image_mean`) : متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

image_std (`float` أو `list[float]`، *اختياري*، الافتراضي `self.image_std`) : الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له تأثير إلا إذا تم تعيين `do_normalize` إلى `True`.

do_convert_rgb (`bool`، *اختياري*، الافتراضي `self.do_convert_rgb`) : ما إذا كان سيتم تحويل الصورة إلى RGB.

do_pad (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب ملء الصورة. إذا كانت `True`، فسيتم ملء بُعد الباتش (patch) للصور في الدفعة (batch) حتى أكبر عدد من الباتشات في الدفعة. سيتم تطبيق الملء في الأسفل واليمين باستخدام الأصفار.

return_tensors (`str` أو `TensorType`، *اختياري*) : نوع المصفوفات (tensors) التي سيتم إرجاعها. يمكن أن يكون أحد ما يلي: - غير مُعيَّن: إرجاع قائمة من `np.ndarray`. - `TensorType.PYTORCH` أو `'pt'`: إرجاع دفعة (batch) من النوع `torch.Tensor`. - `TensorType.NUMPY` أو `'np'`: إرجاع دفعة (batch) من النوع `np.ndarray`.

data_format (`ChannelDimension` أو `str`، *اختياري*، الافتراضي هو `ChannelDimension.FIRST`) : تنسيق بُعد القناة للصورة الناتجة. يمكن أن يكون أحد ما يلي: - `"channels_first"` أو `ChannelDimension.FIRST`: صورة بتنسيق (num_channels, height, width). - `"channels_last"` أو `ChannelDimension.LAST`: صورة بتنسيق (height, width, num_channels). - غير مُعيَّن: استخدام تنسيق بُعد القناة للصورة المدخلة.

input_data_format (`ChannelDimension` أو `str`، *اختياري*) : تنسيق بُعد القناة للصورة المدخلة. إذا لم يتم ضبطه، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي: - `"channels_first"` أو `ChannelDimension.FIRST`: صورة بتنسيق (num_channels, height, width). - `"channels_last"` أو `ChannelDimension.LAST`: صورة بتنسيق (height, width, num_channels). - `"none"` أو `ChannelDimension.NONE`: صورة بتنسيق (height, width).

## Emu3VQVAE[[transformers.Emu3VQVAE]]

#### transformers.Emu3VQVAE[[transformers.Emu3VQVAE]]

```python
transformers.Emu3VQVAE(config: Emu3VQVAEConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L928)

**المعاملات:**

config ([Emu3VQVAEConfig](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3VQVAEConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج VQ-VAE المستخدم في Emu3 لتشفير/فك تشفير الصور إلى رموز منفصلة. يتبع هذا النموذج ورقة "Make-a-scene: Scene-based text-to-image generation with human priors" من [ Oran Gafni, Adam Polyak, Oron Ashual, Shelly Sheynin, Devi Parikh, and Yaniv Taigman](https://huggingface.co/papers/2203.13131).

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.Emu3VQVAE.forward]]

```python
forward(*args, **kwargs)
```

قيمة وهمية لمسار منقّط (مثل `torch.float32`): سلاسل الوصول إلى السمات، والاستدعاءات تتصرف كمُزيّنات مُمرِّرة، و`repr` هو المسار المنقّط، وعند استخدامه كصنف أساسي يُستبدل بصنف أساسي من نوع `type` عادي (بموجب `__mro_entries__` في PEP 560)، بحيث تحتفظ الأصناف الفرعية الحقيقية بفئة ميتا عادية، وتقرأ `inspect.signature` دالة `__init__` الحقيقية الخاصة بها بدلاً من تلك الموجودة في القيمة الوهمية.

## Emu3TextModel[[transformers.Emu3TextModel]]

#### transformers.Emu3TextModel[[transformers.Emu3TextModel]]

```python
transformers.Emu3TextModel(config: Emu3TextConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L1176)

**المعاملات:**

config ([Emu3TextConfig](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3TextConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Emu3 Text الخام الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.Emu3TextModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L1195)

**المعاملات:**

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها من النطاق `[0, config.n_positions - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`، *اختياري*) : حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكوّن هذا عادةً من `past_key_values` التي يعيدها النموذج في مرحلة سابقة من فك الترميز، عندما يكون `use_cache=True` أو `config.use_cache=True`. يُسمح فقط بتمرير كائن [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache) كمدخل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache). إذا لم يتم تمرير `past_key_values`، فسيتم تهيئة [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache) افتراضيًا. سيُخرج النموذج نفس تنسيق الذاكرة المؤقتة المُدخل. إذا تم استخدام `past_key_values`، يُتوقع من المستخدم إدخال `input_ids` غير المعالجة فقط (تلك التي لم تُعطَ حالات مفاتيح وقيم سابقة لها في هذا النموذج) بأبعاد `(batch_size, unprocessed_length)` بدلاً من جميع `input_ids` بأبعاد `(batch_size, sequence_length)`.

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

use_cache (`bool`، *اختياري*) : إذا تم ضبطه على `True`، تُعاد حالات المفاتيح والقيم `past_key_values` ويمكن استخدامها لتسريع فك الترميز (انظر `past_key_values`).

**يعيد:** [BaseModelOutputWithPast](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) أو `tuple(torch.Tensor)`

[BaseModelOutputWithPast](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([Emu3Config](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3Config)) والمدخلات.

تتجاوز طريقة [Emu3TextModel](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3TextModel) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.

  إذا تم استخدام `past_key_values`، فإن الحالة المخفية الأخيرة فقط من التسلسلات ذات الشكل `(batch_size, 1, hidden_size)` هي التي تُخرج.
- **past_key_values** (`Cache`، *اختياري*، يُعاد عند تمرير `use_cache=True` أو عند تعيين `config.use_cache=True`) -- هو كائن من نوع [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache). لمزيد من التفاصيل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache).

  تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي، وفي كتل الانتباه المتقاطع اختياريًا إذا كان `config.is_encoder_decoder=True`) يمكن استخدامها (انظر مدخل `past_key_values`) لتسريع فك الترميز التسلسلي.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

## Emu3Model[[transformers.Emu3Model]]

#### transformers.Emu3Model[[transformers.Emu3Model]]

```python
transformers.Emu3Model(config: Emu3Config)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L1327)

#### decode_image_tokens[[transformers.Emu3Model.decode_image_tokens]]

```python
decode_image_tokens(image_tokens: LongTensor, height: int, width: int)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L1388)

**المعاملات:**

image_tokens (`torch.LongTensor` من الشكل `(batch_size, num_of_tokens)`) : المصفوفات المقابلة لصور الإدخال.

height (`int`) : ارتفاع الصورة المولّدة قبل عملية زيادة الدقة.

width (`int`) : عرض الصورة المولّدة قبل عملية زيادة الدقة.

يفكّك رموز الصور المولّدة من نموذج اللغة إلى قيم بكسل مستمرة باستخدام وحدة VQGAN عبر عملية رفع العينة.

#### forward[[transformers.Emu3Model.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.Tensor] = None, image_sizes: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, mm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L1431)

**المعاملات:**

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`، *اختياري*) : المصفوفات المقابلة لصور الإدخال. يمكن الحصول على قيم البكسل باستخدام [Emu3ImageProcessor](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3ImageProcessor). راجع [Emu3ImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل ([Emu3Processor](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3Processor) يستخدم [Emu3ImageProcessor](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3ImageProcessor) لمعالجة الصور).

image_sizes (`torch.LongTensor` من الشكل `(batch_size, 2)`) : أحجام الصور في الدفعة، حيث تكون (الارتفاع، العرض) لكل صورة. يمكن الحصول على أحجام الصور باستخدام [AutoImageProcessor](/docs/transformers/main/ar/model_doc/auto#transformers.AutoImageProcessor). راجع [Emu3ImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل ([]`Emu3Processor`] يستخدم [Emu3ImageProcessor](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3ImageProcessor) لمعالجة الصور).

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها من النطاق `[0, config.n_positions - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`، *اختياري*) : حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكوّن هذا عادةً من `past_key_values` التي يعيدها النموذج في مرحلة سابقة من فك الترميز، عندما يكون `use_cache=True` أو `config.use_cache=True`. يُسمح فقط بتمرير كائن [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache) كمدخل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache). إذا لم يتم تمرير `past_key_values`، فسيتم تهيئة [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache) افتراضيًا. سيُخرج النموذج نفس تنسيق الذاكرة المؤقتة المُدخل. إذا تم استخدام `past_key_values`، يُتوقع من المستخدم إدخال `input_ids` غير المعالجة فقط (تلك التي لم تُعطَ حالات مفاتيح وقيم سابقة لها في هذا النموذج) بأبعاد `(batch_size, unprocessed_length)` بدلاً من جميع `input_ids` بأبعاد `(batch_size, sequence_length)`.

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

use_cache (`bool`، *اختياري*) : إذا تم ضبطه على `True`، تُعاد حالات المفاتيح والقيم `past_key_values` ويمكن استخدامها لتسريع فك الترميز (انظر `past_key_values`).

mm_encoder_outputs (`dict[str, ~modeling_outputs.BaseModelOutputWithPooling]`، *اختياري*) : قاموس حيث تكون المفاتيح هي الأنماط المدعومة والقيم هي المخرجات المُرمّزة لذلك النمط. كل مخرَج مُرمّز هو مجموعة (tuple) تتكون من (`pooler_output`، *اختياري*: `last_hidden_states`، *اختياري*: `hidden_states`، *اختياري*: `attentions`) `pooler_output` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) وهو تسلسل من الميزات متعددة الوسائط للمُشفِّر المُدمجة في تضمينات النص.

**يعيد:** [CausalLMOutputWithPast](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) أو `tuple(torch.Tensor)`

[CausalLMOutputWithPast](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([Emu3Config](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3Config)) والمدخلات.

تتجاوز طريقة [Emu3Model](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3Model) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels`) -- خسارة نمذجة اللغة (لتوقع الرمز التالي).
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) -- درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).
- **past_key_values** (`Cache`، *اختياري*، يُعاد عند تمرير `use_cache=True` أو عند تعيين `config.use_cache=True`) -- هو كائن من نوع [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache). لمزيد من التفاصيل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache).

  تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) يمكن استخدامها (انظر مدخل `past_key_values`) لتسريع فك الترميز التسلسلي.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

#### get_image_features[[transformers.Emu3Model.get_image_features]]

```python
get_image_features(pixel_values: Tensor, image_sizes: LongTensor, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L1362)

**المعاملات:**

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)) : المصفوفات المقابلة لصور الإدخال.

image_sizes (`torch.LongTensor` من الشكل `(batch_size, 2)`) : أحجام الصور في الدفعة، حيث تكون (الارتفاع، العرض) لكل صورة.

**يعيد:** `Emu3VQVAEModelOutput` أو `tuple(torch.Tensor)`

`Emu3VQVAEModelOutput` أو مجموعة مرتبة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتمادًا على الإعداد ([Emu3Config](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3Config)) والمدخلات.

يقوم بتجزئة الصور إلى رموز منفصلة باستخدام وحدة VQGAN، ثم يدمجها مع طبقة تضمينات النص

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.
- **pooler_output** (`torch.Tensor` من الشكل `(batch_size, hidden_size)`) -- حالة الطبقة المخفية الأخيرة للرمز الأول في التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُرجع هذه الخاصية رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. يتم تدريب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **image_tokens** (`torch.LongTensor` من الشكل `(batch_size, config.vocab_size`) -- فهارس رموز الصور التي توقعها نموذج VQ-VAE.

#### get_image_tokens[[transformers.Emu3Model.get_image_tokens]]

```python
get_image_tokens(pixel_values: Tensor, image_sizes: LongTensor)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L1343)

**المعاملات:**

pixel_values (`torch.Tensor` بأبعاد `(batch_size, num_channels, image_size, image_size)`) : المصفوفات المقابلة للصور المدخلة.

image_sizes (`torch.LongTensor` من الشكل `(batch_size, 2)`) : أحجام الصور في الدفعة، حيث تكون (الارتفاع، العرض) لكل صورة.

يقوم بتجزئة الصور إلى رموز منفصلة باستخدام وحدة VQGAN. يحوّل رموز الصور المستخرجة إلى رموز BPE ويحيطها برموز خاصة "boi" و"eoi".

#### get_placeholder_mask[[transformers.Emu3Model.get_placeholder_mask]]

```python
get_placeholder_mask(input_ids: LongTensor, inputs_embeds: Tensor, image_features: Tensor)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L1407)

يحصل على قناع العلامات الوهمية متعددة الوسائط من `input_ids` أو `inputs_embeds`، ويتحقق من أن عدد رموز العلامات الوهمية يساوي طول الميزات متعددة الوسائط. إذا اختلفت الأطوال، يتم رفع خطأ.

## Emu3ForCausalLM[[transformers.Emu3ForCausalLM]]

#### transformers.Emu3ForCausalLM[[transformers.Emu3ForCausalLM]]

```python
transformers.Emu3ForCausalLM(config: Emu3TextConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L1252)

**المعاملات:**

config ([Emu3TextConfig](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3TextConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Emu3 لنمذجة اللغة السببية.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.Emu3ForCausalLM.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L1268)

**المعاملات:**

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها من النطاق `[0, config.n_positions - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`، *اختياري*) : حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكوّن هذا عادةً من `past_key_values` التي يعيدها النموذج في مرحلة سابقة من فك الترميز، عندما يكون `use_cache=True` أو `config.use_cache=True`. يُسمح فقط بتمرير كائن [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache) كمدخل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache). إذا لم يتم تمرير `past_key_values`، فسيتم تهيئة [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache) افتراضيًا. سيُخرج النموذج نفس تنسيق الذاكرة المؤقتة المُدخل. إذا تم استخدام `past_key_values`، يُتوقع من المستخدم إدخال `input_ids` غير المعالجة فقط (تلك التي لم تُعطَ حالات مفاتيح وقيم سابقة لها في هذا النموذج) بأبعاد `(batch_size, unprocessed_length)` بدلاً من جميع `input_ids` بأبعاد `(batch_size, sequence_length)`.

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

labels (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : تسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس إما ضمن `[0, ..., config.vocab_size]` أو -100 (انظر `input_ids` docstring). يتم تجاهل الرموز التي تكون فهارسها مضبوطة على `-100` (مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن `[0, ..., config.vocab_size]`.

use_cache (`bool`، *اختياري*) : إذا تم ضبطه على `True`، تُعاد حالات المفاتيح والقيم `past_key_values` ويمكن استخدامها لتسريع فك الترميز (انظر `past_key_values`).

logits_to_keep (`Union[int, torch.Tensor]`، *اختياري*، القيمة الافتراضية `0`) : إذا كان `int`، يتم حساب القيم اللوجستية (logits) لآخر `logits_to_keep` رموز. إذا كانت `0`، يتم حساب القيم اللوجستية لجميع `input_ids` (حالة خاصة). لا تكون قيم اللوجستيات للرمز الأخير فقط ضرورية للتوليد، ويمكن أن يوفر حسابها لذلك الرمز وحده ذاكرة، وهو ما يصبح ذا أهمية كبيرة للترتيبات الطويلة أو لحجم المفردات الكبير. إذا كان `torch.Tensor`، يجب أن يكون بعدًا واحدًا (1D) ويتوافق مع الفهارس التي يجب الاحتفاظ بها في بُعد طول الترتيب. وهذا مفيد عند استخدام تنسيق المصفوفات المعبأة (packed tensor format) (بعد واحد لكل من الدفعة وطول الترتيب).

**يعيد:** [CausalLMOutputWithPast](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) أو `tuple(torch.Tensor)`

[CausalLMOutputWithPast](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([Emu3Config](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3Config)) والمدخلات.

تتجاوز طريقة [Emu3ForCausalLM](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3ForCausalLM) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels`) -- خسارة نمذجة اللغة (لتوقع الرمز التالي).
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) -- درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).
- **past_key_values** (`Cache`، *اختياري*، يُعاد عند تمرير `use_cache=True` أو عند تعيين `config.use_cache=True`) -- هو كائن من نوع [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache). لمزيد من التفاصيل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache).

  تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) يمكن استخدامها (انظر مدخل `past_key_values`) لتسريع فك الترميز التسلسلي.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

```python
>>> from transformers import Emu3Processor, Emu3ForConditionalGeneration
>>> import torch
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from PIL import Image

>>> model = Emu3ForCausalLM.from_pretrained("BAAI/Emu3-Chat-hf", dtype=torch.bfloat16)
>>> processor = Emu3Processor.from_pretrained("BAAI/Emu3-Chat-hf")

>>> inputs = processor(text=["Can you write me a poem about winter."], return_tensors="pt").to(model.device)

>>> generated_ids = model.generate(**inputs, max_new_tokens=100, do_sample=False)
>>> processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
```

## Emu3ForConditionalGeneration[[transformers.Emu3ForConditionalGeneration]]

#### transformers.Emu3ForConditionalGeneration[[transformers.Emu3ForConditionalGeneration]]

```python
transformers.Emu3ForConditionalGeneration(config: Emu3Config)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L1487)

#### forward[[transformers.Emu3ForConditionalGeneration.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.Tensor] = None, image_sizes: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, labels: typing.Optional[torch.LongTensor] = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, mm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/emu3/modeling_emu3.py#L1514)

**المعاملات:**

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`، *اختياري*) : المصفوفات المقابلة لصور الإدخال. يمكن الحصول على قيم البكسل باستخدام [Emu3ImageProcessor](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3ImageProcessor). راجع [Emu3ImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل ([Emu3Processor](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3Processor) يستخدم [Emu3ImageProcessor](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3ImageProcessor) لمعالجة الصور).

image_sizes (`torch.LongTensor` من الشكل `(batch_size, 2)`) : أحجام الصور في الدفعة، حيث تكون (الارتفاع، العرض) لكل صورة. يمكن الحصول على أحجام الصور باستخدام [AutoImageProcessor](/docs/transformers/main/ar/model_doc/auto#transformers.AutoImageProcessor). راجع [Emu3ImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل ([]`Emu3Processor`] يستخدم [Emu3ImageProcessor](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3ImageProcessor) لمعالجة الصور).

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها من النطاق `[0, config.n_positions - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`، *اختياري*) : حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكوّن هذا عادةً من `past_key_values` التي يعيدها النموذج في مرحلة سابقة من فك الترميز، عندما يكون `use_cache=True` أو `config.use_cache=True`. يُسمح فقط بتمرير كائن [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache) كمدخل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache). إذا لم يتم تمرير `past_key_values`، فسيتم تهيئة [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache) افتراضيًا. سيُخرج النموذج نفس تنسيق الذاكرة المؤقتة المُدخل. إذا تم استخدام `past_key_values`، يُتوقع من المستخدم إدخال `input_ids` غير المعالجة فقط (تلك التي لم تُعطَ حالات مفاتيح وقيم سابقة لها في هذا النموذج) بأبعاد `(batch_size, unprocessed_length)` بدلاً من جميع `input_ids` بأبعاد `(batch_size, sequence_length)`.

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

use_cache (`bool`، *اختياري*) : إذا تم ضبطه على `True`، تُعاد حالات المفاتيح والقيم `past_key_values` ويمكن استخدامها لتسريع فك الترميز (انظر `past_key_values`).

labels (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : تسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس إما ضمن `[0, ..., config.vocab_size]` أو -100 (انظر `input_ids` docstring). يتم تجاهل الرموز التي تكون فهارسها مضبوطة على `-100` (مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن `[0, ..., config.vocab_size]`.

logits_to_keep (`Union[int, torch.Tensor]`، *اختياري*، القيمة الافتراضية `0`) : إذا كان `int`، يتم حساب القيم اللوجستية (logits) لآخر `logits_to_keep` رموز. إذا كانت `0`، يتم حساب القيم اللوجستية لجميع `input_ids` (حالة خاصة). لا تكون قيم اللوجستيات للرمز الأخير فقط ضرورية للتوليد، ويمكن أن يوفر حسابها لذلك الرمز وحده ذاكرة، وهو ما يصبح ذا أهمية كبيرة للترتيبات الطويلة أو لحجم المفردات الكبير. إذا كان `torch.Tensor`، يجب أن يكون بعدًا واحدًا (1D) ويتوافق مع الفهارس التي يجب الاحتفاظ بها في بُعد طول الترتيب. وهذا مفيد عند استخدام تنسيق المصفوفات المعبأة (packed tensor format) (بعد واحد لكل من الدفعة وطول الترتيب).

mm_encoder_outputs (`dict[str, ~modeling_outputs.BaseModelOutputWithPooling]`، *اختياري*) : قاموس حيث تكون المفاتيح هي الأنماط المدعومة والقيم هي المخرجات المُرمّزة لذلك النمط. كل مخرَج مُرمّز هو مجموعة (tuple) تتكون من (`pooler_output`، *اختياري*: `last_hidden_states`، *اختياري*: `hidden_states`، *اختياري*: `attentions`) `pooler_output` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) وهو تسلسل من الميزات متعددة الوسائط للمُشفِّر المُدمجة في تضمينات النص.

**يعيد:** [CausalLMOutputWithPast](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) أو `tuple(torch.Tensor)`

[CausalLMOutputWithPast](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([Emu3Config](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3Config)) والمدخلات.

تتجاوز طريقة [Emu3ForConditionalGeneration](/docs/transformers/main/ar/model_doc/emu3#transformers.Emu3ForConditionalGeneration) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels`) -- خسارة نمذجة اللغة (لتوقع الرمز التالي).
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) -- درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).
- **past_key_values** (`Cache`، *اختياري*، يُعاد عند تمرير `use_cache=True` أو عند تعيين `config.use_cache=True`) -- هو كائن من نوع [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache). لمزيد من التفاصيل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache).

  تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) يمكن استخدامها (انظر مدخل `past_key_values`) لتسريع فك الترميز التسلسلي.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

```python
>>> from transformers import Emu3Processor, Emu3ForConditionalGeneration
>>> import torch
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from PIL import Image

>>> model = Emu3ForConditionalGeneration.from_pretrained("BAAI/Emu3-Chat-hf", dtype=torch.bfloat16)
>>> processor = Emu3Processor.from_pretrained("BAAI/Emu3-Chat-hf")

>>> conversation = [
...     {
...     "role": "system",
...     "content": [
...         {"type": "text", "text": "You are a helpful assistant."},
...         ],
...     },
...     {
...     "role": "user",
...     "content": [
...         {"type": "image"},
...         {"type": "text", "text": "Please describe the image."},
...         ],
...     },
... ]

>>> prompt = processor.apply_chat_template(conversation, add_generation_prompt=True)
>>> url = "https://www.ilankelman.org/stopsigns/australia.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> inputs = processor(images=[image], text=[prompt], return_tensors="pt").to(model.device, torch.bfloat16)

>>> generated_ids = model.generate(**inputs, max_new_tokens=100, do_sample=False)
>>> processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
```

