Transformers documentation

DiffusionGemma

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

DiffusionGemma

Обзор

DiffusionGemma спроектирована для снижения последовательных узких мест стандартных каузальных языковых моделей. Она использует архитектуру «кодировщик-декодировщик», специально оптимизированную для скорости вывода.

Кодер работает в режиме prefill, обрабатывая начальный промпт и формируя KV-кэш. Затем декодер использует двунаправленное внимание для обработки входного блока (‘холста’) токенов, обращаясь к закэшированному контексту через cross-attention.

На этапе инференса DiffusionGemma использует многоканвасное сэмплирование. Вместо генерации токенов по одному модель итеративно удаляет шум из целого блока токенов с помощью диффузионного сэмплера. После того как канвас полностью очищен от шума, он обрабатывается энкодером и добавляется в KV-кэш, после чего модель генерирует следующий канвас. Такой блочно-авто регрессивный подход позволяет генерировать текст с большей скоростью.

Карточку модели и контрольную точку можно найти здесь. Визуальное руководство по модели доступно здесь.

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

Несмотря на то, что это текстовая диффузионная модель с собственным циклом генерации, большая часть интерфейса совпадает с другими моделями, способными генерировать текст с помощью DiffusionGemmaGenerationMixin.generate(). Если в вашем приложении используется другая модель transformers, вы сможете напрямую заменить её на эту модель.

DiffusionGemma доступна как в Transformers, так и в Diffusers, однако основным местом её разработки является Diffusers. Именно в Diffusers представлен полный набор вариантов планировщиков, утилиты конвейеров и новые функции (дополнительные планировщики, критерии остановки, стратегии выборки). Примеры использования см. в документации DiffusionGemma, а для экспериментов с различными планировщиками или запроса новой функции создайте issue в репозитории Diffusers. Реализация в Transformers получает только исправления ошибок, но не новые функции.

Частые проблемы

  • DiffusionGemma не принимает use_cache. Он всегда использует KV-кэш;
  • Поддержка распространённых флагов, таких как top_k, не будет доступна в день релиза, но будет добавляться по мере того, как будет подтверждена их совместимость с текстовой диффузией.

Базовый пример

from transformers import DiffusionGemmaForBlockDiffusion, AutoProcessor


model = DiffusionGemmaForBlockDiffusion.from_pretrained(
    "google/diffusiongemma-26B-A4B-it", device_map="auto",
)
processor = AutoProcessor.from_pretrained("google/diffusiongemma-26B-A4B-it")

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,
    # Add the following to enable thinking
    # enable_thinking=True,
).to(model.device)
input_len = inputs["input_ids"].shape[-1]

# Set `cache_implementation="static"` in `generate` to trigger `torch.compile`.
# Compilation is much faster, after warming up!
output = model.generate(**inputs, max_new_tokens=256)
print(processor.decode(output.sequences[0][input_len:], skip_special_tokens=True))

Потоковая передача

Как и в случае с другими моделями, способными генерировать текст, вы можете задать класс стримера для потоковой передачи текста. В отличие от других моделей, DiffusionGemma генерирует промежуточные черновики до получения финального текста. Вы можете визуализировать их с помощью TextDiffusionStreamer

from transformers import TextDiffusionStreamer

# (... copy from the example above, up to the `generate` call)
streamer = TextDiffusionStreamer(tokenizer=processor.tokenizer)
model.generate(**inputs, max_new_tokens=256, streamer=streamer)

Задание начального вывода для шумоподавления

Модель обучена итеративно уточнять блоки из 256 токенов. В некоторых приложениях может быть полезно задать начальную точку для декодера, а не начинать с случайных токенов. Вы можете использовать decoder_input_ids, доступный во всех интерфейсах моделей, чтобы задать стартовый холст.

initial_estimate = ... # a tensor with shape (bsz, 256)
model.generate(**inputs, max_new_tokens=256, decoder_input_ids=initial_estimate)

DiffusionGemmaTextConfig

класс transformers.DiffusionGemmaTextConfig

< >

( 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 = 262144hidden_size: int = 2304intermediate_size: int = 9216num_hidden_layers: int = 30num_attention_heads: int = 8num_key_value_heads: int = 4head_dim: int = 256hidden_activation: str = 'gelu_pytorch_tanh'max_position_embeddings: int = 131072initializer_range: float = 0.02rms_norm_eps: float = 1e-06pad_token_id: int | None = 0eos_token_id: int | list[int] | None = 1bos_token_id: int | None = 2tie_word_embeddings: bool = Truerope_parameters: dict | None = Noneattention_bias: bool = Falseattention_dropout: int | float | None = 0.0sliding_window: int = 512layer_types: list[str] | None = Noneuse_bidirectional_attention: typing.Optional[typing.Literal['all', 'vision']] = Nonenum_experts: int | None = Nonetop_k_experts: int | None = Nonemoe_intermediate_size: int | None = None )

