# Granite4Vision

[Granite Vision 4.1](https://huggingface.co/ibm-granite/granite-vision-4.1-4b) هو نموذج لغوي بصري من IBM Research مصمم لاستخراج بيانات المستندات بمستوى المؤسسات. يتخصص في استخراج الرسوم البيانية (Chart2CSV، Chart2Summary، Chart2Code)، واستخراج الجداول (JSON، HTML، OTSL)، واستخراج أزواج المفاتيح والقيم الدلالية.

يستند النموذج إلى [LLaVA-NeXT](llava_next) مع عدة ابتكارات معمارية:

1. **مشفر الرؤية SigLIP2** ([`google/siglip2-so400m-patch16-384`](https://huggingface.co/google/siglip2-so400m-patch16-384)): تُقسَّم الصور إلى بلاطات بمقاس 384x384.
2. **مشغِّلات Q-Former النافذية**: تضغط الميزات البصرية أربع مرات باستخدام الانتباه المتقاطع النافذي على نوافذ بقع 4x4 لتحويلها إلى رموز 2x2.
3. **حقن ميزات DeepStack** مع 8 نقاط حقن من الرؤية إلى نموذج اللغة:
   - *LayerDeepstack*: تُسقط الميزات من أربعة أعماق لمُشفِّر الرؤية إلى طبقات مبكرة مختلفة في نموذج اللغة.
   - *SpatialDeepstack*: يتم تقسيم أعمق ميزات الرؤية إلى 4 مجموعات مكانية وتُحقن في طبقات LLM اللاحقة.
4. **نموذج اللغة**: [Granite 4.1](https://huggingface.co/ibm-granite/granite-4.1-4b-base) (4B params) مع محوِّلات LoRA (rank 256) عبر جميع طبقات الانتباه الذاتي وطبقات MLP.

يُسلَّم النموذج على شكل مُكيّف LoRA فوق نموذج اللغة الأساسي LLM، مما يتيح للنشر الواحد دعم كل من مهام الوسائط المتعددة والمهام النصية فقط. يبلغ إجمالي عدد المعاملات حوالي 4 مليارات.

> [!TIP]
> تمت مساهمة هذا النموذج من قبل [IBM Granite Vision Team](https://github.com/ibm-granite).

## نصائح للاستخدام

- اضبط `padding_side="left"` أثناء التوليد المجمّع للحصول على نتائج أكثر دقة.

```py
processor.tokenizer.padding_side = "left"
```

- يدعم النموذج وسوم مهام متخصصة لاستخراج المستندات: `<chart2csv>`، `<chart2summary>`، `<chart2code>`، `<tables_html>`، `<tables_otsl>`، `<tables_json>`. مرر هذه الوسوم كنص موجه (prompt) مع صورة المستند.

- لاستخراج أزواج المفتاح والقيمة، قدّم مخطط JSON يصف الحقول المراد استخراجها. يعيد النموذج JSON منظمًا يتطابق مع المخطط.

يُظهر المثال أدناه كيفية توليد النص بناءً على صورة باستخدام [Pipeline](/docs/transformers/main/ar/main_classes/pipelines#transformers.Pipeline) أو فئة [AutoModel](/docs/transformers/main/ar/model_doc/auto#transformers.AutoModel).

```python
from transformers import pipeline

pipe = pipeline(
    task="image-text-to-text",
    model="ibm-granite/granite-vision-4.1-4b",
)
messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
            {"type": "text", "text": "Describe this image."},
        ],
    }
]
pipe(text=messages, max_new_tokens=100, return_full_text=False)
```

```python
import torch
from transformers import AutoProcessor, AutoModelForImageTextToText

model_id = "ibm-granite/granite-vision-4.1-4b"

processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(model_id, device_map="auto")

conversation = [
    {
        "role": "user",
        "content": [
            {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
            {"type": "text", "text": "Describe this image."},
        ],
    },
]
inputs = processor.apply_chat_template(
    conversation,
    add_generation_prompt=True,
    tokenize=True,
    return_dict=True,
    return_tensors="pt",
).to(model.device)

output = model.generate(**inputs, max_new_tokens=100)
print(processor.decode(output[0], skip_special_tokens=True))
```

تقلل عملية التكميم العبء على الذاكرة في النماذج الكبيرة من خلال تمثيل الأوزان بدقة أقل. راجع نظرة عامة على [التكميم](../quantization/overview) للاطلاع على المزيد من واجهات التكميم المتاحة.

يستخدم المثال أدناه [bitsandbytes](../quantization/bitsandbytes) لاختزال الأوزان إلى int4 فقط.

```python
import torch
from transformers import AutoProcessor, AutoModelForImageTextToText, BitsAndBytesConfig

quant_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.float16,
    bnb_4bit_quant_type="nf4",
)

model_id = "ibm-granite/granite-vision-4.1-4b"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(
    model_id, quantization_config=quant_config, device_map="auto"
)

conversation = [
    {
        "role": "user",
        "content": [
            {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
            {"type": "text", "text": "Describe this image."},
        ],
    },
]
inputs = processor.apply_chat_template(
    conversation,
    add_generation_prompt=True,
    tokenize=True,
    return_dict=True,
    return_tensors="pt",
).to(model.device)

output = model.generate(**inputs, max_new_tokens=100)
print(processor.decode(output[0], skip_special_tokens=True))
```

## Granite4VisionConfig[[transformers.Granite4VisionConfig]]

#### transformers.Granite4VisionConfig[[transformers.Granite4VisionConfig]]

```python
transformers.Granite4VisionConfig(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, vision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, text_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, image_token_index: int = 32000, vision_feature_select_strategy: typing.Literal['default', 'full'] = 'default', vision_feature_layer: int | list[int] = -2, tie_word_embeddings: bool = False, image_grid_pinpoints: list | None = None, image_seq_length: int = 576, downsample_rate: str | None = None, deepstack_layer_map: list | None = None, spatial_vision_layer: int = -1, spatial_target_layers: list | None = None, projector_dropout: float = 0.1, qformer_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None)
```

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

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

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

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

image_token_index (`int`، *اختياري*، القيمة الافتراضية `32000`) : فهرس رمز الصورة المستخدم كعنصر نائب لصور الإدخال.

vision_feature_select_strategy (`Literal[default, full]`، *اختياري*، الافتراضي `default`) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من العمود الفقري البصري.

vision_feature_layer (`Union[int, list[int]]`، *اختياري*، القيمة الافتراضية `-2`) : فهرس الطبقة التي يتم اختيار ميزات الرؤية منها. إذا تم تقديم عدة فهارس، فسيتم دمج ميزات الرؤية المقابلة لتلك الفهارس لتكوين ميزات الرؤية.

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

image_grid_pinpoints (`list`، *اختياري*) : قائمة بالدِّقّات الممكنة للاستخدام في معالجة الصور عالية الدقة. يجب أن يكون كل عنصر في القائمة على شكل مجموعة (tuple) أو قائمة من الشكل `(height, width)`.

image_seq_length (`int`، *اختياري*، القيمة الافتراضية `576`) : طول تسلسل تضمين صورة واحدة.

downsample_rate (`str`, *اختياري*) : معدل الاستخلاص الكسري لمشروع Window Q-Former، مثل `"1/4"` أو `"3/8"`. البسط هو جانب نافذة الاستعلام، والمقام هو جانب نافذة المفتاح.

deepstack_layer_map (`list`، *اختياري*) : قائمة من أزواج `[vision_layer_idx, llm_layer_idx]`. تُسقط الميزات من كل طبقة في مُشفِّر الرؤية وتُحقن في طبقة مُفكِّك LLM المقابلة أثناء المرور الأمامي.

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

spatial_target_layers (`list`، *اختياري*، القيمة الافتراضية `[12, 15, 18, 21]`) : طبقات نموذج LLM المستهدفة لمجموعات الإزاحة المكانية الأربع.

projector_dropout (`float`، *اختياري*، القيمة الافتراضية `0.1`) : احتمال Dropout في مُسقط Window Q-Former.

qformer_config (`dict` أو `Blip2QFormerConfig`، *اختياري*) : إعدادات لمشروع Window Q-Former. إذا كانت `None`، تُشتق القيم الافتراضية من `vision_config.hidden_size`.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Granite4VisionModel. تُستخدم لاستحداث نموذج Granite4 Vision وفقًا للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [llava-hf/llava-v1.6-mistral-7b-hf](https://huggingface.co/llava-hf/llava-v1.6-mistral-7b-hf)

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

## Granite4VisionTextConfig[[transformers.Granite4VisionTextConfig]]

#### transformers.Granite4VisionTextConfig[[transformers.Granite4VisionTextConfig]]

```python
transformers.Granite4VisionTextConfig(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 = 32000, hidden_size: int = 4096, intermediate_size: int = 11008, num_hidden_layers: int = 32, num_attention_heads: int = 32, num_key_value_heads: int | None = None, hidden_act: str = 'silu', max_position_embeddings: int = 2048, initializer_range: float = 0.02, rms_norm_eps: float = 1e-06, use_cache: bool = True, pad_token_id: int | None = None, bos_token_id: int | None = 1, eos_token_id: int | list[int] | None = 2, tie_word_embeddings: bool = False, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None, attention_bias: bool = False, attention_dropout: float | int = 0.0, mlp_bias: bool = False, embedding_multiplier: float | int = 1.0, logits_scaling: float | int = 1.0, residual_multiplier: float | int = 1.0, attention_multiplier: float | int = 1.0)
```

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

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

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

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

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

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

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

num_key_value_heads (`int`, *اختياري*) : هذا هو عدد رؤوس 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`، *اختياري*، القيمة الافتراضية `2048`) : الحد الأقصى لطول التسلسل الذي قد يُستخدم به هذا النموذج.

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

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

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

pad_token_id (`int`, *اختياري*) : معرّف الرمز (Token id) المستخدم للتعبئة (padding) في المفردات.

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

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

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

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

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

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

mlp_bias (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام انحياز في طبقات up_proj و down_proj و gate_proj ضمن طبقات MLP.

embedding_multiplier (`Union[float, int]`، *اختياري*، القيمة الافتراضية `1.0`) : معامل التوسيع المطبَّق على تضمينات الكلمات. يُستخدم لتوسيع التضمينات نسبةً إلى حجم الخفاء.

logits_scaling (`Union[float, int]`، *اختياري*، القيمة الافتراضية `1.0`) : معامل التوسيع المطبَّق على مخرجات اللوجيت قبل حساب توزيع الاحتمالات.

residual_multiplier (`Union[float, int]`، *اختياري*، القيمة الافتراضية `1.0`) : معامل التوسيع المطبَّق على الاتصالات المتبقية.

attention_multiplier (`Union[float, int]`، *اختياري*، القيمة الافتراضية `1.0`) : معامل التوسيع المطبَّق على أوزان الانتباه.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Granite4VisionModel. تُستخدم لاستحداث نموذج Granite4 Vision وفقًا للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [ibm-granite4_vision_text/granite4_vision_text-3.0-8b-base](https://huggingface.co/ibm-granite4_vision_text/granite4_vision_text-3.0-8b-base)

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

```python
>>> from transformers import Granite4VisionTextModel, Granite4VisionTextConfig

>>> # Initializing a Granite4VisionText granite4_vision_text-3b style configuration
>>> configuration = Granite4VisionTextConfig()

>>> # Initializing a model from the granite4_vision_text-7b style configuration
>>> model = Granite4VisionTextModel(configuration)

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

## Granite4VisionProcessor[[transformers.Granite4VisionProcessor]]

#### transformers.Granite4VisionProcessor[[transformers.Granite4VisionProcessor]]

```python
transformers.Granite4VisionProcessor(image_processor = None, tokenizer = None, patch_size = None, vision_feature_select_strategy = None, chat_template = None, image_token = '<image>', num_additional_image_tokens = 0, downsample_rate = None, **kwargs)
```

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

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

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

tokenizer (`tokenizer_class`) : مُجزِّئ النص (tokenizer) هو مدخل إلزامي.

patch_size (`int`، *اختياري*) : حجم البقعة من برج الرؤية.

vision_feature_select_strategy (`str`، *اختياري*) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من العمود الفقري البصري. يجب أن تكون مطابقة لتلك الموجودة في إعدادات النموذج.

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

image_token (`str`، *اختياري*، القيمة الافتراضية `"<image>"`) : الرمز الخاص المستخدم للإشارة إلى موقع الصورة.

num_additional_image_tokens (`int`، *اختياري*، القيمة الافتراضية `0`) : عدد الرموز الإضافية المضافة إلى تمثيلات الصورة، مثل CLS (+1).

downsample_rate (`str`، *اختياري*) : معدل الاستخلاص الكسري (مثل `"1/4"`)، يُستخدم لضبط عدد رموز الصورة عند حساب أعداد الرموز للتعبئة/الاقتطاع.

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

يوفر [Granite4VisionProcessor](/docs/transformers/main/ar/model_doc/granite4_vision#transformers.Granite4VisionProcessor) جميع وظائف [LlavaNextImageProcessor](/docs/transformers/main/ar/model_doc/granitevision#transformers.LlavaNextImageProcessor) و`tokenizer_class`. راجع [~LlavaNextImageProcessor](/docs/transformers/main/ar/model_doc/granitevision#transformers.LlavaNextImageProcessor) و`~tokenizer_class` لمزيد من المعلومات.

#### __call__[[transformers.Granite4VisionProcessor.__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, videos: typing.Union[list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]], NoneType] = None, audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = None, **kwargs: *<class 'transformers.processing_utils.ProcessingKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/processing_utils.py#L659)

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

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` لتجنب الغموض مع المدخلات المُجمَّعة في دفعات.

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

audio (`Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]]`، *اختياري*) : الصوت أو مجموعة الأصوات التي يجب تجهيزها. يمكن أن يكون كل صوت مصفوفة NumPy أو متجه PyTorch. في حالة استخدام مصفوفة NumPy/متجه PyTorch، يجب أن يكون شكل كل صوت (C, T)، حيث C هو عدد القنوات، وT هو طول العينة للصوت.

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 للحصول على القائمة الكاملة للحجج المدعومة.

## Granite4VisionModel[[transformers.Granite4VisionModel]]

#### transformers.Granite4VisionModel[[transformers.Granite4VisionModel]]

```python
transformers.Granite4VisionModel(config: Granite4VisionConfig)
```

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

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

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

نموذج Llava-Next الذي يتكون من هيكل بصري ونموذج لغوي دون رأس لنمذجة اللغة.

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

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.Tensor] = None, image_sizes: 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, vision_feature_layer: int | list[int] | None = None, vision_feature_select_strategy: str | None = 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/granite4_vision/modeling_granite4_vision.py#L943)

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

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

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

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` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

vision_feature_select_strategy (`str`، *اختياري*، القيمة الافتراضية `"default"`) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من هيكل الرؤية الأساسي. يمكن أن تكون إما `"default"` أو `"full"`. إذا كانت `"default"`، يتم إزالة رمز CLS من ميزات الرؤية. إذا كانت `"full"`، تُستخدم ميزات الرؤية الكاملة.

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

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

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

تُعيد طريقة [Granite4VisionModel](/docs/transformers/main/ar/model_doc/granite4_vision#transformers.Granite4VisionModel) الخاصة بالتقديم (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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **image_hidden_states** (`torch.Tensor` من الشكل `(batch_size, num_images, sequence_length, hidden_size)`، *اختياري*) -- حالات الخفاء للصور التي ينتجها نموذج الترميز البصري بعد إسقاط حالة الخفاء الأخيرة.
- **deepstack_features** (`list[tuple[int, list[torch.Tensor]]]`, *اختياري*) -- قائمة من أزواج `(llm_layer_idx, packed_features)` التي ينتجها مشغّلا deepstack والمكاني. يستهدف كل عنصر طبقة واحدة من فُكّ تشفير LLM؛ و`packed_features` هو قائمة لكل صورة من المصفوفات ذات الشكل `(num_image_tokens, hidden_size)`.

#### get_image_features[[transformers.Granite4VisionModel.get_image_features]]

```python
get_image_features(pixel_values: Tensor, image_sizes: Tensor, vision_feature_layer: int | list[int] | None = None, vision_feature_select_strategy: str | None = None, **kwargs)
```

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

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

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

image_sizes (`torch.Tensor` من الشكل `(num_images, 2)`) : الحجم الفعلي للصورة لكل صورة (H, W).

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

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

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

vision_feature_select_strategy (`str`, *اختياري*) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من هيكل الرؤية الأساسي. يمكن أن تكون إما `"default"` أو `"full"`

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

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

يحصل على حالات الإخفاء الأخيرة للصور من برج الرؤية ويطبّق الإسقاط متعدد الوسائط.

- **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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **deepstack_features** (`list[tuple[int, list[torch.Tensor]]]`, *اختياري*) -- قائمة من أزواج `(llm_layer_idx, packed_features)` التي ينتجها مشغّلا deepstack والمكاني. يستهدف كل عنصر طبقة واحدة من فُكّ تشفير LLM؛ و`packed_features` هو قائمة لكل صورة من المصفوفات ذات الشكل `(num_image_tokens, hidden_size)`.

#### get_placeholder_mask[[transformers.Granite4VisionModel.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/granite4_vision/modeling_granite4_vision.py#L920)

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

#### pack_image_features[[transformers.Granite4VisionModel.pack_image_features]]

```python
pack_image_features(image_features, image_sizes, vision_feature_select_strategy, image_newline = None)
```

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

أعد تشكيل كل image_feature وإزالة الحشو ثم حزمه في متجه image_features واحد يحتوي على جميع المتجهات البصرية.

يتجاوز الدالة الأصلية لتطبيق downsample_rate على حسابات الارتفاع/العرض.

## Granite4VisionTextModel[[transformers.Granite4VisionTextModel]]

#### transformers.Granite4VisionTextModel[[transformers.Granite4VisionTextModel]]

```python
transformers.Granite4VisionTextModel(config: Granite4VisionTextConfig)
```

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

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

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

نموذج Granite4 Vision 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.Granite4VisionTextModel.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, vision_mask: typing.Optional[torch.BoolTensor] = None, deepstack_features: dict[int, torch.Tensor] | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

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

vision_mask (`torch.BoolTensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : قناع منطقي يحدد مواضع رموز الصور. مطلوب عند توفير `deepstack_features`.

deepstack_features (`dict[int, torch.Tensor]`، *اختياري*) : تعيين من فهرس طبقة نموذج اللغة الكبير إلى ميزات الرؤية المُساقطة ذات الشكل `(num_image_tokens, 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`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([Granite4VisionConfig](/docs/transformers/main/ar/model_doc/granite4_vision#transformers.Granite4VisionConfig)) والمدخلات.

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

## Granite4VisionForConditionalGeneration[[transformers.Granite4VisionForConditionalGeneration]]

#### transformers.Granite4VisionForConditionalGeneration[[transformers.Granite4VisionForConditionalGeneration]]

```python
transformers.Granite4VisionForConditionalGeneration(config: Granite4VisionConfig)
```

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

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

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

نموذج LLAVA-NeXT الذي يتكون من هيكل بصري ونموذج لغوي.

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

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.Tensor] = None, image_sizes: 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, vision_feature_layer: int | list[int] | None = None, vision_feature_select_strategy: str | None = None, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = 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/granite4_vision/modeling_granite4_vision.py#L1084)

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

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

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

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` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

vision_feature_select_strategy (`str`، *اختياري*، القيمة الافتراضية `"default"`) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من هيكل الرؤية الأساسي. يمكن أن تكون إما `"default"` أو `"full"`. إذا كانت `"default"`، يتم إزالة رمز CLS من ميزات الرؤية. إذا كانت `"full"`، تُستخدم ميزات الرؤية الكاملة.

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) (بعد واحد لكل من الدفعة وطول الترتيب).

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

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

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

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

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

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels`) -- خسارة نمذجة اللغة (لتوقع الرمز التالي).
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) -- درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).
- **past_key_values** (`~cache_utils.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`) -- مجموعة (Tuple) من `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_hidden_states** (`torch.Tensor` من الشكل `(batch_size, num_images, sequence_length, hidden_size)`، *اختياري*) -- حالات الخفاء للصور التي ينتجها نموذج الترميز البصري بعد إسقاط حالة الخفاء الأخيرة.
- **deepstack_features** (`list[tuple[int, list[torch.Tensor]]]`, *اختياري*) -- قائمة من أزواج `(llm_layer_idx, packed_features)` التي ينتجها مشغّلا deepstack والمكاني. يستهدف كل عنصر طبقة واحدة من فُكّ تشفير LLM؛ و`packed_features` هو قائمة لكل صورة من المصفوفات ذات الشكل `(num_image_tokens, hidden_size)`.

مثال:

```python
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, Granite4VisionForConditionalGeneration

>>> model = Granite4VisionForConditionalGeneration.from_pretrained("llava-hf/llava-v1.6-mistral-7b-hf")
>>> processor = AutoProcessor.from_pretrained("llava-hf/llava-v1.6-mistral-7b-hf")

>>> prompt = "[INST] <image>\nWhat is shown in this image? [/INST]"
>>> 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")

>>> # Generate
>>> generate_ids = model.generate(**inputs, max_length=30)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"[INST]  \nWhat is shown in this image? [/INST] The image appears to be a radar chart, which is a type of multi-dimensional plot (...)"
```

#### get_image_features[[transformers.Granite4VisionForConditionalGeneration.get_image_features]]

```python
get_image_features(pixel_values: Tensor, image_sizes: Tensor, vision_feature_layer: int | list[int] | None = None, vision_feature_select_strategy: str | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

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

image_sizes (`torch.Tensor` من الشكل `(num_images, 2)`) : الحجم الفعلي للصورة لكل صورة (H, W).

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

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

vision_feature_layer (`Union[int, list[int]]`، *اختياري*) : مؤشر الطبقة لاختيار ميزة الرؤية. إذا تم تقديم عدة مؤشرات، فسيتم دمج ميزات الرؤية للمؤشرات المقابلة لتكوين ميزات الرؤية.

vision_feature_select_strategy (`str`, *اختياري*) : استراتيجية اختيار الميزات المستخدمة لاختيار ميزة الرؤية من هيكل الرؤية الأساسي. يمكن أن تكون إما `"default"` أو `"full"`

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

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

- **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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

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

>>> model = Granite4VisionForConditionalGeneration.from_pretrained("llava-hf/llava-v1.6-mistral-7b-hf")
>>> processor = AutoProcessor.from_pretrained("llava-hf/llava-v1.6-mistral-7b-hf")

>>> 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]
```

