# DiffusionGemma

## نظرة عامة

صُمِّم DiffusionGemma لتقليل الاختناقات التسلسلية في نماذج اللغة السببية القياسية. فهو يعتمد على بنية مشفِّر-مشفِّر (encoder-decoder) مُحسَّنة خصيصاً لسرعة الاستدلال.

يعمل المُشفِّر في سعة التعبئة المسبقة، حيث يعالج الموجه الأولي وينشئ ذاكرة التخزين المؤقت لـ KV. ثم يستخدم المُفكِّك الانتباه الاتجاهي المعاكس لمعالجة كتلة مدخلات (تُسمى "لوحة") من الرموز، مع الوصول إلى السياق المخزَّن المؤقت عبر الانتباه المتقاطع.

أثناء الاستدلال، يستفيد DiffusionGemma من أخذ عينات متعددة اللوحات. وبدلاً من توليد رمز واحد في كل مرة، يقوم النموذج بإزالة الضوضاء بشكل تكراري من كتلة كاملة من الرموز باستخدام مُعيّن انتشار. وبمجرد إزالة الضوضاء عن لوحة بالكامل، تُعالَج بواسطة المُشفِّر وتُضاف إلى ذاكرة KV، ثم يولّد النموذج اللوحة التالية. يُمكّن هذا النهج التلقائي التكراري على مستوى الكتل من توليد النصوص بسرعات أعلى.

