Transformers documentation

Gemma 4 Unified Assistant

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

Эта модель была добавлена в Hugging Face Transformers 03.06.2026.

Gemma 4 Unified Assistant

Обзор

Gemma 4 Unified Assistant — это небольшая текстовая модель, которая обеспечивает спекулятивное декодирование для моделей Gemma 4 Unified с использованием метода Multi-Token Prediction (MTP) и соответствующего генератора кандидатов. Предоставляются предобученные модели для IT-вариантов модели Gemma 4 12B.

Для получения дополнительной информации см. Gemma4 Assistant. Архитектурно и концептуально они делят одну и ту же концепцию и отличаются от своей базовой модели следующим образом:

  • Вся модель использует общий KV-кэш. Эта техника, впервые представленная в Gemma 3n, позволяет модели повторно использовать KV-кэш, заполненный целевой моделью, которую поддерживает ассистент. Благодаря этому ассистент может полностью пропустить фазу pre-fille, что значительно снижает вычислительные затраты на внимание (attention) при прямом проходе.
  • Значения position_ids остаются постоянными. Поскольку кэш KV используется совместно, а ассистент не имеет способа обновлять кэш, он предсказывает все токены из одного и того же идентификатора позиции.
  • Входные данные представляют собой конкатенацию эмбеддингов и скрытых состояний. Для адаптации к статическому KV-кэшу и position_ids модель принимает на вход конкатенацию embedding и hidden_states последнего просмотренного токена целевой модели и проецирует их в пространство ассистентской модели с помощью преобразования nn.Linear. Определение последнего просмотренного токена меняется в ходе цикла assisted decoding. Для первого токена, сгенерированного после pre-fill, последним просмотренным токеном будет последний токен из промпта. Для последующих шагов генерации последним просмотренным токеном будет последний токен, сгенерированный ассистентом (в рамках раунда генерации) или последний токен, принятый целевой моделью (между раундами генерации).
  • Кросс-внимание используется для максимального использования контекста целевой модели. Кросс-внимание позволяет состояниям запросов, сгенерированным ассистентом, обращать внимание на общие значения кэша KV целевой модели, что позволяет ассистенту точно предсказывать больше токенов за каждый раунд черновика.

Примеры использования

Приведённый ниже пример показывает, как генерировать текст на основе изображения с помощью Pipeline или класса AutoModel.

<hfoptions id="usage"> <hfoption id="Pipeline">
import torch
from transformers import pipeline

pipeline = pipeline(
    task="image-text-to-text",
    model="google/gemma-4-12B-it",
    assistant_model="google/gemma-4-12B-it-assistant",
)
pipeline(
    images="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg",
    text="<|image|>\n\nWhat is shown in this image?"
)
</hfoption> <hfoption id="AutoModel">
import torch
from transformers import AutoProcessor, AutoModelForImageTextToText

model = AutoModelForImageTextToText.from_pretrained(
    "google/gemma-4-12B-it",
    dtype=torch.bfloat16,
    device_map="auto",
)
assistant_model = AutoModelForCausalLM.from_pretrained(
    "google/gemma-4-12B-it-assistant",
    dtype=torch.bfloat16,
    device_map="auto",
)