Параметры

  • vocab_size (int, необязательный, по умолчанию 262144) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены в input_ids.
  • hidden_size (int, необязательный, по умолчанию 2304) — Размерность скрытых представлений.
  • intermediate_size (int, необязательный, по умолчанию 9216) — Размерность представлений MLP.
  • num_hidden_layers (int, необязательный, по умолчанию 30) — Количество скрытых слоев в декодере Transformer.
  • num_attention_heads (int, необязательный, по умолчанию 8) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • num_key_value_heads (int, необязательный, по умолчанию 4) — Это количество ключевых и 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, необязательный, по умолчанию 256) — Размер измерения головы внимания. Если значение равно None, по умолчанию используется hidden_size // num_attention_heads
  • hidden_activation (str, необязательный, по умолчанию gelu_pytorch_tanh) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • max_position_embeddings (int, необязательный, по умолчанию 131072) — Максимальная длина последовательности, с которой может использоваться эта модель.
  • initializer_range (float, необязательный, по умолчанию 0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
  • rms_norm_eps (float, необязательный, по умолчанию 1e-06) — Значение epsilon, используемое слоями нормализации rms.
  • pad_token_id (int, необязательный, по умолчанию 0) — Идентификатор токена, используемого для дополнения (padding) в словаре.
  • eos_token_id (Union[int, list[int]], необязательный, по умолчанию 1) — Идентификатор токена, используемого для обозначения конца потока в словаре.
  • bos_token_id (int, необязательный, по умолчанию 2) — Идентификатор токена, используемого для обозначения начала потока в словаре.
  • tie_word_embeddings (bool, необязательный, по умолчанию True) — Определяет, следует ли связывать веса эмбеддингов согласно маппингу tied_weights_keys модели.
  • rope_parameters (dict, необязательный) — Словарь, содержащий параметры конфигурации для эмбеддингов RoPE. В словаре должно быть указано значение для rope_theta и, при необходимости, параметры, используемые для масштабирования, если вы хотите использовать RoPE с более длинными max_position_embeddings.
  • attention_bias (bool, необязательный, по умолчанию False) — Использовать ли смещение (bias) в слоях проекции query, key, value и output при само-внимании.
  • attention_dropout (Union[int, float], необязательный, по умолчанию 0.0) — Коэффициент dropout для вероятностей внимания.
  • sliding_window (int, необязательный, по умолчанию 512) — Размер окна скользящего внимания. Если None, скользящее окно не применяется.
  • layer_types (list[str], необязательный) — Список, в котором явно указывается тип слоя для каждого индекса слоя. Если не задан, будет автоматически сгенерирован на основе значений конфигурации.
  • use_bidirectional_attention (str, необязательный) — Управляет поведением двунаправленного внимания. При значении "vision" визуальные токены используют двунаправленное внимание, а текстовые — каузальное. При значении "all" все токены используют двунаправленное внимание.
  • num_experts (int, необязательный) — Количество маршрутизируемых экспертов в слоях MoE.
  • top_k_experts (int, необязательный) — Количество экспертов, активируемых на каждый токен в слоях MoE.
  • moe_intermediate_size (int, необязательный) — Промежуточный (скрытый) размер полносвязной сети каждого эксперта в слоях MoE.

Это класс конфигурации для хранения настроек модели DiffusionGemmaModel. Он используется для создания модели Diffusion Gemma в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации google/diffusiongemma-26B-A4B-it

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

DiffusionGemmaConfig

класс transformers.DiffusionGemmaConfig

< >

( 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.models.diffusion_gemma.configuration_diffusion_gemma.DiffusionGemmaTextConfig | dict[str, typing.Any] | None = Nonevision_config: transformers.configuration_utils.PreTrainedConfig | dict[str, typing.Any] | None = Noneboi_token_id: int | None = 255999eoi_token_id: int | None = 258882image_token_id: int | None = 258880initializer_range: float | None = 0.02tie_word_embeddings: bool = Truecanvas_length: int | None = 256 )

Параметры

  • text_config (Union[~models.diffusion_gemma.configuration_diffusion_gemma.DiffusionGemmaTextConfig, dict[str, Any]], необязательный) — Объект конфигурации или словарь текстового бэкбона.
  • vision_config (Union[~configuration_utils.PreTrainedConfig, dict[str, Any]], необязательный) — Объект конфигурации или словарь для визуального бэкбона.
  • boi_token_id (int, необязательный, по умолчанию 255999) — Индекс токена начала изображения, используемого для обрамления запроса с изображением.
  • eoi_token_id (int, необязательный, по умолчанию 258882) — Индекс токена конца изображения, используемый для обрамления подсказки изображения.
  • image_token_id (int, необязательный, по умолчанию 258880) — Индекс токена изображения, используемый как плейсхолдер для входных изображений.
  • initializer_range (float, необязательный, по умолчанию 0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
  • tie_word_embeddings (bool, необязательный, по умолчанию True) — Определяет, следует ли связывать веса эмбеддингов согласно маппингу tied_weights_keys модели.
  • canvas_length (int, необязательный, по умолчанию 256) — Размер холста, то есть длина блока в блочной диффузии. Используется для инициализации пустого холста.

Это класс конфигурации для хранения настроек модели DiffusionGemmaModel. Он используется для создания модели Diffusion Gemma в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации google/diffusiongemma-26B-A4B-it

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

Пример:

>>> from transformers import (
>>>     DiffusionGemmaConfig,
>>>     DiffusionGemmaModel,
>>>     DiffusionGemmaTextConfig,
>>>     Gemma4VisionConfig,
>>> )

>>> # Initializing a DiffusionGemma Text config.
>>> text_config = DiffusionGemmaTextConfig()

>>> # Initializing a Gemma 4 vision config (DiffusionGemma uses Gemma 4's vision block).
>>> vision_config = Gemma4VisionConfig()

>>> # Initializing a DiffusionGemma text config
>>> configuration = DiffusionGemmaConfig(text_config, vision_config)

>>> # Initializing a model from the configuration
>>> model = DiffusionGemmaModel(configuration)

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

DiffusionGemmaGenerationOutput

класс transformers.DiffusionGemmaGenerationOutput

< >

( sequences: LongTensortokens_per_forward: int | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonelogits: None = Nonescores: None = Nonehidden_states: None = None )

Параметры

  • sequences (torch.LongTensor формы (batch_size, sequence_length)) — Сгенерированные последовательности, включая промпт, если input_ids был передан в метод generate.
  • tokens_per_forward (torch.LongTensor формы (batch_size)) — Количество токенов на один проход в этом вызове generate для каждого элемента в батче. Часто используется как вторичная метрика оценки для моделей текстовой диффузии.
  • past_key_values (Cache) — Кэш, используемый для генерации. Его можно передавать в последующие вызовы generate, чтобы ускорить генерацию в многораундовых сессиях.
  • logits (None) — Не используется. Оставлено в интерфейсе для обратной совместимости.
  • scores (None) — Не используется. Оставлено в интерфейсе для обратной совместимости.
  • hidden_states (None) — Не используется. Оставлено в интерфейсе для обратной совместимости.

Класс результата для генерации в DiffusionGemma.

DiffusionGemmaGenerationMixin

класс transformers.DiffusionGemmaGenerationMixin

< >

( )

Класс-миксин для генерации в DiffusionGemma. Содержит все методы на уровне модели.

generate

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonestreamer: transformers.generation.streamers.BaseStreamer | None = Nonegeneration_config: transformers.models.diffusion_gemma.generation_diffusion_gemma.DiffusionGemmaGenerationConfig | None = Nonelogits_processor: transformers.generation.logits_process.LogitsProcessorList | None = Nonestopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = None**kwargs ) → torch.LongTensor or DiffusionGemmaGenerationOutput

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Последовательность, используемая в качестве промпта для генерации.
  • past_key_values (Cache, необязательный) — Объект кэша, содержащий прошлые значения ключей и прошлые маски внимания для декодера. Если он задан, input_ids и/или pixel_values должны соответствовать только данным, не находящимся в кэше.
  • streamer (BaseStreamer, необязательный) — объект Streamer, который будет использоваться для потоковой передачи сгенерированных последовательностей. Сгенерированные токены передаются через streamer.put(token_ids), а streamer отвечает за дальнейшую обработку. Если объект streamer имеет метод put_draft, токены из шагов денойзинга будут отправляться туда.

Дополнительные аргументы для опытных пользователей

  • generation_config (DiffusionGemmaGenerationConfig, optional) — Конфигурация генерации, используемая в качестве базовой параметризации для вызова генерации, с переопределением значений по умолчанию модели. Если в чекпоинте модели есть файл generation_config.json, значения по умолчанию модели будут загружены из него. В противном случае будет создан пустой экземпляр DiffusionGemmaGenerationConfig. В качестве дополнительного сокращения, **kwargs, соответствующие атрибутам в generation_config, переопределяют их.
  • logits_processor (LogitsProcessorList, optional) — Пользовательские обработчики logits, дополняющие стандартные обработчики logits, создаваемые на основе аргументов и конфигурации генерации, которые применяются к logits диффузии. Если указаны, эти обработчики будут применяться первыми. Эта функция предназначена для продвинутых пользователей. Например, вы можете передать сюда обработчики logits, обычно используемые с AR LLM.
  • stopping_criteria (StoppingCriteriaList, optional) — Пользовательские критерии остановки, дополняющие стандартные критерии остановки блочной авторегрессии, сформированные на основе аргументов и конфигурации генерации. Если указаны, эти критерии применяются в первую очередь. Эта функция предназначена для опытных пользователей. Например, здесь можно передать критерии остановки, обычно используемые с авторегрессионными LLM.
  • kwargs (dict[str, Any], необязательный) — Служебная параметризация generation_config и/или дополнительные аргументы, специфичные для модели, которые будут переданы в функцию forward модели. Например, можно задать стартовый холст с помощью decoder_input_ids.

Возвращает

torch.LongTensor или DiffusionGemmaGenerationOutput

  • torch.LongTensor: сгенерированный текст в виде идентификаторов.
  • DiffusionGemmaGenerationOutput: экземпляр ModelOutput, содержащий сгенерированный текст (sequences), а также другие необязательные выходные данные.

Генерирует текст с помощью диффузионной модели.

Он содержит внешний цикл, выполняющий авторегрессионную генерацию холстов (блоков токенов), и внутренний

цикл, выполняющий диффузию на каждом холсте. Алгоритм работает примерно следующим образом:

1. Autoregressive canvas generation loop:
    a. Encode all previous tokens using the encoder, to get the KV cache.
    b. Prepare data for the new denoising loop
    c. For each denoising (diffusion) step:
        i.   Run the decoder, taking the current canvas, the encoder KV cache, and the self-conditioning logits
             (if available) as inputs.
        ii.  Select new canvas tokens from the output logits.
        iii. Apply the sampler acceptance and renoising logic.
        iv.  Update the diffusion stopping criteria.
        v.   Use the output logits as self-conditioning logits for the next step.
    d. Append the new denoised canvas to the sequence of generated tokens.
    e. Check if any autoregressive stopping criteria are met, and break the outer loop if all sequences have
       met them. Replaces generated tokens in finished sequences by pad.
    f. Prepare tensors for the next block

Примеры:

>>> from transformers import DiffusionGemmaForBlockDiffusion, AutoProcessor, TextDiffusionStreamer

>>> model = DiffusionGemmaForBlockDiffusion.from_pretrained(
...     "google/diffusiongemma-26B-A4B-it", device_map="auto",
>>> )

>>> chat = [{"role": "user", "content": "Why is the sky blue?"},]
>>> processor = AutoProcessor.from_pretrained("google/diffusiongemma-26B-A4B-it")
>>> input_ids = processor.apply_chat_template(chat, tokenize=True, return_tensors="pt")

>>> streamer = TextDiffusionStreamer(tokenizer=processor.tokenizer)
>>> model.generate(input_ids.to(model.device), max_new_tokens=512, streamer=streamer)

DiffusionGemmaGenerationConfig

класс transformers.DiffusionGemmaGenerationConfig

< >

( **kwargs )

Параметры, управляющие длиной вывода

  • max_new_tokens (int, необязательный) — Максимальное количество токенов для генерации, не учитывая количество токенов в промпте.
  • max_length (int, необязательный) — Максимальная длина выходной последовательности. Для управления количеством токенов, генерируемых моделью, рекомендуется использовать max_new_tokens.

Параметры диффузии

  • max_denoising_steps (int) — Максимальное количество шагов денойзинга.
  • sampler_config (EntropyBoundSamplerConfig) — Конфигурация сэмплера. См. EntropyBoundSampler, чтобы узнать, как работает сэмплер в модели текстовой диффузии.
  • t_min (float) — Конечная температура в расписании, то есть на последнем шаге денойзинга. Подробности см. в LinearTemperatureScheduleLogitsProcessor.
  • t_max (float) — Начальная температура в расписании, то есть на первом шаге денойзинга. Подробности см. в LinearTemperatureScheduleLogitsProcessor.
  • stability_threshold (int) — Количество шагов, в течение которых принятый холст должен оставаться неизменным для срабатывания критерия остановки. Подробнее см. StableAndConfidentStoppingCriteria.
  • confidence_threshold (float) — Порог для среднего значения энтропии логитов, масштабированных по температуре, для срабатывания критериев остановки. Подробнее см. StableAndConfidentStoppingCriteria.

Параметры, управляющие кэшем

  • cache_implementation (str, необязательный) — Имя класса кэша, который будет создан в generate, для более быстрого декодирования. Допустимые значения:

    Если значение не указано, будет использован кэш по умолчанию для модели (часто это DynamicCache). Дополнительную информацию см. в документации по кэшированию.

  • cache_config (dict, необязательный, по умолчанию None) — Аргументы, используемые в классе кэша ключей и значений, можно передать в cache_config.

Специальные токены, которые можно использовать при генерации

  • bos_token_id (int, необязательный) — Идентификатор токена beginning-of-sequence.
  • pad_token_id (int, необязательный) — Идентификатор токена padding.
  • eos_token_id (Union[int, list[int]], необязательный) — Идентификатор токена конца последовательности. При необходимости можно использовать список, чтобы задать несколько токенов конца последовательности.

Класс GenerationConfig с параметризацией, настроенной для DiffusionGemmaGenerationMixin.generate().

EntropyBoundSamplerConfig

класс transformers.EntropyBoundSamplerConfig

< >

( entropy_bound: float )

Параметры

  • entropy_bound (float) — Граница энтропии. Чем выше это значение, тем больше токенов будет принято. Подробности о том, как она применяется, см. в docstring метода EntropyBoundSampler.accept_canvas().

Класс конфигурации для сэмплера с ограничением по энтропии.

EntropyBoundSampler

класс transformers.EntropyBoundSampler

< >

( config: EntropyBoundSamplerConfigcanvas_length: intvocab_size: intmax_denoising_steps: int )

Параметры

  • config (EntropyBoundSamplerConfig) — Конфигурация сэмплера.
  • canvas_length (int) — Длина холста.
  • vocab_size (int) — Размер словаря.
  • max_denoising_steps (int) — Максимальное количество шагов денойзинга. (Не используется в этом сэмплере)

Класс сэмплера, который инициализирует холст случайными токенами, принимает токены на основе энтропии на уровне токенов и повторно шумит непринятые токены.

Ниже приведена приблизительная схема работы цикла сэмплера:

          +-----------------------+
          | Canvas initialization |
          | x_T ∈ U(V)            |
          +-----------+-----------+
                      |
                      v
           +----------+---------+       +---------------------+
+--------->| Current canvas x_t |------>| Denoiser canvas x_D |
|          +----------+---------+       +----------+----------+
|                      \                          /
|                       \                        /
|                        \   Acceptance logic   /
|                         v                    v
|                       +-------------------------+
| Stop if max           | Accepted canvas x_{t-1} |
| denosing steps        +------------+------------+      +-------------------+
| reached or                          \                  | New canvas ∈ U(V) |
| adaptive stopping                    \                 +---------+---------+
| triggers                              \    Renoising logic      /
|                                        v                       v
|                                       +-------------------------+
+---------------------------------------| Next canvas x_{t-1}     |
                                        +-------------------------+

accept_canvas

< >

( current_canvas: LongTensordenoiser_canvas: LongTensorlogits: Tensorcur_step: int ) → torch.LongTensor

Параметры

  • current_canvas (torch.LongTensor) — Текущий холст.
  • denoiser_canvas (torch.LongTensor) — Холст, выбранный из предсказаний денуайзера.
  • logits (torch.Tensor) — Логиты из денойзера.
  • cur_step (int) — Текущий шаг.

Возвращает

torch.LongTensor

Принятый холст.

Принимает токены от денойзера на основе порога энтропии. Более конкретно, выборка выполняется путём принятия k токенов с наименьшей энтропией, при условии

sum_i^k entropy_i - max(entropy_1, …, entropy_k) <= entropy_bound,

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

Первоначально предложен в https://arxiv.org/pdf/2505.24857

initialize_canvas

< >

( batch_size: intdevice: device )

Инициализирует и возвращает новый холст из canvas_length токенов со случайными значениями из словаря.

renoise_canvas

< >

( accepted_canvas: LongTensorcur_step: int ) → torch.LongTensor

Параметры

  • accepted_canvas (torch.LongTensor) — Принятый холст.
  • cur_step (int) — Текущий шаг. (Не используется в этом сэмплере)

Возвращает

torch.LongTensor

Повторно зашумлённый холст.

Повторно генерирует все не принятые токены.

StableAndConfidentStoppingCriteria

class transformers.StableAndConfidentStoppingCriteria

< >

( stability_threshold: intconfidence_threshold: float )

Параметры

  • stability_threshold (int) — Количество шагов, в течение которых принятый холст должен оставаться неизменным для срабатывания критерия остановки.
  • confidence_threshold (float) — Порог для среднего значения энтропии логитов, масштабированных по температуре, для срабатывания критериев остановки.

Адаптивная стратегия остановки, которая прекращает процесс, когда диффузионный процесс становится уверенным и стабильным. Более конкретно:

  • Процесс диффузии считается стабильным, если принятый холст остаётся неизменным на протяжении stability_threshold шагов.
  • Процесс диффузии считается уверенным, если среднее значение энтропии обработанных логитов ниже confidence_threshold.

LinearTemperatureScheduleLogitsProcessor

класс transformers.LinearTemperatureScheduleLogitsProcessor

< >

( t_min: floatt_max: floatmax_denoising_steps: int )

Параметры

  • t_min (float) — Конечная температура в расписании, то есть на последнем шаге денойзинга.
  • t_max (float) — Начальная температура в расписании, то есть на первом шаге удаления шума.
  • max_denoising_steps (int) — Максимальное количество шагов денойзинга.

Обработчик логитов, применяющий линейное расписание температуры к логитам. Это похоже на TemperatureLogitsWarper, за исключением того, что температура является функцией текущего шага.

На шаге n из N температура t задается формулой t = t_min + ((t_max - t_min) * (n/N)).

DiffusionGemmaPreTrainedModel

класс transformers.DiffusionGemmaPreTrainedModel

< >

( config: PreTrainedConfig*inputs**kwargs )

Параметры

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

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

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

forward

( *args**kwargs )

Мок-значение для пути с точками (например, torch.float32): цепочки доступа к атрибутам и вызовы работают как пропускные декораторы, repr возвращает путь с точками, а использование в качестве базового класса подставляет обычный базовый класс type (PEP 560 __mro_entries__), благодаря чему реальные дочерние классы сохраняют обычный метакласс, а inspect.signature читает их реальный __init__, а не мок-объект.

DiffusionGemmaModel

класс transformers.DiffusionGemmaModel

< >

( config: DiffusionGemmaConfig )

Параметры

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

Модель Diffusion Gemma без дополнительных компонентов, выводящая необработанные скрытые состояния (raw hidden-states) без какого-либо специализированного слоя (head) сверху.

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Union[torch.Tensor, dict, NoneType] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Noneself_conditioning_logits: typing.Optional[torch.Tensor] = Noneself_conditioning_mask: typing.Optional[torch.BoolTensor] = Nonedecoder_attention_mask: typing.Union[torch.Tensor, dict, NoneType] = Nonedecoder_position_ids: typing.Optional[torch.LongTensor] = Nonemm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DiffusionGemmaModelOutputWithPast or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Некэшированные идентификаторы токенов для промпта, который будет закодирован в качестве контекста для холста.
  • attention_mask (torch.Tensor формы (batch_size, sequence_length) или dict, необязательный) — Маска для входных токенов.
  • 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).

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

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

  • decoder_input_ids (torch.LongTensor формы (batch_size, canvas_length), необязательный) — Идентификаторы токенов для холста, который будет уточнен.
  • self_conditioning_logits (torch.Tensor формы (batch_size, canvas_length, vocab_size), необязательный) — Логиты самоусловливания с предыдущего шага денойзинга, используемые для вычисления эмбеддингов самоусловливания.
  • self_conditioning_mask (torch.BoolTensor формы (batch_size,), необязательный) — Маска для каждого примера в self_conditioning_logits: для примеров, где значение установлено в False, сигнал самоусловливания обнуляется, как если бы для них не были переданы логиты. Полезно при обучении, когда самоусловливание включается для каждого примера с некоторой вероятностью.
  • decoder_attention_mask (torch.Tensor формы (batch_size, sequence_length+canvas_length) или dict, необязательный) — Маска внимания для KV-кэша декодера. Используется для указания заполненных/незаполненных записей в кэше KV энкодера.
  • decoder_position_ids (torch.LongTensor формы (batch_size, canvas_length), необязательный) — Идентификаторы позиций для токенов в канвасе.
  • mm_encoder_outputs (dict[str, ~modeling_outputs.BaseModelOutputWithPooling], необязательный) — Словарь, где ключами являются поддерживаемые модальности, а значениями — закодированные результаты для соответствующей модальности. Каждый закодированный результат представляет собой кортеж вида (pooler_output, необязательный: last_hidden_states, необязательный: hidden_states, необязательный: attentions) pooler_output формы (batch_size, sequence_length, hidden_size), необязательный) — последовательность мультимодальных признаков энкодера, объединённых с текстовыми эмбеддингами.

