# EntropyBoundScheduler

O `EntropyBoundScheduler` confirma as posições de menor entropia cuja entropia conjunta permanece abaixo de `entropy_bound`, de modo que tokens aproximadamente independentes são aceitos juntos e os demais são re-ruídos. Ele anela sua temperatura de amostragem de `t_max` no primeiro passo até `t_min` no último, correspondendo ao amostrador do checkpoint liberado. Proposto em [Accelerated Sampling from Masked Diffusion Models via Entropy Bounded Unmasking](https://huggingface.co/papers/2505.24857).

Este scheduler é usado por [DiffusionGemmaPipeline](/docs/diffusers/v0.43.0/pt/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)
```

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_entropy_bound.py#L51)

**Parâmetros:**

entropy_bound (`float`, padrão 0.1) : A entropia conjunta máxima tolerada dos tokens aceitos. Valores maiores aceitam mais tokens por etapa.

t_max (`float`, padrão 0.8) : Temperatura de amostragem na primeira etapa de desruidamento.

t_min (`float`, padrão 0.4) : Temperatura de amostragem na última etapa de desnívelamento.

num_inference_steps (`int`, padrão 32) : O número máximo de etapas de desruidamento.

Agendador de limite de entropia para o processo de corrupção uniforme.

A cada etapa, o agendador amostra um token candidato por posição e aceita as `k` posições de menor entropia, de modo que `sum_i^k entropy_i - max(entropy_1, ..., entropy_k) <= entropy_bound`. O lado esquerdo da equação estabelece um limite superior para a informação mútua conjunta entre os tokens aceitos, o que significa que eles são aproximadamente independentes. As posições aceitas mantêm seu token amostrado; as demais são renormalizadas com tokens aleatórios uniformes (não há um token de máscara).

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

A temperatura de amostragem é anelada de `t_max` no primeiro passo até `t_min` no último, correspondendo ao amostrador do checkpoint liberado (amostragem mais aguda à medida que o desruido avança). Ela é aplicada aos logits antes tanto da amostragem dos candidatos quanto da entropia que dirige a aceitação.

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

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_entropy_bound.py#L118)

**Parâmetros:**

model_output (`torch.Tensor` de forma `(batch_size, block_length, vocab_size)`) : Logits brutos do modelo para o bloco atual.

timestep (`int` ou `torch.Tensor`) : Índice do passo atual dentro do agendamento de desruidamento; define a temperatura de amostragem anelada.

sample (`torch.LongTensor` de forma `(batch_size, block_length)`) : IDs dos tokens do bloco atual.

entropy_bound (`float`, *opcional*) : Substitui o limite de entropia configurado para esta etapa.

generator (`torch.Generator`, *opcional*) : RNG para amostragem.

return_dict (`bool`) : Se deve retornar um [EntropyBoundSchedulerOutput](/docs/diffusers/v0.43.0/pt/api/schedulers/entropy_bound#diffusers.EntropyBoundSchedulerOutput) ou uma tupla simples.

Aceite as posições de menor entropia dentro do limite de entropia e rebarulhe as demais.

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

[Fonte](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/schedulers/scheduling_entropy_bound.py#L27)

**Parâmetros:**

prev_sample (`torch.LongTensor` de forma `(batch_size, block_length)`) : Tokens de bloco atualizados após a etapa atual de desruido.

accepted_index (`torch.BoolTensor` de forma `(batch_size, block_length)`) : Máscara booleana das posições aceitas (comprometidas) nesta etapa.

sampled_tokens (`torch.LongTensor` de forma `(batch_size, block_length)`) : IDs de tokens amostrados dos logits do modelo.

sampled_probs (`torch.Tensor` de forma `(batch_size, block_length)`) : Probabilidades dos tokens amostrados.

pred_logits (`torch.Tensor` de forma `(batch_size, block_length, vocab_size)`) : Os logits escalados por temperatura dos quais os candidatos foram extraídos, para autocondicionar o próximo passo.

Classe de saída para o agendador de limite de entropia.