processor = AutoProcessor.from_pretrained(
    "google/gemma-4-12B-it",
    padding_side="left"
)
messages = [
    {
        "role": "user", "content": [
            {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
            {"type": "text", "text": "What is shown in this image?"},
        ]
    },
]
inputs = processor.apply_chat_template(
    messages,
    tokenize=True,
    return_dict=True,
    return_tensors="pt",
    add_generation_prompt=True,
).to(model.device)
input_len = inputs["input_ids"].shape[-1]

output = model.generate(**inputs, max_new_tokens=50, assistant_model=assistant_model)
print(processor.decode(output[0][input_len:], skip_special_tokens=True))
</hfoption>

Gemma4UnifiedAssistantConfig

класс transformers.Gemma4UnifiedAssistantConfig

< >

( 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 = Nonetext_config: transformers.configuration_utils.PreTrainedConfig | dict[str, typing.Any] | None = Nonebackbone_hidden_size: int = 3840use_ordered_embeddings: bool = Falsenum_centroids: int = 2048centroid_intermediate_top_k: int = 32tie_word_embeddings: bool = True )

Параметры

  • text_config (Union[~configuration_utils.PreTrainedConfig, dict[str, Any]], необязательный) — Объект конфигурации или словарь конфигурации текстового бэкбона.
  • backbone_hidden_size (int, по умолчанию 3840) — Размер скрытого слоя целевой унифицированной модели, с которой обучался этот ассистент.
  • use_ordered_embeddings (bool, по умолчанию False) — Если True, используется оптимально упорядоченная таблица эмбеддингов, требующая переупорядочивания.
  • num_centroids (int, по умолчанию 2048) — Общее количество центроидов для центроидного маскированного эмбеддера.
  • centroid_intermediate_top_k (int, по умолчанию 32) — Количество активных центроидов, выбираемых во время инференса.
  • tie_word_embeddings (bool, необязательный, по умолчанию True) — Определяет, следует ли связывать веса эмбеддингов согласно маппингу tied_weights_keys модели.

Это класс конфигурации для хранения настроек модели Gemma4 Unified Assistant. Он используется для создания модели Gemma4 Unified Assistant в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации google/gemma-4-12b-it

Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.

Пример:

>>> from transformers import (
...     Gemma4UnifiedAssistantConfig,
...     Gemma4UnifiedAssistantForCausalLM,
...     Gemma4UnifiedTextConfig,
... )

>>> # Initializing a Gemma 4 Unified Text config for the assistant.
>>> text_config = Gemma4UnifiedTextConfig(...)

>>> # Initializing a Gemma 4 Unified Assistant config.
>>> configuration = Gemma4UnifiedAssistantConfig(text_config=text_config)

>>> # Initializing a model from the configuration.
>>> model = Gemma4UnifiedAssistantForCausalLM(configuration)

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

Gemma4UnifiedAssistantForCausalLM

класс transformers.Gemma4UnifiedAssistantForCausalLM

< >

( config: Gemma4UnifiedAssistantConfig )

Параметры

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

Модель для вспомогательного декодирования на основе предсказания нескольких токенов с Gemma 4.

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

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

create_attention_masks

< >

( inputs_embedsattention_maskshared_kv_states )

Подготовьте маски внимания для модели-ассистента; в данном случае shared_kv_states выполняет роль кэша прошлых значений.

Мы используем двунаправленные маски для учёта причинно-следственных связей

  • Для граничного случая q_len == 1 разницы нет, так как он работает как полное внимание в любом случае.
  • SWA интерпретирует окно как направленное в будущее, если q_idx=1 и. Мы переключаемся с перспективы будущего на перспективу прошлого, инвертируя ось kv. Чтобы учесть позиционно-инвариантную отсечку, мы также инвертируем базовую маску внимания перед её первоначальным созданием. kv>=1
    • Мы меняем перспективу с будущей на прошедшую, инвертируя ось kv
    • Чтобы учесть позиционно-инвариантную отсечку, мы также инвертируем базовую маску внимания перед её первоначальным созданием

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: dict[str, torch.Tensor] | None = Noneshared_kv_states: dict[str, tuple[torch.Tensor, torch.Tensor]] | None = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> )

Параметры

  • input_ids (torch.Tensor формы (batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию padding игнорируется.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

    Что такое входные идентификаторы?

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • position_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона [0, config.n_positions - 1].

    Что такое идентификаторы позиций?

  • attention_mask (dict[str, torch.Tensor] формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из вычислений внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • shared_kv_states (dict[str, torch.Tensor формы (batch_size, 1, q_len, kv_len), необязательный) — Словарь, содержащий вычисленные значения KV для последнего слоя каждого layer_type в этой модели.
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).

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

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

Пример:

>>> from transformers import AutoTokenizer, Gemma4UnifiedAssistantForCausalLM, Gemma4UnifiedForConditionalGeneration

>>> model = Gemma4UnifiedForConditionalGeneration.from_pretrained("google/gemma-4-e2b-it")
>>> assistant_model = Gemma4UnifiedAssistantForCausalLM.from_pretrained("google/gemma-4-e2b-it-assistant")
>>> tokenizer = AutoTokenizer.from_pretrained("google/gemma-4-e2b-it")

>>> prompt = "What is your favorite condiment?"
>>> inputs = tokenizer(prompt, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, assistant_model=assistant_model, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True)[0]
"What is your favorite condiment?"
Update on GitHub