Diffusers documentation

EntropyBoundScheduler

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

EntropyBoundScheduler

EntropyBoundScheduler 会提交联合熵保持在 entropy_bound 以下的最低熵位置,因此大致独立的 token 会被一起接受,其余的则会被重新加噪。其采样温度从第一步的 t_max 退火至最后一步的 t_min,与发布的检查点中的采样器保持一致。该方法在 Accelerated Sampling from Masked Diffusion Models via Entropy Bounded Unmasking 中提出。

此调度器由 DiffusionGemmaPipeline 使用。

EntropyBoundScheduler

class diffusers.EntropyBoundScheduler

< >

( entropy_bound: float = 0.1t_max: float = 0.8t_min: float = 0.4num_inference_steps: int = 32 )

参数

  • entropy_bound (float,默认为 0.1) — 已接受 token 的最大可容忍联合熵。值越大,每一步接受的 token 越多。
  • t_max (float,默认为 0.8) — 首个去噪步骤的采样温度。
  • t_min(float,默认值为 0.4)— 最后一步去噪时的采样温度。
  • num_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。

步骤

< >

( 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

< >

( 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,候选项即从中采样得到。

熵界调度器的输出类。

Update on GitHub