# Mixtral

## Обзор

[Mixtral-8x7B](https://huggingface.co/papers/2401.04088) был представлен в [блог-посте Mixtral of Experts](https://mistral.ai/news/mixtral-of-experts/) авторами: Albert Jiang, Alexandre Sablayrolles, Arthur Mensch, Chris Bamford, Devendra Singh Chaplot, Diego de las Casas, Florian Bressand, Gianna Lengyel, Guillaume Lample, Lélio Renard Lavaud, Lucile Saulnier, Marie-Anne Lachaux, Pierre Stock, Teven Le Scao, Thibaut Lavril, Thomas Wang, Timothée Lacroix, William El Sayed.

Во введении к статье в блоге сказано:

*Сегодня команда с гордостью представляет Mixtral 8x7B — высококачественную разреженную модель с механизмом выбора экспертов (SMoE) с открытыми весами. Лицензия — Apache 2.0. Mixtral превосходит Llama 2 70B по большинству бенчмарков при 6-кратном ускорении инференса. Это самая сильная модель с открытыми весами и разрешительной лицензией, а также лучшая модель в целом с точки зрения соотношения стоимости и производительности. В частности, она соответствует или превосходит GPT3.5 по большинству стандартных бенчмарков.*

Mixtral-8x7B — это вторая большая языковая модель (LLM), выпущенная [mistral.ai](https://mistral.ai/), после [Mistral-7B](mistral).

### Детали архитектуры

Mixtral-8x7B — это Transformer только с декодером со следующими архитектурными решениями:

- Mixtral is a Mixture of Experts (MoE) model with 8 experts per MLP, with a total of 45 billion parameters. To learn more about mixture-of-experts, refer to the [blog post](https://huggingface.co/blog/moe).
- Несмотря на то, что модель содержит 45 миллиардов параметров, вычислительные ресурсы, необходимые для одного прямого прохода, сопоставимы с ресурсами модели на 14 миллиардов параметров. Это объясняется тем, что, хотя каждый из экспертов должен быть загружен в оперативную память (требования к RAM сопоставимы с моделью на 70B), каждый токен из скрытых состояний маршрутизируется дважды (top 2 routing), в результате чего вычислительная нагрузка (операции, выполняемые на каждом шаге прямого прохода) составляет всего 2 X sequence_length.

Следующие детали реализации совпадают с первой моделью Mistral AI [Mistral-7B](mistral):

- Sliding Window Attention — обучена с длиной контекста 8k и фиксированным размером кэша, с теоретическим охватом внимания 128K токенов
- GQA (Grouped Query Attention) — позволяет ускорить инференс и уменьшить размер кэша.
- BPE-токенизатор с байтовым fallback — гарантирует, что символы никогда не отображаются на токены вне словаря.

Подробнее см. в [посте в блоге о выпуске](https://mistral.ai/news/mixtral-of-experts/).

### Лицензия

`Mixtral-8x7B` распространяется по лицензии Apache 2.0.

## Советы по использованию

Команда Mistral выпустила 2 контрольные точки:

- базовая модель, [Mixtral-8x7B-v0.1](https://huggingface.co/mistralai/Mixtral-8x7B-v0.1), которая была предварительно обучена предсказывать следующий токен на данных интернет-масштаба.
- модель, обученная по инструкциям, [Mixtral-8x7B-Instruct-v0.1](https://huggingface.co/mistralai/Mixtral-8x7B-Instruct-v0.1), которая является базовой моделью, оптимизированной для целей чата с использованием контролируемого дообучения (SFT) и прямой оптимизации предпочтений (DPO).

Базовую модель можно использовать следующим образом:

```python
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("mistralai/Mixtral-8x7B-v0.1", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mixtral-8x7B-v0.1")

prompt = "My favourite condiment is"

model_inputs = tokenizer([prompt], return_tensors="pt").to(model.device)

generated_ids = model.generate(**model_inputs, max_new_tokens=100, do_sample=True)
tokenizer.batch_decode(generated_ids)[0]
"My favourite condiment is to ..."
```

Модель, прошедшая инструкционную настройку, можно использовать следующим образом:

```python
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("mistralai/Mixtral-8x7B-Instruct-v0.1", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mixtral-8x7B-Instruct-v0.1")

messages = [
    {"role": "user", "content": "What is your favourite condiment?"},
    {"role": "assistant", "content": "Well, I'm quite partial to a good squeeze of fresh lemon juice. It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!"},
    {"role": "user", "content": "Do you have mayonnaise recipes?"}
]

model_inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device)

generated_ids = model.generate(model_inputs, max_new_tokens=100, do_sample=True)
tokenizer.batch_decode(generated_ids)[0]
"Mayonnaise can be made as follows: (...)"
```

Как видно, для модели, прошедшей инструкционную настройку, необходимо применить [шаблон чата](../chat_templating), чтобы убедиться, что входные данные подготовлены в правильном формате.

## Ускорение Mixtral с помощью Flash Attention

Приведённые выше фрагменты кода демонстрируют инференс без каких-либо оптимизаций. Однако модель можно значительно ускорить, используя [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). Также убедитесь, что вы загружаете модель в половинной точности (например, `torch.float16`).

Чтобы загрузить и запустить модель с использованием Flash Attention-2, обратитесь к фрагменту кода ниже:

```python
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("mistralai/Mixtral-8x7B-v0.1", attn_implementation="flash_attention_2", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mixtral-8x7B-v0.1")

prompt = "My favourite condiment is"

model_inputs = tokenizer([prompt], return_tensors="pt").to(model.device)

generated_ids = model.generate(**model_inputs, max_new_tokens=100, do_sample=True)
tokenizer.batch_decode(generated_ids)[0]
"The expected output"
```

### Ожидаемое ускорение

Ниже приведена диаграмма с ожидаемым ускорением, сравнивающая время чистого инференса между нативной реализацией в transformers с использованием чекпоинта `mistralai/Mixtral-8x7B-v0.1` и версией модели с Flash Attention 2.

### Sliding window Attention

Текущая реализация поддерживает механизм скользящего окна внимания и эффективное управление кэшем памяти. Чтобы включить скользящее окно внимания, убедитесь, что у вас установлена версия `flash-attn`, совместимая со скользящим окном внимания (`>=2.3.0`).

Модель Flash Attention-2 также использует более эффективный по памяти механизм нарезки кэша — в соответствии с рекомендациями официального реализации модели Mistral, использующей механизм скользящего кэша, мы поддерживаем фиксированный размер кэша (`self.config.sliding_window`), поддерживаем пакетную генерацию только для `padding_side="left"` и используем абсолютную позицию текущего токена для вычисления позиционного эмбеддинга.

## Сокращение Mixtral с помощью квантования

Поскольку модель Mixtral содержит 45 миллиардов параметров, для её хранения в половинной точности (float16) потребуется около 90 ГБ видеопамяти GPU, так как каждый параметр занимает 2 байта. Однако размер модели можно уменьшить с помощью [квантования](../quantization/overview). Если модель квантована до 4 бит (то есть до половины байта на параметр), то для размещения всей модели достаточно одного A100 с 40 ГБ памяти, поскольку в этом случае требуется лишь около 27 ГБ.

Квантование модели сводится к передаче параметра `quantization_config` в модель. Ниже мы используем библиотеку квантования bitsandbytes (но см. [эту страницу](../quantization/overview) для альтернативных методов квантования):

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

# 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 = AutoModelForCausalLM.from_pretrained("mistralai/Mixtral-8x7B-Instruct-v0.1", quantization_config=True, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mixtral-8x7B-Instruct-v0.1")

prompt = "My favourite condiment is"

messages = [
    {"role": "user", "content": "What is your favourite condiment?"},
    {"role": "assistant", "content": "Well, I'm quite partial to a good squeeze of fresh lemon juice. It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!"},
    {"role": "user", "content": "Do you have mayonnaise recipes?"}
]

model_inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device)

generated_ids = model.generate(model_inputs, max_new_tokens=100, do_sample=True)
tokenizer.batch_decode(generated_ids)[0]
"The expected output"
```

Эта модель была добавлена [Younes Belkada](https://huggingface.co/ybelkada) и [Arthur Zucker](https://huggingface.co/ArthurZ). Исходный код можно найти [здесь](https://github.com/mistralai/mistral-src).

## Ресурсы

Список официальных ресурсов Hugging Face и сообщества (отмечены 🌎), которые помогут вам начать работу с Mixtral. Если вы хотите предложить ресурс для включения в этот список, пожалуйста, создайте Pull Request, и мы его рассмотрим! В идеале ресурс должен демонстрировать что-то новое, а не дублировать существующие материалы.

- Демо-ноутбук для выполнения контролируемой дообучения (SFT) модели Mixtral-8x7B можно найти [здесь](https://github.com/NielsRogge/Transformers-Tutorials/blob/master/Mistral/Supervised_fine_tuning_(SFT)_of_an_LLM_using_Hugging_Face_tooling.ipynb). 🌎
- Статья в [блоге](https://medium.com/@prakharsaxena11111/finetuning-mixtral-7bx8-6071b0ebf114) о дообучении Mixtral-8x7B с использованием PEFT. 🌎
- [Alignment Handbook](https://github.com/huggingface/alignment-handbook) от Hugging Face содержит скрипты и рецепты для выполнения дообучения с учителем (SFT) и прямой оптимизации предпочтений (DPO) для модели Mistral-7B. Включены скрипты для полного дообучения, QLoRa на одном ускорителе, а также дообучения на нескольких ускорителях.
- [Руководство по задаче каузального языкового моделирования](../tasks/language_modeling)

## MixtralConfig[[transformers.MixtralConfig]]

#### transformers.MixtralConfig[[transformers.MixtralConfig]]

```python
transformers.MixtralConfig(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 = 14336, num_hidden_layers: int = 32, num_attention_heads: int = 32, num_key_value_heads: int = 8, head_dim: int | None = None, hidden_act: str = 'silu', max_position_embeddings: int = 131072, initializer_range: float = 0.02, rms_norm_eps: float = 1e-05, 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, sliding_window: int | None = None, attention_dropout: float | int = 0.0, num_experts_per_tok: int = 2, num_local_experts: int = 8, output_router_logits: bool = False, router_aux_loss_coef: float = 0.001, router_jitter_noise: float = 0.0, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None)
```

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

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

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

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

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

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

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

num_key_value_heads (`int`, *optional*, по умолчанию `8`) : Это количество ключевых и 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`.

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

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

max_position_embeddings (`int`, *необязательный*, по умолчанию `131072`) : Максимальная длина последовательности, с которой может использоваться эта модель.

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

rms_norm_eps (`float`, *необязательный*, по умолчанию `1e-05`) : Значение 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` модели.

sliding_window (`int`, *optional*) : Размер окна скользящего внимания. Если `None`, скользящее окно не применяется.

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

num_experts_per_tok (`int`, *optional*, по умолчанию `2`) : Количество экспертов, к которым маршрутизируется каждый токен. Это значение top-k для маршрутизации по выбору токена.

num_local_experts (`int`, *optional*, по умолчанию `8`) : Количество локальных экспертов на каждом устройстве. `num_experts` должно делиться нацело на `num_local_experts`.

output_router_logits (`bool`, *необязательный*, по умолчанию `False`) : Нужно ли модели возвращать логиты роутера. Включение этого параметра также позволит модели выводить вспомогательную потерю, включая потерю балансировки нагрузки и z-потерю роутера.

router_aux_loss_coef (`float`, *необязательный*, по умолчанию `0.001`) : Коэффициент вспомогательной функции потерь для балансировки нагрузки. Используется для штрафования неравномерного маршрутизирования запросов к экспертам в MoE-моделях.

router_jitter_noise (`float`, *optional*, по умолчанию `0.0`) : Количество шума, добавляемого к логитам роутера во время обучения для более эффективного балансирования нагрузки.

rope_parameters (`Union[~modeling_rope_utils.RopeParameters, dict]`, *optional*) : Словарь, содержащий параметры конфигурации для вложений RoPE. Словарь должен содержать значение для `rope_theta` и, при необходимости, параметры, используемые для масштабирования, если вы хотите использовать RoPE с более длинными `max_position_embeddings`.

Это класс конфигурации для хранения настроек MixtralModel. Он используется для создания модели Mixtral в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации [mistralai/Mixtral-8x7B-v0.1](https://huggingface.co/mistralai/Mixtral-8x7B-v0.1)

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

Пример:

```python
>>> from transformers import MixtralModel, MixtralConfig

>>> # Initializing a Mixtral 7B style configuration
>>> configuration = MixtralConfig()

>>> # Initializing a model from the Mixtral 7B style configuration
>>> model = MixtralModel(configuration)

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

## MistralCommonBackend[[transformers.MistralCommonBackend]]

#### transformers.MistralCommonBackend[[transformers.MistralCommonBackend]]

```python
transformers.MistralCommonBackend(tokenizer_path: str | os.PathLike | pathlib.Path, mode: str | ValidationMode = 'test', model_max_length: int = 1000000000000000019884624838656, padding_side: str = 'left', truncation_side: str = 'right', model_input_names: list[str] | None = None, clean_up_tokenization_spaces: bool = False, **kwargs)
```

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

Класс для обёртки токенизаторов `mistral-common`.

`mistral-common` — это официальная библиотека токенизаторов для моделей Mistral AI. Для её использования необходимо установить её с помощью:

```bash
pip install transformers[mistral-common]
```

В противном случае токенизатор использует реализацию токенизатора из Transformers.

Подробнее о `mistral-common` см. в [mistral-common](https://github.com/mistralai/mistral-common).

Этот класс является обёрткой вокруг `mistral_common.tokens.tokenizers.mistral.MistralTokenizer`. Он предоставляет интерфейс, совместимый с Hugging Face, для токенизации с помощью официального токенизатора mistral-common и наследуется от класса `PreTrainedTokenizerBase`.

Вот основные различия в поведении с классом `PythonBackend`:

- Пары последовательностей не поддерживаются. Подпись сохранена в целях совместимости, но все аргументы, связанные с парами последовательностей, игнорируются. Возвращаемые значения для пар возвращаются как `None`.
- Аргумент `is_split_into_words` не поддерживается.
- Добавление новых токенов в токенизатор невозможно. Специальные токены обрабатываются иначе, чем в Transformers. В `mistral-common` специальные токены никогда не кодируются напрямую. Это означает, что `tokenizer.encode("<s>")` не вернёт ID токена `<s>`. Вместо этого будет возвращён список ID, соответствующих токенизации строки `"<s>"`. Подробнее см. в [документации mistral-common](https://mistralai.github.io/mistral-common/usage/tokenizers/#special-tokens).

Если у вас есть предложения по улучшению этого класса, пожалуйста, создайте issue в репозитории [mistral-common на GitHub](https://github.com/mistralai/mistral-common/issues), если они касаются токенизатора, или в репозитории [Transformers на GitHub](https://github.com/huggingface/transformers/issues), если они касаются интерфейса Hugging Face.

#### add_special_tokens[[transformers.MistralCommonBackend.add_special_tokens]]

```python
add_special_tokens(special_tokens_dict: dict, replace_extra_special_tokens: bool = True)
```

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

`MistralCommonBackend` намеренно не реализует `add_special_tokens`.

Если вы хотите, чтобы такое поведение было реализовано, пожалуйста, создайте issue в репозиториях `Transformers` или `mistral-common` с соответствующим запросом.

#### add_tokens[[transformers.MistralCommonBackend.add_tokens]]

```python
add_tokens(special_tokens_dict: dict, replace_extra_special_tokens: bool = True)
```

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

`MistralCommonBackend` намеренно не реализует `add_special_tokens`.

Если вы хотите, чтобы такое поведение было реализовано, пожалуйста, создайте issue в репозиториях `Transformers` или `mistral-common` с соответствующим запросом.

#### apply_chat_template[[transformers.MistralCommonBackend.apply_chat_template]]

```python
apply_chat_template(conversation: list[dict[str, str]] | list[list[dict[str, str]]], tools: list[dict | collections.abc.Callable] | None = None, add_generation_prompt: bool = False, continue_final_message: bool = False, tokenize: bool = True, padding: bool | str | transformers.utils.generic.PaddingStrategy = False, truncation: bool = False, max_length: int | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, return_dict: bool = True, reasoning_effort: ReasoningEffort | None = None, **kwargs)
```

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

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

conversation (Union[List[Dict[str, str]], List[List[Dict[str, str]]]]) : список словарей с ключами "role" и "content", представляющий историю чата на данный момент.

tools (`List[Union[Dict, Callable]]`, *необязательный*) : список инструментов (вызываемых функций), доступных модели. Если шаблон не поддерживает вызов функций, этот аргумент не будет иметь эффекта. Каждый инструмент должен передаваться в формате JSON Schema, указывающем имя, описание и типы аргументов инструмента. Подробнее см. в нашем [руководстве по шаблонам чата](https://huggingface.co/docs/transformers/main/en/chat_templating#automated-function-conversion-for-tool-use).

add_generation_prompt (`bool`, *необязательный*) : Этот аргумент не выполняет никаких действий для `MistralCommonBackend`. Однако его нельзя использовать одновременно с `continue_final_message`, чтобы сохранить согласованность API. Если любой диалог заканчивается сообщением ассистента, будет выброшена ошибка. В таких случаях используйте `continue_final_message`.

continue_final_message (bool, *optional*) : Если этот параметр установлен, чат будет отформатирован так, чтобы последнее сообщение в чате было незавершённым, без токенов EOS. Модель продолжит это сообщение, а не начнёт новое. Это позволяет «предзаполнить» часть ответа модели. Не может использоваться одновременно с `add_generation_prompt`.

tokenize (`bool`, по умолчанию `True`) : Флаг, определяющий, следует ли токенизировать вывод. Если `False`, выводом будет строка.

padding (`bool`, `str` или [PaddingStrategy](/docs/transformers/main/ru/internal/file_utils#transformers.utils.PaddingStrategy), *необязательный*, по умолчанию `False`) : Выберите стратегию выравнивания возвращаемых последовательностей (с учётом стороны выравнивания и индекса выравнивания модели) из следующих:  - `True` или `'longest'`: Выровнять до самой длинной последовательности в батче (или не выравнивать, если предоставлена только одна последовательность). - `'max_length'`: Выровнять до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. - `False` или `'do_not_pad'` (по умолчанию): Без выравнивания (т. е. может быть выведен батч с последовательностями разной длины).

truncation (`bool`, по умолчанию `False`) : Указывает, нужно ли обрезать последовательности до максимальной длины. Не имеет эффекта, если tokenize равно `False`.

max_length (`int`, *optional*) : Максимальная длина (в токенах), используемая для выравнивания или усечения. Не влияет на результат, если tokenize равно `False`. Если значение не указано, по умолчанию будет использован атрибут `max_length` токенизатора.

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

return_dict (`bool`, по умолчанию `False`) : Возвращать ли словарь с именованными выводами. Не имеет значения, если tokenize равно `False`. Если хотя бы один диалог содержит изображение, его пиксельные значения будут возвращены в ключе `pixel_values`, а размеры изображений — в ключе `image_sizes`.

reasoning_effort (`ReasoningEffort`, *необязательный*) : Уровень рассуждений, используемый для завершения чата в моделях, которые его поддерживают. Возможные значения: - `ReasoningEffort.none`: Модель не будет рассуждать. - `ReasoningEffort.high`: Модель будет использовать подход рассуждений. Если значение не указано, будет использован уровень рассуждений по умолчанию.

kwargs (дополнительные аргументы ключ-значение, *необязательные*) : Дополнительные аргументы, передаваемые в метод `ChatCompletionRequest.from_openai` библиотеки mistral-common.

**Возвращает:** `Union[str, list[int], list[str], list[list[int]], BatchEncoding]`

Токенизированный чат на данный момент, включая управляющие токены. Этот вывод готов к передаче в модель, как напрямую, так и через методы вроде `generate()`.

Преобразует список словарей с ключами `"role"` и `"content"` в список идентификаторов токенов.

#### batch_decode[[transformers.MistralCommonBackend.batch_decode]]

```python
batch_decode(sequences: typing.Union[list[int], list[list[int]], numpy.ndarray, ForwardRef('torch.Tensor')], skip_special_tokens: bool = False, clean_up_tokenization_spaces: bool | None = None, **kwargs)
```

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

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

sequences (`Union[list[int], list[list[int]], np.ndarray, torch.Tensor]`) : Список идентификаторов токенизированного входа. Может быть получен с помощью метода `__call__`.

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

clean_up_tokenization_spaces (`bool`, *необязательный*) : Указывает, следует ли очищать пробелы токенизации. Если `None`, по умолчанию используется `self.clean_up_tokenization_spaces`.

kwargs (дополнительные аргументы ключ-значение, *необязательные*) : не поддерживаются в `MistralCommonBackend.batch_decode`. Использование приведёт к ошибке.

**Возвращает:** `list[str]`

Список декодированных предложений.

Преобразуйте список списков идентификаторов токенов в список строк, вызвав decode.

Этот метод предоставляется в целях обратной совместимости. Метод `decode` теперь нативно обрабатывает пакетный ввод, поэтому вы можете использовать `decode` напрямую вместо `batch_decode`.

#### build_inputs_with_special_tokens[[transformers.MistralCommonBackend.build_inputs_with_special_tokens]]

```python
build_inputs_with_special_tokens(token_ids_0: list, token_ids_1: None = None)
```

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

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

token_ids_0 (`list[int]`) : Список идентификаторов, к которым будут добавлены специальные токены.

token_ids_1 (`None`, *необязательный*) : None, сохранено для соответствия сигнатуре Transformers.

**Возвращает:** `list[int]`

Список входных идентификаторов с соответствующими специальными токенами.

Создайте входные данные модели из последовательности, добавив специальные токены.

Этот метод динамически формирует входные данные на основе `mode` токенизатора:
- `"test"`: seq0 [EOS]
- `"finetuning"`: [BOS] seq0

#### convert_added_tokens[[transformers.MistralCommonBackend.convert_added_tokens]]

```python
convert_added_tokens(obj: tokenizers.AddedToken | typing.Any, save: bool = False, add_type_field: bool = True)
```

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

`MistralCommonBackend` намеренно не реализует `convert_added_tokens`.

Если вы хотите, чтобы такое поведение было реализовано, пожалуйста, создайте issue в репозиториях `Transformers` или `mistral-common` с соответствующим запросом.

#### create_token_type_ids_from_sequences[[transformers.MistralCommonBackend.create_token_type_ids_from_sequences]]

```python
create_token_type_ids_from_sequences(token_ids_0: list, token_ids_1: None = None)
```

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

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

token_ids_0 (`list[int]`) : Список идентификаторов.

token_ids_1 (`None`, *необязательный*) : None, сохранено для соответствия сигнатуре Transformers.

**Возвращает:** `list[int]`

Идентификаторы типов токенов в соответствии с настроенным шаблоном.

Создайте маску нулей из идентификаторов токенов с добавленными специальными токенами.

Сохранено для соответствия реализации в Transformers.

#### decode[[transformers.MistralCommonBackend.decode]]

```python
decode(token_ids: typing.Union[int, list[int], list[list[int]], numpy.ndarray, ForwardRef('torch.Tensor')], skip_special_tokens: bool = False, clean_up_tokenization_spaces: bool | None = None, **kwargs)
```

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

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

token_ids (`Union[int, list[int], list[list[int]], np.ndarray, torch.Tensor]`) : одна последовательность или батч (список последовательностей) токенизированных входных id. Может быть получена с помощью метода `__call__`.

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

clean_up_tokenization_spaces (`bool`, *необязательный*) : Указывает, следует ли очищать пробелы токенизации. Если `None`, по умолчанию используется `self.clean_up_tokenization_spaces`.

kwargs (дополнительные аргументы ключ-значение, *необязательные*) : не поддерживаются в `MistralCommonBackend.decode`. Использование приведёт к ошибке.

**Возвращает:** `Union[str, list[str]]`

Декодированная строка для одной последовательности или список декодированных строк для батча последовательностей.

Преобразует последовательность идентификаторов в строку, используя токенизатор и словарь, с опциями для удаления специальных токенов и очистки пробелов токенизации.

#### encode[[transformers.MistralCommonBackend.encode]]

```python
encode(text: str | list[int], text_pair: None = None, add_special_tokens: bool = True, padding: bool | str | transformers.utils.generic.PaddingStrategy = False, truncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, verbose: bool = True, return_offsets_mapping: typing.Literal[False] = False, split_special_tokens: typing.Literal[False] = False, **kwargs)
```

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

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

text (`str` или `list[int]`) : Первая последовательность для кодирования. Это может быть строка или список целых чисел (идентификаторы токенизированной строки).

text_pair (`None`, *необязательный*) : не поддерживается в `MistralCommonBackend.encode`. Оставлен для соответствия сигнатуре `PreTrainedTokenizerBase.encode`.

add_special_tokens (`bool`, *необязательный*, по умолчанию `True`) : Добавлять ли специальные токены при кодировании последовательностей. Для этого используется базовая функция `PretrainedTokenizerBase.build_inputs_with_special_tokens`, которая определяет, какие токены автоматически добавляются к входным идентификаторам. Это полезно, если вы хотите автоматически добавлять токены `bos` или `eos`. При загрузке Tokenizer в режиме `finetuning` добавляются оба токена: `bos` и `eos`. В противном случае, в режиме "test", добавляется только `bos`.

padding (`bool`, `str` или [PaddingStrategy](/docs/transformers/main/ru/internal/file_utils#transformers.utils.PaddingStrategy), *необязательный*, по умолчанию `False`) : Включает и управляет выравниванием. Принимает следующие значения:  - `True` или `'longest'`: Выравнивание до самой длинной последовательности в батче (или без выравнивания, если предоставлена только одна последовательность). - `'max_length'`: Выравнивание до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. - `False` или `'do_not_pad'` (по умолчанию): Без выравнивания (т. е. на выходе может быть батч с последовательностями разной длины).

truncation (`bool`, `str` или [TruncationStrategy](/docs/transformers/main/ru/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *optional*, по умолчанию `False`) : Включает и управляет усечением. Принимает следующие значения:  - `True` или `'longest_first'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. - `False` или `'do_not_truncate'` (по умолчанию): Без усечения (т. е. может выдать батч с длинами последовательностей, превышающими максимальный допустимый размер входа модели).

max_length (`int`, *optional*) : Управляет максимальной длиной, используемой одним из параметров усечения/дополнения. Если значение не задано или равно `None`, будет использована предопределённая максимальная длина модели, если один из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено.

stride (`int`, *optional*, по умолчанию 0) : Если задано число вместе с `max_length`, то переполненные токены, возвращаемые при `return_overflowing_tokens=True`, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов.

pad_to_multiple_of (`int`, *optional*) : Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобы `padding` был активирован. Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной способностью `>= 7.5` (Volta).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

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

- ****kwargs** : Не поддерживается в `MistralCommonBackend.encode`. Использование приведёт к ошибке.

**Возвращает:** `list[int]`, `torch.Tensor`

Токенизированные идентификаторы текста.

Преобразует строку в последовательность идентификаторов (целых чисел), используя токенизатор и словарь.

#### from_pretrained[[transformers.MistralCommonBackend.from_pretrained]]

```python
from_pretrained(pretrained_model_name_or_path: str | os.PathLike, *init_inputs, mode: str | ValidationMode = 'test', cache_dir: str | os.PathLike | None = None, force_download: bool = False, local_files_only: bool = False, token: str | bool | None = None, revision: str = 'main', model_max_length: int = 1000000000000000019884624838656, padding_side: str = 'left', truncation_side: str = 'right', model_input_names: list[str] | None = None, clean_up_tokenization_spaces: bool = False, **kwargs)
```

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

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

pretrained_model_name_or_path (`str` или `os.PathLike`) : Может быть одним из:  - строка, *model id* предопределенного токенизатора, размещенного в репозитории моделей на huggingface.co. - путь к *каталогу*, содержащему конфигурацию токенизатора, например, сохраненную с помощью метода `MistralCommonBackend.tokenization_mistral_common.save_pretrained`, например, `./my_model_directory/`.

mode (`Union[str, ValidationMode]`, *необязательный*, по умолчанию `ValidationMode.test`) : Режим валидации для токенизатора `MistralTokenizer`. Возможные значения: - `"finetuning"` или `ValidationMode.finetuning`: Режим дообучения. - `"test"` или `ValidationMode.test`: Режим тестирования. Он изменяет способ, которым токенизатор валидирует входные данные и готовит запрос к модели.

cache_dir (`str` или `os.PathLike`, *необязательный*) : Путь к каталогу, в котором должны кэшироваться загруженные предопределённые файлы словаря токенизатора, если стандартный кэш не используется.

force_download (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли принудительно (пере)скачивать файлы словаря и заменять кэшированные версии, если они существуют.

token (`str` или *bool*, *необязательный*) : Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Если `True`, будет использован токен, сгенерированный при выполнении `hf auth login` (хранится в `~/.huggingface`).

local_files_only (`bool`, *необязательный*, по умолчанию `False`) : Использовать только локальные файлы и не пытаться скачивать файлы из сети.

revision (`str`, *необязательный*, по умолчанию `"main"`) : Конкретная версия модели, которую следует использовать. Поскольку для хранения моделей и других артефактов на huggingface.co используется система на базе git, `revision` может быть любым идентификатором, разрешённым git: именем ветки, именем тега или идентификатором коммита.

max_length (`int`, *optional*) : Управляет максимальной длиной, используемой одним из параметров усечения/дополнения. Если значение не задано или равно `None`, будет использована предопределённая максимальная длина модели, если один из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено.

padding_side (`str`, *необязательный*, по умолчанию `"left"`) : Сторона, на которой модель должна применять выравнивание. Значение должно выбираться из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

truncation_side (`str`, *необязательный*, по умолчанию `"right"`) : Сторона, на которой модель должна применять усечение. Следует выбрать значение из ['right', 'left'].

model_input_names (`List[str]`, *необязательный*) : Список входных данных, принимаемых прямой передачей модели (например, `"token_type_ids"` или `"attention_mask"`). Значение по умолчанию выбирается из атрибута класса с тем же именем.

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

kwargs (дополнительные аргументы ключ-значение, *необязательные*) : не поддерживаются в `MistralCommonBackend.from_pretrained`. Использование приведёт к ошибке.

Создайте экземпляр `MistralCommonBackend` из предопределенного токенизатора.

#### get_chat_template[[transformers.MistralCommonBackend.get_chat_template]]

```python
get_chat_template(chat_template: str | None = None, tools: list[dict] | None = None)
```

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

`MistralCommonBackend` намеренно не реализует `get_chat_template`, так как `mistral-common` не использует шаблоны чата.

#### get_special_tokens_mask[[transformers.MistralCommonBackend.get_special_tokens_mask]]

```python
get_special_tokens_mask(token_ids_0: list, token_ids_1: None = None, already_has_special_tokens: bool = False)
```

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

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

token_ids_0 (`list[int]`) : Список идентификаторов последовательности.

token_ids_1 (`None`, *необязательный*) : None, сохранено для соответствия реализации в Transformers.

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

**Возвращаемое значение:** список целых чисел в диапазоне [0, 1]

1 для специального токена, 0 для токена последовательности.

Получает идентификаторы последовательностей из списка токенов, в который не добавлены специальные токены. Этот метод вызывается при добавлении специальных токенов с помощью методов `prepare_for_model` или `encode_plus` токенизатора.

#### get_vocab[[transformers.MistralCommonBackend.get_vocab]]

```python
get_vocab()
```

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

**Возвращает:** `Dict[str, int]`

Словарь.

Возвращает словарь в виде словаря с соответствием токенов и индексов.

Это потерянное преобразование. Из-за преобразования частичных последовательностей байтов UTF-8 в символ � несколько идентификаторов токенов могут декодироваться в одну и ту же строку.

#### num_special_tokens_to_add[[transformers.MistralCommonBackend.num_special_tokens_to_add]]

```python
num_special_tokens_to_add(pair: typing.Literal[False] = False)
```

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

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

pair (`Literal[False]`, *необязательный*) : False, сохранён для соответствия сигнатуре Transformer.

**Возвращает:** `int`

Количество специальных токенов, добавляемых к последовательностям.

Возвращает количество добавленных токенов при кодировании последовательности со специальными токенами.

Это кодирует фиктивный вход и проверяет количество добавленных токенов, поэтому не является эффективным. Не помещайте этот код внутрь цикла обучения.

#### prepare_for_model[[transformers.MistralCommonBackend.prepare_for_model]]

```python
prepare_for_model(ids: list, pair_ids: None = None, add_special_tokens: bool = True, padding: bool | str | transformers.utils.generic.PaddingStrategy = False, truncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_length: bool = False, verbose: bool = True, prepend_batch_axis: bool = False, return_offsets_mapping: typing.Literal[False] = False, split_special_tokens: typing.Literal[False] = False, **kwargs)
```

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

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

ids (`list[int]`) : Токенизированные идентификаторы входных данных первой последовательности.

pair_ids (`None`, *необязательный*) : Не поддерживается в `MistralCommonBackend`. Оставлен для соответствия интерфейсу `PreTrainedTokenizerBase`.

add_special_tokens (`bool`, *необязательный*, по умолчанию `True`) : Добавлять ли специальные токены при кодировании последовательностей. Для этого используется базовая функция `PretrainedTokenizerBase.build_inputs_with_special_tokens`, которая определяет, какие токены автоматически добавляются к входным идентификаторам. Это полезно, если вы хотите автоматически добавлять токены `bos` или `eos`. При загрузке Tokenizer в режиме `finetuning` добавляются оба токена: `bos` и `eos`. В противном случае, в режиме "test", добавляется только `bos`.

padding (`bool`, `str` или [PaddingStrategy](/docs/transformers/main/ru/internal/file_utils#transformers.utils.PaddingStrategy), *необязательный*, по умолчанию `False`) : Включает и управляет выравниванием. Принимает следующие значения:  - `True` или `'longest'`: Выравнивание до самой длинной последовательности в батче (или без выравнивания, если предоставлена только одна последовательность). - `'max_length'`: Выравнивание до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. - `False` или `'do_not_pad'` (по умолчанию): Без выравнивания (т. е. на выходе может быть батч с последовательностями разной длины).

truncation (`bool`, `str` или [TruncationStrategy](/docs/transformers/main/ru/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *optional*, по умолчанию `False`) : Включает и управляет усечением. Принимает следующие значения:  - `True` или `'longest_first'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. - `False` или `'do_not_truncate'` (по умолчанию): Без усечения (т. е. может выдать батч с длинами последовательностей, превышающими максимальный допустимый размер входа модели).

max_length (`int`, *optional*) : Управляет максимальной длиной, используемой одним из параметров усечения/дополнения. Если значение не задано или равно `None`, будет использована предопределённая максимальная длина модели, если один из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено.

stride (`int`, *optional*, по умолчанию 0) : Если задано число вместе с `max_length`, то переполненные токены, возвращаемые при `return_overflowing_tokens=True`, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов.

pad_to_multiple_of (`int`, *optional*) : Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобы `padding` был активирован. Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной способностью `>= 7.5` (Volta).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

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

return_token_type_ids (`bool`, *необязательный*) : Нужно ли возвращать идентификаторы типов токенов. Для `MistralCommonBackend` возвращается список нулей длиной последовательности, так как поддерживается только одна последовательность.  [Что такое идентификаторы типов токенов?](../glossary#token-type-ids)

return_attention_mask (`bool`, *необязательный*) : Указывает, следует ли возвращать маску внимания. Если значение не задано, маска внимания будет возвращена в соответствии со значением по умолчанию конкретного токенизатора, определяемым атрибутом `return_outputs`.  [Что такое маски внимания?](../glossary#attention-mask)

return_overflowing_tokens (`bool`, *необязательный*, по умолчанию `False`) : Возвращать ли переполненные последовательности токенов. Если передана пара последовательностей входных идентификаторов (или батч пар) с `truncation_strategy = longest_first` или `True`, вместо возврата переполненных токенов будет выброшена ошибка.

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

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

verbose (`bool`, *необязательный*, по умолчанию `True`) : Выводить ли дополнительную информацию и предупреждения.

return_offsets_mapping (`Literal[False]`, *необязательный*) : False, сохранён для соответствия сигнатуре Transformers.

split_special_tokens (`Literal[False]`, *необязательный*) : False, сохранён для соответствия сигнатуре Transformers.

- ****kwargs** : передаются в метод `self.tokenize()`

**Возвращает:** [BatchEncoding](/docs/transformers/main/ru/main_classes/tokenizer#transformers.BatchEncoding)

[BatchEncoding](/docs/transformers/main/ru/main_classes/tokenizer#transformers.BatchEncoding) со следующими полями:

- **input_ids** -- Список идентификаторов токенов, которые подаются в модель.

  [Что такое входные идентификаторы?](../glossary#input-ids)

- **attention_mask** -- список индексов, указывающих, на какие токены модель должна обращать внимание (когда `return_attention_mask=True` или если *"attention_mask"* входит в `self.model_input_names`).

  [Что такое маски внимания?](../glossary#attention-mask)

- **overflowing_tokens** -- Список переполненных последовательностей токенов (если заданы `max_length` и `return_overflowing_tokens=True`).
- **num_truncated_tokens** -- Количество отсечённых токенов (если задано `max_length` и `return_overflowing_tokens=True`).
- **special_tokens_mask** -- Список нулей и единиц, где 1 указывает на добавленные специальные токены, а 0 — на обычные токены последовательности (при `add_special_tokens=True` и `return_special_tokens_mask=True`).
- **length** -- Длина входных данных (когда `return_length=True`)

Подготавливает последовательность входных идентификаторов для использования моделью. Добавляет специальные токены, обрезает последовательности при превышении длины с учётом специальных токенов и управляет скользящим окном (с заданным пользователем шагом) для переполняющих токенов.

#### save_chat_templates[[transformers.MistralCommonBackend.save_chat_templates]]

```python
save_chat_templates(save_directory: str | os.PathLike, tokenizer_config: dict, filename_prefix: str | None, save_jinja_files: bool)
```

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

`MistralCommonBackend` намеренно не реализует `save_chat_templates`, так как `mistral-common` не использует шаблоны чата.

#### save_pretrained[[transformers.MistralCommonBackend.save_pretrained]]

```python
save_pretrained(save_directory: str | os.PathLike | pathlib.Path, push_to_hub: bool = False, token: str | bool | None = None, commit_message: str | None = None, repo_id: str | None = None, private: bool | None = None, save_format: str | None = None, **kwargs)
```

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

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

save_directory (`str | os.PathLike | Path`) : Каталог, в котором будет сохранён токенизатор.

push_to_hub (`bool`, *необязательный*, по умолчанию `False`) : Загрузить на HF Hub после сохранения.

token (`str` или `bool`, *необязательный*) : Токен для аутентификации в Hub.

commit_message (`str`, *необязательный*) : Сообщение о коммите при отправке.

repo_id (`str`, *необязательный*) : идентификатор репозитория в Hub.

private (`bool`, *необязательный*) : Указывает, является ли репозиторий закрытым.

save_format (`str`, *необязательный*) : `"mistral"` для сохранения в нативном формате tekken, `"hf"` для формата HuggingFace. *None* сохраняет исходный формат.

kwargs (`dict`, *необязательный*) : Не поддерживается — будет вызвана ошибка.

**Возвращает:** `tuple[str, ...]`

Пути сохранённых файлов.

Сохраните полное состояние токенизатора.

Если `save_format` равно `"mistral"` (или *None* для токенизатора tekken), исходный файл токенизатора (например, `tekken.json`) записывается в *save_directory*. Если `save_format` равно `"hf"`, вместо этого создаются файлы в формате HF (`tokenizer.json` + `tokenizer_config.json`).

#### save_vocabulary[[transformers.MistralCommonBackend.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

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

`MistralCommonBackend` намеренно не реализует `save_vocabulary`.

Это происходит потому, что `mistral-common` настраивается одним файлом токенизатора. Если вы хотите сохранить словарь, рассмотрите возможность использования метода `save_pretrained`.

#### tokenize[[transformers.MistralCommonBackend.tokenize]]

```python
tokenize(text: str, return_offsets_mapping: typing.Literal[False] = False, split_special_tokens: typing.Literal[False] = False, **kwargs)
```

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

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

text (`str`) : Последовательность, подлежащая кодированию.

return_offsets_mapping (`Literal[False]`, *необязательный*) : False, сохранён для соответствия сигнатуре Transformers.

split_special_tokens (`Literal[False]`, *необязательный*) : False, сохранён для соответствия сигнатуре Transformers.

- ****kwargs** (дополнительные именованные аргументы): не поддерживаются в `MistralCommonBackend.tokenize`. Использование приведёт к ошибке.

**Возвращает:** `list[str]`

Список токенов.

Преобразует строку в последовательность токенов с помощью токенизатора.

Разбивает текст на слова для словарей на основе слов или на под-слова для словарей на основе под-слов.

#### truncate_sequences[[transformers.MistralCommonBackend.truncate_sequences]]

```python
truncate_sequences(ids: list, pair_ids: None = None, num_tokens_to_remove: int = 0, truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first', stride: int = 0, **kwargs)
```

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

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

ids (`list[int]`) : Токенизированные входные идентификаторы. Можно получить из строки, последовательно вызывая методы `tokenize` и `convert_tokens_to_ids`.

pair_ids (`None`, *необязательный*) : Не поддерживается в `MistralCommonBackend`. Оставлен для соответствия сигнатуре `PreTrainedTokenizerBase.truncate_sequences`.

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

truncation_strategy (`str` или [TruncationStrategy](/docs/transformers/main/ru/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *необязательный*, по умолчанию `'longest_first'`) : Стратегия, используемая для усечения. Возможные значения:  - `'longest_first'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой длины входа для модели, если этот аргумент не указан. - `'do_not_truncate'` (по умолчанию): Усечение не выполняется (т. е. может быть выведен батч с длинами последовательностей, превышающими максимально допустимый размер входа модели).

stride (`int`, *optional*, по умолчанию 0) : Если установлено положительное число, возвращаемые переполненные токены будут содержать некоторые токены из возвращаемой основной последовательности. Значение этого аргумента определяет количество дополнительных токенов.

**Возвращает:** `Tuple[list[int], None, list[int]]`

Обрезанные `ids` и список переполняющих токенов. Возвращается `None` для соответствия сигнатуре Transformers.

Обрезает пару последовательностей на месте согласно стратегии.

## MixtralModel[[transformers.MixtralModel]]

#### transformers.MixtralModel[[transformers.MixtralModel]]

```python
transformers.MixtralModel(config: MixtralConfig)
```

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

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

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

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

Эта модель наследуется от [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.MixtralModel.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, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

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

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

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

Метод forward модели [MixtralModel](/docs/transformers/main/ru/model_doc/mixtral#transformers.MixtralModel) переопределяет специальный метод `__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/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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
- **router_logits** (`tuple(torch.Tensor)`, *необязательный*, возвращается, если переданы `output_router_probs=True` и `config.add_router_probs=True` или если `config.output_router_probs=True`) -- Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, sequence_length, num_experts)`.

  Сырые логиты маршрутизатора (после softmax), вычисляемые маршрутизаторами MoE; эти значения используются для вычисления вспомогательной функции потерь в моделях Mixture of Experts.

## MixtralForCausalLM[[transformers.MixtralForCausalLM]]

#### transformers.MixtralForCausalLM[[transformers.MixtralForCausalLM]]

```python
transformers.MixtralForCausalLM(config: MixtralConfig)
```

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

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

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

Модель Mixtral для моделирования языка с причинно-следственной связью.

Эта модель наследуется от [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.MixtralForCausalLM.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, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, output_router_logits: bool | None = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

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

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

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` преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.

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

output_router_logits (`bool`, *необязательный*) : Нужно ли возвращать логиты всех роутеров. Они полезны для вычисления потери роутера и не должны возвращаться во время инференса.

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

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

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

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

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

- **loss** (`torch.Tensor` формы `(1,)`, *необязательный*, возвращается, если задан `labels`) -- Потеря языковой модели (для предсказания следующего токена).
- **logits** (`torch.Tensor` формы `(batch_size, sequence_length, config.vocab_size)`) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).
- **aux_loss** (`torch.Tensor`, *необязательный*, возвращается при передаче `output_router_logits=True` или при `config.output_router_logits=True`, если модель обучает свой роутер с потерей балансировки нагрузки) -- Вспомогательная потеря балансировки нагрузки для разреженных модулей. Модели, которые балансируют своих экспертов с помощью смещения роутера (DeepSeek-V3 и архитектуры, производные от него), возвращают здесь `None`, при этом по-прежнему возвращая `router_logits`.
- **router_logits** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_router_logits=True` или когда `config.output_router_logits=True`) -- Кортеж `torch.Tensor` (по одному для каждого разреженного слоя) формы `(batch_size * sequence_length, num_experts)`.

  Сырые логиты маршрутизатора, вычисленные маршрутизаторами MoE. Их можно использовать для вычисления функции потерь балансировки нагрузки или для анализа того, как токены распределяются по экспертам.
- **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).

  Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания), которые можно использовать (см. вход `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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример:

```python
>>> from transformers import AutoTokenizer, MixtralForCausalLM

>>> model = MixtralForCausalLM.from_pretrained("mistralai/Mixtral-8x7B-v0.1")
>>> tokenizer = AutoTokenizer.from_pretrained("mistralai/Mixtral-8x7B-v0.1")

>>> prompt = "Hey, are you conscious? Can you talk to me?"
>>> inputs = tokenizer(prompt, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."
```

## MixtralForSequenceClassification[[transformers.MixtralForSequenceClassification]]

#### transformers.MixtralForSequenceClassification[[transformers.MixtralForSequenceClassification]]

```python
transformers.MixtralForSequenceClassification(config)
```

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

#### forward[[transformers.MixtralForSequenceClassification.forward]]

```python
forward(input_ids: torch.LongTensor | None = None, attention_mask: torch.Tensor | None = None, position_ids: torch.LongTensor | None = None, past_key_values: Cache | None = None, inputs_embeds: torch.Tensor | None = None, labels: torch.LongTensor | None = None, use_cache: bool | None = None, **kwargs: Unpack[TransformersKwargs])
```

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

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

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`, *необязательный*) : Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это `past_key_values`, возвращаемые моделью на предыдущем этапе декодирования, когда `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). Если `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` преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.

labels (`torch.LongTensor` формы `(batch_size,)`, *необязательный*) : Метки для вычисления функции потерь классификации/регрессии последовательности. Индексы должны находиться в диапазоне `[0, ..., config.num_labels - 1]`. Если `config.num_labels == 1`, вычисляется функция потерь регрессии (среднеквадратичная ошибка), если `config.num_labels > 1` — функция потерь классификации (кросс-энтропия).

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

**Возвращает:** `SequenceClassifierOutputWithPast`

Метод `GenericForSequenceClassification` forward переопределяет специальный метод `__call__`.

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

## MixtralForTokenClassification[[transformers.MixtralForTokenClassification]]

#### transformers.MixtralForTokenClassification[[transformers.MixtralForTokenClassification]]

```python
transformers.MixtralForTokenClassification(config)
```

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

#### forward[[transformers.MixtralForTokenClassification.forward]]

```python
forward(input_ids: torch.LongTensor | None = None, attention_mask: torch.Tensor | None = None, position_ids: torch.LongTensor | None = None, past_key_values: Cache | None = None, inputs_embeds: torch.Tensor | None = None, labels: torch.LongTensor | None = None, use_cache: bool | None = None, **kwargs: Unpack[TransformersKwargs])
```

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

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

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`, *необязательный*) : Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это `past_key_values`, возвращаемые моделью на предыдущем этапе декодирования, когда `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). Если `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` преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.

labels (`torch.LongTensor` формы `(batch_size, sequence_length)`, *необязательно*) : Метки для вычисления функции потерь классификации токенов. Индексы должны находиться в диапазоне `[0, ..., config.num_labels - 1]`.

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

**Возвращает:** `TokenClassifierOutput`

Метод `GenericForTokenClassification` forward переопределяет специальный метод `__call__`.

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

## MixtralForQuestionAnswering[[transformers.MixtralForQuestionAnswering]]

#### transformers.MixtralForQuestionAnswering[[transformers.MixtralForQuestionAnswering]]

```python
transformers.MixtralForQuestionAnswering(config)
```

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

#### forward[[transformers.MixtralForQuestionAnswering.forward]]

```python
forward(input_ids: torch.LongTensor | None = None, attention_mask: torch.Tensor | None = None, position_ids: torch.LongTensor | None = None, past_key_values: Cache | None = None, inputs_embeds: torch.Tensor | None = None, start_positions: torch.LongTensor | None = None, end_positions: torch.LongTensor | None = None, **kwargs: Unpack[TransformersKwargs])
```

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

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

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`, *необязательный*) : Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это `past_key_values`, возвращаемые моделью на предыдущем этапе декодирования, когда `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). Если `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` преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.

start_positions (`torch.LongTensor` формы `(batch_size,)`, *необязательный*) : Метки для позиции (индекса) начала размеченного фрагмента для вычисления функции потерь классификации токенов. Позиции ограничиваются длиной последовательности (`sequence_length`). Позиции вне последовательности не учитываются при вычислении функции потерь.

end_positions (`torch.LongTensor` формы `(batch_size,)`, *необязательный*) : Метки для позиции (индекса) конца размеченного фрагмента для вычисления функции потерь классификации токенов. Позиции ограничиваются длиной последовательности (`sequence_length`). Позиции вне последовательности не учитываются при вычислении функции потерь.

**Возвращает:** `QuestionAnsweringModelOutput`

Метод `GenericForQuestionAnswering` forward переопределяет специальный метод `__call__`.

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

