Transformers documentation

Mixtral

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Эта модель была опубликована в HF papers 08.01.2024 и добавлена в Hugging Face Transformers 11.12.2023.

Mixtral

FlashAttention SDPA Tensor parallelism

Обзор

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, и мы его рассмотрим! В идеале ресурс должен демонстрировать что-то новое, а не дублировать существующий.

Text Generation
  • Демо-ноутбук для выполнения контролируемой дообучения (SFT) модели Mixtral-8x7B можно найти здесь. 🌎
  • Статья в блоге о дообучении Mixtral-8x7B с использованием PEFT. 🌎
  • Alignment Handbook от Hugging Face содержит скрипты и рецепты для выполнения дообучения с учителем (SFT) и прямой оптимизации предпочтений (DPO) для модели Mistral-7B. Включены скрипты для полного дообучения, QLoRa на одном ускорителе, а также дообучения на нескольких ускорителях.
  • Руководство по задаче каузального языкового моделирования

MixtralConfig

класс transformers.MixtralConfig

< >

( 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.config

MistralCommonBackend

класс transformers.MistralCommonBackend

< >

( 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

< >

( special_tokens_dict: dictreplace_extra_special_tokens: bool = True )

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

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

add_tokens

< >

( special_tokens_dict: dictreplace_extra_special_tokens: bool = True )

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

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

apply_chat_template

< >

( 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.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

< >

( 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

< >

( token_ids_0: listtoken_ids_1: None = None ) → list[int]

Параметры

  • token_ids_0 (list[int]) — Список идентификаторов, к которым будут добавлены специальные токены.
  • token_ids_1 (None, необязательный) — None, сохранено для соответствия сигнатуре Transformers.

Возвращает

list[int]

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

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

Этот метод динамически формирует входные данные в зависимости от mode токенизатора:

  • "test": seq0 [EOS]
  • "finetuning": [BOS] seq0

convert_added_tokens

< >

( 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

< >

( token_ids_0: listtoken_ids_1: None = None ) → list[int]

Параметры

  • token_ids_0 (list[int]) — Список идентификаторов.
  • token_ids_1 (None, необязательный) — None, сохранено для соответствия сигнатуре Transformers.

Возвращает

list[int]

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

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

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

decode

< >

( 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

< >

( 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.Tensor PyTorch.
  • **kwargs — не поддерживается в MistralCommonBackend.encode. Использование приведёт к ошибке.

Возвращает

list[int], torch.Tensor

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

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

from_pretrained

< >

( 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 из предопределенного токенизатора.

get_chat_template

< >

( chat_template: str | None = Nonetools: list[dict] | None = None )

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

get_special_tokens_mask

< >

( 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 токенизатора.

get_vocab

< >

( ) → Dict[str, int]

Возвращает

Dict[str, int]

Словарь.

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

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

num_special_tokens_to_add

< >

( pair: typing.Literal[False] = False ) → int

Параметры

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

Возвращает

int

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

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

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

prepare_for_model

< >

( 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.Tensor PyTorch.
  • 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

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

< >

( save_directory: str | os.PathLiketokenizer_config: dictfilename_prefix: str | Nonesave_jinja_files: bool )

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

save_pretrained

< >

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

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

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

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

tokenize

< >

( 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

< >

( 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

< >

( config: MixtralConfig )

Параметры

  • config (MixtralConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

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

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( 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

< >

( config: MixtralConfig )

Параметры

  • config (MixtralConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

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

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( 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 (см. 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.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

класс transformers.MixtralForSequenceClassification

< >

( config )

forward

< >

( 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

класс transformers.MixtralForTokenClassification

< >

( config )

forward

< >

( 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

класс transformers.MixtralForQuestionAnswering

< >

( config )

forward

< >

( 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, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

Update on GitHub