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](https://huggingface.co/papers/2505.24857) で提案されました。
このスケジューラは、[DiffusionGemmaPipeline](/docs/diffusers/main/ja/api/pipelines/diffusion_gemma#diffusers.DiffusionGemmaPipeline)で使用されます。
## EntropyBoundScheduler[[diffusers.EntropyBoundScheduler]]
#### diffusers.EntropyBoundScheduler[[diffusers.EntropyBoundScheduler]]
```python
diffusers.EntropyBoundScheduler(entropy_bound: float = 0.1, t_max: float = 0.8, t_min: float = 0.4, num_inference_steps: int = 32)
```
[ソース](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_entropy_bound.py#L51)
**パラメータ:**
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]]
```python
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)
```
[ソース](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_entropy_bound.py#L118)
**パラメータ:**
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](/docs/diffusers/main/ja/api/schedulers/entropy_bound#diffusers.EntropyBoundSchedulerOutput) を返すか、通常のタプルを返すかを指定します。
エントロピーの上限以下にある最低エントロピーの位置を受け入れ、残りの位置には再ノイズを適用します。
## EntropyBoundSchedulerOutput[[diffusers.EntropyBoundSchedulerOutput]]
#### diffusers.EntropyBoundSchedulerOutput[[diffusers.EntropyBoundSchedulerOutput]]
```python
diffusers.EntropyBoundSchedulerOutput(prev_sample: torch.LongTensor, accepted_index: torch.BoolTensor, sampled_tokens: torch.LongTensor, sampled_probs: torch.Tensor, pred_logits: torch.Tensor)
```
[ソース](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_entropy_bound.py#L27)
**パラメータ:**
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.