Diffusers documentation

EntropyBoundScheduler

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
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