# Video-LLaVA

## نظرة عامة

Video-LLaVa هو نموذج لغة كبير متعدد الوسائط مفتوح المصدر، تم تدريبه من خلال الضبط الدقيق لـ LlamA/Vicuna على بيانات متابعة تعليمات متعددة الوسائط تم توليدها بواسطة Llava1.5 وVideChat. وهو نموذج لغة ذاتي التوليد، مبني على بنية transformer. يوحّد Video-LLaVa التمثيلات البصرية مع فضاء ميزات اللغة، مما يتيح لنموذج اللغة الكبير تنفيذ قدرات الاستدلال البصري على الصور والفيديوهات في آنٍ واحد.

قُدِّم نموذج Video-LLaVA في [Video-LLaVA: Learning United Visual Representation by Alignment Before Projection](https://huggingface.co/papers/2311.10122) بواسطة Bin Lin وYang Ye وBin Zhu وJiaxi Cui وMunang Ning وPeng Jin وLi Yuan.

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

*حسّن النموذج الكبير للرؤية واللغة (LVLM) أداءً لمهام مختلفة في فهم الرؤية واللغة. تعتمد معظم الأساليب الحالية على ترميز الصور والفيديوهات في فئات ميزات منفصلة، ثم تُغذّى هذه الميزات كمدخلات إلى النماذج اللغوية الكبيرة. ومع ذلك، بسبب غياب الترميز الموحّد للصور والفيديوهات، أي عدم المحاذاة قبل الإسقاط، يصبح من الصعب على النموذج اللغوي الكبير (LLM) تعلّم التفاعلات متعددة الوسائط من عدة طبقات إسقاط ضعيفة. في هذا العمل، نوحّد التمثيل البصري في فضاء ميزات اللغة لنقود النموذج اللغوي الأساسي نحو LVLM موحّد. ونتيجةً لذلك، نؤسس خط أساس بسيط لكن متين لـ LVLM، وهو Video-LLaVA، الذي يتعلم من مجموعة بيانات مختلطة من الصور والفيديوهات، مما يعزز كل منهما الآخر. يحقق Video-LLaVA أداءً متفوقاً على نطاق واسع من 9 معايير للصور عبر 5 مجموعات بيانات لأسئلة وأجوبة الصور و4 مجموعات أدوات معايير للصور. بالإضافة إلى ذلك، يتفوق Video-LLaVA الخاص بنا على Video-ChatGPT بنسبة 5.8% و9.9% و18.6% و10.1% على MSRVTT وMSVD وTGIF وActivityNet على التوالي. تجدر الإشارة إلى أن التجارب الواسعة تُظهر أن Video-LLaVA يستفيد بشكل متبادل من الصور والفيديوهات ضمن تمثيل بصري موحّد، متفوقاً على النماذج المصممة خصيصاً للصور أو الفيديوهات. نهدف من خلال هذا العمل إلى تقديم رؤى متواضعة حول المدخلات متعددة الوسائط للنماذج اللغوية الكبيرة (LLM)*

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

- ننصح المستخدمين باستخدام padding_side="left" عند حساب التوليد المجمّع (batched generation) لأنه يؤدي إلى نتائج أكثر دقة. ما عليك سوى التأكد من استدعاء processor.tokenizer.padding_side = "left" قبل التوليد.

- لاحظ أن النموذج لم يُدرَّب صراحةً على معالجة صور/فيديوهات متعددة في نفس الأمر، على الرغم من أن هذا ممكن تقنيًا، فقد تواجه نتائج غير دقيقة.

- لاحظ أن مدخلات الفيديو يجب أن تحتوي على 8 إطارات بالضبط عند الإدخال، لأن النماذج تم تدريبها في هذا الإعداد.

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

> [!NOTE]
> ستُصدر نماذج LLaVA بعد الإصدار v4.46 تحذيرات بشأن إضافة `processor.patch_size = {{patch_size}}` و`processor.num_additional_image_tokens = {{num_additional_image_tokens}}` و`processor.vision_feature_select_strategy = {{vision_feature_select_strategy}}`. يُوصى بشدة بإضافة هذه السمات إلى المعالج إذا كنت تمتلك نقطة التفتيش للنموذج، أو فتح طلب سحب (PR) إذا لم تكن تمتلكها.
إضافة هذه السمات تعني أن LLaVA سيحاول استنتاج عدد رموز الصور المطلوبة لكل صورة وتوسيع النص بعدد من العناوين الوهمية `<image>` مساوٍ لعدد الرموز. عادةً يكون العدد حوالي 500 رمز لكل صورة، لذا تأكد من عدم اقتطاع النص، وإلا فسيحدث فشل عند دمج التضمينات. يمكن الحصول على السمات من إعدادات النموذج، مثل `model.config.vision_config.patch_size` أو `model.config.vision_feature_select_strategy`. يجب أن يكون `num_additional_image_tokens` بقيمة `1` إذا أضاف العمود الفقري البصري رمز CLS، أو `0` إذا لم يُضف أي شيء إضافي إلى رقعات الرؤية.

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

### وضع وسائط واحد

يمكن للنموذج قبول كل من الصور والفيديوهات كمدخلات. فيما يلي مثال على الكود للاستدلال بدقة نصفية (`torch.float16`):

```python
import av
import numpy as np

from transformers import VideoLlavaForConditionalGeneration, VideoLlavaProcessor

def read_video_pyav(container, indices):
    '''
    Decode the video with PyAV decoder.
    Args:
        container (`av.container.input.InputContainer`): PyAV container.
        indices (`list[int]`): List of frame indices to decode.
    Returns:
        result (np.ndarray): np array of decoded frames of shape (num_frames, height, width, 3).
    '''
    frames = []
    container.seek(0)
    start_index = indices[0]
    end_index = indices[-1]
    for i, frame in enumerate(container.decode(video=0)):
        if i > end_index:
            break
        if i >= start_index and i in indices:
            frames.append(frame)
    return np.stack([x.to_ndarray(format="rgb24") for x in frames])

# Load the model in half-precision
model = VideoLlavaForConditionalGeneration.from_pretrained("LanguageBind/Video-LLaVA-7B-hf", device_map="auto")
processor = VideoLlavaProcessor.from_pretrained("LanguageBind/Video-LLaVA-7B-hf")

# Load the video as an np.array, sampling uniformly 8 frames
video_path = hf_hub_download(repo_id="raushan-testing-hf/videos-test", filename="sample_demo_1.mp4", repo_type="dataset")
container = av.open(video_path)
total_frames = container.streams.video[0].frames
indices = np.arange(0, total_frames, total_frames / 8).astype(int)
video = read_video_pyav(container, indices)

# For better results, we recommend to prompt the model in the following format
prompt = "USER: <video>\nWhy is this funny? ASSISTANT:"
inputs = processor(text=prompt, videos=video, return_tensors="pt").to(model.device)

out = model.generate(**inputs, max_new_tokens=60)
processor.batch_decode(out, skip_special_tokens=True, clean_up_tokenization_spaces=True)
```

لتحسين محادثة متعددة الأدوار، غيّر تنسيق الموجه إلى:

```bash
"USER: <video>\nWhat do you see in this video? ASSISTANT: A baby reading a book. USER: Why is the it funny? ASSISTANT:"
```

### وضع الوسائط المختلطة

يمكن للنموذج أيضاً توليد مخرجات من مدخلات صور وفيديوهات متناوبة. ومع ذلك، يُرجى ملاحظة أنه لم يتم تدريبه في إعداد الصور والفيديوهات المتناوبة، مما قد يؤثر على الأداء. فيما يلي مثال على الاستخدام لمدخلات وسائط مختلطة، أضف الأسطر التالية إلى مقتطف الشيفرة أعلاه:

```python
import requests
from PIL import Image

# Generate from image and video mixed inputs
# Load and image and write a new prompt
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
prompt = "USER: <image>\nHow many cats are there in the image? ASSISTANT: There are two cats. USER: <video>\nWhy is this video funny? ASSISTANT:"

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

# Generate
generate_ids = model.generate(**inputs, max_length=50)
processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True)
```

## تحسين النموذج

### التكميم باستخدام Bitsandbytes لكفاءة استخدام الذاكرة

يمكن تحميل النموذج بعدد أقل من البتات، مما يقلل العبء على الذاكرة بشكل كبير مع الحفاظ على أداء النموذج الأصلي. وهذا يتيح النشر بكفاءة في الحالات التي تكون فيها الموارد محدودة.

أولاً، تأكد من تثبيت bitsandbytes عبر تشغيل `pip install bitsandbytes`، ولديك وصول إلى وحدة معالجة رسومية/مسرّع مدعوم من قبل المكتبة.

يخضع bitsandbytes لإعادة هيكلة لدعم واجهات خلفية متعددة تتجاوز CUDA. حالياً، نضجت تطبيقات ROCm (لوحات AMD GPU) وIntel CPU، بينما جارٍ العمل على Intel XPU، ومن المتوقع دعم Apple Silicon بحلول الربع الرابع/الربع الأول. للحصول على تعليمات التثبيت وآخر تحديثات الواجهات الخلفية، زر [هذا الرابط](https://huggingface.co/docs/bitsandbytes/main/en/installation#multi-backend).

نقدّر ملاحظاتكم للمساعدة في تحديد الأخطاء قبل الإطلاق الكامل! راجعوا [هذه الوثائق](https://huggingface.co/docs/bitsandbytes/main/en/non_cuda_backends) لمزيد من التفاصيل وروابط تقديم الملاحظات.

قم بتحميل النموذج المُكمَّم ببساطة عن طريق إضافة [BitsAndBytesConfig](/docs/transformers/v5.23.0/ar/main_classes/quantization#transformers.BitsAndBytesConfig) كما هو موضح أدناه:

```python
from transformers import BitsAndBytesConfig, VideoLlavaForConditionalGeneration

# specify how to quantize the model
quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.float16,
)

model = VideoLlavaForConditionalGeneration.from_pretrained("LanguageBind/Video-LLaVA-7B-hf", quantization_config=quantization_config, device_map="auto")
```

### Flash-Attention 2 لتسريع عملية التوليد

علاوة على ذلك، يمكننا تسريع استنتاج النموذج بشكل كبير من خلال استخدام [Flash Attention](../kernel_doc/loading_kernels#attention-kernels)، وهو تنفيذ أسرع لآلية الانتباه المستخدمة داخل النموذج.

أولاً، تأكد من تثبيت أحدث إصدار من Flash Attention 2:

```bash
pip install -U flash-attn --no-build-isolation
```

كما يجب أن يكون لديك عتاد متوافق مع Flash-Attention 2. اقرأ المزيد حول ذلك في التوثيق الرسمي لـ [مستودع flash attention](https://github.com/Dao-AILab/flash-attention). لا يمكن استخدام FlashAttention-2 إلا عند تحميل النموذج في `torch.float16` أو `torch.bfloat16`.

لتحميل نموذج وتشغيله باستخدام Flash Attention-2، ما عليك سوى إضافة `attn_implementation="flash_attention_2"` عند تحميل النموذج على النحو التالي:

```python
from transformers import VideoLlavaForConditionalGeneration

model = VideoLlavaForConditionalGeneration.from_pretrained(
    "LanguageBind/Video-LLaVA-7B-hf", , 
    attn_implementation="flash_attention_2",
).to(0, device_map="auto")
```

## VideoLlavaConfig[[transformers.VideoLlavaConfig]]

#### transformers.VideoLlavaConfig[[transformers.VideoLlavaConfig]]

```python
transformers.VideoLlavaConfig(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, video_token_index: int = 32001, projector_hidden_act: str = 'gelu', vision_feature_select_strategy: typing.Literal['default', 'full'] = 'default', vision_feature_layer: int | list[int] = -2, image_seq_length: int = 256, video_seq_length: int = 2056, multimodal_projector_bias: bool = True, tie_word_embeddings: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/video_llava/configuration_video_llava.py#L29)

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

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

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

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

video_token_index (`int`، *اختياري*، القيمة الافتراضية `32001`) : فهرس رمز الفيديو المستخدم كحقل احتياطي لفيديوهات الإدخال.

projector_hidden_act (`str`، *اختياري*، القيمة الافتراضية هي `gelu`) : دالة التنشيط المستخدمة في المُشغِّل متعدد الوسائط.

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

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

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

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

multimodal_projector_bias (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم استخدام الانحياز في المُسقط متعدد الوسائط.

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

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

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

مثال:

```python
>>> from transformers import VideoLlavaForConditionalGeneration, VideoLlavaConfig, CLIPVisionConfig, LlamaConfig

>>> # Initializing a CLIP-vision config
>>> vision_config = CLIPVisionConfig()

>>> # Initializing a Llama config
>>> text_config = LlamaConfig()

>>> # Initializing a VideoLlava video_llava-1.5-7b style configuration
>>> configuration = VideoLlavaConfig(vision_config, text_config)

>>> # Initializing a model from the video_llava-1.5-7b style configuration
>>> model = VideoLlavaForConditionalGeneration(configuration)

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

## VideoLlavaImageProcessor[[transformers.VideoLlavaImageProcessor]]

#### transformers.VideoLlavaImageProcessor[[transformers.VideoLlavaImageProcessor]]

```python
transformers.VideoLlavaImageProcessor(do_resize: bool = True, size: dict[str, int] | None = None, resample: Resampling = <Resampling.BICUBIC: 3>, do_center_crop: bool = True, crop_size: dict[str, int] | None = None, do_rescale: bool = True, rescale_factor: int | float = 0.00392156862745098, do_normalize: bool = True, image_mean: float | list[float] | None = None, image_std: float | list[float] | None = None, do_convert_rgb: bool = True, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/video_llava/image_processing_video_llava.py#L58)

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

do_resize (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب تغيير أبعاد الصورة (الارتفاع، العرض) إلى `size` المحدد. يمكن تجاوز ذلك بواسطة `do_resize` في طريقة `preprocess`.

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

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

do_center_crop (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب قص الصورة في المنتصف إلى `crop_size` المحدد. يمكن تجاوز ذلك عبر `do_center_crop` في طريقة `preprocess`.

crop_size (`dict[str, int]` *اختياري*، القيمة الافتراضية 224) : حجم الصورة الناتجة بعد تطبيق `center_crop`. يمكن تجاوز هذا الحجم بواسطة `crop_size` في طريقة `preprocess`.

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

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

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

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

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

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

ينشئ معالج صور CLIP.

#### preprocess[[transformers.VideoLlavaImageProcessor.preprocess]]

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

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/video_llava/image_processing_video_llava.py#L182)

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

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

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

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

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

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

crop_size (`dict[str, int]`، *اختياري*، القيمة الافتراضية `self.crop_size`) : حجم القص المركزي. لا يكون له تأثير إلا إذا تم تعيين `do_center_crop` إلى `True`.

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

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

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

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

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

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

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

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

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

معالجة صورة أو دفعة من الصور مسبقًا.

## VideoLlavaVideoProcessor[[transformers.VideoLlavaVideoProcessor]]

#### transformers.VideoLlavaVideoProcessor[[transformers.VideoLlavaVideoProcessor]]

```python
transformers.VideoLlavaVideoProcessor(**kwargs: *<class 'transformers.processing_utils.VideosKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/video_llava/video_processing_video_llava.py#L22)

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

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

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

size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*، القيمة الافتراضية `{'shortest_edge' : 224}`): يصف الأبعاد القصوى للمدخلات إلى النموذج.

default_to_square (`bool`، *kwargs*، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم افتراض صورة مربعة عند تغيير الحجم، إذا كان size من نوع int.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`، *kwargs*، القيمة الافتراضية `3`) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم enum `PILImageResampling`. لا يؤثر إلا إذا كانت قيمة `do_resize` هي `True`.

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

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

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

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

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

do_center_crop (`bool`, *kwargs*, *اختياري*, القيمة الافتراضية هي `True`) : ما إذا كان سيتم قص الصورة من المنتصف.

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

crop_size (`Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]`، *kwargs*، القيمة الافتراضية `{'height' : 224, 'width': 224}`): حجم الصورة الناتجة بعد تطبيق `center_crop`.

data_format (`Union[str, ~image_utils.ChannelDimension]`، *kwargs*، *اختياري*) : يُدعم `ChannelDimension.FIRST` فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.

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

device (`Annotated[Union[str, torch.device, NoneType], None]`, *kwargs*) : الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم ضبطه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.

do_sample_frames (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب أخذ عينات من الإطارات من الفيديو قبل المعالجة أم معالجة الفيديو بالكامل.

video_metadata (`Annotated[~video_utils.VideoMetadata | dict | list[dict | ~video_utils.VideoMetadata] | list[list[dict | ~video_utils.VideoMetadata]] | None, None]`, *kwargs*) : بيانات وصفية للفيديو تتضمن معلومات عن المدة الإجمالية، ومعدل الإطارات في الثانية (fps)، وإجمالي عدد الإطارات. تُستخدم هذه البيانات لاختيار إطارات من الفيديو أو لحساب الطوابع الزمنية. لا تقم بتمرير أي بيانات وصفية إلا إذا كنت تحاول فك ترميز الفيديو يدوياً قبل المعالجة.

fps (`Annotated[int | float | None, None]`، *kwargs*) : عدد الإطارات المستهدفة التي يجب أخذ عينات منها في الثانية الواحدة عندما يكون `do_sample_frames=True`.

num_frames (`Annotated[int | None, None]`، *kwargs*) : الحد الأقصى لعدد الإطارات التي يجب أخذها كعينة عند تعيين `do_sample_frames=True`.

return_metadata (`bool`، *kwargs*، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب إرجاع بيانات وصفية للفيديو أم لا. بيانات الوصفية للفيديو هي كائن يحتوي على معلومات حول مدة الفيديو، ومعدل الإطارات، وخلفية فك الترميز، وما إلى ذلك.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : إذا تم ضبطه، فسيُرجع تينسورات من إطار عمل محدد. القيم المقبولة هي: - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من NumPy.

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

ينشئ معالج فيديو من نوع VideoLlavaVideoProcessor.

## VideoLlavaProcessor[[transformers.VideoLlavaProcessor]]

#### transformers.VideoLlavaProcessor[[transformers.VideoLlavaProcessor]]

```python
transformers.VideoLlavaProcessor(image_processor = None, video_processor = None, tokenizer = None, patch_size = 14, vision_feature_select_strategy = 'default', image_token = '<image>', video_token = '<video>', chat_template = None, num_additional_image_tokens = 1, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/video_llava/processing_video_llava.py#L27)

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

image_processor (`VideoLlavaImageProcessor`) : مُعالِج الصور هو مدخل إلزامي.

video_processor (`VideoLlavaVideoProcessor`) : معالج الفيديو هو مدخل مطلوب.

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

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

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

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

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

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

num_additional_image_tokens (`int`، *اختياري*، القيمة الافتراضية 1) : عدد الرموز الإضافية المضافة إلى تمثيلات الصورة، مثل CLS (+1). إذا لم يكن للعمود الفقري أي رمز CLS أو رموز إضافية أخرى مرفقة، فلا حاجة إلى تعيين هذا الحجة.

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

يوفر [VideoLlavaProcessor](/docs/transformers/v5.23.0/ar/model_doc/video_llava#transformers.VideoLlavaProcessor) جميع وظائف [VideoLlavaImageProcessor](/docs/transformers/v5.23.0/ar/model_doc/video_llava#transformers.VideoLlavaImageProcessor) و[VideoLlavaVideoProcessor](/docs/transformers/v5.23.0/ar/model_doc/video_llava#transformers.VideoLlavaVideoProcessor) و`tokenizer_class`. راجع [~VideoLlavaImageProcessor](/docs/transformers/v5.23.0/ar/model_doc/video_llava#transformers.VideoLlavaImageProcessor) و[~VideoLlavaVideoProcessor](/docs/transformers/v5.23.0/ar/model_doc/video_llava#transformers.VideoLlavaVideoProcessor) و`~tokenizer_class` لمزيد من المعلومات.

#### __call__[[transformers.VideoLlavaProcessor.__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/v5.23.0/src/transformers/processing_utils.py#L670)

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

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_mm_token_type_ids (`bool`, *kwargs*) : ما إذا كان يجب إرجاع معرّفات أنواع الرموز متعددة الوسائط التي تشير إلى مواضع رموز الحشو متعددة الوسائط.

return_text_replacement_offsets (`bool`، *kwargs*) : ما إذا كان يجب إرجاع إزاحات الأحرف لكل عنصر نائب متعدد الوسائط (multimodal placeholder) وعنصر الاستبدال الخاص به.

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

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

## VideoLlavaModel[[transformers.VideoLlavaModel]]

#### transformers.VideoLlavaModel[[transformers.VideoLlavaModel]]

```python
transformers.VideoLlavaModel(config: VideoLlavaConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/video_llava/modeling_video_llava.py#L155)

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

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

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

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

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

#### forward[[transformers.VideoLlavaModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.Tensor] = None, pixel_values_videos: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, 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.modeling_flash_attention_utils.FlashAttentionKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/video_llava/modeling_video_llava.py#L289)

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

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/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__` للتفاصيل (`processor_class` يستخدم `image_processor_class` لمعالجة الصور).

pixel_values_videos (`torch.Tensor` من الشكل `(batch_size, num_frames, num_channels, frame_size, frame_size)`، *اختياري*) : المصفوفات المقابلة لفيديو الإدخال. يمكن الحصول على قيم البكسل للفيديوهات باستخدام `video_processor_class`. راجع `video_processor_class.__call__` للتفاصيل (`processor_class` يستخدم `video_processor_class` لمعالجة الفيديوهات).

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/v5.23.0/ar/internal/generation_utils#transformers.Cache) كمدخل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache). إذا لم يتم تمرير `past_key_values`، فسيتم تهيئة [DynamicCache](/docs/transformers/v5.23.0/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"` أو `"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)`، *اختياري*) وهو تسلسل من الميزات متعددة الوسائط للمُشفِّر المُدمجة في تضمينات النص.

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

`VideoLlavaModelOutputWithPast` أو مجموعة مرتبة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتمادًا على الإعداد (`None`) والمدخلات.

تتجاوز طريقة [VideoLlavaModel](/docs/transformers/v5.23.0/ar/model_doc/video_llava#transformers.VideoLlavaModel) الخاصة بـ forward الطريقة الخاصة `__call__`.

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

- **last_hidden_state** (`torch.Tensor` بأبعاد `(batch_size, sequence_length, hidden_size)`، *اختياري*) -- تسلسل من الحالات المخفية عند مخرجات الطبقة الأخيرة من النموذج.
- **past_key_values** (`Cache`، *اختياري*، يُعاد عند تمرير `use_cache=True` أو عند تعيين `config.use_cache=True`) -- هو كائن من نوع [Cache](/docs/transformers/v5.23.0/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`) -- مجموعة (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`، *اختياري*) -- `torch.Tensor` بحجم (batch_size, num_images, sequence_length, hidden_size)`. image_hidden_states الناتجة عن النموذج بواسطة مُشفِّر الرؤية وبعد إسقاط الحالة المخفية الأخيرة.
- **video_hidden_states** (`torch.Tensor`، *اختياري*) -- `torch.Tensor` بحجم `(batch_size * num_frames, num_videos, sequence_length, hidden_size)`. video_hidden_states الناتجة عن النموذج من قِبل مُشفِّر الرؤية وبعد إسقاط الحالة المخفية الأخيرة.

#### get_image_features[[transformers.VideoLlavaModel.get_image_features]]

```python
get_image_features(pixel_values: typing.Optional[torch.Tensor] = None, pixel_values_images: typing.Optional[torch.Tensor] = None, 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/v5.23.0/src/transformers/models/video_llava/modeling_video_llava.py#L166)

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

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

pixel_values_images (`torch.Tensor` من الشكل `(batch_size, channels, height, width)`) : المصفوفات المتناظرة مع الصور المدخلة.

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

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

vision_feature_select_strategy (`str`, *اختياري*) : استراتيجية اختيار الميزات المستخدمة لاختيار الميزة البصرية من العمود الفقري البصري. يمكن أن تكون أحد `"default"` أو `"full"`.

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

[BaseModelOutputWithPooling](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو مجموعة مرتبة من `torch.Tensor` (في حال تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([VideoLlavaConfig](/docs/transformers/v5.23.0/ar/model_doc/video_llava#transformers.VideoLlavaConfig)) والمدخلات.

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

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

#### get_placeholder_mask[[transformers.VideoLlavaModel.get_placeholder_mask]]

```python
get_placeholder_mask(input_ids: LongTensor, inputs_embeds: Tensor, image_features: typing.Optional[torch.Tensor] = None, video_features: typing.Optional[torch.Tensor] = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/video_llava/modeling_video_llava.py#L246)

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

#### get_video_features[[transformers.VideoLlavaModel.get_video_features]]

```python
get_video_features(pixel_values_videos: Tensor, vision_feature_layer: int | list[int] | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/video_llava/modeling_video_llava.py#L212)

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

pixel_values_videos (`torch.Tensor` من الشكل `(batch_size, num_frames, num_channels, frame_size, frame_size)`) : المصفوفات المقابلة لفيديو الإدخال. يمكن الحصول على قيم البكسل للفيديوهات باستخدام [VideoLlavaVideoProcessor](/docs/transformers/v5.23.0/ar/model_doc/video_llava#transformers.VideoLlavaVideoProcessor). راجع [VideoLlavaVideoProcessor.__call__()](/docs/transformers/v5.23.0/ar/model_doc/molmo2#transformers.Molmo2VideoProcessor.__call__) للتفاصيل ([VideoLlavaProcessor](/docs/transformers/v5.23.0/ar/model_doc/video_llava#transformers.VideoLlavaProcessor) يستخدم [VideoLlavaVideoProcessor](/docs/transformers/v5.23.0/ar/model_doc/video_llava#transformers.VideoLlavaVideoProcessor) لمعالجة الفيديوهات).

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

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

[BaseModelOutputWithPooling](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو مجموعة مرتبة من `torch.Tensor` (في حال تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([VideoLlavaConfig](/docs/transformers/v5.23.0/ar/model_doc/video_llava#transformers.VideoLlavaConfig)) والمدخلات.

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

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

## VideoLlavaForConditionalGeneration[[transformers.VideoLlavaForConditionalGeneration]]

#### transformers.VideoLlavaForConditionalGeneration[[transformers.VideoLlavaForConditionalGeneration]]

```python
transformers.VideoLlavaForConditionalGeneration(config: VideoLlavaConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/video_llava/modeling_video_llava.py#L371)

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

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

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

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

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

#### forward[[transformers.VideoLlavaForConditionalGeneration.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, pixel_values: typing.Optional[torch.Tensor] = None, pixel_values_images: typing.Optional[torch.Tensor] = None, pixel_values_videos: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, 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/v5.23.0/src/transformers/models/video_llava/modeling_video_llava.py#L407)

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

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/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__` للتفاصيل (`processor_class` يستخدم `image_processor_class` لمعالجة الصور).

pixel_values_images (`torch.Tensor` of shape `(batch_size, num_channels, image_size, image_size)) : The tensors corresponding to the input images. Pixel values can be obtained using [AutoImageProcessor](/docs/transformers/v5.23.0/ar/model_doc/auto#transformers.AutoImageProcessor). See [VideoLlavaImageProcessor.__call__()](/docs/transformers/v5.23.0/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) for details ([]`LlavaProcessor`] uses [VideoLlavaImageProcessor](/docs/transformers/v5.23.0/ar/model_doc/video_llava#transformers.VideoLlavaImageProcessor) for processing images).

pixel_values_videos (`torch.Tensor` من الشكل `(batch_size, num_frames, num_channels, frame_size, frame_size)`، *اختياري*) : المصفوفات المقابلة لفيديو الإدخال. يمكن الحصول على قيم البكسل للفيديوهات باستخدام `video_processor_class`. راجع `video_processor_class.__call__` للتفاصيل (`processor_class` يستخدم `video_processor_class` لمعالجة الفيديوهات).

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/v5.23.0/ar/internal/generation_utils#transformers.Cache) كمدخل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache). إذا لم يتم تمرير `past_key_values`، فسيتم تهيئة [DynamicCache](/docs/transformers/v5.23.0/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"` أو `"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)`، *اختياري*) وهو تسلسل من الميزات متعددة الوسائط للمُشفِّر المُدمجة في تضمينات النص.

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

`VideoLlavaCausalLMOutputWithPast` أو مجموعة مرتبة من `torch.Tensor` (في حال تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتمادًا على الإعداد (`None`) والمدخلات.

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

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

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels`) -- خسارة نمذجة اللغة (لتوقع الرمز التالي).
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) -- درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).
- **past_key_values** (`Cache`، *اختياري*، يُعاد عند تمرير `use_cache=True` أو عند تعيين `config.use_cache=True`) -- هو كائن من نوع [Cache](/docs/transformers/v5.23.0/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`) -- مجموعة (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`، *اختياري*) -- `torch.Tensor` بحجم (batch_size, num_images, sequence_length, hidden_size)`. image_hidden_states الناتجة عن النموذج بواسطة مُشفِّر الرؤية وبعد إسقاط الحالة المخفية الأخيرة.
- **video_hidden_states** (`torch.Tensor`، *اختياري*) -- `torch.Tensor` بحجم `(batch_size * num_frames, num_videos, sequence_length, hidden_size)`. video_hidden_states الناتجة عن النموذج من قِبل مُشفِّر الرؤية وبعد إسقاط الحالة المخفية الأخيرة.

مثال:

```python
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> import numpy as np
>>> import av
>>> from huggingface_hub import hf_hub_download
>>> from transformers import VideoLlavaProcessor, VideoLlavaForConditionalGeneration

>>> def read_video_pyav(container, indices):
...     '''
...     Decode the video with PyAV decoder.
...     Args:
...         container (`av.container.input.InputContainer`): PyAV container.
...         indices (`list[int]`): List of frame indices to decode.
...     Returns:
...         result (np.ndarray): np array of decoded frames of shape (num_frames, height, width, 3).
...     '''
...     frames = []
...     container.seek(0)
...     start_index = indices[0]
...     end_index = indices[-1]
...     for i, frame in enumerate(container.decode(video=0)):
...         if i > end_index:
...             break
...         if i >= start_index and i in indices:
...             frames.append(frame)
...     return np.stack([x.to_ndarray(format="rgb24") for x in frames])

>>> model = VideoLlavaForConditionalGeneration.from_pretrained("LanguageBind/Video-LLaVA-7B-hf")
>>> processor = VideoLlavaProcessor.from_pretrained("LanguageBind/Video-LLaVA-7B-hf")

>>> prompt = "USER: <video>\nWhy is this video funny? ASSISTANT:"
>>> video_path = hf_hub_download(repo_id="raushan-testing-hf/videos-test", filename="sample_demo_1.mp4", repo_type="dataset")
>>> container = av.open(video_path)

>>> # sample uniformly 8 frames from the video
>>> total_frames = container.streams.video[0].frames
>>> indices = np.arange(0, total_frames, total_frames / 8).astype(int)
>>> clip = read_video_pyav(container, indices)

>>> inputs = processor(text=prompt, videos=clip, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(**inputs, max_length=80)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"USER:  Why is this video funny? ASSISTANT: The video is funny because the baby is playing with a Wii remote while sitting on the floor, and the baby is wearing glasses.Ъ. The baby's actions are amusing because it is a young child trying to interact with a video game, which is not a typical activity for a"

>>> # to generate from image and video mix
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))
>>> prompt = [
...     "USER: <image>\nHow many cats do you see? ASSISTANT:",
...     "USER: <video>\nWhy is this video funny? ASSISTANT:"
... ]
>>> inputs = processor(text=prompt, images=image, videos=clip, padding=True, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(**inputs, max_length=50)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True)
['USER:   How many cats do you see? ASSISTANT: There are two cats visible in the image. (or three, if you count the one in the background).', 'USER:  Why is this video funny? ASSISTANT: The video is funny because it shows a baby sitting on a bed and playing with a Wii remote.Ъ. The baby is holding the remote']
```

#### get_image_features[[transformers.VideoLlavaForConditionalGeneration.get_image_features]]

```python
get_image_features(pixel_values: 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/v5.23.0/src/transformers/models/video_llava/modeling_video_llava.py#L384)

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

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`) : المصفوفات المتناظرة مع الصور المدخلة. يمكن الحصول على قيم البكسل باستخدام `image_processor_class`. راجع `image_processor_class.__call__` للتفاصيل (`processor_class` يستخدم `image_processor_class` لمعالجة الصور).

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

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

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

[BaseModelOutputWithPooling](/docs/transformers/v5.23.0/ar/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) أو مجموعة مرتبة من `torch.Tensor` (في حال تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد (`None`) والمدخلات.

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

