# Mamba 2

[Mamba 2](https://huggingface.co/papers/2405.21060) основана на фреймворке двойственности пространств состояний (SSD), который связывает структурированные модели пространств состояний (SSM) и варианты механизма внимания. Она использует более эффективный алгоритм SSD, работающий в 2–8 раз быстрее, чем Mamba, а также модифицированную архитектуру, обеспечивающую тензорный параллелизм и структуру заголовков внимания с группированными значениями (GVA).

Все исходные контрольные точки Mamba 2 можно найти в организации [State Space Models](https://huggingface.co/state-spaces), однако в примерах ниже используется [mistralai/Mamba-Codestral-7B-v0.1](https://huggingface.co/mistralai/Mamba-Codestral-7B-v0.1), так как реализация на Hugging Face пока не поддерживает исходные контрольные точки.

Среди других архитектур на основе Mamba 2 — [Bamba](./bamba), [FalconH1](./falcon_h1) и [Zamba2](./zamba2).

> [!TIP]
> Эта модель была добавлена пользователем [ArthurZ](https://huggingface.co/ArthurZ). Нажмите на модели Mamba в правой боковой панели, чтобы увидеть больше примеров применения Mamba к различным языковым задачам.

Приведённый ниже пример показывает, как генерировать текст с помощью [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

pipeline = pipeline(
    task="text-generation",
    model="mistralai/Mamba-Codestral-7B-v0.1",
    device=0
)
pipeline("Plants create energy through a process known as")
```

```python
from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("mistralai/Mamba-Codestral-7B-v0.1")
model = AutoModelForCausalLM.from_pretrained("mistralai/Mamba-Codestral-7B-v0.1", device_map="auto")
input_ids = tokenizer("Plants create energy through a process known as", return_tensors="pt").to(model.device)

output = model.generate(**input_ids)
print(tokenizer.decode(output[0], skip_special_tokens=True))
```

Квантование снижает нагрузку на память при работе с большими моделями, представляя веса в пониженной точности. Подробнее о доступных бэкендах квантования см. в обзоре [Квантование](../quantization/overview).

Приведённый ниже пример использует [torchao](../quantization/torchao) для квантования только весов до 4-битных целых чисел.

```python
from transformers import AutoModelForCausalLM, AutoTokenizer, TorchAoConfig

quantization_config = TorchAoConfig("int4_weight_only", group_size=128)
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mamba-Codestral-7B-v0.1")
model = AutoModelForCausalLM.from_pretrained("mistralai/Mamba-Codestral-7B-v0.1", quantization_config=quantization_config, device_map="auto")
input_ids = tokenizer("Plants create energy through a process known as", return_tensors="pt").to(model.device)

output = model.generate(**input_ids)
print(tokenizer.decode(output[0], skip_special_tokens=True))
```

## Примечания

- У Codestral Mamba есть `groups=8`, которые аналогичны количеству kv-голов в модели, основанной на механизме внимания.
- У Codestral Mamba есть два различных прохода вперёд: `torch_forward` и `cuda_kernels_forward`, и их результаты, как ожидается, будут немного отличаться.
  - `torch_forward` без компиляции в 3–4 раза быстрее, чем `cuda_kernels_forward`.
  - `cuda_kernels_forward` использует исходные CUDA-ядра, если они доступны в вашей среде. На этапе prefill он работает медленнее, так как из-за более высокого накладного расхода на CPU требуется «разогрев» (см. [эти](https://github.com/state-spaces/mamba/issues/389#issuecomment-2171755306) [комментарии](https://github.com/state-spaces/mamba/issues/355#issuecomment-2147597457) для получения подробностей).

- В этой модели нет позиционных эмбеддингов, но есть `attention_mask` и специальная логика для маскирования скрытых состояний в двух местах при пакетной генерации (см. этот [комментарий](https://github.com/state-spaces/mamba/issues/66#issuecomment-1863563829) для подробностей). Это (а также добавление переосуществленных ядер Mamba 2) приводит к небольшому расхождению между результатами пакетной и кэшированной генерации.

- Алгоритм SSM в значительной степени опирается на тензорные сокращения, которые имеют эквиваленты в виде операций matmul, однако порядок выполнения операций немного отличается. Это приводит к более заметным различиям при использовании меньших точностей.

- Проверка выполняется только для выравнивания по левому краю. Выравнивание по правому краю приводит к обновлению кэша на позициях заполнителей и даёт ненадёжные результаты. Для пакетной генерации установите `tokenizer.padding_side="left"`. См. [Сторона выравнивания](../llm_tutorial#padding-side).

- Приведённый ниже пример демонстрирует, как выполнить дообучение Mamba 2 с помощью [PEFT](https://huggingface.co/docs/peft).

```python
from datasets import load_dataset
from peft import LoraConfig
from trl import SFTConfig, SFTTrainer

model_id = "mistralai/Mamba-Codestral-7B-v0.1"
dataset = load_dataset("Abirate/english_quotes", split="train")
training_args = SFTConfig(dataset_text_field="quote", gradient_checkpointing=True, per_device_train_batch_size=4)
lora_config =  LoraConfig(target_modules=["x_proj", "embeddings", "in_proj", "out_proj"])
trainer = SFTTrainer(
    model=model_id,
    args=training_args,
    train_dataset=dataset,
    peft_config=lora_config,
)
trainer.train()
```

## Mamba2Config[[transformers.Mamba2Config]]

#### transformers.Mamba2Config[[transformers.Mamba2Config]]

```python
transformers.Mamba2Config(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, num_heads: int = 128, head_dim: int = 64, vocab_size: int = 32768, hidden_size: int = 4096, state_size: int = 128, num_hidden_layers: int = 64, layer_norm_epsilon: float = 1e-05, pad_token_id: int | None = 1, bos_token_id: int | None = 0, eos_token_id: int | list[int] | None = 2, expand: int = 2, conv_kernel: int = 4, n_groups: int = 8, use_bias: bool = False, use_conv_bias: bool = True, hidden_act: str = 'silu', initializer_range: float = 0.1, residual_in_fp32: bool = True, time_step_rank: str | int = 'auto', time_step_min: float = 0.001, time_step_max: float = 0.1, time_step_floor: float = 0.0001, time_step_limit: list[float] | tuple[float, ...] = (0.0, inf), rescale_prenorm_residual: bool = False, use_cache: bool = True, chunk_size: int = 256, tie_word_embeddings: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mamba2/configuration_mamba2.py#L26)

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

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

head_dim (`int`, *необязательный*, по умолчанию `64`) : Размер измерения головы внимания. Если None, по умолчанию будет hidden_size // num_attention_heads

vocab_size (`int`, *необязательный*, по умолчанию `32768`) : Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены в `input_ids`.

hidden_size (`int`, *optional*, по умолчанию `4096`) : Размерность скрытых представлений.

state_size (`int`, *optional*, по умолчанию `128`) : Размер состояния SSM (размерность латентного состояния) в слоях Mamba.

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

layer_norm_epsilon (`float`, *optional*, по умолчанию 1e-05) : Значение epsilon, используемое в слоях нормализации по слоям.

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

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

eos_token_id (`Union[int, list[int]]`, *необязательный*, по умолчанию `2`) : Идентификатор токена, используемого для обозначения конца потока в словаре.

expand (`int`, *optional*, по умолчанию 2) : Коэффициент расширения, используемый для определения промежуточного размера.

conv_kernel (`int`, *optional*, по умолчанию `4`) : Размер свёрточного ядра.

n_groups (`int`, *optional*, по умолчанию 8) : Количество групп для матриц эволюции mamba 2.

use_bias (`bool`, *необязательный*, по умолчанию `False`) : Использовать ли смещение (bias) в ["in_proj", "out_proj"] блока миксера

use_conv_bias (`bool`, *необязательный*, по умолчанию `True`) : Использовать ли смещение (bias) в слое свёртки блока миксера.

hidden_act (`str`, *необязательный*, по умолчанию `silu`) : Нелинейная функция активации (функция или строка) в декодере. Например, `"gelu"`, `"relu"`, `"silu"` и т. д.

initializer_range (`float`, *необязательный*, по умолчанию `0.1`) : Стандартное отклонение truncated_normal_initializer для инициализации всех матриц весов.

residual_in_fp32 (`bool`, *необязательный*, по умолчанию `True`) : Указывает, должны ли остаточные соединения быть в формате `float32`. Если установлено значение `False`, остаточные соединения сохраняют тот же `dtype`, что и остальная часть модели

time_step_rank (`Union[str, int]`, *необязательный*, по умолчанию `auto`) : Ранг проекции дельты (шага времени). Может быть `"auto"` для автоматической установки.

time_step_min (`float`, *необязательный*, по умолчанию `0.001`) : Минимальное значение `time_step`, используемое для ограничения `dt_proj.bias`.

time_step_max (`float`, *необязательный*, по умолчанию `0.1`) : Максимальное значение `time_step`, используемое для ограничения `dt_proj.bias`.

time_step_floor (`float`, *необязательный*, по умолчанию `0.0001`) : Минимально допустимое значение дискретного шага времени delta после активации softplus.

time_step_limit (`Union[list[float], tuple[float, ...]]`, *необязательный*, по умолчанию `(0.0, inf)`) : Допустимый диапазон значений шага времени для ограничения.

rescale_prenorm_residual (`bool`, *необязательный*, по умолчанию `False`) : Нужно ли перемасштабировать веса `out_proj` при инициализации.

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

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

tie_word_embeddings (`bool`, *необязательный*, по умолчанию `False`) : Связывать ли веса эмбеддингов согласно отображению `tied_weights_keys` модели.

Это класс конфигурации для хранения настроек Mamba2Model. Он используется для создания модели Mamba2 в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации [state-spaces/mamba2-2.8b](https://huggingface.co/state-spaces/mamba2-2.8b)

Объекты конфигурации наследуются от [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig).

Пример:

```python
>>> from transformers import Mamba2Config, Mamba2Model

>>> # Initializing a Mamba2 configuration
>>> configuration = Mamba2Config()

>>> # Initializing a model (with random weights) from the configuration
>>> model = Mamba2Model(configuration)

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

## Mamba2Model[[transformers.Mamba2Model]]

#### transformers.Mamba2Model[[transformers.Mamba2Model]]

```python
transformers.Mamba2Model(config: Mamba2Config)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mamba2/modeling_mamba2.py#L731)

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

config ([Mamba2Config](/docs/transformers/main/ru/model_doc/mamba2#transformers.Mamba2Config)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Модель Mamba2 без дополнительных компонентов, выводящая необработанные скрытые состояния без какого-либо специализированного слоя наверху.

Эта модель наследуется от [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.Mamba2Model.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.LongTensor] = None, cache_params: transformers.cache_utils.Cache | None = None, use_cache: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, attention_mask: typing.Optional[torch.Tensor] = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mamba2/modeling_mamba2.py#L756)

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

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)

inputs_embeds (`torch.LongTensor` формы `(batch_size, sequence_length, hidden_size)`, *необязательно*) : По желанию, вместо передачи `input_ids` можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы `input_ids` преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.

cache_params (`Cache`, *optional*) : Если передано, модель использует предыдущее состояние во всех блоках (что даст вывод для переданных `input_ids`, как если бы модель добавила `state_input_ids + input_ids` в контекст).

use_cache (`bool`, *необязательный*) : Если установлено в `True`, `cache_params` возвращается и может использоваться для быстрого генерирования следующих logits.

output_hidden_states (`bool`, *необязательный*) : Нужно ли возвращать скрытые состояния всех слоёв. Подробнее о `hidden_states` в разделе возвращаемых тензоров.

return_dict (`bool`, *необязательный*) : Нужно ли возвращать [ModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.utils.ModelOutput) вместо обычного кортежа.

attention_mask (`torch.Tensor` формы `(batch_size, sequence_length)`, *необязательный*) : Маска для предотвращения применения внимания к индексам токенов отсечки. Значения маски выбираются из `[0, 1]`:  - 1 для токенов, которые **не замаскированы**, - 0 для токенов, которые **замаскированы**.  [Что такое маски внимания?](../glossary#attention-mask)

**Возвращает:** `Mamba2Output` или `tuple(torch.Tensor)`

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

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

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

- **last_hidden_state** (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`, *необязательный*) -- Последовательность скрытых состояний на выходе последнего слоя модели.
- **cache_params** (`~cache_utils.Cache`, *необязательный*) -- Состояние модели на последнем шаге. Может использоваться в forward-методе вместе с новыми `input_ids`, чтобы избежать передачи старых `input_ids`.

  Включает в себя как матрицы состояния модели пространства состояний после селективного сканирования, так и состояния свёрток
- **hidden_states** (`tuple[torch.Tensor]`, *необязательный*, возвращается, если передано `output_hidden_states=True` или если `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

## Mamba2LMHeadModel[[transformers.Mamba2ForCausalLM]]

#### transformers.Mamba2ForCausalLM[[transformers.Mamba2ForCausalLM]]

```python
transformers.Mamba2ForCausalLM(config: Mamba2Config)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mamba2/modeling_mamba2.py#L834)

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

config ([Mamba2Config](/docs/transformers/main/ru/model_doc/mamba2#transformers.Mamba2Config)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Трансформер модели MAMBA2 с головной частью для моделирования языка сверху (линейный слой с весами, не связанными с входными эмбеддингами).

Эта модель наследуется от [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.Mamba2ForCausalLM.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, cache_params: transformers.cache_utils.Cache | None = None, labels: typing.Optional[torch.LongTensor] = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, use_cache: bool | None = None, attention_mask: typing.Optional[torch.Tensor] = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mamba2/modeling_mamba2.py#L875)

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

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)

inputs_embeds (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`, *необязательно*) : По желанию, вместо передачи `input_ids` можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы `input_ids` преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.

cache_params (`Cache`, *optional*) : Если передано, модель использует предыдущее состояние во всех блоках (что даст вывод для переданных `input_ids`, как если бы модель добавила `state_input_ids + input_ids` в контекст).

labels (`torch.LongTensor` формы `(batch_size, sequence_length)`, *необязательно*) : Метки для моделирования языка. Обратите внимание, что метки **сдвинуты** внутри модели, то есть можно установить `labels = input_ids` Индексы выбираются из `[-100, 0, ..., config.vocab_size]` Все метки, установленные в `-100`, игнорируются (маскируются), потеря вычисляется только для меток в `[0, ..., config.vocab_size]`

output_hidden_states (`bool`, *необязательный*) : Нужно ли возвращать скрытые состояния всех слоёв. Подробнее о `hidden_states` в разделе возвращаемых тензоров.

return_dict (`bool`, *необязательный*) : Нужно ли возвращать [ModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.utils.ModelOutput) вместо обычного кортежа.

use_cache (`bool`, *необязательный*) : Если установлено в `True`, `cache_params` возвращается и может использоваться для быстрого генерирования следующих logits.

attention_mask (`torch.Tensor` формы `(batch_size, sequence_length)`, *необязательный*) : Маска для предотвращения применения внимания к индексам токенов отсечки. Значения маски выбираются из `[0, 1]`:  - 1 для токенов, которые **не замаскированы**, - 0 для токенов, которые **замаскированы**.  [Что такое маски внимания?](../glossary#attention-mask)

logits_to_keep (`Union[int, torch.Tensor]`, *необязательный*, по умолчанию `0`) : Если передано значение типа `int`, вычисляются logits для последних `logits_to_keep` токенов. Если передано `0`, logits вычисляются для всех `input_ids` (специальный случай). Для генерации нужны logits только последнего токена, и вычисление их только для этого токена позволяет сэкономить память, что становится весьма значимым для длинных последовательностей или большого размера словаря. Если передано значение типа `torch.Tensor`, оно должно быть одномерным и соответствовать индексам, которые нужно сохранить в измерении длины последовательности. Это полезно при использовании упакованного формата тензоров (одно измерение для batch и длины последовательности).

**Возвращает:** `Mamba2CausalLMOutput` или `tuple(torch.Tensor)`

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

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

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

- **loss** (`torch.Tensor` формы `(1,)`, *необязательный*, возвращается, если задан `labels`) -- Потеря языковой модели (для предсказания следующего токена).
- **logits** (`torch.Tensor` формы `(batch_size, sequence_length, config.vocab_size)`) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).
- **cache_params** (`~cache_utils.Cache`, *необязательный*) -- Состояние модели на последнем шаге. Может использоваться в forward-методе вместе с новыми `input_ids`, чтобы избежать передачи старых `input_ids`.

  Включает в себя как матрицы состояния модели пространства состояний после селективного сканирования, так и состояния свёрток
- **hidden_states** (`tuple[torch.Tensor]`, *необязательный*, возвращается, если передано `output_hidden_states=True` или если `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

Пример:

```python
```

