# 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**: сжимают визуальные признаки в 4 раза, используя оконное кросс-внимание по окнам патчей 4x4 и преобразуя их в токены 2x2.
3. **Инжекция признаков DeepStack** с 8 точками инъекции от модуля зрения в LLM:
   - *LayerDeepstack*: признаки с четырёх уровней глубины визуального энкодера проецируются в разные ранние слои LLM.
   - *SpatialDeepstack*: самые глубокие визуальные признаки разделяются на 4 пространственные группы и внедряются в более поздние слои LLM.
4. **Языковая модель**: [Granite 4.1](https://huggingface.co/ibm-granite/granite-4.1-4b-base) (4 млрд параметров) с адаптерами LoRA (ранг 256) во всех слоях self-attention и 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>`. Передавайте их в качестве текстового промпта вместе с изображением документа.

- Для извлечения пар «ключ-значение» предоставьте схему JSON, описывающую поля, которые нужно извлечь. Модель возвращает структурированный JSON, соответствующий схеме.

Приведённый ниже пример показывает, как генерировать текст на основе изображения с помощью [Pipeline](/docs/transformers/main/ru/main_classes/pipelines#transformers.Pipeline) или класса [AutoModel](/docs/transformers/main/ru/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`, *необязательный*) : Список возможных разрешений для обработки изображений высокого разрешения. Каждый элемент списка должен быть кортежем или списком вида `(height, width)`.

image_seq_length (`int`, *optional*, по умолчанию `576`) : Длина последовательности одного эмбеддинга изображения.

downsample_rate (`str`, *optional*) : Дробная скорость даунсемплинга для проектора 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 для 4 групп пространственных смещений.

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/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/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`, *optional*, по умолчанию `4096`) : Размерность скрытых представлений.

intermediate_size (`int`, *optional*, по умолчанию `11008`) : Размерность представлений MLP.

num_hidden_layers (`int`, *необязательный*, по умолчанию `32`) : Количество скрытых слоев в декодере Transformer.

num_attention_heads (`int`, *необязательный*, по умолчанию `32`) : Количество головок внимания для каждого слоя внимания в декодере Transformer.

num_key_value_heads (`int`, *optional*) : Это количество ключевых и 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. При конвертации multi-head checkpoint в GQA checkpoint каждая группа ключевых и 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`) : Значение epsilon, используемое слоями нормализации rms.

use_cache (`bool`, *необязательный*, по умолчанию `True`) : Следует ли модели возвращать последние значения внимания key/values (не используется во всех моделях). Актуально только при `config.is_decoder=True` или если модель является генеративной моделью только с декодером.

pad_token_id (`int`, *необязательный*) : Идентификатор токена, используемый для выравнивания в словаре.

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]`, *optional*) : Словарь, содержащий параметры конфигурации для вложений RoPE. Словарь должен содержать значение для `rope_theta` и, при необходимости, параметры, используемые для масштабирования, если вы хотите использовать RoPE с более длинными `max_position_embeddings`.

attention_bias (`bool`, *необязательный*, по умолчанию `False`) : Использовать ли смещение (bias) в слоях проекции запроса, ключа, значения и вывода при само-внимании.

attention_dropout (`Union[float, int]`, *необязательный*, по умолчанию `0.0`) : Коэффициент dropout для вероятностей внимания.

mlp_bias (`bool`, *необязательный*, по умолчанию `False`) : Использовать ли смещение (bias) в слоях 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/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/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#L31)

**Параметры:**

image_processor (`LlavaNextImageProcessor`) : Процессор изображений является обязательным входным параметром.

tokenizer (`tokenizer_class`) : Токенизатор является обязательным входным параметром.

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/ru/model_doc/granite4_vision#transformers.Granite4VisionProcessor) предоставляет все возможности [LlavaNextImageProcessor](/docs/transformers/main/ru/model_doc/granitevision#transformers.LlavaNextImageProcessor) и `tokenizer_class`. Подробнее см. в [~LlavaNextImageProcessor](/docs/transformers/main/ru/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#L669)

**Параметры:**

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]]]`, *optional*) : Видео для предобработки. Ожидается одно видео или батч видео со значениями пикселей в диапазоне от 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*) : Нужно ли возвращать смещения символов для каждого мультимодального плейсхолдера и его замены.

