# EntropyBoundScheduler

Le `EntropyBoundScheduler` valide les positions à plus faible entropie dont l'entropie conjointe reste sous `entropy_bound`, de sorte que les jetons approximativement indépendants sont acceptés ensemble et que le reste est rebruité. Il annule sa température d'échantillonnage de `t_max` à la première étape jusqu'à `t_min` à la dernière, en accord avec l'échantillonneur du point de contrôle publié. Proposé dans [Accelerated Sampling from Masked Diffusion Models via Entropy Bounded Unmasking](https://huggingface.co/papers/2505.24857).

Ce planificateur est utilisé par [DiffusionGemmaPipeline](/docs/diffusers/main/fr/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)
```

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

**Paramètres :**

entropy_bound (`float`, par défaut 0.1) : L'entropie conjointe maximale tolérée pour les jetons acceptés. Des valeurs plus élevées acceptent plus de jetons par étape.

t_max (`float`, par défaut 0.8) : Température d'échantillonnage lors de la première étape de débruitage.

t_min (`float`, par défaut 0.4) : Température d'échantillonnage à la dernière étape de débruitage.

num_inference_steps (`int`, par défaut 32) : Le nombre maximal d'étapes de débruitage.

Planificateur de limite d'entropie pour le processus de corruption uniforme.

À chaque étape, le planificateur échantillonne un jeton candidat par position et accepte les `k` positions à plus faible entropie telles que `sum_i^k entropy_i - max(entropy_1, ..., entropy_k) <= entropy_bound`. Le membre de gauche borne supérieurement l'information mutuelle conjointe entre les jetons acceptés, ce qui les rend approximativement indépendants. Les positions acceptées conservent leur jeton échantillonné ; les autres sont rebruitées avec des jetons aléatoires uniformes (il n'y a pas de jeton de masque).

Proposé dans « Accelerated Sampling from Masked Diffusion Models via Entropy Bounded Unmasking » (https://huggingface.co/papers/2505.24857).

La température d'échantillonnage est recuite depuis `t_max` à la première étape jusqu'à `t_min` à la dernière, conformément à l'échantillonneur du point de contrôle publié (échantillonnage plus net à mesure que le débruitage progresse). Elle est appliquée aux logits avant à la fois l'échantillonnage des candidats et l'entropie qui pilote l'acceptation.

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

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

**Paramètres :**

model_output (`torch.Tensor` de forme `(batch_size, block_length, vocab_size)`) : Logits bruts du modèle pour le bloc actuel.

timestep (`int` ou `torch.Tensor`) : Index de l'étape actuelle dans le calendrier de débruitage ; définit la température d'échantillonnage recuite.

sample (`torch.LongTensor` de forme `(batch_size, block_length)`) : ID des jetons du bloc actuel.

entropy_bound (`float`, *facultatif*) : Remplace la borne d'entropie configurée pour cette étape.

generator (`torch.Generator`, *facultatif*) : générateur de nombres aléatoires pour l'échantillonnage.

return_dict (`bool`) : Indique s'il faut retourner un [EntropyBoundSchedulerOutput](/docs/diffusers/main/fr/api/schedulers/entropy_bound#diffusers.EntropyBoundSchedulerOutput) ou un simple tuple.

Accepter les positions à plus faible entropie sous la limite d'entropie et rebruitiser le reste.

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

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

**Paramètres :**

prev_sample (`torch.LongTensor` de forme `(batch_size, block_length)`) : Jetons de bloc mis à jour après l'étape de débruitage actuelle.

accepted_index (`torch.BoolTensor` de forme `(batch_size, block_length)`) : masque booléen des positions acceptées (validées) à cette étape.

sampled_tokens (`torch.LongTensor` de forme `(batch_size, block_length)`) : Identifiants de jetons échantillonnés à partir des logits du modèle.

sampled_probs (`torch.Tensor` de forme `(batch_size, block_length)`) : Probabilités des jetons échantillonnés.

pred_logits (`torch.Tensor` de forme `(batch_size, block_length, vocab_size)`) : les logits mis à l'échelle par la température à partir desquels les candidats ont été tirés, pour l'auto-conditionnement de l'étape suivante.

Classe de sortie pour le planificateur de borne d'entropie.

