Diffusers documentation
EntropyBoundScheduler
EntropyBoundScheduler
EntropyBoundScheduler 会提交联合熵保持在 entropy_bound 以下的最低熵位置,因此大致独立的 token 会被一起接受,其余的则会被重新加噪。其采样温度从第一步的 t_max 退火至最后一步的 t_min,与发布的检查点中的采样器保持一致。该方法在 Accelerated Sampling from Masked Diffusion Models via Entropy Bounded Unmasking 中提出。
此调度器由 DiffusionGemmaPipeline 使用。
EntropyBoundScheduler
class diffusers.EntropyBoundScheduler
< source >( entropy_bound: float = 0.1t_max: float = 0.8t_min: float = 0.4num_inference_steps: int = 32 )
用于均匀损坏过程的熵界调度器。
在每一步中,调度器为每个位置采样一个候选 token,并接受 k 个熵最低的位置,使得 sum_i^k entropy_i - max(entropy_1, ..., entropy_k) <= entropy_bound。左侧项为上界,界定了所接受 token 之间的联合互信息,因此这些 token 近似独立。被接受的位置保留其采样的 token;其余位置则使用均匀随机 token 重新加噪(没有 mask token)。
提出于“Accelerated Sampling from Masked Diffusion Models via Entropy Bounded Unmasking”(https://huggingface.co/papers/2505.24857)。
采样温度从第一步的 t_max 退火至最后一步的 t_min,与已发布检查点的采样器保持一致(随着去噪过程的推进,采样变得更加尖锐)。该温度应用于候选采样以及驱动接受决策的熵之前的 logits。
步骤
< source >( model_output: torch.Tensortimestep: int | torch.Tensorsample: torch.LongTensorentropy_bound: float | None = Nonegenerator: torch.Generator | None = Nonereturn_dict: bool = True )
参数
- model_output(形状为
(batch_size, block_length, vocab_size)的torch.Tensor)— 模型针对当前块输出的原始 logits。 - timestep (
int或torch.Tensor) — 去噪调度中的当前步索引;用于设置退火采样温度。 - sample(形状为
(batch_size, block_length)的torch.LongTensor)— 当前块的 token ID。 - entropy_bound (
float, 可选) — 覆盖此步骤中配置的熵边界。 - generator (
torch.Generator,可选) — 用于采样的随机数生成器。 - return_dict (
bool) — 是否返回 EntropyBoundSchedulerOutput 或普通元组。
在熵约束下接受熵最低的位置,并对其余位置重新加噪。
EntropyBoundSchedulerOutput
class diffusers.EntropyBoundSchedulerOutput
< source >( prev_sample: torch.LongTensoraccepted_index: torch.BoolTensorsampled_tokens: torch.LongTensorsampled_probs: torch.Tensorpred_logits: torch.Tensor )
参数
- prev_sample(形状为
(batch_size, block_length)的torch.LongTensor)— 当前去噪步骤之后更新的块 token。 - accepted_index(形状为
(batch_size, block_length)的torch.BoolTensor)— 本步骤中已接受(已提交)位置的布尔掩码。 - sampled_tokens(形状为
(batch_size, block_length)的torch.LongTensor)— 从模型 logits 中采样的 Token ID。 - sampled_probs(形状为
(batch_size, block_length)的torch.Tensor)— 采样 token 的概率。 - pred_logits(形状为
(batch_size, block_length, vocab_size)的torch.Tensor)— 用于对下一步进行自条件化的、经过温度缩放的 logits,候选项即从中采样得到。
熵界调度器的输出类。