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를 초과하지 않는 가장 낮은 엔트로피의 위치를 확정합니다. 따라서 대략적으로 독립적인 토큰은 함께 수락되고 나머지는 다시 노이즈가 적용됩니다. 샘플링 온도를 첫 단계의 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) — 수락된 토큰의 허용되는 최대 결합 엔트로피입니다. 값이 클수록 각 단계에서 더 많은 토큰을 수락합니다.
  • t_max (float, 기본값 0.8) — 첫 번째 디노이징 단계의 샘플링 온도.
  • t_min (float, 기본값 0.4) — 마지막 디노이징 단계의 샘플링 온도.
  • num_inference_steps (int, 기본값 32) — 최대 디노이징 단계 수입니다.

균일 손상 프로세스를 위한 엔트로피 바운더리 스케줄러

각 단계에서 스케줄러는 위치별로 후보 토큰을 샘플링하고, sum_i^k entropy_i - max(entropy_1, ..., entropy_k) <= entropy_bound 조건을 만족하는 엔트로피가 가장 낮은 k개의 위치를 선택합니다. 좌변은 선택된 토큰들 간의 결합 상호 정보의 상한을 제공하므로, 해당 토큰들은 근사적으로 독립적입니다. 선택된 위치는 샘플링된 토큰을 유지하고, 나머지 위치는 균일하게 무작위로 선택된 토큰으로 다시 노이즈 처리됩니다(마스크 토큰은 없습니다).

“Entropy Bounded Unmasking을 통한 Masked Diffusion Models의 가속화된 샘플링”(https://huggingface.co/papers/2505.24857)에서 제안되었습니다.

샘플링 온도는 첫 번째 단계에서 t_max에서 시작하여 마지막 단계에서 t_min까지 서서히 낮아지며, 이는 공개된 체크포인트의 샘플러(디노이징이 진행됨에 따라 더 날카로운 샘플링)와 일치합니다. 이 온도는 후보 샘플링과 수락을 결정하는 엔트로피 모두에 대한 로짓에 적용됩니다.

단계

< >

( model_output: torch.Tensortimestep: int | torch.Tensorsample: torch.LongTensorentropy_bound: float | None = Nonegenerator: torch.Generator | None = Nonereturn_dict: bool = True )

매개변수

  • model_output (torch.Tensor, shape (batch_size, block_length, vocab_size)) — 현재 블록에 대한 모델의 원시 로짓(raw logits).
  • timestep (int 또는 torch.Tensor) — 디노이징 스케줄 내 현재 스텝 인덱스; 어닐링된 샘플링 온도를 설정합니다.
  • sample (torch.LongTensor, shape (batch_size, block_length)) — 현재 블록의 토큰 ID입니다.
  • entropy_bound (float, 선택 사항) — 이 단계에 대해 구성된 엔트로피 경계를 재정의합니다.
  • generator (torch.Generator, 선택 사항) — 샘플링을 위한 RNG입니다.
  • return_dict (bool) — EntropyBoundSchedulerOutput를 반환할지, 아니면 일반 튜플을 반환할지를 결정합니다.

엔트로피 한계 내에서 가장 엔트로피가 낮은 위치를 수용하고 나머지는 재노이즈합니다.

EntropyBoundSchedulerOutput

클래스 diffusers.EntropyBoundSchedulerOutput

< >

( prev_sample: torch.LongTensoraccepted_index: torch.BoolTensorsampled_tokens: torch.LongTensorsampled_probs: torch.Tensorpred_logits: torch.Tensor )

매개변수

  • prev_sample (torch.LongTensor, shape (batch_size, block_length)) — 현재 denoising 단계 이후 업데이트된 block 토큰.
  • accepted_index (torch.BoolTensor, shape (batch_size, block_length)) — 이 단계에서 수락(커밋)된 위치의 불리언 마스크.
  • sampled_tokens (torch.LongTensor, shape (batch_size, block_length)) — 모델 logits에서 샘플링된 토큰 ID입니다.
  • sampled_probs (torch.Tensor, shape (batch_size, block_length)) — 샘플링된 토큰의 확률입니다.
  • pred_logits (torch.Tensor, shape (batch_size, block_length, vocab_size)) — 다음 단계의 자기 조건화(self-conditioning)를 위해 후보가 추출된 온도 스케일링된 로짓입니다.

엔트로피 바운더리 스케줄러의 출력 클래스입니다.

Update on GitHub