Transformers documentation
DiffusionGemma
このモデルは2026年6月10日に Hugging Face Transformers に貢献されました。
DiffusionGemma
概要
DiffusionGemmaは、標準的な因果言語モデルの逐次処理によるボトルネックを軽減するように設計されています。推論速度に特化して最適化されたエンコーダー・デコーダーアーキテクチャを採用しています。
エンコーダーはプリフィルの役割で動作し、初期プロンプトを処理してKVキャッシュを生成します。その後、デコーダーは双方向アテンションを利用してトークンの入力ブロック(「キャンバス」)を処理し、クロスアテンションを介してキャッシュされたコンテキストにアクセスします。
推論時、DiffusionGemmaはマルチキャンバスサンプリングを活用します。トークンを1つずつ生成するのではなく、モデルは拡散サンプラーを使用してトークンの完全なブロックを反復的にノイズ除去します。キャンバスが完全にノイズ除去されると、エンコーダーによって処理されKVキャッシュに追加され、その後モデルは次のキャンバスを生成します。このブロック自己回帰アプローチにより、より高速なテキスト生成が可能になります。
モデルカードとチェックポイントはこちらで確認できます。モデルのビジュアルガイドはこちらにあります。
使用例
テキスト拡散モデルであり独自の生成ループを持つものの、インターフェースの大部分は、DiffusionGemmaGenerationMixin.generate() でテキストを生成できる他のモデルと共通しています。アプリで他の transformers モデルを使用している場合、このモデルに直接置き換えることができるはずです。
DiffusionGemma は Transformers と Diffusers の両方で利用可能ですが、主な利用先は Diffusers です。Diffusers にはスケジューリングのオプション、パイプラインユーティリティ、および新機能(追加のスケジューラー、停止条件、サンプリング戦略)がすべて揃っており、これらの新機能は Diffusers にのみ追加されます。使用例については DiffusionGemma を参照してください。異なるスケジューラーでの実験や機能の要望がある場合は、Diffusers に issue を作成してください。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
class 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) — Grouped Query Attention の実装に使用する key_value ヘッドの数を指定します。num_key_value_heads=num_attention_headsの場合、モデルは Multi Head Attention (MHA) を使用し、num_key_value_heads=1の場合は Multi Query Attention (MQA) を使用し、それ以外の場合は GQA が使用されます。 マルチヘッドのチェックポイントを GQA のチェックポイントに変換する際は、各グループの key と value ヘッドは、そのグループ内の元のすべてのヘッドを平均プーリングして構築する必要があります。詳細については、この論文を参照してください。指定しない場合、デフォルトで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) — RMS 正規化レイヤーで使用する epsilon。 - pad_token_id (
int、任意、デフォルトは0) — 語彙内でパディングに使用されるトークン ID。 - eos_token_id (
Union[int, list[int]]、任意、デフォルトは1) — 語彙内でストリーム終了に使用されるトークン ID。 - bos_token_id (
int、任意、デフォルトは2) — 語彙におけるストリーム開始に使用されるトークン ID。 - tie_word_embeddings (
bool、任意、デフォルトはTrue) — モデルのtied_weights_keysマッピングに従って重み埋め込みを共有するかどうかを指定します。 - rope_parameters (
dict, 任意) — RoPE 埋め込みの設定パラメータを含む辞書です。辞書にはrope_thetaの値が含まれており、より長いmax_position_embeddingsで RoPE を使用する場合、スケーリングに使用されるパラメータが任意で含まれます。 - attention_bias (
bool、任意、デフォルトはFalse) — 自己注意機構において、クエリ、キー、バリュー、出力の投影層にバイアスを使用するかどうかを指定します。 - attention_dropout (
Union[int, float]、任意、デフォルトは0.0) — アテンション確率のドロップアウト率です。 - sliding_window (
int、任意、デフォルトは512) — スライディングウィンドウアテンションのウィンドウサイズ。Noneの場合、スライディングウィンドウは適用されません。 - layer_types (
list[str]、省略可) — 各レイヤーのインデックスとレイヤータイプを明示的に対応付けるリストです。指定しない場合、config の値に基づいて自動的に生成されます。 - 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]], 任意) — ビジョンバックボーンの config オブジェクトまたは辞書。 - boi_token_id (
int、省略可能、デフォルト値は 255999) — 画像プロンプトをラップするために使用する begin-of-image トークンのインデックスです。 - 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、shape(batch_size, sequence_length)) —generateメソッドにinput_idsが提供された場合、プロンプトを含む生成されたシーケンス。 - tokens_per_forward (
torch.LongTensor、shape: (batch_size)) — このgenerate呼び出しにおける、バッチ内の各メンバーのフォワードごとのトークン数です。これは、テキスト拡散モデルの二次的な評価指標としてよく使用されます。 - past_key_values (
Cache) — 生成に使用されるキャッシュです。マルチターンセッションにおいて、generateの後続の呼び出しに渡すことで、生成を高速化できます。 - logits (
None) — 未使用です。後方互換性のためにインターフェースに保持されています。 - scores (
None) — 未使用。後方互換性のためにインターフェースに保持されています。 - hidden_states (
None) — 未使用です。後方互換性のためにインターフェースに保持されています。
DiffusionGemmaの生成用の出力クラスです。
DiffusionGemmaGenerationMixin
DiffusionGemma の生成用の Mixin クラスです。モデルレベルのすべてのメソッドが含まれています。
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、任意) —
生成呼び出しのベースパラメータ化として使用される生成設定です。モデルのデフォルト値を上書きします。モデルのチェックポイントに
generation_config.jsonファイルがある場合、モデルのデフォルト値はそこから読み込まれます。それ以外の場合は、空のDiffusionGemmaGenerationConfigインスタンスになります。追加のショートカットとして、generation_config内の属性と一致する**kwargsは、それらの属性を上書きします。 - logits_processor (LogitsProcessorList、任意) — 引数と生成設定から構築されるデフォルトの logits プロセッサを補完する、カスタムの logits プロセッサです。diffusion logits に適用されます。指定された場合、これらのプロセッサが最初に適用されます。この機能は上級ユーザー向けです。例えば、AR LLM でよく使用される logits プロセッサをここで渡すことができます。
- stopping_criteria (StoppingCriteriaList、任意) — 引数と生成設定から構築される、デフォルトのブロック自己回帰停止基準を補完する、カスタムの停止基準です。指定された場合、これらの基準が最初に適用されます。この機能は上級ユーザー向けです。例えば、AR LLM でよく使用される停止基準をここで渡すことができます。
- kwargs (
dict[str, Any], 任意) —generation_configのアドホックなパラメータ設定、およびモデルのforward関数に転送されるモデル固有の追加 kwargs です。例えば、decoder_input_idsを設定して、開始キャンバスを指定できます。
戻り値
torch.LongTensor または DiffusionGemmaGenerationOutput
torch.LongTensor: id 形式の生成テキスト。- DiffusionGemmaGenerationOutput: 生成されたテキスト(
sequences)およびその他の任意の出力を含むModelOutputインスタンス。
拡散モデルを使用してテキストを生成します。
これは、キャンバス(トークンのブロック)の自己回帰的な生成を行う外側ループと、
各キャンバスで拡散処理を行うループです。アルゴリズムは概ね次のように動作します。
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
class transformers.DiffusionGemmaGenerationConfig
< source >( **kwargs )
出力の長さを制御するパラメータ
- max_new_tokens (
int, 省略可) — プロンプト内のトークン数を無視して、生成するトークンの最大数。 - max_length (
int, 任意) — 出力シーケンスの最大長です。モデルが生成するトークン数を制御するには、max_new_tokensの使用を推奨します。
Diffusion パラメータ
- max_denoising_steps (
int) — 実行するデノイジングステップの最大数。 - sampler_config (
EntropyBoundSamplerConfig) — サンプラーの設定です。テキスト拡散モデルにおけるサンプラーの動作については、EntropyBoundSamplerを参照してください。 - t_min (
float) — スケジュールの最終温度、つまり最後のデノイジングステップにおける温度です。詳細はLinearTemperatureScheduleLogitsProcessorを参照してください。 - t_max (
float) — スケジュールにおける初期温度、つまり最初のデノイジングステップ時の温度です。詳細はLinearTemperatureScheduleLogitsProcessorを参照してください。 - stability_threshold (
int) — 停止条件をトリガーするために、受け入れられたキャンバスが同一でなければならないステップ数です。詳細は StableAndConfidentStoppingCriteria を参照してください。 - confidence_threshold (
float) — 温度スケーリングされた logits のエントロピーの平均値が停止条件をトリガーするための閾値です。詳細は StableAndConfidentStoppingCriteria を参照してください。
キャッシュを制御するパラメータ
- cache_implementation (
str, 省略可) — generate でインスタンス化されるキャッシュクラスの名称。デコードを高速化するために使用されます。指定可能な値は以下の通りです:generate, 指定がない場合、モデルのデフォルトのキャッシュ(多くの場合 DynamicCache)が使用されます。詳細については、キャッシュのドキュメントを参照してください。"dynamic": DynamicCache"static": StaticCache"offloaded":DynamicCache(offloaded=True)"offloaded_static":StaticCache(offloaded=True)"quantized": QuantizedCache
指定がない場合、モデルのデフォルトキャッシュ(多くの場合、DynamicCache)が使用されます。詳細については、キャッシュのドキュメントを参照してください。
- cache_config (
dict、任意、デフォルトはNone) — キーバリューキャッシュクラスで使用する引数は、cache_configに渡すことができます。
生成時に使用できる特殊トークン
DiffusionGemmaGenerationMixin.generate()用にパラメータ設定をカスタマイズしたGenerationConfigクラス。
EntropyBoundSamplerConfig
class transformers.EntropyBoundSamplerConfig
< source >( entropy_bound: float )
パラメータ
- entropy_bound (
float) — エントロピーの境界値です。この値が大きいほど、より多くのトークンが受け入れられます。適用方法の詳細については、EntropyBoundSampler.accept_canvas() のドキュメント文字列を参照してください。
エントロピーバウンドサンプラー用の設定クラス。
EntropyBoundSampler
class transformers.EntropyBoundSampler
< source >( config: EntropyBoundSamplerConfigcanvas_length: intvocab_size: intmax_denoising_steps: int )
ランダムなトークンでキャンバスを初期化し、トークンレベルのエントロピーに基づいてトークンを受理し、受理されなかったトークンを再ノイズ化するSamplerクラスです。
サンプラーのループの動作を、ざっくりと図示します。
+-----------------------+
| 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
エントロピーの境界に基づいて、デノイザーからのトークンを受理します。より具体的には、サンプリングは、エントロピーが最も低い 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ステップにわたって受け入れられたキャンバスが同一である場合、拡散プロセスは安定しています。- 処理済み logits のエントロピーの平均が
confidence_threshold未満の場合、拡散プロセスは確信度が高いと判断されます。
LinearTemperatureScheduleLogitsProcessor
クラス transformers.LinearTemperatureScheduleLogitsProcessor
< source >( t_min: floatt_max: floatmax_denoising_steps: int )
Logits に線形温度スケジュールを適用する logits プロセッサです。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 を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
DiffusionGemmaModel
class transformers.DiffusionGemmaModel
< source >( config: DiffusionGemmaConfig )
パラメータ
- config (DiffusionGemmaConfig) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
特定のヘッドを付加せずに、生の隠れ状態を出力する、素の Diffusion Gemma Model。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、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.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)
パラメータ
- input_ids (
torch.LongTensor、形状(batch_size, sequence_length)、任意) — キャンバスのコンテキストとしてエンコードされるプロンプトの、キャッシュされていないトークン ID です。 - attention_mask (
torch.Tensor、shape(batch_size, sequence_length)またはdict、任意) — 入力トークンのマスクです。 - past_key_values (
~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返したpast_key_valuesであり、use_cache=Trueまたはconfig.use_cache=True.入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。
past_key_valuesが渡されない場合、デフォルトで DynamicCache が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。
past_key_valuesを使用する場合、すべてのinput_ids(形状(batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理のinput_ids(形状(batch_size, unprocessed_length))のみを入力することになります。 - position_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲[0, config.n_positions - 1]. - decoder_input_ids (
torch.LongTensor、形状(batch_size, canvas_length)、任意) — リファイン対象のキャンバスのトークン ID。 - self_conditioning_logits (
torch.FloatTensor、形状(batch_size, canvas_length, vocab_size)、任意) — 前のデノイジングステップからのセルフコンディショニング logits。セルフコンディショニング埋め込みの計算に使用されます。 - 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)、任意) — キャンバス内のトークンに対する位置 ID です。 - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], 省略可) — キーがサポートされているモダリティ、値がそのモダリティのエンコード済み出力である辞書。各エンコード済み出力は、(pooler_output, 省略可:last_hidden_states, 省略可:hidden_states, 省略可:attentions)pooler_output(形状(batch_size, sequence_length, hidden_size), 省略可) からなるタプルです。pooler_outputは、エンコーダーのマルチモーダル特徴量をテキスト埋め込みにマージしたシーケンスです。
戻り値
DiffusionGemmaModelOutputWithPast または tuple(torch.FloatTensor)
DiffusionGemmaModelOutputWithPast、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(DiffusionGemmaConfig)や入力に応じて、さまざまな要素で構成されます。
DiffusionGemmaModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
last_hidden_state (
torch.FloatTensor、shape(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 cache ガイドを参照してください。自己アテンションブロック(および
config.is_encoder_decoder=Trueの場合、クロスカレンションブロック)の事前計算済みヒドゥンステート(キーとバリュー)を保持します。これらは逐次デコーディングを高速化するために使用できます(past_key_values入力参照)。hidden_states (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます)—torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
encoder_last_hidden_state (
torch.FloatTensor、形状(batch_size, sequence_length, hidden_size)、任意) — エンコーダーの最終層の出力における隠れ状態のシーケンス。input_idsが提供された場合のみ設定されます。例えば、学習時にエンコーダー上で自己回帰損失を計算するために使用されます。
DiffusionGemmaEncoderModel
クラス transformers.DiffusionGemmaEncoderModel
< source >( config: DiffusionGemmaConfig )
パラメータ
- config (DiffusionGemmaConfig) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
ビジョンバックボーンと言語モデルで構成される DiffusionGemma エンコーダーモデルで、言語モデリングヘッドは含まれていません。Gemma4Model と非常に似ていますが、音声や動画の入力をサポートせず、内部レイヤーでは常に MoE コードパスを前提としています。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
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)
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- pixel_values (
torch.FloatTensor、形状(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 cache ガイドを参照してください。
past_key_valuesが渡されない場合、デフォルトで DynamicCache が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。
past_key_valuesを使用する場合、すべてのinput_ids(形状(batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理のinput_ids(形状(batch_size, unprocessed_length))のみを入力することになります。 - mm_token_type_ids (
torch.LongTensor、形状(batch_size, sequence_length)、任意) — 各モダリティに一致する入力シーケンスのトークンインデックスです。例えば、テキスト (0)、画像 (1)、動画 (2) などです。マルチモーダルなトークンタイプ ID は、AutoProcessor を使用して取得できます。詳細は ProcessorMixin.call() を参照してください。 - inputs_embeds (
torch.FloatTensor、形状(batch_size, sequence_length, hidden_size)、任意) —input_idsを渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_idsのインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。 - image_position_ids (
torch.LongTensor、形状(batch_size, max_patches, 2)、任意) — 画像プロセッサからの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), 省略可) からなるタプルです。pooler_outputは、エンコーダーのマルチモーダル特徴量をテキスト埋め込みにマージしたシーケンスです。
戻り値
BaseModelOutputWithPast または tuple(torch.FloatTensor)
torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または BaseModelOutputWithPast。設定(DiffusionGemmaConfig)や入力に応じて、さまざまな要素で構成されます。
DiffusionGemmaEncoderModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
last_hidden_state (
torch.FloatTensor、shape(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 cache ガイドを参照してください。自己アテンションブロック(および
config.is_encoder_decoder=Trueの場合、クロスカレンションブロック)の事前計算済みヒドゥンステート(キーとバリュー)を保持します。これらは逐次デコーディングを高速化するために使用できます(past_key_values入力参照)。hidden_states (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます)—torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(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.FloatTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.FloatTensor)
パラメータ
- input_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。インデックスは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 cache ガイドを参照してください。
past_key_valuesが渡されない場合、デフォルトで DynamicCache が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。
past_key_valuesを使用する場合、すべてのinput_ids(形状(batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理のinput_ids(形状(batch_size, unprocessed_length))のみを入力することになります。 - inputs_embeds (
torch.FloatTensor、形状(batch_size, sequence_length, hidden_size)、任意) —input_idsを渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_idsのインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
戻り値
BaseModelOutputWithPast または tuple(torch.FloatTensor)
torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または BaseModelOutputWithPast。設定(DiffusionGemmaConfig)や入力に応じて、さまざまな要素で構成されます。
DiffusionGemmaEncoderTextModel の forward メソッドは、__call__ という特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
last_hidden_state (
torch.FloatTensor、shape(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 cache ガイドを参照してください。自己アテンションブロック(および
config.is_encoder_decoder=Trueの場合、クロスカレンションブロック)の事前計算済みヒドゥンステート(キーとバリュー)を保持します。これらは逐次デコーディングを高速化するために使用できます(past_key_values入力参照)。hidden_states (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます)—torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
DiffusionGemmaDecoderModel
DiffusionGemma用のデコーダーモデル。
双方向自己注意機構とエンコーダーの KV キャッシュへの相互注意機構を用いて、キャンバスのトークンを処理します。
デコーダーは KV キャッシュを読み取りますが、更新はしません。これらの違いを除けば、DiffusionGemmaEncoderTextModel と類似しており、共通する重みはすべて共有されます。
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)
パラメータ
- decoder_input_ids (
torch.LongTensor、形状(batch_size, canvas_length)) — リファイン対象のキャンバスのトークン ID です。 - past_key_values (
~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返したpast_key_valuesであり、use_cache=Trueまたはconfig.use_cache=True.入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。
past_key_valuesが渡されない場合、デフォルトで DynamicCache が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。
past_key_valuesを使用する場合、すべてのinput_ids(形状(batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理のinput_ids(形状(batch_size, unprocessed_length))のみを入力することになります。 - self_conditioning_logits (
torch.FloatTensor、形状(batch_size, canvas_length, vocab_size)、任意) — 前のデノイジングステップからのセルフコンディショニング logits。セルフコンディショニング埋め込みの計算に使用されます。 - 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)、任意) — キャンバス内のトークンに対する位置 ID です。
戻り値
BaseModelOutput または tuple(torch.FloatTensor)
torch.FloatTensor のタプル、または BaseModelOutput(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(DiffusionGemmaConfig)や入力に応じて、さまざまな要素で構成されます。
DiffusionGemmaDecoderModel の forward メソッドは、__call__ という特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
last_hidden_state (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンス。hidden_states (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます)—torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
DiffusionGemmaForBlockDiffusion
ブロック拡散用のDiffusionGemmaモデルです。DiffusionGemmaModelを呼び出して、プロンプトKVキャッシュを条件として、入力キャンバスの隠れ状態を取得します。その後、LM Headと自己条件付けブロックを使用して、これらの隠れ状態をlogitsに変換し、次のキャンバスのサンプリングと、次のブロック拡散ステップ用の自己条件付け埋め込みを生成します。
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)
パラメータ
- input_ids (
torch.LongTensor、形状(batch_size, sequence_length)、任意) — キャンバスのコンテキストとしてエンコードされるプロンプトの、キャッシュされていないトークン ID です。 - attention_mask (
torch.LongTensor、shape(batch_size, sequence_length)またはdict、任意) — 入力トークンのマスクです。 - past_key_values (
~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返したpast_key_valuesであり、use_cache=Trueまたはconfig.use_cache=True.入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。
past_key_valuesが渡されない場合、デフォルトで DynamicCache が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。
past_key_valuesを使用する場合、すべてのinput_ids(形状(batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理のinput_ids(形状(batch_size, unprocessed_length))のみを入力することになります。 - position_ids (
torch.LongTensorの形状(batch_size, sequence_length), 、任意) — 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。範囲[0, config.n_positions - 1]. - decoder_input_ids (
torch.LongTensor、形状(batch_size, canvas_length)、任意) — リファイン対象のキャンバスのトークン ID。 - self_conditioning_logits (
torch.FloatTensor、形状(batch_size, canvas_length, vocab_size)、任意) — 前のデノイジングステップからのセルフコンディショニング logits。セルフコンディショニング埋め込みの計算に使用されます。 - 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)、任意) — キャンバス内のトークンに対する位置 ID です。 - mm_encoder_outputs (
dict[str, ~modeling_outputs.BaseModelOutputWithPooling], 省略可) — キーがサポートされているモダリティ、値がそのモダリティのエンコード済み出力である辞書。各エンコード済み出力は、(pooler_output, 省略可:last_hidden_states, 省略可:hidden_states, 省略可:attentions)pooler_output(形状(batch_size, sequence_length, hidden_size), 省略可) からなるタプルです。pooler_outputは、エンコーダーのマルチモーダル特徴量をテキスト埋め込みにマージしたシーケンスです。
戻り値
DiffusionGemmaBlockDiffusionOutputWithPast または tuple(torch.FloatTensor)
DiffusionGemmaBlockDiffusionOutputWithPast、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(DiffusionGemmaConfig)や入力に応じて、さまざまな要素で構成されます。
DiffusionGemmaForBlockDiffusionのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
loss (
torch.FloatTensor、shape(1,)、optional) — 言語モデリングの損失。logits (
torch.FloatTensor、shape(batch_size, canvas_length, config.text_config.vocab_size)) — 言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。past_key_values (
Cache、任意、use_cache=Trueが渡された場合またはconfig.use_cache=Trueの場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。逐次デコーディングを高速化するために使用できる(
past_key_values入力参照)、事前計算済みの隠れ状態(自己注意ブロックのキーとバリュー)が含まれます。hidden_states (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます)—torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
encoder_last_hidden_state (
torch.FloatTensor、形状(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]