# EntropyBoundScheduler

[Accelerated Sampling from Masked Diffusion Models via Entropy Bounded Unmasking](https://huggingface.co/papers/2505.24857) mengusulkan `EntropyBoundScheduler`, yang mengunci posisi dengan entropi terendah yang entropi gabungan tetap di bawah `entropy_bound`, sehingga token yang kira-kira independen diterima bersama dan sisanya di-renoising. Scheduler ini menurunkan suhu samplingnya dari `t_max` pada langkah pertama hingga `t_min` pada langkah terakhir, sesuai dengan sampler dari checkpoint yang dirilis.

Scheduler ini digunakan oleh [DiffusionGemmaPipeline](/docs/diffusers/main/id/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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_entropy_bound.py#L51)

**Parameter:**

entropy_bound (`float`, default 0.1) : Entropi gabungan maksimum yang ditoleransi untuk token yang diterima. Nilai yang lebih besar menerima lebih banyak token per langkah.

t_max (`float`, default 0.8) : Suhu sampling pada langkah denoising pertama.

t_min (`float`, default 0.4) : Suhu sampling pada langkah denoising terakhir.

num_inference_steps (`int`, defaultnya 32) : Jumlah maksimum langkah denoising.

Penjadwal batas entropi untuk proses korupsi seragam.

Pada setiap langkah, penjadwal mengambil sampel satu kandidat token per posisi dan menerima `k` posisi dengan entropi terendah sedemikian rupa sehingga `sum_i^k entropy_i - max(entropy_1, ..., entropy_k) <= entropy_bound`. Sisi kiri memberikan batas atas bagi informasi bersama (joint mutual information) antara token yang diterima, sehingga token-token tersebut bersifat independen secara aproksimasi. Posisi yang diterima mempertahankan token yang diambil sampelnya; sisanya di-renoising dengan token acak seragam (tidak ada token mask).

Diusulkan dalam "Accelerated Sampling from Masked Diffusion Models via Entropy Bounded Unmasking" (https://huggingface.co/papers/2505.24857).

Suhu sampling dianil dari `t_max` pada langkah pertama hingga `t_min` pada langkah terakhir, sesuai dengan sampler dari checkpoint yang dirilis (sampling lebih tajam seiring kemajuan denoising). Suhu ini diterapkan ke logits sebelum sampling kandidat dan entropi yang mendorong penerimaan.

#### langkah[[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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_entropy_bound.py#L118)

**Parameter:**

model_output (`torch.Tensor` dengan bentuk `(batch_size, block_length, vocab_size)`) : Logit mentah dari model untuk blok saat ini.

timestep (`int` atau `torch.Tensor`) : Indeks langkah saat ini dalam jadwal denoising; mengatur suhu sampling yang dianil.

sample (`torch.LongTensor` dengan bentuk `(batch_size, block_length)`) : ID token blok saat ini.

entropy_bound (`float`, *opsional*) : Menimpa batas entropi yang dikonfigurasi untuk langkah ini.

generator (`torch.Generator`, *opsional*) : RNG untuk sampling.

return_dict (`bool`) : Apakah akan mengembalikan [EntropyBoundSchedulerOutput](/docs/diffusers/main/id/api/schedulers/entropy_bound#diffusers.EntropyBoundSchedulerOutput) atau tuple biasa.

Terima posisi dengan entropi terendah di bawah batas entropi dan lakukan renoise pada sisanya.

## 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)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_entropy_bound.py#L27)

**Parameter:**

prev_sample (`torch.LongTensor` dengan bentuk `(batch_size, block_length)`) : Token blok yang diperbarui setelah langkah denoising saat ini.

accepted_index (`torch.BoolTensor` dengan bentuk `(batch_size, block_length)`) : Mask boolean untuk posisi yang diterima (dikonfirmasi) pada langkah ini.

sampled_tokens (`torch.LongTensor` dengan bentuk `(batch_size, block_length)`) : ID token yang disampelkan dari logits model.

sampled_probs (`torch.Tensor` dengan bentuk `(batch_size, block_length)`) : Probabilitas dari token yang disampelkan.

pred_logits (`torch.Tensor` dengan bentuk `(batch_size, block_length, vocab_size)`) : logit yang telah diskalakan suhu tempat kandidat diambil, untuk self-conditioning langkah berikutnya.

Kelas output untuk penjadwal batas entropi.

