Transformers documentation
DiffusionGemma
Эта модель была добавлена в 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
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 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
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = 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.configDiffusionGemmaGenerationOutput
класс transformers.DiffusionGemmaGenerationOutput
< source >( 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
Класс-миксин для генерации в DiffusionGemma. Содержит все методы на уровне модели.
generate
< source >( 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
< source >( **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, для более быстрого декодирования. Допустимые значения:"dynamic": DynamicCache"static": StaticCache"offloaded":DynamicCache(offloaded=True)"offloaded_static":StaticCache(offloaded=True)"quantized": QuantizedCache
Если значение не указано, будет использован кэш по умолчанию для модели (часто это 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
< source >( entropy_bound: float )
Параметры
- entropy_bound (
float) — Граница энтропии. Чем выше это значение, тем больше токенов будет принято. Подробности о том, как она применяется, см. в docstring метода EntropyBoundSampler.accept_canvas().
Класс конфигурации для сэмплера с ограничением по энтропии.
EntropyBoundSampler
класс transformers.EntropyBoundSampler
< source >( config: EntropyBoundSamplerConfigcanvas_length: intvocab_size: intmax_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
< source >( current_canvas: LongTensordenoiser_canvas: LongTensorlogits: Tensorcur_step: int ) → torch.LongTensor
Принимает токены от денойзера на основе порога энтропии. Более конкретно, выборка выполняется путём принятия k токенов с наименьшей энтропией, при условии
sum_i^k entropy_i - max(entropy_1, …, entropy_k) <= entropy_bound,
где левая часть представляет собой верхнюю границу совместной взаимной информации между этими токенами, и, следовательно, сэмплер выбирает k токенов, которые приблизительно независимы.
Первоначально предложен в https://arxiv.org/pdf/2505.24857
Инициализирует и возвращает новый холст из canvas_length токенов со случайными значениями из словаря.
renoise_canvas
< source >( accepted_canvas: LongTensorcur_step: int ) → torch.LongTensor
Повторно генерирует все не принятые токены.
StableAndConfidentStoppingCriteria
class transformers.StableAndConfidentStoppingCriteria
< source >( stability_threshold: intconfidence_threshold: float )
Параметры
Адаптивная стратегия остановки, которая прекращает процесс, когда диффузионный процесс становится уверенным и стабильным. Более конкретно:
- Процесс диффузии считается стабильным, если принятый холст остаётся неизменным на протяжении
stability_thresholdшагов. - Процесс диффузии считается уверенным, если среднее значение энтропии обработанных логитов ниже
confidence_threshold.
LinearTemperatureScheduleLogitsProcessor
класс transformers.LinearTemperatureScheduleLogitsProcessor
< source >( t_min: floatt_max: floatmax_denoising_steps: int )
Обработчик логитов, применяющий линейное расписание температуры к логитам. Это похоже на TemperatureLogitsWarper, за исключением того, что температура является функцией текущего шага.
На шаге n из N температура t задается формулой t = t_min + ((t_max - t_min) * (n/N)).
DiffusionGemmaPreTrainedModel
класс transformers.DiffusionGemmaPreTrainedModel
< source >( config: PreTrainedConfig*inputs**kwargs )
Параметры
- config (PreTrainedConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
Мок-значение для пути с точками (например, torch.float32): цепочки доступа к атрибутам и вызовы работают как пропускные декораторы, repr возвращает путь с точками, а использование в качестве базового класса подставляет обычный базовый класс type (PEP 560 __mro_entries__), благодаря чему реальные дочерние классы сохраняют обычный метакласс, а inspect.signature читает их реальный __init__, а не мок-объект.
DiffusionGemmaModel
класс transformers.DiffusionGemmaModel
< source >( config: DiffusionGemmaConfig )
Параметры
- config (DiffusionGemmaConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель Diffusion Gemma без дополнительных компонентов, выводящая необработанные скрытые состояния (raw hidden-states) без какого-либо специализированного слоя (head) сверху.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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
< source >( config: DiffusionGemmaConfig )
Параметры
- config (DiffusionGemmaConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель-энкодер DiffusionGemma, состоящая из визуального бэкенда и языковой модели, без головы для моделирования языка. Она очень похожа на Gemma4Model, за исключением того, что не поддерживает входные данные в формате аудио или видео и всегда использует путь MoE во внутренних слоях.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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
forward
< source >( 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
Модель декодера для DiffusionGemma.
Обрабатывает токены холста с использованием двунаправленного self-attention и cross-attention к KV-кэшу энкодера.
Декодер читает KV-кэш, но не обновляет его. За исключением этих различий, модель похожа на DiffusionGemmaEncoderTextModel, и они разделяют все общие веса.
forward
< source >( 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
Модель DiffusionGemma для блочной диффузии. Она вызывает DiffusionGemmaModel, чтобы получить скрытые состояния для входного холста, обусловленные KV-кэшем промпта. С помощью своего LM Head и блоков самоусловливания она преобразует эти скрытые состояния в логиты для выборки следующего холста, а также в эмбеддинги самоусловливания для следующего шага блочной диффузии.
forward
< source >( 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]