يمكنك العثور على بطاقة النموذج ونقطة التفتيش [هنا](https://huggingface.co/google/diffusiongemma-26B-A4B-it). يمكنك العثور على دليل بصري للنموذج [هنا](https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-diffusiongemma).

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

على الرغم من كونه نموذج انتشار نصي ولديه حلقة توليد مخصصة، فإن معظم الواجهة مشتركة مع النماذج الأخرى القادرة على توليد النص باستخدام [DiffusionGemmaGenerationMixin.generate()](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.DiffusionGemmaGenerationMixin.generate). إذا كنت تستخدم نموذج `transformers` آخر في تطبيقك، فيجب أن تكون قادرًا على استبداله مباشرةً بهذا النموذج.

> [!NOTE]
> يتوفر DiffusionGemma في كلٍّ من Transformers وDiffusers، لكن Diffusers هو بيئته الأساسية. يحتوي Diffusers على مجموعة كاملة من خيارات الجدولة وأدوات خطوط الأنابيب، ولا تُضاف الميزات الجديدة (جدولة إضافية، معايير إيقاف، استراتيجيات أخذ عينات) إلا هناك. راجع [DiffusionGemma](https://huggingface.co/docs/diffusers/api/pipelines/diffusion_gemma) للحصول على أمثلة على الاستخدام، وافتح [قضية](https://github.com/huggingface/diffusers/issues) على Diffusers لتجربة جدولة مختلفة أو طلب ميزة. لا تتلقى نسخة Transformers إلا إصلاحات الأخطاء دون أي ميزات جديدة.

### أهم الملاحظات

- DiffusionGemma doesn't accept `use_cache`. It always uses a KV cache;
- لن تكون الأعلام الشائعة مثل `top_k` متاحة في يوم الإطلاق، لكنها ستُضاف مع مرور الوقت إذا كانت متوافقة مع انتشار النص.

### مثال أساسي

```python
from transformers import DiffusionGemmaForBlockDiffusion, AutoProcessor

model = DiffusionGemmaForBlockDiffusion.from_pretrained(
    "google/diffusiongemma-26B-A4B-it", device_map="auto",
)
processor = AutoProcessor.from_pretrained("google/diffusiongemma-26B-A4B-it")

messages = [
    {
        "role": "user", "content": [
            {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
            {"type": "text", "text": "What is shown in this image?"},
        ]
    },
]
inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    return_dict=True,
    return_tensors="pt",
    add_generation_prompt=True,
    # Add the following to enable thinking
    # enable_thinking=True,
).to(model.device)
input_len = inputs["input_ids"].shape[-1]

# Set `cache_implementation="static"` in `generate` to trigger `torch.compile`.
# Compilation is much faster, after warming up!
output = model.generate(**inputs, max_new_tokens=256)
print(processor.decode(output.sequences[0][input_len:], skip_special_tokens=True))
```

### البث

كما هو الحال مع النماذج الأخرى القادرة على توليد النص، يمكنك تعيين فئة مُبثّ (streamer) لبث النص. وعلى عكس النماذج الأخرى، يولّد DiffusionGemma مسودات وسيطة قبل النص النهائي. يمكنك عرضها باستخدام `TextDiffusionStreamer`

```python
from transformers import TextDiffusionStreamer

# (... copy from the example above, up to the `generate` call)
streamer = TextDiffusionStreamer(tokenizer=processor.tokenizer)
model.generate(**inputs, max_new_tokens=256, streamer=streamer)
```

### ضبط مخرج إزالة الضوضاء الابتدائي

يُدرَّب النموذج على تحسين كتل من 256 رمزًا بشكل تكراري. في بعض التطبيقات، قد يكون من المفيد توفير نقطة انطلاق لمفكّك الرموز، بدلاً من البدء من رموز عشوائية. يمكنك استخدام `decoder_input_ids`، المتاح في جميع واجهات النموذج، لتحديد لوحة البداية.

```py
initial_estimate = ... # a tensor with shape (bsz, 256)
model.generate(**inputs, max_new_tokens=256, decoder_input_ids=initial_estimate)
```

## DiffusionGemmaTextConfig[[transformers.DiffusionGemmaTextConfig]]

#### transformers.DiffusionGemmaTextConfig[[transformers.DiffusionGemmaTextConfig]]

```python
transformers.DiffusionGemmaTextConfig(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 = 262144, hidden_size: int = 2304, intermediate_size: int = 9216, num_hidden_layers: int = 30, num_attention_heads: int = 8, num_key_value_heads: int = 4, head_dim: int = 256, hidden_activation: str = 'gelu_pytorch_tanh', max_position_embeddings: int = 131072, initializer_range: float = 0.02, rms_norm_eps: float = 1e-06, pad_token_id: int | None = 0, eos_token_id: int | list[int] | None = 1, bos_token_id: int | None = 2, tie_word_embeddings: bool = True, rope_parameters: dict | None = None, attention_bias: bool = False, attention_dropout: int | float | None = 0.0, sliding_window: int = 512, layer_types: list[str] | None = None, use_bidirectional_attention: typing.Optional[typing.Literal['all', 'vision']] = None, num_experts: int | None = None, top_k_experts: int | None = None, moe_intermediate_size: int | None = None)
```

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

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

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

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

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

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

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

num_key_value_heads (`int`، *اختياري*، القيمة الافتراضية `4`) : هذا هو عدد رؤوس 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`.

head_dim (`int`، *اختياري*، القيمة الافتراضية `256`) : بُعد رأس الانتباه. إذا كانت القيمة None، فستكون القيمة الافتراضية هي hidden_size // num_attention_heads

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

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

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

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

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

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

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

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

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

attention_bias (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام انحياز في طبقات الإسقاط للاستعلام والمفتاح والقيمة والمخرجات أثناء الانتباه الذاتي.

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

sliding_window (`int`، *اختياري*، القيمة الافتراضية `512`) : حجم نافذة الانتباه المنزلقة. إذا كانت `None`، فلا تُطبَّق نافذة منزلقة.

layer_types (`list[str]`، *اختياري*) : قائمة تُقرن صراحةً كل فهرس طبقة بنوعها. إذا لم تُقدَّم، فسيتم توليدها تلقائيًا بناءً على قيم الإعداد.

use_bidirectional_attention (`str`, *اختياري*) : يتحكم في سلوك الانتباه ثنائي الاتجاه. عند ضبطه على `"vision"`، تتفاعل رموز الرؤية ثنائي الاتجاه بينما تستخدم رموز النص الانتباه السببي. عند ضبطه على `"all"`، تستخدم جميع الرموز الانتباه ثنائي الاتجاه.

num_experts (`int`, *اختياري*) : عدد الخبراء الموجَّهين في طبقات MoE.

top_k_experts (`int`، *اختياري*) : عدد الخبراء المُفعّلين لكل رمز في طبقات MoE.

moe_intermediate_size (`int`، *اختياري*) : الحجم الوسيط (المخفي) لشبكة التغذية الأمامية لكل خبير في طبقات MoE.

هذه فئة الإعدادات المخزنة لإعدادات نموذج DiffusionGemmaModel. تُستخدم لاستحداث نموذج Diffusion Gemma وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [google/diffusiongemma-26B-A4B-it](https://huggingface.co/google/diffusiongemma-26B-A4B-it)

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

## DiffusionGemmaConfig[[transformers.DiffusionGemmaConfig]]

#### transformers.DiffusionGemmaConfig[[transformers.DiffusionGemmaConfig]]

```python
transformers.DiffusionGemmaConfig(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, text_config: transformers.models.diffusion_gemma.configuration_diffusion_gemma.DiffusionGemmaTextConfig | dict[str, typing.Any] | None = None, vision_config: transformers.configuration_utils.PreTrainedConfig | dict[str, typing.Any] | None = None, boi_token_id: int | None = 255999, eoi_token_id: int | None = 258882, image_token_id: int | None = 258880, initializer_range: float | None = 0.02, tie_word_embeddings: bool = True, canvas_length: int | None = 256)
```

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

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

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

vision_config (`Union[~configuration_utils.PreTrainedConfig, dict[str, Any]]`, *اختياري*) : كائن الإعدادات أو قاموس العمود الفقري البصري.

boi_token_id (`int`، *اختياري*، القيمة الافتراضية 255999) : فهرس رمز بداية الصورة (begin-of-image token) المستخدم لتغليف موجه الصورة.

eoi_token_id (`int`، *اختياري*، القيمة الافتراضية 258882) : فهرس رمز نهاية الصورة (end-of-image token) المستخدم لتغليف موجه الصورة.

image_token_id (`int`، *اختياري*، القيمة الافتراضية `258880`) : فهرس رمز الصورة المستخدم كحقل محجوز للصور المدخلة.

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

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

canvas_length (`int`، *اختياري*، القيمة الافتراضية 256) : حجم اللوحة أو، بعبارة أخرى، طول الكتلة في انتشار الكتل. يُستخدم لتهيئة لوحة فارغة.

هذه فئة الإعدادات المخزنة لإعدادات نموذج DiffusionGemmaModel. تُستخدم لاستحداث نموذج Diffusion Gemma وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [google/diffusiongemma-26B-A4B-it](https://huggingface.co/google/diffusiongemma-26B-A4B-it)

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

مثال:

```python
>>> from transformers import (
>>>     DiffusionGemmaConfig,
>>>     DiffusionGemmaModel,
>>>     DiffusionGemmaTextConfig,
>>>     Gemma4VisionConfig,
>>> )

>>> # Initializing a DiffusionGemma Text config.
>>> text_config = DiffusionGemmaTextConfig()

>>> # Initializing a Gemma 4 vision config (DiffusionGemma uses Gemma 4's vision block).
>>> vision_config = Gemma4VisionConfig()

>>> # Initializing a DiffusionGemma text config
>>> configuration = DiffusionGemmaConfig(text_config, vision_config)

>>> # Initializing a model from the configuration
>>> model = DiffusionGemmaModel(configuration)

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

## DiffusionGemmaGenerationOutput[[transformers.DiffusionGemmaGenerationOutput]]

#### transformers.DiffusionGemmaGenerationOutput[[transformers.DiffusionGemmaGenerationOutput]]

```python
transformers.DiffusionGemmaGenerationOutput(sequences: LongTensor, tokens_per_forward: int | None = None, past_key_values: transformers.cache_utils.Cache | None = None, logits: None = None, scores: None = None, hidden_states: None = None)
```

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

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

sequences (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`) : التتابعات المولّدة، بما في ذلك الموجه إذا تم تقديم `input_ids` إلى طريقة `generate`.

tokens_per_forward (`torch.LongTensor` من الشكل (`batch_size`)) : عدد الرموز لكل تمريرة أمامية في هذا الاستدعاء لـ`generate`، لكل عضو في الدفعة. يُستخدم هذا غالبًا كمقياس تقييم ثانوي لنماذج الانتشار النصية.

past_key_values (`Cache`) : ذاكرة التخزين المؤقت المستخدمة للتوليد. يمكن تمريرها إلى الاستدعاءات اللاحقة لـ`generate` لتسريع عملية التوليد، في الجلسات متعددة الأدوار.

logits (`None`) : غير مستخدم. تم إبقاؤه في الواجهة من أجل التوافق الخلفي.

scores (`None`) : غير مستخدم. تم إبقاؤه في الواجهة من أجل التوافق الخلفي.

hidden_states (`None`) : غير مستخدم. تم إبقاؤه في الواجهة من أجل التوافق الخلفي.

فئة الإخراج لتوليد DiffusionGemma.

## DiffusionGemmaGenerationMixin[[transformers.DiffusionGemmaGenerationMixin]]

#### transformers.DiffusionGemmaGenerationMixin[[transformers.DiffusionGemmaGenerationMixin]]

```python
transformers.DiffusionGemmaGenerationMixin()
```

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

فئة مزيج لتوليد DiffusionGemma. تحتوي على جميع طرق مستوى النموذج.

#### generate[[transformers.DiffusionGemmaGenerationMixin.generate]]

```python
generate(input_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, streamer: transformers.generation.streamers.BaseStreamer | None = None, generation_config: transformers.models.diffusion_gemma.generation_diffusion_gemma.DiffusionGemmaGenerationConfig | None = None, logits_processor: transformers.generation.logits_process.LogitsProcessorList | None = None, stopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = None, **kwargs)
```

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

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

input_ids (*torch.LongTensor* من الشكل *(batch_size, sequence_length)*، *اختياري*) : التسلسل المستخدم كموجّه (prompt) للتوليد.

past_key_values ([Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache)، *اختياري*) : كائن Cache يحتوي على قيم المفاتيح السابقة وأقنعة الانتباه السابقة لفك التشفير. إذا تم ضبطه، يجب أن تتوافق `input_ids` و/أو `pixel_values` مع البيانات غير المخزنة مؤقتًا فقط.

streamer (`BaseStreamer`، *اختياري*) : كائن Streamer سيُستخدم لبثّ التسلسلات المولّدة. تُمرَّر الرموز المولّدة عبر `streamer.put(token_ids)` ويتحمّل كائن streamer مسؤولية أي معالجة إضافية. إذا كان كائن streamer يحتوي على طريقة `put_draft`، فسيتم إرسال الرموز من خطوات إزالة الضوضاء إلى هناك.

**حجج إضافية للمستخدمين المتقدمين:**

generation_config ([DiffusionGemmaGenerationConfig](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.DiffusionGemmaGenerationConfig)، *اختياري*) : إعدادات التوليد التي سيتم استخدامها كإعدادات أساسية لاستدعاء التوليد، مع تجاوز الإعدادات الافتراضية للنموذج. إذا كان نقطة التفتيش (checkpoint) للنموذج تحتوي على ملف `generation_config.json`، فسيتم تحميل الإعداد الافتراضي للنموذج من هناك. وإلا، فسيكون مثلاً فارغاً من `DiffusionGemmaGenerationConfig`. كاختصار إضافي، فإن `**kwargs` المطابقة للخصائص في `generation_config` ستقوم بتجاوزها.

logits_processor ([LogitsProcessorList](/docs/transformers/main/ar/internal/generation_utils#transformers.LogitsProcessorList)، *اختياري*) : معالجات logits مخصصة تكمل معالجات logits الافتراضية المبنية من الحجوزات وإعدادات التوليد، لتُطبَّق على logits الانتشار. إذا تم توفيرها، فستكون هذه المعالجات أول من يُطبَّق. هذه الميزة مخصصة للمستخدمين المتقدمين. يمكنك، على سبيل المثال، تمرير معالجات logits الشائعة الاستخدام مع نماذج LLM التوليدية المتسلسلة (AR) هنا.

stopping_criteria ([StoppingCriteriaList](/docs/transformers/main/ar/internal/generation_utils#transformers.StoppingCriteriaList)، *اختياري*) : معايير إيقاف مخصصة تكمل معايير الإيقاف التلقائية الافتراضية المبنية من الحجوزات وإعدادات التوليد. إذا تم توفيرها، فسيتم تطبيق هذه المعايير أولاً. هذه الميزة مخصصة للمستخدمين المتقدمين. يمكنك، على سبيل المثال، تمرير معايير الإيقاف الشائعة الاستخدام مع نماذج اللغة التوليدية هنا.

kwargs (`dict[str, Any]`، *اختياري*) : تخصيص مؤقت لـ `generation_config` و/أو معاملات إضافية خاصة بالنموذج سيتم تمريرها إلى دالة `forward` في النموذج. على سبيل المثال، يمكنك تعيين اللوحة الابتدائية باستخدام `decoder_input_ids`.

**يعيد:** `torch.LongTensor` أو [DiffusionGemmaGenerationOutput](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.DiffusionGemmaGenerationOutput)

- `torch.LongTensor`: النص المولّد على شكل معرّفات.
- [DiffusionGemmaGenerationOutput](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.DiffusionGemmaGenerationOutput): نسخة من `ModelOutput` تحتوي على النص المولّد (`sequences`)، بالإضافة إلى مخرجات اختيارية أخرى.

يولّد النص باستخدام نموذج الانتشار.

يتضمن حلقة خارجية تقوم بتوليد اللوحات (مجموعات من الرموز) بشكل ذاتي التراجع، وحلقة

حلقة تقوم بالانتشار على كل لوحة. يعمل الخوارزمية بشكل تقريبي على النحو التالي:
```
1. Autoregressive canvas generation loop:
    a. Encode all previous tokens using the encoder, to get the KV cache.
    b. Prepare data for the new denoising loop
    c. For each denoising (diffusion) step:
        i.   Run the decoder, taking the current canvas, the encoder KV cache, and the self-conditioning logits
             (if available) as inputs.
        ii.  Select new canvas tokens from the output logits.
        iii. Apply the sampler acceptance and renoising logic.
        iv.  Update the diffusion stopping criteria.
        v.   Use the output logits as self-conditioning logits for the next step.
    d. Append the new denoised canvas to the sequence of generated tokens.
    e. Check if any autoregressive stopping criteria are met, and break the outer loop if all sequences have
       met them. Replaces generated tokens in finished sequences by pad.
    f. Prepare tensors for the next block
```

أمثلة:

```python
>>> from transformers import DiffusionGemmaForBlockDiffusion, AutoProcessor, TextDiffusionStreamer

>>> model = DiffusionGemmaForBlockDiffusion.from_pretrained(
...     "google/diffusiongemma-26B-A4B-it", device_map="auto",
>>> )

>>> chat = [{"role": "user", "content": "Why is the sky blue?"},]
>>> processor = AutoProcessor.from_pretrained("google/diffusiongemma-26B-A4B-it")
>>> input_ids = processor.apply_chat_template(chat, tokenize=True, return_tensors="pt")

>>> streamer = TextDiffusionStreamer(tokenizer=processor.tokenizer)
>>> model.generate(input_ids.to(model.device), max_new_tokens=512, streamer=streamer)
```

## DiffusionGemmaGenerationConfig[[transformers.DiffusionGemmaGenerationConfig]]

#### transformers.DiffusionGemmaGenerationConfig[[transformers.DiffusionGemmaGenerationConfig]]

```python
transformers.DiffusionGemmaGenerationConfig(**kwargs)
```

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

**المعاملات التي تتحكم في طول المخرجات:**

max_new_tokens (`int`، *اختياري*) : الحد الأقصى لعدد الرموز (tokens) التي سيتم توليدها، مع تجاهل عدد الرموز في الاستعلام (prompt).

max_length (`int`, *اختياري*) : الحد الأقصى لطول تسلسل الإخراج. يُوصى باستخدام `max_new_tokens` للتحكم في عدد الرموز التي يولّدها النموذج.

**معاملات الانتشار:**

max_denoising_steps (`int`) : الحد الأقصى لعدد خطوات إزالة الضوضاء التي يجب تنفيذها.

sampler_config (`EntropyBoundSamplerConfig`) : إعدادات العينة. راجع [EntropyBoundSampler](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.EntropyBoundSampler) لمعرفة كيفية عمل العينة في نموذج انتشار النص.

t_min (`float`) : درجة الحرارة النهائية في الجدول الزمني، أي عند خطوة إزالة الضوضاء الأخيرة. راجع [LinearTemperatureScheduleLogitsProcessor](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.LinearTemperatureScheduleLogitsProcessor) لمزيد من التفاصيل.

t_max (`float`) : درجة الحرارة الأولية في الجدول الزمني، أي عند أول خطوة إزالة الضوضاء. راجع [LinearTemperatureScheduleLogitsProcessor](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.LinearTemperatureScheduleLogitsProcessor) لمزيد من التفاصيل.

stability_threshold (`int`) : عدد الخطوات التي يجب أن يكون فيها القماش المقبول متطابقًا لتفعيل معايير التوقف. راجع [StableAndConfidentStoppingCriteria](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.StableAndConfidentStoppingCriteria) لمزيد من التفاصيل.

confidence_threshold (`float`) : العتبة الخاصة بمتوسط إنتروبيا القيم اللوجستية المُقيّمة بالحرارة لتفعيل معايير التوقف. راجع [StableAndConfidentStoppingCriteria](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.StableAndConfidentStoppingCriteria) لمزيد من التفاصيل.

**المعاملات التي تتحكم في ذاكرة التخزين المؤقت:**

cache_implementation (`str`، *اختياري*) : اسم فئة الكاش التي سيتم إنشاء مثيل منها في `generate`، لتسريع فك الترميز. القيم الممكنة هي:  - `"dynamic"`: [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache) - `"static"`: [StaticCache](/docs/transformers/main/ar/internal/generation_utils#transformers.StaticCache) - `"offloaded"`: `DynamicCache(offloaded=True)` - `"offloaded_static"`: `StaticCache(offloaded=True)` - `"quantized"`: [QuantizedCache](/docs/transformers/main/ar/internal/generation_utils#transformers.QuantizedCache)  إذا لم يتم تحديد أي منها، فسنستخدم كاش النموذج الافتراضي (والذي غالبًا ما يكون [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache)). راجع [توثيق الكاش](https://huggingface.co/docs/transformers/en/kv_cache) لدينا لمزيد من المعلومات.

cache_config (`dict`، *اختياري*، الافتراضي `None`) : يمكن تمرير الحُجج المستخدمة في فئة ذاكرة التخزين المؤقت للمفتاح-القيمة عبر `cache_config`.

**رموز خاصة يمكن استخدامها أثناء التوليد:**

bos_token_id (`int`, *اختياري*) : المعرّف الخاص برموز *بداية التسلسل*.

pad_token_id (`int`, *اختياري*) : المعرّف الخاص برموز *padding*.

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

فئة GenerationConfig مع تخصيص للمعاملات مخصص لـ [DiffusionGemmaGenerationMixin.generate()](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.DiffusionGemmaGenerationMixin.generate).

## EntropyBoundSamplerConfig[[transformers.EntropyBoundSamplerConfig]]

#### transformers.EntropyBoundSamplerConfig[[transformers.EntropyBoundSamplerConfig]]

```python
transformers.EntropyBoundSamplerConfig(entropy_bound: float)
```

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

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

entropy_bound (`float`) : حد الإنتروبيا. كلما ارتفعت هذه القيمة، زاد عدد الرموز التي سيتم قبولها. راجع سلسلة التوثيق الخاصة بـ [EntropyBoundSampler.accept_canvas()](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.EntropyBoundSampler.accept_canvas) لمزيد من التفاصيل حول كيفية تطبيقه.

فئة التهيئة لمُعيّن حد الإنتروبيا.

## EntropyBoundSampler[[transformers.EntropyBoundSampler]]

#### transformers.EntropyBoundSampler[[transformers.EntropyBoundSampler]]

```python
transformers.EntropyBoundSampler(config: EntropyBoundSamplerConfig, canvas_length: int, vocab_size: int, max_denoising_steps: int)
```

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

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

config (`EntropyBoundSamplerConfig`) : إعدادات العينة.

canvas_length (`int`) : طول اللوحة.

vocab_size (`int`) : حجم المفردات.

max_denoising_steps (`int`) : الحد الأقصى لعدد خطوات إزالة الضوضاء. (غير مستخدم في هذا المُعيّن)

فئة مُعيّن (Sampler) تُهيّئ لوحة (canvas) بعلامات (tokens) عشوائية، وتقبل العلامات بناءً على إنتروبيا مستوى العلامة، وتعيد إضافة الضوضاء إلى العلامات غير المقبولة.

إليك رسم تخطيطي مبسط لكيفية عمل حلقة المُعيّن:
```
          +-----------------------+
          | Canvas initialization |
          | x_T ∈ U(V)            |
          +-----------+-----------+
                      |
                      v
           +----------+---------+       +---------------------+
+--------->| Current canvas x_t |------>| Denoiser canvas x_D |
|          +----------+---------+       +----------+----------+
|                      \                          /
|                       \                        /
|                        \   Acceptance logic   /
|                         v                    v
|                       +-------------------------+
| Stop if max           | Accepted canvas x_{t-1} |
| denosing steps        +------------+------------+      +-------------------+
| reached or                          \                  | New canvas ∈ U(V) |
| adaptive stopping                    \                 +---------+---------+
| triggers                              \    Renoising logic      /
|                                        v                       v
|                                       +-------------------------+
+---------------------------------------| Next canvas x_{t-1}     |
                                        +-------------------------+
```

#### accept_canvas[[transformers.EntropyBoundSampler.accept_canvas]]

```python
accept_canvas(current_canvas: LongTensor, denoiser_canvas: LongTensor, logits: Tensor, cur_step: int)
```

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

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

current_canvas (`torch.LongTensor`) : اللوحة الحالية.

denoiser_canvas (`torch.LongTensor`) : اللوحة المُستخرجة من تنبؤات مُزيل الضوضاء.

logits (`torch.Tensor`) : القيم اللوجستية (logits) الناتجة عن مُزيل الضوضاء.

cur_step (`int`) : الخطوة الحالية.

**يعيد:** `torch.LongTensor`

اللوحة المقبولة.

يقبل الرموز من مُزيل الضوضاء بناءً على حدٍّ للإنتروبيا. وبشكل أكثر تحديداً، يتم إجراء العينة عن طريق قبول k من الرموز ذات أدنى إنتروبيا، بحيث

sum_i^k entropy_i - max(entropy_1, ..., entropy_k) <= entropy_bound,

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

قُدمت هذه الفكرة في الأصل في https://arxiv.org/pdf/2505.24857

#### initialize_canvas[[transformers.EntropyBoundSampler.initialize_canvas]]

```python
initialize_canvas(batch_size: int, device: device)
```

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

يُهيّئ ويعيد لوحة جديدة من `canvas_length` رمزاً بقيم عشوائية من المفردات.

#### renoise_canvas[[transformers.EntropyBoundSampler.renoise_canvas]]

```python
renoise_canvas(accepted_canvas: LongTensor, cur_step: int)
```

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

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

accepted_canvas (`torch.LongTensor`) : اللوحة المقبولة.

cur_step (`int`) : الخطوة الحالية. (غير مستخدمة في هذا المُعيّن)

**يعيد:** `torch.LongTensor`

اللوحة المُعاد إدخال الضوضاء إليها.

يعيد توليد جميع الرموز غير المقبولة.

## StableAndConfidentStoppingCriteria[[transformers.StableAndConfidentStoppingCriteria]]

#### transformers.StableAndConfidentStoppingCriteria[[transformers.StableAndConfidentStoppingCriteria]]

```python
transformers.StableAndConfidentStoppingCriteria(stability_threshold: int, confidence_threshold: float)
```

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

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

stability_threshold (`int`) : عدد الخطوات التي يجب أن يكون فيها القماش المقبول متطابقًا لتفعيل معايير التوقف.

confidence_threshold (`float`) : العتبة الخاصة بمتوسط إنتروبيا القيم اللوجستية المُقيّمة بالحرارة لتفعيل معايير التوقف.

استراتيجية إيقاف تكيفية توقف عندما تكون عملية الانتشار واثقة ومستقرة. وبشكل أكثر تحديداً:
- تكون عملية الانتشار مستقرة عندما تكون اللوحات المقبولة متطابقة عبر `stability_threshold` خطوة.
- تكون عملية الانتشار واثقة عندما يكون متوسط إنتروبيا القيم المنطقية المعالجة أقل من `confidence_threshold`.

## LinearTemperatureScheduleLogitsProcessor[[transformers.LinearTemperatureScheduleLogitsProcessor]]

#### transformers.LinearTemperatureScheduleLogitsProcessor[[transformers.LinearTemperatureScheduleLogitsProcessor]]

```python
transformers.LinearTemperatureScheduleLogitsProcessor(t_min: float, t_max: float, max_denoising_steps: int)
```

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

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

t_min (`float`) : درجة الحرارة النهائية في الجدول، أي في خطوة إزالة الضوضاء الأخيرة.

t_max (`float`) : درجة الحرارة الأولية في الجدول، أي عند أول خطوة إزالة الضوضاء.

max_denoising_steps (`int`) : الحد الأقصى لعدد خطوات إزالة الضوضاء.

معالج logits يطبّق جدول خطي لدرجة الحرارة على logits. يشبه هذا `TemperatureLogitsWarper` باستثناء أن درجة الحرارة هي دالة للخطوة الحالية.

في الخطوة n من N، يُعطى التدرّج الحراري t بالصيغة t = t_min + ((t_max - t_min) * (n/N)).

## DiffusionGemmaPreTrainedModel[[transformers.DiffusionGemmaPreTrainedModel]]

#### transformers.DiffusionGemmaPreTrainedModel[[transformers.DiffusionGemmaPreTrainedModel]]

```python
transformers.DiffusionGemmaPreTrainedModel(config: PreTrainedConfig, *inputs, **kwargs)
```

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

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

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

يرث هذا النموذج من [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.DiffusionGemmaPreTrainedModel.forward]]

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

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

## DiffusionGemmaModel[[transformers.DiffusionGemmaModel]]

#### transformers.DiffusionGemmaModel[[transformers.DiffusionGemmaModel]]

```python
transformers.DiffusionGemmaModel(config: DiffusionGemmaConfig)
```

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

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

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

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

يرث هذا النموذج من [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.DiffusionGemmaModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Union[torch.Tensor, dict, NoneType] = None, past_key_values: transformers.cache_utils.Cache | None = None, position_ids: typing.Optional[torch.LongTensor] = None, decoder_input_ids: typing.Optional[torch.LongTensor] = None, self_conditioning_logits: typing.Optional[torch.Tensor] = None, self_conditioning_mask: typing.Optional[torch.BoolTensor] = None, decoder_attention_mask: typing.Union[torch.Tensor, dict, NoneType] = None, decoder_position_ids: typing.Optional[torch.LongTensor] = 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/diffusion_gemma/modeling_diffusion_gemma.py#L1494)

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

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : معرّفات الرموز غير المخزّنة مؤقتًا للموجّه الذي سيتم ترميزه كسياق للوحة الرسم.

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)` أو `dict`، *اختياري*) : قناع لرموز الإدخال.

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)`.

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

decoder_input_ids (`torch.LongTensor` من الشكل `(batch_size, canvas_length)`، *اختياري*) : معرّفات الرموز (Token IDs) للوحة (canvas) التي سيتم تحسينها.

self_conditioning_logits (`torch.Tensor` من الشكل `(batch_size, canvas_length, vocab_size)`، *اختياري*) : قيم اللوجيتات ذاتية التكييف من خطوة إزالة الضوضاء السابقة، وتُستخدم لحساب التضمينات ذاتية التكييف.

self_conditioning_mask (`torch.BoolTensor` من الشكل `(batch_size,)`، *اختياري*) : قناع لكل مثال على `self_conditioning_logits`: تُضبط الأمثلة المحددة إلى `False` على إشارة ذاتية التكييف مُصفَّرة، كأنه لم يتم تمرير أي قيم احتمالية لها. مفيد للتدريب، حيث يتم تفعيل التكييف الذاتي لكل مثال باحتمال معين.

decoder_attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length+canvas_length)` أو `dict`، *اختياري*) : قناع الانتباه (Attention mask) لذاكرة KV في المُفكِّك (decoder). يُستخدم لتحديد إدخالات ذاكرة KV المُرمَّزة (encoder) المُكمَّلة أو غير المُعبَّأة.