return_tensors (`str` или [TensorType](/docs/transformers/main/ru/internal/file_utils#transformers.TensorType), *optional*) : Если задано, возвращает тензоры конкретного фреймворка. Допустимые значения:  - `'pt'`: возвращает объекты `torch.Tensor` PyTorch. - `'np'`: возвращает объекты `np.ndarray` NumPy.

- ****kwargs** ([ProcessingKwargs](/docs/transformers/main/ru/main_classes/processors#transformers.ProcessingKwargs), *optional*) : Дополнительные параметры обработки для каждой модальности (текст, изображения, видео, аудио). Специфичные для модели параметры перечислены выше; полный список поддерживаемых аргументов см. в классе 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/ru/model_doc/granite4_vision#transformers.Granite4VisionConfig)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Модель Llava-Next, состоящая из визуального бэкбона и языковой модели без заголовка языкового моделирования.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/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)`, *необязательно*) : Индексы токенов входной последовательности в словаре. По умолчанию заполнение (padding) игнорируется. Индексы можно получить с помощью [AutoTokenizer](/docs/transformers/main/ru/model_doc/auto#transformers.AutoTokenizer). Подробности см. в [PreTrainedTokenizer.encode()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) и [PreTrainedTokenizer.__call__()](/docs/transformers/main/ru/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/ru/model_doc/granitevision#transformers.LlavaNextImageProcessor). Подробности см. в [LlavaNextImageProcessor.__call__()](/docs/transformers/main/ru/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) ([Granite4VisionProcessor](/docs/transformers/main/ru/model_doc/granite4_vision#transformers.Granite4VisionProcessor) использует [LlavaNextImageProcessor](/docs/transformers/main/ru/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]`.  [Что такое position IDs?](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`, *необязательный*) : Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это `past_key_values`, возвращаемые моделью на предыдущем этапе декодирования, когда `use_cache=True` или `config.use_cache=True`. В качестве входного значения допускается только экземпляр [Cache](/docs/transformers/main/ru/internal/generation_utils#transformers.Cache), см. наше [руководство по kv cache](https://huggingface.co/docs/transformers/en/kv_cache). Если `past_key_values` не переданы, по умолчанию будет инициализирован [DynamicCache](/docs/transformers/main/ru/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]`, *необязательный*) : Словарь, где ключами являются поддерживаемые модальности, а значениями — закодированные выходные данные для данной модальности. Каждый закодированный выход представляет собой кортеж, состоящий из (`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/ru/model_doc/granite4_vision#transformers.Granite4VisionConfig)) и входных данных.

Метод forward модели [Granite4VisionModel](/docs/transformers/main/ru/model_doc/granite4_vision#transformers.Granite4VisionModel) переопределяет специальный метод `__call__`.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр `Module`, а не эту функцию, поскольку первый выполняет шаги предварительной и постобработки, тогда как второй молча их игнорирует.

- **last_hidden_state** (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`) -- Последовательность скрытых состояний на выходе последнего слоя модели.

  Если используется `past_key_values`, выводится только последнее скрытое состояние последовательностей формы `(batch_size, 1, hidden_size)`.
- **past_key_values** (`Cache`, *необязательный*, возвращается при передаче `use_cache=True` или когда `config.use_cache=True`) -- это экземпляр [Cache](/docs/transformers/main/ru/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 и spatial. Каждая запись соответствует одному слою декодера 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/ru/model_doc/granite4_vision#transformers.Granite4VisionConfig)) и входных данных.

Получает последние скрытые состояния изображений из визуальной башни и применяет мультимодальную проекцию.

- **last_hidden_state** (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`) -- Последовательность скрытых состояний на выходе последнего слоя модели.
- **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 и spatial. Каждая запись соответствует одному слою декодера 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/ru/model_doc/granite4_vision#transformers.Granite4VisionTextConfig)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Модель Granite4 Vision Text, выводящая необработанные скрытые состояния (raw hidden-states) без какого-либо специализированного слоя (head) сверху.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/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)`, *необязательно*) : Индексы токенов входной последовательности в словаре. По умолчанию заполнение (padding) игнорируется. Индексы можно получить с помощью [AutoTokenizer](/docs/transformers/main/ru/model_doc/auto#transformers.AutoTokenizer). Подробности см. в [PreTrainedTokenizer.encode()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) и [PreTrainedTokenizer.__call__()](/docs/transformers/main/ru/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]`.  [Что такое position IDs?](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`, *необязательный*) : Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это `past_key_values`, возвращаемые моделью на предыдущем этапе декодирования, когда `use_cache=True` или `config.use_cache=True`. В качестве входного значения допускается только экземпляр [Cache](/docs/transformers/main/ru/internal/generation_utils#transformers.Cache), см. наше [руководство по kv cache](https://huggingface.co/docs/transformers/en/kv_cache). Если `past_key_values` не переданы, по умолчанию будет инициализирован [DynamicCache](/docs/transformers/main/ru/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]`, *необязательный*) : Соответствие между индексом слоя LLM и спроецированными визуальными признаками формы `(num_image_tokens, hidden_size)`. Признаки добавляются в позиции токенов изображения в скрытых состояниях перед соответствующим слоем декодера.

**Возвращает:** [BaseModelOutputWithPast](/docs/transformers/main/ru/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) или `tuple(torch.Tensor)`

[BaseModelOutputWithPast](/docs/transformers/main/ru/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPast) или кортеж `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([Granite4VisionConfig](/docs/transformers/main/ru/model_doc/granite4_vision#transformers.Granite4VisionConfig)) и входных данных.

Метод forward модели [Granite4VisionTextModel](/docs/transformers/main/ru/model_doc/granite4_vision#transformers.Granite4VisionTextModel) переопределяет специальный метод `__call__`.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр `Module`, а не эту функцию, поскольку первый выполняет шаги предварительной и постобработки, тогда как второй молча их игнорирует.

- **last_hidden_state** (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`) -- Последовательность скрытых состояний на выходе последнего слоя модели.

  Если используется `past_key_values`, выводится только последнее скрытое состояние последовательностей формы `(batch_size, 1, hidden_size)`.
- **past_key_values** (`Cache`, *необязательный*, возвращается при передаче `use_cache=True` или когда `config.use_cache=True`) -- это экземпляр [Cache](/docs/transformers/main/ru/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/ru/model_doc/granite4_vision#transformers.Granite4VisionConfig)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Модель LLAVA-NeXT, состоящая из визуального бэкбона и языковой модели.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/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)`, *необязательно*) : Индексы токенов входной последовательности в словаре. По умолчанию заполнение (padding) игнорируется. Индексы можно получить с помощью [AutoTokenizer](/docs/transformers/main/ru/model_doc/auto#transformers.AutoTokenizer). Подробности см. в [PreTrainedTokenizer.encode()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) и [PreTrainedTokenizer.__call__()](/docs/transformers/main/ru/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/ru/model_doc/granitevision#transformers.LlavaNextImageProcessor). Подробности см. в [LlavaNextImageProcessor.__call__()](/docs/transformers/main/ru/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) ([Granite4VisionProcessor](/docs/transformers/main/ru/model_doc/granite4_vision#transformers.Granite4VisionProcessor) использует [LlavaNextImageProcessor](/docs/transformers/main/ru/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]`.  [Что такое position IDs?](../glossary#position-ids)

past_key_values (`~cache_utils.Cache`, *необязательный*) : Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это `past_key_values`, возвращаемые моделью на предыдущем этапе декодирования, когда `use_cache=True` или `config.use_cache=True`. В качестве входного значения допускается только экземпляр [Cache](/docs/transformers/main/ru/internal/generation_utils#transformers.Cache), см. наше [руководство по kv cache](https://huggingface.co/docs/transformers/en/kv_cache). Если `past_key_values` не переданы, по умолчанию будет инициализирован [DynamicCache](/docs/transformers/main/ru/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 (см. docstring `input_ids`). Токены с индексами, установленными в `-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`, logits вычисляются для всех `input_ids` (специальный случай). Для генерации нужны logits только последнего токена, и вычисление их только для этого токена позволяет сэкономить память, что становится весьма значимым для длинных последовательностей или большого размера словаря. Если передано значение типа `torch.Tensor`, оно должно быть одномерным и соответствовать индексам, которые нужно сохранить в измерении длины последовательности. Это полезно при использовании упакованного формата тензоров (одно измерение для batch и длины последовательности).

mm_encoder_outputs (`dict[str, ~modeling_outputs.BaseModelOutputWithPooling]`, *необязательный*) : Словарь, где ключами являются поддерживаемые модальности, а значениями — закодированные выходные данные для данной модальности. Каждый закодированный выход представляет собой кортеж, состоящий из (`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/ru/model_doc/granite4_vision#transformers.Granite4VisionConfig)) и входных данных.

Метод forward класса [Granite4VisionForConditionalGeneration](/docs/transformers/main/ru/model_doc/granite4_vision#transformers.Granite4VisionForConditionalGeneration) переопределяет специальный метод `__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/ru/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 и spatial. Каждая запись соответствует одному слою декодера 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/ru/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) или `tuple(torch.Tensor)`

Объект [BaseModelOutputWithPooling](/docs/transformers/main/ru/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) или кортеж `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([Granite4VisionConfig](/docs/transformers/main/ru/model_doc/granite4_vision#transformers.Granite4VisionConfig)) и входных данных.

- **last_hidden_state** (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`) -- Последовательность скрытых состояний на выходе последнего слоя модели.
- **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]
```

