Transformers documentation
DiffusionGemma
Este modelo fue aportado a Hugging Face Transformers el 2026-06-10.
DiffusionGemma
Resumen
DiffusionGemma está diseñado para reducir los cuellos de botella secuenciales de los modelos de lenguaje causales estándar. Emplea una arquitectura de codificador-decodificador optimizada específicamente para la velocidad de inferencia.
El codificador opera en una capacidad de prellenado, procesando el prompt inicial y generando la caché KV. A continuación, el decodificador utiliza la atención bidireccional para procesar un bloque de entrada (un ‘lienzo’) de tokens, accediendo al contexto en caché a través de la atención cruzada.
Durante la inferencia, DiffusionGemma aprovecha el muestreo multi-canvas. En lugar de generar un token a la vez, el modelo desruidifica iterativamente un bloque completo de tokens utilizando un muestreador de difusión. Una vez que un canvas está completamente desruidificado, se procesa con el codificador y se añade a la caché KV, tras lo cual el modelo genera el siguiente canvas. Este enfoque autoregresivo por bloques facilita la generación de texto a velocidades más altas.
Puedes encontrar la tarjeta del modelo y el punto de control aquí. Puedes encontrar una guía visual del modelo aquí.
Ejemplos de uso
Aunque se trata de un modelo de difusión de texto y tiene un bucle de generación personalizado, la mayor parte de la interfaz se comparte con otros modelos que pueden generar texto mediante DiffusionGemmaGenerationMixin.generate(). Si estás utilizando otro modelo de transformers en tu aplicación, deberías poder reemplazarlo directamente por este modelo.
DiffusionGemma está disponible tanto en Transformers como en Diffusers, pero Diffusers es su lugar principal. Diffusers cuenta con el conjunto completo de opciones de programación, utilidades de pipeline y nuevas funciones (programadores adicionales, criterios de parada, estrategias de muestreo) que solo se añaden allí. Consulta la DiffusionGemma para ver ejemplos de uso y abre un issue en Diffusers para experimentar con diferentes programadores o solicitar una función. La implementación en Transformers solo recibe correcciones de errores, pero no nuevas funciones.
Precauciones habituales
- DiffusionGemma no acepta
use_cache. Siempre utiliza una caché KV; - El soporte para banderas comunes como
top_kno estará disponible el día del lanzamiento, pero se irá añadiendo con el tiempo si son compatibles con la difusión de texto.
Ejemplo básico
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))Streaming
Al igual que otros modelos que pueden generar texto, puedes establecer una clase de streamer para transmitir el texto. A diferencia de otros modelos, DiffusionGemma genera borradores intermedios antes del texto final. Puedes visualizarlos con 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)Establecer una salida inicial de eliminación de ruido
El modelo se entrena para refinar iterativamente bloques de 256 tokens. En algunas aplicaciones, puede ser beneficioso proporcionar un punto de partida para el decodificador, en lugar de comenzar con tokens aleatorios. Puede usar decoder_input_ids, disponible en todas las interfaces de modelo, para establecer el lienzo inicial.
initial_estimate = ... # a tensor with shape (bsz, 256)
model.generate(**inputs, max_new_tokens=256, decoder_input_ids=initial_estimate)DiffusionGemmaTextConfig
clase 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 )
Parámetros
- vocab_size (
int, opcional, valor predeterminado262144) — Tamaño del vocabulario del modelo. Define el número de tokens diferentes que pueden representarse medianteinput_ids. - hidden_size (
int, opcional, valor predeterminado2304) — Dimensión de las representaciones ocultas. - intermediate_size (
int, opcional, valor predeterminado9216) — Dimensión de las representaciones del MLP. - num_hidden_layers (
int, opcional, valor predeterminado30) — Número de capas ocultas en el decodificador del Transformer. - num_attention_heads (
int, opcional, valor predeterminado8) — Número de cabezas de atención para cada capa de atención en el decodificador Transformer. - num_key_value_heads (
int, opcional, valor predeterminado4) — Este es el número de cabezas key_value que se deben utilizar para implementar Grouped Query Attention. Sinum_key_value_heads=num_attention_heads, el modelo utilizará Multi Head Attention (MHA); sinum_key_value_heads=1, el modelo utilizará Multi Query Attention (MQA); en caso contrario, se utilizará GQA. Al convertir un checkpoint multi-head en un checkpoint GQA, cada cabeza de clave y valor del grupo debe construirse mediante el promediado (meanpooling) de todas las cabezas originales dentro de ese grupo. Para más detalles, consulta este artículo. Si no se especifica, el valor predeterminado seránum_attention_heads. - head_dim (
int, opcional, valor predeterminado256) — La dimensión de la cabeza de atención. Si es None, se establecerá en hidden_size // num_attention_heads - hidden_activation (
str, opcional, valor predeterminadogelu_pytorch_tanh) — La función de activación no lineal (función o cadena) en el decodificador. Por ejemplo,"gelu","relu","silu", etc. - max_position_embeddings (
int, opcional, valor predeterminado131072) — La longitud máxima de secuencia con la que podría utilizarse este modelo. - initializer_range (
float, opcional, valor predeterminado0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos. - rms_norm_eps (
float, opcional, valor predeterminado1e-06) — El epsilon utilizado por las capas de normalización rms. - pad_token_id (
int, opcional, valor predeterminado0) — Id del token utilizado para el relleno en el vocabulario. - eos_token_id (
Union[int, list[int]], opcional, valor predeterminado1) — Identificador de token utilizado para el fin de secuencia en el vocabulario. - bos_token_id (
int, opcional, valor predeterminado2) — Id del token utilizado para el inicio de la secuencia en el vocabulario. - tie_word_embeddings (
bool, opcional, valor predeterminadoTrue) — Si se deben vincular las matrices de pesos de embeddings según el mapeotied_weights_keysdel modelo. - rope_parameters (
dict, opcional) — Diccionario que contiene los parámetros de configuración para las incrustaciones RoPE. El diccionario debe contener un valor pararope_thetay, opcionalmente, los parámetros utilizados para el escalado en caso de que desee usar RoPE conmax_position_embeddingsmás largos. - attention_bias (
bool, opcional, valor predeterminadoFalse) — Si se debe usar un sesgo en las capas de proyección de consulta, clave, valor y salida durante la autoatención. - attention_dropout (
Union[int, float], opcional, valor predeterminado0.0) — La proporción de dropout para las probabilidades de atención. - sliding_window (
int, opcional, valor predeterminado512) — Tamaño de la ventana de atención deslizante. Si esNone, no se aplica ninguna ventana deslizante. - layer_types (
list[str], opcional) — Una lista que asigna explícitamente cada índice de capa con su tipo de capa. Si no se proporciona, se generará automáticamente en función de los valores de la configuración. - use_bidirectional_attention (
str, opcional) — Controla el comportamiento de la atención bidireccional. Cuando se establece en"vision", los tokens de visión atienden bidireccionalmente, mientras que los tokens de texto usan atención causal. Cuando se establece en"all", todos los tokens usan atención bidireccional. - num_experts (
int, opcional) — Número de expertos enrutados en las capas MoE. - top_k_experts (
int, opcional) — Número de expertos activados por token en las capas MoE. - moe_intermediate_size (
int, opcional) — Tamaño intermedio (oculto) de la red feed-forward de cada experto en las capas MoE.
Esta es la clase de configuración para almacenar la configuración de un DiffusionGemmaModel. Se utiliza para instanciar un modelo Diffusion Gemma según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de google/diffusiongemma-26B-A4B-it
Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.
DiffusionGemmaConfig
clase 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 )
Parámetros
- text_config (
Union[~models.diffusion_gemma.configuration_diffusion_gemma.DiffusionGemmaTextConfig, dict[str, Any]], opcional) — El objeto de configuración o el diccionario del backbone de texto. - vision_config (
Union[~configuration_utils.PreTrainedConfig, dict[str, Any]], opcional) — El objeto de configuración o el diccionario del backbone de visión. - boi_token_id (
int, opcional, valor predeterminado 255999) — Índice del token de inicio de imagen para envolver el prompt de imagen. - eoi_token_id (
int, opcional, valor predeterminado 258882) — El índice del token de fin de imagen para envolver el prompt de imagen. - image_token_id (
int, opcional, valor predeterminado258880) — El índice del token de imagen utilizado como marcador de posición para las imágenes de entrada. - initializer_range (
float, opcional, valor predeterminado0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos. - tie_word_embeddings (
bool, opcional, valor predeterminadoTrue) — Si se deben vincular las matrices de pesos de embeddings según el mapeotied_weights_keysdel modelo. - canvas_length (
int, opcional, valor predeterminado 256) — El tamaño del lienzo o, en otras palabras, la longitud del bloque en la difusión por bloques. Se utiliza para inicializar un lienzo vacío.
Esta es la clase de configuración para almacenar la configuración de un DiffusionGemmaModel. Se utiliza para instanciar un modelo Diffusion Gemma según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de google/diffusiongemma-26B-A4B-it
Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.
Ejemplo:
>>> 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
clase 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 )
Parámetros
- sequences (
torch.LongTensorde forma(batch_size, sequence_length)) — Las secuencias generadas, incluyendo el prompt si se proporcionóinput_idsal métodogenerate. - tokens_per_forward (
torch.LongTensorde forma (batch_size)) — El número de tokens por forward en esta llamada agenerate, para cada miembro del batch. Esto se utiliza a menudo como métrica de evaluación secundaria para modelos de difusión de texto. - past_key_values (
Cache) — La caché utilizada para la generación. Puede pasarse a llamadas posteriores ageneratepara acelerar la generación en sesiones de varios turnos. - logits (
None) — No se utiliza. Se mantiene en la interfaz por compatibilidad hacia atrás. - scores (
None) — No se utiliza. Se mantiene en la interfaz por compatibilidad hacia atrás. - hidden_states (
None) — No se utiliza. Se mantiene en la interfaz por compatibilidad hacia atrás.
Clase de salida para la generación de DiffusionGemma.
DiffusionGemmaGenerationMixin
Clase mixin para la generación de DiffusionGemma. Contiene todos los métodos a nivel de modelo.
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
Parámetros
- input_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — La secuencia utilizada como indicación para la generación.
- past_key_values (Cache, opcional) —
Objeto de caché que contiene los valores clave pasados y las máscaras de atención pasadas para el decodificador. Si se establece,
input_idsy/opixel_valuesdeben corresponder únicamente a datos no almacenados en caché. - streamer (
BaseStreamer, opcional) — Objeto que se utilizará para transmitir las secuencias generadas. Los tokens generados se pasan a través destreamer.put(token_ids)y el streamer es responsable de cualquier procesamiento adicional. Si el objeto streamer tiene un métodoput_draft, los tokens de los pasos de denoising se enviarán allí.
Argumentos adicionales para usuarios avanzados
- generation_config (DiffusionGemmaGenerationConfig, opcional) —
La configuración de generación que se utilizará como parametrización base para la llamada de generación, reemplazando los valores predeterminados del modelo. Si el punto de control del modelo tiene un archivo
generation_config.json, los valores predeterminados del modelo se cargarán desde allí. De lo contrario, será una instancia vacía deDiffusionGemmaGenerationConfig. Como atajo adicional, los**kwargsque coincidan con atributos engeneration_configlos reemplazarán. - logits_processor (LogitsProcessorList, opcional) — Procesadores de logits personalizados que complementan los procesadores de logits predeterminados construidos a partir de los argumentos y la configuración de generación, para aplicarse a los logits de difusión. Si se proporcionan, estos procesadores serán los primeros en aplicarse. Esta función está destinada a usuarios avanzados. Por ejemplo, puede pasar aquí los procesadores de logits comúnmente utilizados con LLMs AR.
- stopping_criteria (StoppingCriteriaList, opcional) — Criterios de parada personalizados que complementan los criterios de parada autoregresivos de bloque predeterminados, construidos a partir de los argumentos y una configuración de generación. Si se proporcionan, estos criterios se aplicarán primero. Esta función está destinada a usuarios avanzados. Por ejemplo, puede pasar aquí los criterios de parada comúnmente utilizados con LLMs autoregresivos.
- kwargs (
dict[str, Any], opcional) — Parametrización ad hoc degeneration_configy/o kwargs adicionales específicos del modelo que se reenviarán a la funciónforwarddel modelo. Por ejemplo, puedes establecer el lienzo inicial condecoder_input_ids.
Devuelve
torch.LongTensor o DiffusionGemmaGenerationOutput
torch.LongTensor: el texto generado en ids.- DiffusionGemmaGenerationOutput: una instancia de
ModelOutputque contiene el texto generado (sequences), así como otras salidas opcionales.
Genera texto usando el modelo de difusión.
Contiene un bucle externo que realiza la generación autoregresiva de lienzos (bloques de tokens) y un bucle
bucle que realiza difusión en cada lienzo. El algoritmo funciona aproximadamente de la siguiente manera:
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 blockEjemplos:
>>> 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
clase transformers.DiffusionGemmaGenerationConfig
< source >( **kwargs )
Parámetros que controlan la longitud de la salida
- max_new_tokens (
int, opcional) — El número máximo de tokens a generar, ignorando el número de tokens del prompt. - max_length (
int, opcional) — La longitud máxima de la secuencia de salida. Se recomiendamax_new_tokenspara controlar cuántos tokens genera el modelo.
Parámetros de difusión
- max_denoising_steps (
int) — El número máximo de pasos de desruido a realizar. - sampler_config (
EntropyBoundSamplerConfig) — La configuración del sampler. Consulte EntropyBoundSampler para aprender cómo funciona un sampler en un modelo de difusión de texto. - t_min (
float) — La temperatura final en el programa, es decir, en el último paso de desruido. Consulte LinearTemperatureScheduleLogitsProcessor para más detalles. - t_max (
float) — La temperatura inicial en la programación, es decir, en el primer paso de desruido. Consulte LinearTemperatureScheduleLogitsProcessor para más detalles. - stability_threshold (
int) — El número de pasos durante los cuales el lienzo aceptado debe ser el mismo para activar los criterios de parada. Consulte StableAndConfidentStoppingCriteria para más detalles. - confidence_threshold (
float) — Umbral para la media de la entropía de los logits escalados por temperatura que activa los criterios de parada. Consulte StableAndConfidentStoppingCriteria para más detalles.
Parámetros que controlan la caché
- cache_implementation (
str, opcional) — Nombre de la clase de caché que se instanciará engenerate, para un decodificado más rápido. Los valores posibles son:"dynamic": DynamicCache"static": StaticCache"offloaded":DynamicCache(offloaded=True)"offloaded_static":StaticCache(offloaded=True)"quantized": QuantizedCache
Si no se especifica ninguna, se utilizará la caché predeterminada del modelo (que a menudo es DynamicCache). Consulte nuestra documentación de caché para obtener más información.
- cache_config (
dict, opcional, valor predeterminadoNone) — Los argumentos utilizados en la clase de caché de clave-valor pueden pasarse encache_config.
Tokens especiales que se pueden usar en el momento de la generación
Una clase GenerationConfig con parametrización personalizada para DiffusionGemmaGenerationMixin.generate().
EntropyBoundSamplerConfig
clase transformers.EntropyBoundSamplerConfig
< source >( entropy_bound: float )
Parámetros
- entropy_bound (
float) — El límite de entropía. Cuanto mayor sea este valor, más tokens se aceptarán. Consulte la docstring de EntropyBoundSampler.accept_canvas() para obtener más detalles sobre cómo se aplica.
Clase de configuración para el muestreador de límite de entropía.
EntropyBoundSampler
clase transformers.EntropyBoundSampler
< source >( config: EntropyBoundSamplerConfigcanvas_length: intvocab_size: intmax_denoising_steps: int )
Clase de muestreador que inicializa un lienzo con tokens aleatorios, acepta tokens según la entropia a nivel de token y re-rumbea los tokens no aceptados.
Aquí hay un esquema general de cómo funciona el bucle del muestreador:
+-----------------------+
| 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: FloatTensorcur_step: int ) → torch.LongTensor
Acepta tokens del denoiser basándose en un límite de entropía. Más concretamente, el muestreo se realiza aceptando k tokens con la menor entropía, de modo que
sum_i^k entropy_i - max(entropy_1, …, entropy_k) <= entropy_bound,
donde el lado izquierdo es el límite superior de la información mutua conjunta entre estos tokens, y por lo tanto el muestreador elige k tokens que son aproximadamente independientes.
Propuesto originalmente en https://arxiv.org/pdf/2505.24857
Inicializa y devuelve un nuevo lienzo de canvas_length tokens con valores aleatorios del vocabulario.
renoise_canvas
< source >( accepted_canvas: LongTensorcur_step: int ) → torch.LongTensor
Renoisea todos los tokens no aceptados.
StableAndConfidentStoppingCriteria
clase transformers.StableAndConfidentStoppingCriteria
< source >( stability_threshold: intconfidence_threshold: float )
Estrategia de parada adaptativa que detiene el proceso cuando la difusión es confiable y estable. Para ser más específicos:
- El proceso de difusión es estable cuando el lienzo aceptado es el mismo durante
stability_thresholdpasos. - El proceso de difusión es confiable cuando la media de la entropía de los logits procesados está por debajo de
confidence_threshold.
LinearTemperatureScheduleLogitsProcessor
clase transformers.LinearTemperatureScheduleLogitsProcessor
< source >( t_min: floatt_max: floatmax_denoising_steps: int )
Procesador de logits que aplica un programa lineal de temperatura a los logits. Es similar a TemperatureLogitsWarper, con la excepción de que la temperatura es una función del paso actual.
En el paso n de N, la temperatura t se calcula como t = t_min + ((t_max - t_min) * (n/N)).
DiffusionGemmaPreTrainedModel
clase transformers.DiffusionGemmaPreTrainedModel
< source >( config: PreTrainedConfig*inputs**kwargs )
Parámetros
- config (PreTrainedConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
Un valor simulado para una ruta con puntos (p. ej. torch.float32): las cadenas de acceso a atributos y las llamadas se comportan como decoradores de paso, repr es la ruta con puntos, y su uso como clase base sustituye una base de type simple (PEP 560 __mro_entries__), de modo que las subclases reales conservan un metaclass normal y inspect.signature lee su __init__ real en lugar del de un simulado.
DiffusionGemmaModel
clase transformers.DiffusionGemmaModel
< source >( config: DiffusionGemmaConfig )
Parámetros
- config (DiffusionGemmaConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
El modelo Diffusion Gemma básico que genera estados ocultos sin ningún cabezal específico en la parte superior.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
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.FloatTensor] = 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.FloatTensor)
Parámetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — IDs de tokens no cacheados para el prompt que se codificará como contexto para el lienzo. - attention_mask (
torch.Tensorde forma(batch_size, sequence_length)odict, opcional) — Máscara para los tokens de entrada. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.use_cache=True.Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan
past_key_values, DynamicCache se inicializará de forma predeterminada.El modelo generará el mismo formato de caché que se proporciona como entrada.
Si se utilizan
past_key_values, se espera que el usuario introduzca únicamente losinput_idsno procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma(batch_size, unprocessed_length)en lugar de todos losinput_idscon forma(batch_size, sequence_length). - position_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango[0, config.n_positions - 1]. - decoder_input_ids (
torch.LongTensorde forma(batch_size, canvas_length), opcional) — IDs de tokens para el lienzo que se va a refinar. - self_conditioning_logits (
torch.FloatTensorde forma(batch_size, canvas_length, vocab_size), opcional) — Logits de autocondicionamiento del paso de desruido anterior, utilizados para calcular los embeddings de autocondicionamiento. - self_conditioning_mask (
torch.BoolTensorde forma(batch_size,), opcional) — Máscara por ejemplo sobreself_conditioning_logits: los ejemplos fijados enFalsereciben una señal de autocondicionamiento a cero, como si no se hubieran pasado logits para ellos. Útil para el entrenamiento, donde el autocondicionamiento se habilita por ejemplo con cierta probabilidad. - decoder_attention_mask (
torch.Tensorde forma(batch_size, sequence_length+canvas_length)odict, opcional) — Máscara de atención para la caché KV del decodificador. Se utiliza para especificar las entradas de la caché KV del codificador rellenas o sin poblar. - decoder_position_ids (
torch.LongTensorde forma(batch_size, canvas_length), opcional) — Los IDs de posición para los tokens en el lienzo. - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], opcional) — Diccionario donde las claves son las modalidades admitidas y los valores son las salidas codificadas para esa modalidad. Cada salida codificada es una tupla que consiste en (pooler_output, opcional:last_hidden_states, opcional:hidden_states, opcional:attentions)pooler_outputde forma(batch_size, sequence_length, hidden_size), opcional) es una secuencia de características multimodales del codificador fusionadas en las incrustaciones de texto.
Devuelve
DiffusionGemmaModelOutputWithPast o tuple(torch.FloatTensor)
Un DiffusionGemmaModelOutputWithPast o una tupla de
torch.FloatTensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (DiffusionGemmaConfig) y las entradas.
El método forward de DiffusionGemmaModel reemplaza el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
last_hidden_state (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del modelo.Si se utiliza
past_key_values, solo se genera el último hidden-state de las secuencias con forma(batch_size, 1, hidden_size).past_key_values (
Cache, opcional, se devuelve cuando se pasause_cache=Trueo cuandoconfig.use_cache=True) — Es una instancia de Cache. Para más detalles, consulta nuestra guía de caché kv.Contiene estados ocultos precalculados (claves y valores en los bloques de autoatención y, opcionalmente, si
config.is_encoder_decoder=True, en los bloques de atención cruzada) que pueden utilizarse (véase la entradapast_key_values) para acelerar la decodificación secuencial.hidden_states (
tuple(torch.FloatTensor), opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple(torch.FloatTensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
encoder_last_hidden_state (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size), opcional) — Secuencia de estados ocultos en la salida de la última capa del codificador. Solo se establece cuando se proporcionainput_ids, por ejemplo, para calcular una pérdida autorregresiva en el codificador durante el entrenamiento.
DiffusionGemmaEncoderModel
clase transformers.DiffusionGemmaEncoderModel
< source >( config: DiffusionGemmaConfig )
Parámetros
- config (DiffusionGemmaConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.
El modelo de codificador DiffusionGemma, que comprende un backbone de visión y un modelo de lenguaje, sin una cabeza de modelado de lenguaje. Es muy similar a Gemma4Model, excepto que no admite entradas de audio o vídeo y siempre asume la ruta de código MoE en las capas internas.
Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).
Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Nonepixel_values: typing.Optional[torch.FloatTensor] = 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.FloatTensor] = 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.FloatTensor)
Parámetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- pixel_values (
torch.FloatTensorde forma(batch_size, num_channels, image_size, image_size), opcional) — Los tensores correspondientes a las imágenes de entrada. Los valores de píxeles se pueden obtener utilizandoimage_processor_class. Consulteimage_processor_class.__call__para más detalles (Gemma4Processor utilizaimage_processor_classpara procesar las imágenes). - attention_mask (
Union[torch.Tensor, dict]de forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- position_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.use_cache=True.Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan
past_key_values, DynamicCache se inicializará de forma predeterminada.El modelo generará el mismo formato de caché que se proporciona como entrada.
Si se utilizan
past_key_values, se espera que el usuario introduzca únicamente losinput_idsno procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma(batch_size, unprocessed_length)en lugar de todos losinput_idscon forma(batch_size, sequence_length). - mm_token_type_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada que corresponden a cada modalidad. Por ejemplo, texto (0), imagen (1), vídeo (2). Los ids de tipo de token multimodal se pueden obtener usando AutoProcessor. Consulte ProcessorMixin.call() para más detalles. - inputs_embeds (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - image_position_ids (
torch.LongTensorde forma(batch_size, max_patches, 2), opcional) — Coordenadas de posición 2D de los parches procedentes del procesador de imágenes, donde(-1, -1)indica relleno. Se transmite al codificador visual para el cálculo de los embeddings posicionales. - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], opcional) — Diccionario donde las claves son las modalidades admitidas y los valores son las salidas codificadas para esa modalidad. Cada salida codificada es una tupla que consiste en (pooler_output, opcional:last_hidden_states, opcional:hidden_states, opcional:attentions)pooler_outputde forma(batch_size, sequence_length, hidden_size), opcional) es una secuencia de características multimodales del codificador fusionadas en las incrustaciones de texto.
Devuelve
BaseModelOutputWithPast o tuple(torch.FloatTensor)
Un BaseModelOutputWithPast o una tupla de
torch.FloatTensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (DiffusionGemmaConfig) y las entradas.
El método forward de DiffusionGemmaEncoderModel sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
last_hidden_state (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del modelo.Si se utiliza
past_key_values, solo se genera el último hidden-state de las secuencias con forma(batch_size, 1, hidden_size).past_key_values (
Cache, opcional, se devuelve cuando se pasause_cache=Trueo cuandoconfig.use_cache=True) — Es una instancia de Cache. Para más detalles, consulta nuestra guía de caché kv.Contiene estados ocultos precalculados (claves y valores en los bloques de autoatención y, opcionalmente, si
config.is_encoder_decoder=True, en los bloques de atención cruzada) que pueden utilizarse (véase la entradapast_key_values) para acelerar la decodificación secuencial.hidden_states (
tuple(torch.FloatTensor), opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple(torch.FloatTensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
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.FloatTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.FloatTensor)
Parámetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.
- attention_mask (
Union[torch.Tensor, dict]de forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- position_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.use_cache=True.Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan
past_key_values, DynamicCache se inicializará de forma predeterminada.El modelo generará el mismo formato de caché que se proporciona como entrada.
Si se utilizan
past_key_values, se espera que el usuario introduzca únicamente losinput_idsno procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma(batch_size, unprocessed_length)en lugar de todos losinput_idscon forma(batch_size, sequence_length). - inputs_embeds (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.
Devuelve
BaseModelOutputWithPast o tuple(torch.FloatTensor)
Un BaseModelOutputWithPast o una tupla de
torch.FloatTensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (DiffusionGemmaConfig) y las entradas.
El método forward de DiffusionGemmaEncoderTextModel sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
last_hidden_state (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del modelo.Si se utiliza
past_key_values, solo se genera el último hidden-state de las secuencias con forma(batch_size, 1, hidden_size).past_key_values (
Cache, opcional, se devuelve cuando se pasause_cache=Trueo cuandoconfig.use_cache=True) — Es una instancia de Cache. Para más detalles, consulta nuestra guía de caché kv.Contiene estados ocultos precalculados (claves y valores en los bloques de autoatención y, opcionalmente, si
config.is_encoder_decoder=True, en los bloques de atención cruzada) que pueden utilizarse (véase la entradapast_key_values) para acelerar la decodificación secuencial.hidden_states (
tuple(torch.FloatTensor), opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple(torch.FloatTensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
DiffusionGemmaDecoderModel
Modelo decodificador para DiffusionGemma.
Procesa los tokens del lienzo con autoatención bidireccional y atención cruzada con la caché KV del codificador.
El decodificador lee la caché KV pero no la actualiza. Excluyendo estas diferencias, es similar a DiffusionGemmaEncoderTextModel, y comparten todos los pesos que tienen en común.
forward
< source >( decoder_input_ids: LongTensorpast_key_values: transformers.cache_utils.Cache | None = Noneself_conditioning_logits: typing.Optional[torch.FloatTensor] = 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.FloatTensor)
Parámetros
- decoder_input_ids (
torch.LongTensorde forma(batch_size, canvas_length)) — IDs de tokens para el lienzo que se va a refinar. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.use_cache=True.Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan
past_key_values, DynamicCache se inicializará de forma predeterminada.El modelo generará el mismo formato de caché que se proporciona como entrada.
Si se utilizan
past_key_values, se espera que el usuario introduzca únicamente losinput_idsno procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma(batch_size, unprocessed_length)en lugar de todos losinput_idscon forma(batch_size, sequence_length). - self_conditioning_logits (
torch.FloatTensorde forma(batch_size, canvas_length, vocab_size), opcional) — Logits de autocondicionamiento del paso de desruido anterior, utilizados para calcular los embeddings de autocondicionamiento. - self_conditioning_mask (
torch.BoolTensorde forma(batch_size,), opcional) — Máscara por ejemplo sobreself_conditioning_logits: los ejemplos fijados enFalsereciben una señal de autocondicionamiento a cero, como si no se hubieran pasado logits para ellos. Útil para el entrenamiento, donde el autocondicionamiento se habilita por ejemplo con cierta probabilidad. - decoder_attention_mask (
torch.Tensorde forma(batch_size, sequence_length+canvas_length)odict, opcional) — Máscara de atención para la caché KV del decodificador. Se utiliza para especificar las entradas de la caché KV del codificador rellenas o sin poblar. - decoder_position_ids (
torch.LongTensorde forma(batch_size, canvas_length), opcional) — Los IDs de posición para los tokens en el lienzo.
Devuelve
BaseModelOutput o tuple(torch.FloatTensor)
Un BaseModelOutput o una tupla de
torch.FloatTensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (DiffusionGemmaConfig) y las entradas.
El método forward de DiffusionGemmaDecoderModel reemplaza el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
last_hidden_state (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del modelo.hidden_states (
tuple(torch.FloatTensor), opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple(torch.FloatTensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
DiffusionGemmaForBlockDiffusion
Modelo DiffusionGemma para difusión por bloques. Llama a DiffusionGemmaModel para obtener los estados ocultos del lienzo de entrada, condicionados por una caché KV del prompt. Utilizando su LM Head y sus bloques de autocondicionamiento, convierte esos estados ocultos en logits para muestrear el siguiente lienzo, así como los embeddings de autocondicionamiento para el siguiente paso de difusión por bloques.
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.FloatTensor] = 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.FloatTensor)
Parámetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — IDs de tokens no cacheados para el prompt que se codificará como contexto para el lienzo. - attention_mask (
torch.LongTensorde forma(batch_size, sequence_length)odict, opcional) — Máscara para los tokens de entrada. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.use_cache=True.Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan
past_key_values, DynamicCache se inicializará de forma predeterminada.El modelo generará el mismo formato de caché que se proporciona como entrada.
Si se utilizan
past_key_values, se espera que el usuario introduzca únicamente losinput_idsno procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma(batch_size, unprocessed_length)en lugar de todos losinput_idscon forma(batch_size, sequence_length). - position_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango[0, config.n_positions - 1]. - decoder_input_ids (
torch.LongTensorde forma(batch_size, canvas_length), opcional) — IDs de tokens para el lienzo que se va a refinar. - self_conditioning_logits (
torch.FloatTensorde forma(batch_size, canvas_length, vocab_size), opcional) — Logits de autocondicionamiento del paso de desruido anterior, utilizados para calcular los embeddings de autocondicionamiento. - self_conditioning_mask (
torch.BoolTensorde forma(batch_size,), opcional) — Máscara por ejemplo sobreself_conditioning_logits: los ejemplos fijados enFalsereciben una señal de autocondicionamiento a cero, como si no se hubieran pasado logits para ellos. Útil para el entrenamiento, donde el autocondicionamiento se habilita por ejemplo con cierta probabilidad. - decoder_attention_mask (
torch.Tensorde forma(batch_size, sequence_length+canvas_length)odict, opcional) — Máscara de atención para la caché KV del decodificador. Se utiliza para especificar las entradas de la caché KV del codificador rellenas o sin poblar. - decoder_position_ids (
torch.LongTensorde forma(batch_size, canvas_length), opcional) — Los IDs de posición para los tokens en el lienzo. - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], opcional) — Diccionario donde las claves son las modalidades admitidas y los valores son las salidas codificadas para esa modalidad. Cada salida codificada es una tupla que consiste en (pooler_output, opcional:last_hidden_states, opcional:hidden_states, opcional:attentions)pooler_outputde forma(batch_size, sequence_length, hidden_size), opcional) es una secuencia de características multimodales del codificador fusionadas en las incrustaciones de texto.
Devuelve
DiffusionGemmaBlockDiffusionOutputWithPast o tuple(torch.FloatTensor)
Un DiffusionGemmaBlockDiffusionOutputWithPast o una tupla de
torch.FloatTensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios
elementos según la configuración (DiffusionGemmaConfig) y las entradas.
El método forward de DiffusionGemmaForBlockDiffusion sobrescribe el método especial __call__.
Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
loss (
torch.FloatTensorde forma(1,), opcional) — Pérdida de modelado de lenguaje.logits (
torch.FloatTensorde forma(batch_size, canvas_length, config.text_config.vocab_size)) — Puntuaciones de predicción de la cabeza de modelado de lenguaje (puntuaciones para cada token del vocabulario antes de SoftMax).past_key_values (
Cache, opcional, se devuelve cuando se pasause_cache=Trueo cuandoconfig.use_cache=True) — Es una instancia de Cache. Para más detalles, consulta nuestra guía de caché kv.Contiene estados ocultos precalculados (claves y valores en los bloques de autoatención) que pueden utilizarse (véase la entrada
past_key_values) para acelerar la decodificación secuencial.hidden_states (
tuple(torch.FloatTensor), opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple(torch.FloatTensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
encoder_last_hidden_state (
torch.FloatTensorde forma(batch_size, sequence_length, hidden_size), opcional) — Secuencia de estados ocultos en la salida de la última capa del codificador. Solo se establece cuando se proporcionainput_ids, por ejemplo, para calcular una pérdida autorregresiva en el codificador durante el entrenamiento.
Ejemplo:
>>> 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]