decoder_position_ids (`torch.LongTensor` من الشكل `(batch_size, canvas_length)`، *اختياري*) : معرّفات المواضع للرموز في اللوحة.

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)`، *اختياري*) وهو تسلسل من الميزات متعددة الوسائط للمُشفِّر المُدمجة في تضمينات النص.

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

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

تتجاوز طريقة [DiffusionGemmaModel](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.DiffusionGemmaModel) الخاصة بالتقديم (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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **encoder_last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) -- تسلسل الحالات المخفية عند مخرج الطبقة الأخيرة من المُشفِّر. يُعيَّن فقط عند تقديم `input_ids`، على سبيل المثال لحساب خسارة التوليد الذاتي على المُشفِّر أثناء التدريب.

## DiffusionGemmaEncoderModel[[transformers.DiffusionGemmaEncoderModel]]

#### transformers.DiffusionGemmaEncoderModel[[transformers.DiffusionGemmaEncoderModel]]

```python
transformers.DiffusionGemmaEncoderModel(config: DiffusionGemmaConfig)
```

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

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

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

نموذج DiffusionGemma المُشفِّر الذي يتكون من هيكل بصري ونموذج لغوي، *بدون* رأس لنمذجة اللغة. وهو مشابه جداً لنموذج Gemma4Model، باستثناء أنه لا يدعم مدخلات الصوت أو الفيديو، ويفترض دائماً مسار كود MoE في الطبقات الداخلية.

يرث هذا النموذج من [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.DiffusionGemmaEncoderModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.Tensor] = None, attention_mask: typing.Union[torch.Tensor, dict, NoneType] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, mm_token_type_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, image_position_ids: typing.Optional[torch.LongTensor] = 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/diffusion_gemma/modeling_diffusion_gemma.py#L1060)

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

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)`، *اختياري*) : المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسل باستخدام `image_processor_class`. راجع `image_processor_class.__call__` للتفاصيل (يستخدم [Gemma4Processor](/docs/transformers/main/ar/model_doc/gemma4#transformers.Gemma4Processor) `image_processor_class` لمعالجة الصور).

attention_mask (`Union[torch.Tensor, dict]` من الشكل `(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)`.

mm_token_type_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال المطابقة لكل نمط. على سبيل المثال النص (0)، الصورة (1)، الفيديو (2). يمكن الحصول على معرفات أنواع الرموز متعددة الوسائط باستخدام [AutoProcessor](/docs/transformers/main/ar/model_doc/auto#transformers.AutoProcessor). راجع [ProcessorMixin.__call__()](/docs/transformers/main/ar/main_classes/processors#transformers.ProcessorMixin.__call__) للتفاصيل.

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

image_position_ids (`torch.LongTensor` من الشكل `(batch_size, max_patches, 2)`، *اختياري*) : إحداثيات مواضع البقع ثنائية الأبعاد من معالج الصور، حيث يشير `(-1, -1)` إلى الحشو. يُمرَّر إلى مُشفِّر الرؤية لحساب تضمين الموضع.

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)`، *اختياري*) وهو تسلسل من الميزات متعددة الوسائط للمُشفِّر المُدمجة في تضمينات النص.

**يعيد:** [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`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([DiffusionGemmaConfig](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.DiffusionGemmaConfig)) والمدخلات.

تتجاوز طريقة [DiffusionGemmaEncoderModel](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.DiffusionGemmaEncoderModel) الخاصة بالتقديم (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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

## DiffusionGemmaEncoderTextModel[[transformers.DiffusionGemmaEncoderTextModel]]

#### transformers.DiffusionGemmaEncoderTextModel[[transformers.DiffusionGemmaEncoderTextModel]]

```python
transformers.DiffusionGemmaEncoderTextModel(config: DiffusionGemmaTextConfig)
```

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

#### forward[[transformers.DiffusionGemmaEncoderTextModel.forward]]

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

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

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

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 (`Union[torch.Tensor, dict]` من الشكل `(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` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

**يعيد:** [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`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([DiffusionGemmaConfig](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.DiffusionGemmaConfig)) والمدخلات.

تتجاوز طريقة [DiffusionGemmaEncoderTextModel](/docs/transformers/main/ar/model_doc/diffusion_gemma#transformers.DiffusionGemmaEncoderTextModel) الخاصة بالتقديم (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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

## DiffusionGemmaDecoderModel[[transformers.DiffusionGemmaDecoderModel]]

#### transformers.DiffusionGemmaDecoderModel[[transformers.DiffusionGemmaDecoderModel]]

```python
transformers.DiffusionGemmaDecoderModel(config: DiffusionGemmaConfig)
```

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

نموذج فك الترميز لـ DiffusionGemma.

تعالج رموز لوحة الرسم (canvas tokens) باستخدام الانتباه الذاتي ثنائي الاتجاه والانتباه المتقاطع إلى ذاكرة KV للمشفّر. يقرأ المشفّر (decoder) من ذاكرة KV دون تحديثها. باستثناء هذه الاختلافات، يشبه `DiffusionGemmaEncoderTextModel`، ويتشاركان جميع الأوزان المشتركة بينهما.

#### forward[[transformers.DiffusionGemmaDecoderModel.forward]]

```python
forward(decoder_input_ids: LongTensor, past_key_values: transformers.cache_utils.Cache | None = None, self_conditioning_logits: typing.Optional[torch.Tensor] = None, self_conditioning_mask: typing.Optional[torch.BoolTensor] = None, decoder_attention_mask: typing.Union[torch.Tensor, dict, NoneType] = None, decoder_position_ids: typing.Optional[torch.LongTensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

decoder_input_ids (`torch.LongTensor` من الشكل `(batch_size, canvas_length)`) : معرّفات الرموز (Token IDs) للوحة (canvas) التي سيتم تحسينها.

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)`.

self_conditioning_logits (`torch.Tensor` من الشكل `(batch_size, canvas_length, vocab_size)`، *اختياري*) : قيم اللوجيتات ذاتية التكييف من خطوة إزالة الضوضاء السابقة، وتُستخدم لحساب التضمينات ذاتية التكييف.

self_conditioning_mask (`torch.BoolTensor` من الشكل `(batch_size,)`، *اختياري*) : قناع لكل مثال على `self_conditioning_logits`: تُضبط الأمثلة المحددة إلى `False` على إشارة ذاتية التكييف مُصفَّرة، كأنه لم يتم تمرير أي قيم احتمالية لها. مفيد للتدريب، حيث يتم تفعيل التكييف الذاتي لكل مثال باحتمال معين.

decoder_attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length+canvas_length)` أو `dict`، *اختياري*) : قناع الانتباه (Attention mask) لذاكرة KV في المُفكِّك (decoder). يُستخدم لتحديد إدخالات ذاكرة KV المُرمَّزة (encoder) المُكمَّلة أو غير المُعبَّأة.

decoder_position_ids (`torch.LongTensor` من الشكل `(batch_size, canvas_length)`، *اختياري*) : معرّفات المواضع للرموز في اللوحة.

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

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

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

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

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.
- **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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

## DiffusionGemmaForBlockDiffusion[[transformers.DiffusionGemmaForBlockDiffusion]]

#### transformers.DiffusionGemmaForBlockDiffusion[[transformers.DiffusionGemmaForBlockDiffusion]]

```python
transformers.DiffusionGemmaForBlockDiffusion(config: DiffusionGemmaConfig)
```

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

نموذج DiffusionGemma للانتشار على مستوى الكتل. يستدعي `DiffusionGemmaModel` للحصول على الحالات المخفية للوحة الإدخال، مشروطةً بذاكرة KV للموجّه. وباستخدام رأس النموذج اللغوي (LM Head) وكتل التكييف الذاتي، يحوّل تلك الحالات المخفية إلى قيم logits لعينة اللوحة التالية، وكذلك تضمينات التكييف الذاتي لخطوة انتشار الكتل التالية.

#### forward[[transformers.DiffusionGemmaForBlockDiffusion.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Union[torch.Tensor, dict, NoneType] = None, past_key_values: transformers.cache_utils.Cache | None = None, position_ids: typing.Optional[torch.LongTensor] = None, decoder_input_ids: typing.Optional[torch.LongTensor] = None, self_conditioning_logits: typing.Optional[torch.Tensor] = None, self_conditioning_mask: typing.Optional[torch.BoolTensor] = None, decoder_attention_mask: typing.Union[torch.Tensor, dict, NoneType] = None, decoder_position_ids: typing.Optional[torch.LongTensor] = 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/diffusion_gemma/modeling_diffusion_gemma.py#L1601)

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

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : معرّفات الرموز غير المخزّنة مؤقتًا للموجّه الذي سيتم ترميزه كسياق للوحة الرسم.

attention_mask (`torch.LongTensor` من الشكل `(batch_size, sequence_length)` أو `dict`، *اختياري*) : قناع لرموز الإدخال.

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)`.

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

decoder_input_ids (`torch.LongTensor` من الشكل `(batch_size, canvas_length)`، *اختياري*) : معرّفات الرموز (Token IDs) للوحة (canvas) التي سيتم تحسينها.

self_conditioning_logits (`torch.Tensor` من الشكل `(batch_size, canvas_length, vocab_size)`، *اختياري*) : قيم اللوجيتات ذاتية التكييف من خطوة إزالة الضوضاء السابقة، وتُستخدم لحساب التضمينات ذاتية التكييف.

self_conditioning_mask (`torch.BoolTensor` من الشكل `(batch_size,)`، *اختياري*) : قناع لكل مثال على `self_conditioning_logits`: تُضبط الأمثلة المحددة إلى `False` على إشارة ذاتية التكييف مُصفَّرة، كأنه لم يتم تمرير أي قيم احتمالية لها. مفيد للتدريب، حيث يتم تفعيل التكييف الذاتي لكل مثال باحتمال معين.

decoder_attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length+canvas_length)` أو `dict`، *اختياري*) : قناع الانتباه (Attention mask) لذاكرة KV في المُفكِّك (decoder). يُستخدم لتحديد إدخالات ذاكرة KV المُرمَّزة (encoder) المُكمَّلة أو غير المُعبَّأة.

decoder_position_ids (`torch.LongTensor` من الشكل `(batch_size, canvas_length)`، *اختياري*) : معرّفات المواضع للرموز في اللوحة.

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)`، *اختياري*) وهو تسلسل من الميزات متعددة الوسائط للمُشفِّر المُدمجة في تضمينات النص.

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

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

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

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

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*) -- خسارة نمذجة اللغة.
- **logits** (`torch.Tensor` من الشكل `(batch_size, canvas_length, config.text_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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **encoder_last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) -- تسلسل الحالات المخفية عند مخرج الطبقة الأخيرة من المُشفِّر. يُعيَّن فقط عند تقديم `input_ids`، على سبيل المثال لحساب خسارة التوليد الذاتي على المُشفِّر أثناء التدريب.

مثال:

```python
>>> from PIL import Image
>>> from transformers import AutoProcessor, DiffusionGemmaForBlockDiffusion

>>> model = DiffusionGemmaForBlockDiffusion.from_pretrained("google/diffusiongemma-26B-A4B-it")
>>> processor = AutoProcessor.from_pretrained("google/diffusiongemma-26B-A4B-it")

>>> messages = [
...     {
...         "role": "user", "content": [
...             {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
...             {"type": "text", "text": "Where is the cat standing?"},
...         ]
...     },
... ]

>>> inputs = processor.apply_chat_template(
...     messages,
...     tokenize=True,
...     return_dict=True,
...     return_tensors="pt",
...     add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]
```

