# EntropyBoundScheduler

`EntropyBoundScheduler` cam kết các vị trí có entropy thấp nhất mà entropy liên hợp của chúng vẫn nằm dưới `entropy_bound`, do đó các token gần như độc lập được chấp nhận cùng nhau và phần còn lại được tái nhiễu. Nó làm nguội nhiệt độ lấy mẫu từ `t_max` ở bước đầu tiên xuống `t_min` ở bước cuối, khớp với trình lấy mẫu của checkpoint đã phát hành. Được đề xuất trong [Accelerated Sampling from Masked Diffusion Models via Entropy Bounded Unmasking](https://huggingface.co/papers/2505.24857).

Trình lập lịch này được sử dụng bởi [DiffusionGemmaPipeline](/docs/diffusers/main/vi/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)
```

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

**Tham số:**

entropy_bound (`float`, mặc định là 0.1) : Entropy liên hợp tối đa được chấp nhận cho các token đã được chấp nhận. Giá trị lớn hơn sẽ chấp nhận nhiều token hơn mỗi bước.

t_max (`float`, mặc định là 0.8) : Nhiệt độ lấy mẫu ở bước khử nhiễu đầu tiên.

t_min (`float`, mặc định là 0.4) : Nhiệt độ lấy mẫu ở bước khử nhiễu cuối cùng.

num_inference_steps (`int`, mặc định là 32) : Số bước khử nhiễu tối đa.

Trình lập lịch giới hạn entropy cho quá trình phá hủy đồng đều.

Tại mỗi bước, trình lập lịch lấy mẫu một token ứng viên cho mỗi vị trí và chấp nhận `k` vị trí có entropy thấp nhất sao cho `sum_i^k entropy_i - max(entropy_1, ..., entropy_k) <= entropy_bound`. Vế trái đặt ra cận trên cho thông tin tương hỗ liên hợp giữa các token được chấp nhận, do đó chúng gần như độc lập. Các vị trí được chấp nhận giữ nguyên token đã lấy mẫu; các vị trí còn lại được thêm nhiễu lại bằng các token ngẫu nhiên đều (không có token mask).

Được đề xuất trong "Accelerated Sampling from Masked Diffusion Models via Entropy Bounded Unmasking" (https://huggingface.co/papers/2505.24857).

Nhiệt độ lấy mẫu được ủ từ `t_max` ở bước đầu tiên xuống `t_min` ở bước cuối, khớp với trình lấy mẫu của checkpoint đã phát hành (lấy mẫu sắc nét hơn khi quá trình khử nhiễu tiến triển). Nó được áp dụng lên logits trước cả việc lấy mẫu ứng viên lẫn entropy điều khiển việc chấp nhận.

#### bước[[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)
```

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

**Tham số:**

model_output (`torch.Tensor` có hình dạng `(batch_size, block_length, vocab_size)`) : Logit thô từ mô hình cho khối hiện tại.

timestep (`int` hoặc `torch.Tensor`) : Chỉ số bước hiện tại trong lịch trình khử nhiễu; thiết lập nhiệt độ lấy mẫu đã ủ.

sample (`torch.LongTensor` có shape `(batch_size, block_length)`) : Các ID token của khối hiện tại.

entropy_bound (`float`, *tùy chọn*) : Ghi đè giới hạn entropy đã cấu hình cho bước này.

generator (`torch.Generator`, *tùy chọn*) : RNG để lấy mẫu.

return_dict (`bool`) : Xác định việc trả về một [EntropyBoundSchedulerOutput](/docs/diffusers/main/vi/api/schedulers/entropy_bound#diffusers.EntropyBoundSchedulerOutput) hay một tuple thông thường.

Chấp nhận các vị trí có entropy thấp nhất dưới ngưỡng entropy và tạo nhiễu lại phần còn lại.

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

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

**Tham số:**

prev_sample (`torch.LongTensor` có hình dạng `(batch_size, block_length)`) : Các token khối đã cập nhật sau bước khử nhiễu hiện tại.

accepted_index (`torch.BoolTensor` có shape `(batch_size, block_length)`) : Mặt nạ Boolean của các vị trí được chấp nhận (cam kết) trong bước này.

sampled_tokens (`torch.LongTensor` có hình dạng `(batch_size, block_length)`) : Các ID token được lấy mẫu từ logits của mô hình.

sampled_probs (`torch.Tensor` có hình dạng `(batch_size, block_length)`) : Xác suất của các token được lấy mẫu.

pred_logits (`torch.Tensor` có hình dạng `(batch_size, block_length, vocab_size)`) : Các logits đã được điều chỉnh theo nhiệt độ mà các ứng viên được lấy ra từ đó, để tự điều kiện cho bước tiếp theo.

Lớp đầu ra cho trình lập lịch giới hạn entropy.

