Transformers documentation
Mixtral
Эта модель была опубликована в HF papers 08.01.2024 и добавлена в Hugging Face Transformers 11.12.2023.
Mixtral
Обзор
Mixtral-8x7B был представлен в блог-посте 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, после Mistral-7B.
Детали архитектуры
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.
- Несмотря на то, что модель содержит 45 миллиардов параметров, вычислительные ресурсы, необходимые для одного прямого прохода, сопоставимы с ресурсами модели на 14 миллиардов параметров. Это объясняется тем, что, хотя каждый из экспертов должен быть загружен в оперативную память (требования к RAM сопоставимы с моделью на 70B), каждый токен из скрытых состояний маршрутизируется дважды (top 2 routing), в результате чего вычислительная нагрузка (операции, выполняемые на каждом шаге прямого прохода) составляет всего 2 X sequence_length.
Следующие детали реализации совпадают с деталями первой модели Mistral AI Mistral-7B:
- Sliding Window Attention — обучена с длиной контекста 8k и фиксированным размером кэша, с теоретическим охватом внимания 128K токенов
- GQA (Grouped Query Attention) — обеспечивает более быстрый вывод и меньший размер кэша.
- BPE-токенизатор с байтовым fallback — гарантирует, что символы никогда не отображаются на токены вне словаря.
Подробнее см. в посте в блоге о выпуске.
Лицензия
Mixtral-8x7B распространяется по лицензии Apache 2.0.
Советы по использованию
Команда Mistral выпустила 2 контрольные точки:
- базовая модель, Mixtral-8x7B-v0.1, которая была предварительно обучена предсказывать следующий токен на данных интернет-масштаба.
- модель, обученная по инструкциям, Mixtral-8x7B-Instruct-v0.1, которая является базовой моделью, оптимизированной для целей чата с использованием контролируемого дообучения (SFT) и прямой оптимизации предпочтений (DPO).
Базовую модель можно использовать следующим образом:
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 ..."Модель, прошедшая инструкционную настройку, можно использовать следующим образом:
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: (...)"Как видно, для модели, прошедшей инструкционную настройку, необходимо применить шаблон чата, чтобы убедиться, что входные данные подготовлены в правильном формате.
Ускорение Mixtral с помощью Flash Attention
Приведённые выше фрагменты кода демонстрируют инференс без каких-либо оптимизаций. Однако модель можно значительно ускорить, используя Flash Attention — более быструю реализацию механизма внимания, применяемого внутри модели.
Сначала убедитесь, что установлена последняя версия Flash Attention 2, чтобы использовать функцию скользящего окна внимания.
pip install -U flash-attn --no-build-isolation
Также убедитесь, что ваше оборудование совместимо с Flash-Attention 2. Подробнее об этом можно прочитать в официальной документации репозитория flash attention. Также убедитесь, что вы загружаете модель в половинной точности (например, torch.float16).
Чтобы загрузить и запустить модель с использованием Flash Attention-2, обратитесь к фрагменту кода ниже:
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 байта. Однако размер модели можно уменьшить с помощью квантования. Если модель квантована до 4 бит (то есть до половины байта на параметр), то для размещения всей модели достаточно одного A100 с 40 ГБ памяти, поскольку в этом случае требуется лишь около 27 ГБ.
Квантование модели сводится к передаче параметра quantization_config в модель. Ниже мы используем библиотеку квантования bitsandbytes (но см. эту страницу для альтернативных методов квантования):
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 и Arthur Zucker. Исходный код можно найти здесь.
Ресурсы
Список официальных ресурсов Hugging Face и сообщества (отмечены 🌎), которые помогут вам начать работу с Mixtral. Если вы хотите предложить ресурс для включения в этот список, пожалуйста, создайте Pull Request, и мы его рассмотрим! В идеале ресурс должен демонстрировать что-то новое, а не дублировать существующий.
- Демо-ноутбук для выполнения контролируемой дообучения (SFT) модели Mixtral-8x7B можно найти здесь. 🌎
- Статья в блоге о дообучении Mixtral-8x7B с использованием PEFT. 🌎
- Alignment Handbook от Hugging Face содержит скрипты и рецепты для выполнения дообучения с учителем (SFT) и прямой оптимизации предпочтений (DPO) для модели Mistral-7B. Включены скрипты для полного дообучения, QLoRa на одном ускорителе, а также дообучения на нескольких ускорителях.
- Руководство по задаче каузального языкового моделирования
MixtralConfig
класс transformers.MixtralConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 32000hidden_size: int = 4096intermediate_size: int = 14336num_hidden_layers: int = 32num_attention_heads: int = 32num_key_value_heads: int = 8head_dim: int | None = Nonehidden_act: str = 'silu'max_position_embeddings: int = 131072initializer_range: float = 0.02rms_norm_eps: float = 1e-05use_cache: bool = Truepad_token_id: int | None = Nonebos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2tie_word_embeddings: bool = Falsesliding_window: int | None = Noneattention_dropout: float | int = 0.0num_experts_per_tok: int = 2num_local_experts: int = 8output_router_logits: bool = Falserouter_aux_loss_coef: float = 0.001router_jitter_noise: float = 0.0rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None )
Параметры
- vocab_size (
int, необязательный, по умолчанию32000) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены вinput_ids. - hidden_size (
int, необязательный, по умолчанию4096) — Размерность скрытых представлений. - intermediate_size (
int, необязательный, по умолчанию14336) — Размерность представлений MLP. - num_hidden_layers (
int, необязательный, по умолчанию32) — Количество скрытых слоев в декодере Transformer. - num_attention_heads (
int, необязательный, по умолчанию32) — Количество головок внимания в каждом слое внимания декодера Transformer. - num_key_value_heads (
int, необязательный, по умолчанию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. При конвертации мультиголовного чекпоинта в GQA-чекпоинт каждая групповая ключевая и value-голова должна конструироваться путем усреднения (meanpooling) всех исходных голов в этой группе. Дополнительные подробности — в этой статье. Если значение не указано, по умолчанию используетсяnum_attention_heads. - head_dim (
int, необязательный) — Размер измерения головы внимания. Если значение равно 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) — Указывает, должен ли модель возвращать последние ключи/значения внимания (не используется во всех моделях). Актуально только если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, необязательный) — Размер окна скользящего внимания. ЕслиNone, скользящее окно не применяется. - attention_dropout (
Union[float, int], необязательный, по умолчанию0.0) — Коэффициент dropout для вероятностей внимания. - num_experts_per_tok (
int, необязательный, по умолчанию2) — Количество экспертов, к которым маршрутизируется каждый токен. Это значение top-k для маршрутизации по выбору токена. - num_local_experts (
int, необязательный, по умолчанию8) — Количество локальных экспертов на каждом устройстве.num_expertsдолжно делиться нацело наnum_local_experts. - output_router_logits (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли модели возвращать логиты роутера. Включение этого параметра также позволит модели выводить вспомогательную потерю, включая потерю балансировки нагрузки и z-потерю роутера. - router_aux_loss_coef (
float, необязательный, по умолчанию0.001) — Коэффициент вспомогательной функции потерь для балансировки нагрузки. Используется для штрафования неравномерного маршрутизирования запросов к экспертам в MoE-моделях. - router_jitter_noise (
float, необязательный, по умолчанию0.0) — Количество шума, добавляемого к логитам роутера во время обучения для более равномерной загрузки. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], необязательный) — Словарь, содержащий параметры конфигурации для эмбеддингов RoPE. Словарь должен содержать значение дляrope_thetaи, при необходимости, параметры, используемые для масштабирования, если вы хотите использовать RoPE с более длиннымиmax_position_embeddings.
Это класс конфигурации для хранения настроек модели MixtralModel. Он используется для создания модели Mixtral в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации mistralai/Mixtral-8x7B-v0.1
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Пример:
>>> 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.configMistralCommonBackend
класс transformers.MistralCommonBackend
< source >( tokenizer_path: str | os.PathLike | pathlib.Pathmode: str | ValidationMode = 'test'model_max_length: int = 1000000000000000019884624838656padding_side: str = 'left'truncation_side: str = 'right'model_input_names: list[str] | None = Noneclean_up_tokenization_spaces: bool = False**kwargs )
Класс для обёртки токенизаторов mistral-common.
mistral-common — это официальная библиотека токенизаторов для моделей Mistral AI. Для её использования необходимо установить её с помощью:
pip install transformers[mistral-common]
В противном случае токенизатор использует реализацию токенизатора из Transformers.
Подробнее о mistral-common см. в 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.
Если у вас есть предложения по улучшению этого класса, пожалуйста, создайте issue в репозитории mistral-common на GitHub, если они касаются токенизатора, или в репозитории Transformers на GitHub, если они касаются интерфейса Hugging Face.
add_special_tokens
< source >( special_tokens_dict: dictreplace_extra_special_tokens: bool = True )
MistralCommonBackend намеренно не реализует add_special_tokens.
Если вы хотите, чтобы такое поведение было реализовано, пожалуйста, создайте issue в репозиториях Transformers или mistral-common с соответствующим запросом.
MistralCommonBackend намеренно не реализует add_special_tokens.
Если вы хотите, чтобы такое поведение было реализовано, пожалуйста, создайте issue в репозиториях Transformers или mistral-common с соответствующим запросом.
apply_chat_template
< source >( conversation: list[dict[str, str]] | list[list[dict[str, str]]]tools: list[dict | collections.abc.Callable] | None = Noneadd_generation_prompt: bool = Falsecontinue_final_message: bool = Falsetokenize: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool = Falsemax_length: int | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_dict: bool = Truereasoning_effort: ReasoningEffort | None = None**kwargs ) → Union[str, list[int], list[str], list[list[int]], BatchEncoding]
Параметры
- conversation (Union[List[Dict[str, str]], List[List[Dict[str, str]]]]) — список словарей с ключами «role» и «content», представляющий историю чата на данный момент.
- tools (
List[Union[Dict, Callable]], необязательный) — Список инструментов (вызываемых функций), доступных модели. Если шаблон не поддерживает вызов функций, этот аргумент не будет иметь эффекта. Каждый инструмент должен передаваться в виде JSON Schema, указывающего имя, описание и типы аргументов инструмента. Подробнее см. в нашем руководстве по шаблонам чата. - add_generation_prompt (
bool, необязательный) — Этот аргумент не выполняет никаких действий дляMistralCommonBackend. Однако его нельзя использовать одновременно сcontinue_final_message, чтобы сохранить согласованность API. Если какой-либо диалог заканчивается сообщением ассистента, будет выброшена ошибка. В таких случаях используйтеcontinue_final_message. - continue_final_message (bool, необязательный) —
Если этот параметр установлен, чат будет сформирован так, чтобы последнее
сообщение в чате было незавершённым, без токенов EOS. Модель продолжит это сообщение,
а не начнёт новое. Это позволяет «предзаполнить» часть
ответа модели. Не может использоваться одновременно с
add_generation_prompt. - tokenize (
bool, по умолчаниюTrue) — Определяет, следует ли токенизировать вывод. ЕслиFalse, выводом будет строка. - padding (
bool,strили PaddingStrategy, необязательный, по умолчаниюFalse) — Выберите стратегию дополнения возвращаемых последовательностей (с учётом стороны дополнения модели и индекса дополнения) из следующих вариантов:Trueили'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).'max_length': Дополнить до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.Falseили'do_not_pad'(по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
- truncation (
bool, по умолчаниюFalse) — Определяет, нужно ли обрезать последовательности до максимальной длины. Не имеет эффекта, если tokenize равноFalse. - max_length (
int, необязательный) — Максимальная длина (в токенах), используемая для дополнения или усечения. Не влияет на результат, если tokenize равноFalse. Если значение не указано, по умолчанию будет использован атрибутmax_lengthтокенизатора. - return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Не имеет эффекта, если tokenize —False. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.
- 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
< source >( sequences: typing.Union[list[int], list[list[int]], numpy.ndarray, ForwardRef('torch.Tensor')]skip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]
Параметры
- 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
< source >( token_ids_0: listtoken_ids_1: None = None ) → list[int]
Создайте входные данные модели из последовательности, добавив специальные токены.
Этот метод динамически формирует входные данные в зависимости от mode токенизатора:
"test": seq0 [EOS]"finetuning": [BOS] seq0
convert_added_tokens
< source >( obj: tokenizers.AddedToken | typing.Anysave: bool = Falseadd_type_field: bool = True )
MistralCommonBackend намеренно не реализует convert_added_tokens.
Если вы хотите, чтобы такое поведение было реализовано, пожалуйста, создайте issue в репозиториях Transformers или mistral-common с соответствующим запросом.
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: None = None ) → list[int]
Создайте маску нулей из идентификаторов токенов с добавленными специальными токенами.
Сохранено для соответствия реализации в Transformers.
decode
< source >( token_ids: typing.Union[int, list[int], list[list[int]], numpy.ndarray, ForwardRef('torch.Tensor')]skip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → Union[str, list[str]]
Параметры
- token_ids (
Union[int, 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.decode. Использование приведёт к ошибке.
Возвращает
Union[str, list[str]]
Декодированная строка для одной последовательности или список декодированных строк для батча последовательностей.
Преобразует последовательность идентификаторов в строку, используя токенизатор и словарь, с опциями для удаления специальных токенов и очистки пробелов токенизации.
encode
< source >( text: str | list[int]text_pair: None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Noneverbose: bool = Truereturn_offsets_mapping: typing.Literal[False] = Falsesplit_special_tokens: typing.Literal[False] = False**kwargs ) → list[int], torch.Tensor
Параметры
- 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, необязательный, по умолчаниюFalse) — Включает и управляет выравниванием. Принимает следующие значения:Trueили'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).'max_length': Дополнить до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.Falseили'do_not_pad'(по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
- truncation (
bool,strили TruncationStrategy, , необязательный, по умолчаниюFalse) — Включает и управляет усечением. Принимает следующие значения:Trueили'longest_first': обрезка до максимальной длины, заданной аргументомmax_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.Falseили'do_not_truncate'(по умолчанию): без усечения (т.е. может выдать батч с длиной последовательности, превышающей максимальный допустимый размер входа модели).
- max_length (
int, необязательный) — Управляет максимальной длиной, используемой одним из параметров усечения/дополнения.Если параметр не задан или установлен в
None, будет использована предопределённая максимальная длина модели, если одна из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено. - stride (
int, необязательный, по умолчанию 0) — Если задано число вместе сmax_length, то переполненные токены, возвращаемые приreturn_overflowing_tokens=True, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов. - pad_to_multiple_of (
int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобыpaddingбыл активирован. Это особенно полезно для использования Tensor Cores на оборудовании NVIDIA с вычислительной способностью>= 7.5(Volta). - padding_side (
str, необязательный) — Сторона, на которой модель должна применять отступы. Следует выбрать одно из значений [‘right’, ‘left’]. Значение по умолчанию выбирается из атрибута класса с тем же именем. - return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.
- **kwargs — не поддерживается в
MistralCommonBackend.encode. Использование приведёт к ошибке.
Возвращает
list[int], torch.Tensor
Токенизированные идентификаторы текста.
Преобразует строку в последовательность идентификаторов (целых чисел), используя токенизатор и словарь.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike*init_inputsmode: str | ValidationMode = 'test'cache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'model_max_length: int = 1000000000000000019884624838656padding_side: str = 'left'truncation_side: str = 'right'model_input_names: list[str] | None = Noneclean_up_tokenization_spaces: bool = False**kwargs )
Параметры
- 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, необязательный) — Управляет максимальной длиной, используемой одним из параметров усечения/дополнения.Если параметр не задан или установлен в
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 из предопределенного токенизатора.
MistralCommonBackend намеренно не реализует get_chat_template, так как mistral-common не использует шаблоны чата.
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
Параметры
- 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 токенизатора.
Возвращает словарь в виде словаря с соответствием токенов и индексов.
Это потерянное преобразование. Из-за преобразования частичных последовательностей байтов UTF-8 в символ � несколько идентификаторов токенов могут декодироваться в одну и ту же строку.
num_special_tokens_to_add
< source >( pair: typing.Literal[False] = False ) → int
Возвращает количество добавленных токенов при кодировании последовательности со специальными токенами.
Эта операция кодирует фиктивный вход и проверяет количество добавленных токенов, поэтому она неэффективна. Не помещайте её внутрь цикла обучения.
prepare_for_model
< source >( ids: listpair_ids: None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_length: bool = Falseverbose: bool = Trueprepend_batch_axis: bool = Falsereturn_offsets_mapping: typing.Literal[False] = Falsesplit_special_tokens: typing.Literal[False] = False**kwargs ) → BatchEncoding
Параметры
- 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, необязательный, по умолчаниюFalse) — Включает и управляет выравниванием. Принимает следующие значения:Trueили'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).'max_length': Дополнить до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.Falseили'do_not_pad'(по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
- truncation (
bool,strили TruncationStrategy, , необязательный, по умолчаниюFalse) — Включает и управляет усечением. Принимает следующие значения:Trueили'longest_first': обрезка до максимальной длины, заданной аргументомmax_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.Falseили'do_not_truncate'(по умолчанию): без усечения (т.е. может выдать батч с длиной последовательности, превышающей максимальный допустимый размер входа модели).
- max_length (
int, необязательный) — Управляет максимальной длиной, используемой одним из параметров усечения/дополнения.Если параметр не задан или установлен в
None, будет использована предопределённая максимальная длина модели, если одна из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено. - stride (
int, необязательный, по умолчанию 0) — Если задано число вместе сmax_length, то переполненные токены, возвращаемые приreturn_overflowing_tokens=True, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов. - pad_to_multiple_of (
int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобыpaddingбыл активирован. Это особенно полезно для использования Tensor Cores на оборудовании NVIDIA с вычислительной способностью>= 7.5(Volta). - padding_side (
str, необязательный) — Сторона, на которой модель должна применять отступы. Следует выбрать одно из значений [‘right’, ‘left’]. Значение по умолчанию выбирается из атрибута класса с тем же именем. - return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.
- return_token_type_ids (
bool, необязательный) — Возвращать ли идентификаторы типов токенов. ДляMistralCommonBackendвозвращается список нулей длиной последовательности, так как поддерживается только одна последовательность. - return_attention_mask (
bool, необязательный) — Возвращать ли маску внимания. Если значение не указано, маска внимания будет возвращена в соответствии со значением по умолчанию для конкретного токенизатора, определяемым атрибутомreturn_outputs. - 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 со следующими полями:
-
input_ids — список идентификаторов токенов, которые передаются в модель.
-
attention_mask — список индексов, указывающих, на какие токены модель должна обращать внимание (когда
return_attention_mask=Trueили если “attention_mask” входит вself.model_input_names). -
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)
Подготавливает последовательность входных id для использования в модели. Добавляет специальные токены, при необходимости обрезает последовательности с учётом специальных токенов и управляет скользящим окном (с заданным пользователем шагом) для переполняющих токенов.
save_chat_templates
< source >( save_directory: str | os.PathLiketokenizer_config: dictfilename_prefix: str | Nonesave_jinja_files: bool )
MistralCommonBackend намеренно не реализует save_chat_templates, так как mistral-common не использует шаблоны чата.
save_pretrained
< source >( save_directory: str | os.PathLike | pathlib.Pathpush_to_hub: bool = Falsetoken: str | bool | None = Nonecommit_message: str | None = Nonerepo_id: str | None = Noneprivate: bool | None = Nonesave_format: str | None = None**kwargs ) → tuple[str, ...]
Параметры
- 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, optional) — Указывает, является ли репозиторий приватным. - 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).
MistralCommonBackend намеренно не реализует save_vocabulary.
Это происходит потому, что mistral-common настраивается одним файлом токенизатора. Если вы хотите сохранить словарь, рассмотрите возможность использования метода save_pretrained.
tokenize
< source >( text: strreturn_offsets_mapping: typing.Literal[False] = Falsesplit_special_tokens: typing.Literal[False] = False**kwargs ) → list[str]
Параметры
- text (
str) — Последовательность, подлежащая кодированию. - return_offsets_mapping (
Literal[False], необязательный) — False, сохранено для соответствия сигнатуре Transformers. - split_special_tokens (
Literal[False], необязательный) — False, сохранено для соответствия сигнатуре Transformers. - **kwargs (дополнительные именованные аргументы) —
Не поддерживается в
MistralCommonBackend.tokenize. Использование приведёт к ошибке.
Возвращает
list[str]
Список токенов.
Преобразует строку в последовательность токенов с помощью токенизатора.
Разбивает текст на слова для словарей на основе слов или на под-слова для словарей на основе под-слов.
truncate_sequences
< source >( ids: listpair_ids: None = Nonenum_tokens_to_remove: int = 0truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first'stride: int = 0**kwargs ) → Tuple[list[int], None, list[int]]
Параметры
- 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, , необязательный, по умолчанию'longest_first') — Стратегия усечения. Возможные значения:'longest_first': Обрезка до максимальной длины, заданной аргументомmax_length, или до максимально допустимой длины входа для модели, если этот аргумент не указан.'do_not_truncate'(по умолчанию): без усечения (т. е. может выдать батч с длиной последовательности, превышающей максимальный допустимый размер входных данных модели).
- stride (
int, необязательный, по умолчанию 0) — Если задано положительное число, возвращаемые токены, выходящие за пределы, будут содержать некоторые токены из основной возвращаемой последовательности. Значение этого аргумента определяет количество дополнительных токенов.
Возвращает
Tuple[list[int], None, list[int]]
Обрезанные ids и список
переполняющих токенов. Возвращается None для соответствия сигнатуре Transformers.
Обрезает пару последовательностей на месте согласно стратегии.
MixtralModel
класс transformers.MixtralModel
< source >( config: MixtralConfig )
Параметры
- config (MixtralConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Mixtral без дополнительных компонентов, выводящая необработанные скрытые состояния без какого-либо специализированного слоя.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeModelOutputWithPast or tuple(torch.FloatTensor)
Параметры
- input_ids (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- position_ids (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно этоpast_key_values, возвращённые моделью на предыдущем этапе декодирования, когдаuse_cache=Trueилиconfig.use_cache=True.В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если
past_key_valuesне переданы, по умолчанию будет инициализирован DynamicCache.Модель будет выводить тот же формат кэша, который был передан на вход.
Если используются
past_key_values, ожидается, что пользователь передаст только необработанныеinput_ids(те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы(batch_size, unprocessed_length), а не всеinput_idsформы(batch_size, sequence_length). - inputs_embeds (
torch.FloatTensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска эмбеддингов модели. - use_cache (
bool, необязательный) — Если установлено вTrue, возвращаются состояния ключей и значенийpast_key_values, которые можно использовать для ускорения декодирования (см.past_key_values).
Возвращает
MoeModelOutputWithPast или tuple(torch.FloatTensor)
MoeModelOutputWithPast или кортеж из
torch.FloatTensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (MixtralConfig) и входных данных.
Метод forward модели MixtralModel переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
last_hidden_state (
torch.FloatTensorформы(batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.past_key_values (
Cache, необязательный, возвращается при передачеuse_cache=Trueили когдаconfig.use_cache=True) — это экземпляр Cache. Подробнее см. в нашем руководстве по кэшу kv.Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и, при необходимости, если
config.is_encoder_decoder=True, в блоках кросс-внимания), которые можно использовать (см. входной параметрpast_key_values) для ускорения последовательного декодирования.hidden_states (
tuple(torch.FloatTensor), необязательный, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.FloatTensor(один для вывода слоя встраиваний, если модель имеет такой слой, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.FloatTensor), необязательный, возвращается, если переданоoutput_attentions=Trueили еслиconfig.output_attentions=True) — Кортежtorch.FloatTensor(по одному для каждого слоя) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
router_logits (
tuple(torch.FloatTensor), необязательный, возвращается, если переданыoutput_router_probs=Trueиconfig.add_router_probs=Trueили еслиconfig.output_router_probs=True) — кортежtorch.FloatTensor(по одному на каждый слой) формы(batch_size, sequence_length, num_experts).Сырые логиты роутера (после softmax), вычисляемые роутерами MoE; эти значения используются для вычисления вспомогательной функции потерь в моделях Mixture of Experts.
MixtralForCausalLM
класс transformers.MixtralForCausalLM
< source >( config: MixtralConfig )
Параметры
- config (MixtralConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Mixtral для моделирования языка с причинно-следственной связью.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_router_logits: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → MoeCausalLMOutputWithPast or tuple(torch.FloatTensor)
Параметры
- input_ids (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- position_ids (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно этоpast_key_values, возвращённые моделью на предыдущем этапе декодирования, когдаuse_cache=Trueилиconfig.use_cache=True.В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если
past_key_valuesне переданы, по умолчанию будет инициализирован DynamicCache.Модель будет выводить тот же формат кэша, который был передан на вход.
Если используются
past_key_values, ожидается, что пользователь передаст только необработанныеinput_ids(те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы(batch_size, unprocessed_length), а не всеinput_idsформы(batch_size, sequence_length). - inputs_embeds (
torch.FloatTensorформы(batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачиinput_idsможно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексыinput_idsпреобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска эмбеддингов модели. - labels (
torch.LongTensorформы(batch_size, sequence_length), необязательный) — Метки для вычисления потерь маскированного языкового моделирования. Индексы должны находиться в диапазоне[0, ..., config.vocab_size]или быть равны -100 (см. docstringinput_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.FloatTensor)
MoeCausalLMOutputWithPast или кортеж из
torch.FloatTensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (MixtralConfig) и входных данных.
Метод forward класса MixtralForCausalLM переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.FloatTensorформы(1,), необязательный, возвращается, если заданlabels) — Потери языковой модели (для предсказания следующего токена).logits (
torch.FloatTensorформы(batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).aux_loss (
torch.FloatTensor, необязательный, возвращается при передачеoutput_router_logits=Trueили приconfig.output_router_logits=True, если модель обучает свой роутер с потерей балансировки нагрузки) — вспомогательная потеря балансировки нагрузки для разреженных модулей. Модели, которые балансируют свои эксперты с помощью смещения роутера (DeepSeek-V3 и архитектуры, производные от него), возвращают здесьNone, при этом всё равно возвращаяrouter_logits.router_logits (
tuple(torch.FloatTensor), необязательный, возвращается при передачеoutput_router_logits=Trueили еслиconfig.output_router_logits=True) — Кортежtorch.FloatTensor(по одному для каждого разреженного слоя) формы(batch_size * sequence_length, num_experts).Сырые логиты маршрутизатора, вычисленные маршрутизаторами MoE. Их можно использовать для вычисления потерь сбалансированности нагрузки или для анализа того, как токены распределяются между экспертами.
past_key_values (
Cache, необязательный, возвращается при передачеuse_cache=Trueили когдаconfig.use_cache=True) — это экземпляр Cache. Подробнее см. в нашем руководстве по кэшу kv.Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания), которые можно использовать (см. вход
past_key_values) для ускорения последовательного декодирования.hidden_states (
tuple(torch.FloatTensor), необязательный, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.FloatTensor(один для вывода слоя встраиваний, если модель имеет такой слой, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.FloatTensor), необязательный, возвращается, если переданоoutput_attentions=Trueили еслиconfig.output_attentions=True) — Кортежtorch.FloatTensor(по одному для каждого слоя) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> 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
forward
< source >( input_ids: torch.LongTensor | None = Noneattention_mask: torch.Tensor | None = Noneposition_ids: torch.LongTensor | None = Nonepast_key_values: Cache | None = Noneinputs_embeds: torch.FloatTensor | None = Nonelabels: torch.LongTensor | None = Noneuse_cache: bool | None = None**kwargs: Unpack[TransformersKwargs] ) → SequenceClassifierOutputWithPast
Параметры
- input_ids (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- position_ids (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - past_key_values (
Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно этоpast_key_values, возвращённые моделью на предыдущем этапе декодирования, когдаuse_cache=Trueилиconfig.use_cache=True.В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если
past_key_valuesне переданы, по умолчанию будет инициализирован DynamicCache.Модель будет выводить тот же формат кэша, который был передан на вход.
Если используются
past_key_values, ожидается, что пользователь передаст только необработанныеinput_ids(те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы(batch_size, unprocessed_length), а не всеinput_idsформы(batch_size, sequence_length). - inputs_embeds (
torch.FloatTensorформы(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
forward
< source >( input_ids: torch.LongTensor | None = Noneattention_mask: torch.Tensor | None = Noneposition_ids: torch.LongTensor | None = Nonepast_key_values: Cache | None = Noneinputs_embeds: torch.FloatTensor | None = Nonelabels: torch.LongTensor | None = Noneuse_cache: bool | None = None**kwargs: Unpack[TransformersKwargs] ) → TokenClassifierOutput
Параметры
- input_ids (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- position_ids (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - past_key_values (
Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно этоpast_key_values, возвращённые моделью на предыдущем этапе декодирования, когдаuse_cache=Trueилиconfig.use_cache=True.В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если
past_key_valuesне переданы, по умолчанию будет инициализирован DynamicCache.Модель будет выводить тот же формат кэша, который был передан на вход.
Если используются
past_key_values, ожидается, что пользователь передаст только необработанныеinput_ids(те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы(batch_size, unprocessed_length), а не всеinput_idsформы(batch_size, sequence_length). - inputs_embeds (
torch.FloatTensorформы(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
forward
< source >( input_ids: torch.LongTensor | None = Noneattention_mask: torch.Tensor | None = Noneposition_ids: torch.LongTensor | None = Nonepast_key_values: Cache | None = Noneinputs_embeds: torch.FloatTensor | None = Nonestart_positions: torch.LongTensor | None = Noneend_positions: torch.LongTensor | None = None**kwargs: Unpack[TransformersKwargs] ) → QuestionAnsweringModelOutput
Параметры
- input_ids (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().
- attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- position_ids (
torch.LongTensorформы(batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона[0, config.n_positions - 1]. - past_key_values (
Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно этоpast_key_values, возвращённые моделью на предыдущем этапе декодирования, когдаuse_cache=Trueилиconfig.use_cache=True.В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если
past_key_valuesне переданы, по умолчанию будет инициализирован DynamicCache.Модель будет выводить тот же формат кэша, который был передан на вход.
Если используются
past_key_values, ожидается, что пользователь передаст только необработанныеinput_ids(те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы(batch_size, unprocessed_length), а не всеinput_idsформы(batch_size, sequence_length). - inputs_embeds (
torch.FloatTensorформы(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, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.