Buckets:

hf-doc-build/doc / diffusers /main /ja /api /schedulers /entropy_bound.md
mishig's picture
|
download
raw
6.16 kB

EntropyBoundScheduler

EntropyBoundScheduler は、結合エントロピーが entropy_bound 以下に収まる最低エントロピーの位置をコミットします。これにより、おおよそ独立したトークンがまとめて受け入れられ、残りは再ノイズ化されます。サンプリング温度は、最初のステップで t_max から始まり、最後のステップで t_min までアニーリングされ、リリースされたチェックポイントのサンプラーと一致します。Accelerated Sampling from Masked Diffusion Models via Entropy Bounded Unmasking で提案されました。

このスケジューラは、DiffusionGemmaPipelineで使用されます。

EntropyBoundScheduler[[diffusers.EntropyBoundScheduler]]

diffusers.EntropyBoundScheduler[[diffusers.EntropyBoundScheduler]]

diffusers.EntropyBoundScheduler(entropy_bound: float = 0.1, t_max: float = 0.8, t_min: float = 0.4, num_inference_steps: int = 32)

ソース

パラメータ:

entropy_bound (float、デフォルトは 0.1) : 受け入れられたトークンの許容される最大結合エントロピーです。値を大きくすると、1 ステップあたりに受け入れられるトークン数が増えます。

t_max (float、デフォルトは 0.8) : 最初のデノイジングステップにおけるサンプリング温度。

t_min (float、デフォルト値は 0.4) : 最後のデノイジングステップにおけるサンプリング温度。

num_inference_steps (int、デフォルトは 32) : デノイジングステップの最大数。

一様破損プロセス用のエントロピー境界スケジューラ。

各ステップで、スケジューラーは各ポジションに対して候補トークンをサンプリングし、k個の最もエントロピーが低いポジションを受け入れます。このとき、sum_i^k entropy_i - max(entropy_1, ..., entropy_k) <= entropy_boundが満たされるようにします。左辺は、受け入れられたトークン間の結合相互情報量の上限を与えるため、それらは近似的に独立しています。受け入れられたポジションはサンプリングされたトークンを保持し、それ以外のポジションは、一様ランダムなトークンで再ノイズ化されます(マスクトークンは存在しません)。

「Accelerated Sampling from Masked Diffusion Models via Entropy Bounded Unmasking」(https://huggingface.co/papers/2505.24857) で提案されました。

サンプリング温度は、最初のステップでt_maxから始まり、最後のステップでt_minまでアニーリングされます。これにより、公開されているチェックポイントのサンプラー(デノイジングが進むにつれてサンプリングがシャープになる)と一致します。この温度は、候補のサンプリングと、受け入れを決定するエントロピーの両方において、logits に適用されます。

ステップ[[diffusers.EntropyBoundScheduler.step]]

step(model_output: torch.Tensor, timestep: int | torch.Tensor, sample: torch.LongTensor, entropy_bound: float | None = None, generator: torch.Generator | None = None, return_dict: bool = True)

ソース

パラメータ:

model_output (torch.Tensor、shape (batch_size, block_length, vocab_size)) : 現在のブロックに対するモデルからの生の logits。

timestep (int または torch.Tensor) : 減噪スケジュール内の現在のステップインデックス。アニーリングされたサンプリング温度を設定します。

sample (torch.LongTensor、shape (batch_size, block_length)) : 現在のブロックのトークンIDです。

entropy_bound (float, 任意) : このステップで設定されたエントロピーの境界値を上書きします。

generator (torch.Generator, 任意) : サンプリング用の乱数生成器。

return_dict (bool) : EntropyBoundSchedulerOutput を返すか、通常のタプルを返すかを指定します。

エントロピーの上限以下にある最低エントロピーの位置を受け入れ、残りの位置には再ノイズを適用します。

EntropyBoundSchedulerOutput[[diffusers.EntropyBoundSchedulerOutput]]

diffusers.EntropyBoundSchedulerOutput[[diffusers.EntropyBoundSchedulerOutput]]

diffusers.EntropyBoundSchedulerOutput(prev_sample: torch.LongTensor, accepted_index: torch.BoolTensor, sampled_tokens: torch.LongTensor, sampled_probs: torch.Tensor, pred_logits: torch.Tensor)

ソース

パラメータ:

prev_sample (torch.LongTensor、shape (batch_size, block_length)) : 現在のデノイジングステップ後の更新されたブロックトークン。

accepted_index (torch.BoolTensor、shape (batch_size, block_length)) : このステップで受け入れ(コミット)された位置のブールマスク。

sampled_tokens (torch.LongTensor、shape (batch_size, block_length)) : モデルの logits からサンプリングされたトークン ID。

sampled_probs (torch.Tensor、shape (batch_size, block_length)) : サンプルされたトークンの確率。

pred_logits (torch.Tensor、shape (batch_size, block_length, vocab_size)) : 次のステップの自己条件付けのために、候補がサンプリングされた温度スケーリング済み logits。

エントロピー境界スケジューラー用の出力クラス。

Xet Storage Details

Size:
6.16 kB
·
Xet hash:
eb7f413f2fd20cb46a6097bab7f3c68a80b8e909b80ca516e2883d865b713989

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.