Возвращает

DiffusionGemmaModelOutputWithPast или tuple(torch.Tensor)

DiffusionGemmaModelOutputWithPast или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (DiffusionGemmaConfig) и входных данных.

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

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

  • last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.

    Если используется past_key_values, выводится только последнее скрытое состояние последовательностей формы (batch_size, 1, 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.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

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

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

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

DiffusionGemmaEncoderModel

класс transformers.DiffusionGemmaEncoderModel

< >

( config: DiffusionGemmaConfig )

Параметры

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

Модель-энкодер DiffusionGemma, состоящая из визуального бэкенда и языковой модели, без головы для моделирования языка. Она очень похожа на Gemma4Model, за исключением того, что не поддерживает входные данные в формате аудио или видео и всегда использует путь MoE во внутренних слоях.

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Union[torch.Tensor, dict, NoneType] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonemm_token_type_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneimage_position_ids: typing.Optional[torch.LongTensor] = Nonemm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)

Параметры

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

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

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

  • pixel_values (torch.Tensor формы (batch_size, num_channels, image_size, image_size), необязательный) — Тензоры, соответствующие входным изображениям. Значения пикселей можно получить с помощью image_processor_class. Подробности см. в image_processor_class.__call__ (Gemma4Processor использует image_processor_class для обработки изображений).
  • attention_mask (Union[torch.Tensor, dict] формы (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).

  • mm_token_type_ids (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Индексы токенов входной последовательности, соответствующие каждой модальности. Например, текст (0), изображение (1), видео (2). Мультимодальные идентификаторы типов токенов можно получить с помощью AutoProcessor. Подробности см. в ProcessorMixin.call().
  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • image_position_ids (torch.LongTensor формы (batch_size, max_patches, 2), необязательный) — двумерные координаты позиций патчей от обработчика изображений, где (-1, -1) обозначает заполнение. Передаётся в визуальный энкодер для вычисления позиционных эмбеддингов.
  • mm_encoder_outputs (dict[str, ~modeling_outputs.BaseModelOutputWithPooling], необязательный) — Словарь, где ключами являются поддерживаемые модальности, а значениями — закодированные результаты для соответствующей модальности. Каждый закодированный результат представляет собой кортеж вида (pooler_output, необязательный: last_hidden_states, необязательный: hidden_states, необязательный: attentions) pooler_output формы (batch_size, sequence_length, hidden_size), необязательный) — последовательность мультимодальных признаков энкодера, объединённых с текстовыми эмбеддингами.

Возвращает

BaseModelOutputWithPast или tuple(torch.Tensor)

Объект BaseModelOutputWithPast или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (DiffusionGemmaConfig) и входных данных.

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

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

  • last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.

    Если используется past_key_values, выводится только последнее скрытое состояние последовательностей формы (batch_size, 1, 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.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

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

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

DiffusionGemmaEncoderTextModel

класс transformers.DiffusionGemmaEncoderTextModel

< >

( config: DiffusionGemmaTextConfig )

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Union[torch.Tensor, dict, NoneType] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)

Параметры

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

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

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

  • attention_mask (Union[torch.Tensor, dict] формы (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.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.

Возвращает

BaseModelOutputWithPast или tuple(torch.Tensor)

Объект BaseModelOutputWithPast или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (DiffusionGemmaConfig) и входных данных.

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

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

  • last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.

    Если используется past_key_values, выводится только последнее скрытое состояние последовательностей формы (batch_size, 1, 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.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

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

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

DiffusionGemmaDecoderModel

класс transformers.DiffusionGemmaDecoderModel

< >

( config: DiffusionGemmaConfig )

Модель декодера для DiffusionGemma.

Обрабатывает токены холста с использованием двунаправленного self-attention и cross-attention к KV-кэшу энкодера. Декодер читает KV-кэш, но не обновляет его. За исключением этих различий, модель похожа на DiffusionGemmaEncoderTextModel, и они разделяют все общие веса.

forward

< >

( decoder_input_ids: LongTensorpast_key_values: transformers.cache_utils.Cache | None = Noneself_conditioning_logits: typing.Optional[torch.Tensor] = Noneself_conditioning_mask: typing.Optional[torch.BoolTensor] = Nonedecoder_attention_mask: typing.Union[torch.Tensor, dict, NoneType] = Nonedecoder_position_ids: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.Tensor)

Параметры

  • decoder_input_ids (torch.LongTensor формы (batch_size, canvas_length)) — Идентификаторы токенов для холста, который будет уточнен.
  • 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).

  • self_conditioning_logits (torch.Tensor формы (batch_size, canvas_length, vocab_size), необязательный) — Логиты самоусловливания с предыдущего шага денойзинга, используемые для вычисления эмбеддингов самоусловливания.
  • self_conditioning_mask (torch.BoolTensor формы (batch_size,), необязательный) — Маска для каждого примера в self_conditioning_logits: для примеров, где значение установлено в False, сигнал самоусловливания обнуляется, как если бы для них не были переданы логиты. Полезно при обучении, когда самоусловливание включается для каждого примера с некоторой вероятностью.
  • decoder_attention_mask (torch.Tensor формы (batch_size, sequence_length+canvas_length) или dict, необязательный) — Маска внимания для KV-кэша декодера. Используется для указания заполненных/незаполненных записей в кэше KV энкодера.
  • decoder_position_ids (torch.LongTensor формы (batch_size, canvas_length), необязательный) — Идентификаторы позиций для токенов в канвасе.

Возвращает

BaseModelOutput или tuple(torch.Tensor)

Объект BaseModelOutput или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (DiffusionGemmaConfig) и входных данных.

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

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

  • last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

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

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

DiffusionGemmaForBlockDiffusion

класс transformers.DiffusionGemmaForBlockDiffusion

< >

( config: DiffusionGemmaConfig )

Модель DiffusionGemma для блочной диффузии. Она вызывает DiffusionGemmaModel, чтобы получить скрытые состояния для входного холста, обусловленные KV-кэшем промпта. С помощью своего LM Head и блоков самоусловливания она преобразует эти скрытые состояния в логиты для выборки следующего холста, а также в эмбеддинги самоусловливания для следующего шага блочной диффузии.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Union[torch.Tensor, dict, NoneType] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Noneself_conditioning_logits: typing.Optional[torch.Tensor] = Noneself_conditioning_mask: typing.Optional[torch.BoolTensor] = Nonedecoder_attention_mask: typing.Union[torch.Tensor, dict, NoneType] = Nonedecoder_position_ids: typing.Optional[torch.LongTensor] = Nonemm_encoder_outputs: dict[str, transformers.modeling_outputs.BaseModelOutputWithPooling] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DiffusionGemmaBlockDiffusionOutputWithPast or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Некэшированные идентификаторы токенов для промпта, который будет закодирован в качестве контекста для холста.
  • attention_mask (torch.LongTensor формы (batch_size, sequence_length) или dict, необязательный) — Маска для входных токенов.
  • 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).

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

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

  • decoder_input_ids (torch.LongTensor формы (batch_size, canvas_length), необязательный) — Идентификаторы токенов для холста, который будет уточнен.
  • self_conditioning_logits (torch.Tensor формы (batch_size, canvas_length, vocab_size), необязательный) — Логиты самоусловливания с предыдущего шага денойзинга, используемые для вычисления эмбеддингов самоусловливания.
  • self_conditioning_mask (torch.BoolTensor формы (batch_size,), необязательный) — Маска для каждого примера в self_conditioning_logits: для примеров, где значение установлено в False, сигнал самоусловливания обнуляется, как если бы для них не были переданы логиты. Полезно при обучении, когда самоусловливание включается для каждого примера с некоторой вероятностью.
  • decoder_attention_mask (torch.Tensor формы (batch_size, sequence_length+canvas_length) или dict, необязательный) — Маска внимания для KV-кэша декодера. Используется для указания заполненных/незаполненных записей в кэше KV энкодера.
  • decoder_position_ids (torch.LongTensor формы (batch_size, canvas_length), необязательный) — Идентификаторы позиций для токенов в канвасе.
  • mm_encoder_outputs (dict[str, ~modeling_outputs.BaseModelOutputWithPooling], необязательный) — Словарь, где ключами являются поддерживаемые модальности, а значениями — закодированные результаты для соответствующей модальности. Каждый закодированный результат представляет собой кортеж вида (pooler_output, необязательный: last_hidden_states, необязательный: hidden_states, необязательный: attentions) pooler_output формы (batch_size, sequence_length, hidden_size), необязательный) — последовательность мультимодальных признаков энкодера, объединённых с текстовыми эмбеддингами.

Возвращает

DiffusionGemmaBlockDiffusionOutputWithPast или tuple(torch.Tensor)

DiffusionGemmaBlockDiffusionOutputWithPast или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (DiffusionGemmaConfig) и входных данных.

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

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

  • loss (torch.Tensor формы (1,), необязательный) — Потери языковой модели.

  • logits (torch.Tensor формы (batch_size, canvas_length, config.text_config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).

  • past_key_values (Cache, необязательный, возвращается при передаче use_cache=True или когда config.use_cache=True) — это экземпляр Cache. Подробнее см. в нашем руководстве по кэшу kv.

    Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания), которые можно использовать (см. вход past_key_values) для ускорения последовательного декодирования.

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

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

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

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

Пример:

>>> from PIL import Image
>>> from transformers import AutoProcessor, DiffusionGemmaForBlockDiffusion

>>> model = DiffusionGemmaForBlockDiffusion.from_pretrained("google/diffusiongemma-26B-A4B-it")
>>> processor = AutoProcessor.from_pretrained("google/diffusiongemma-26B-A4B-it")

>>> messages = [
...     {
...         "role": "user", "content": [
...             {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
...             {"type": "text", "text": "Where is the cat standing?"},
...         ]
...     },
... ]

>>> inputs = processor.apply_chat_template(
...     messages,
...     tokenize=True,
...     return_dict=True,
...     return_tensors="pt",
...     add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True)[0]
Update on GitHub