Diffusers documentation

DiscreteDDIMScheduler

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

DiscreteDDIMScheduler

Structured Denoising Diffusion Models in Discrete State-Spaces là cơ sở để DiscreteDDIMScheduler lấy mẫu từng vị trí trên canvas từ hậu nghiệm rời rạc chính xác của quá trình làm nhiễu đồng nhất (D3PM). Trình điều độ này không có tham số, và bước cuối cùng sẽ xác định chắc chắn các token được dự đoán. Chế độ predictor-corrector tùy chọn bổ sung các lượt quét Gibbs leave-one-out của Uniform Diffusion Models Revisited: Leave-One-Out Denoiser and Absorbing State Reformulation thông qua corrector_steps.

Trình lập lịch này được sử dụng bởi DiffusionGemmaPipeline.

DiscreteDDIMScheduler

lớp diffusers.DiscreteDDIMScheduler

< >

( num_inference_steps: int = 32corrector_steps: int = 0corrector_k: int = 1corrector_selection: str = 'lowest_log_margin'corrector_selection_tau: float = 1.0 )

Tham số

  • num_inference_steps (int, mặc định là 32) — Số bước khử nhiễu, xác định lưới thời gian tuyến tính mà posterior được đánh giá trên đó.
  • corrector_steps (int, mặc định là 0) — Số lần quét corrector Gibbs được thực hiện sau mỗi bước predictor. 0 khôi phục quá trình lấy mẫu DDIM tổ tiên thông thường.
  • corrector_k (int, mặc định là 1) — Số lượng vị trí được lấy mẫu lại trong mỗi lượt quét của corrector.
  • corrector_selection (str, mặc định là "lowest_log_margin") — Cách các vị trí được lấy mẫu lại được chọn: "lowest_log_margin", "lowest_maxprob", "lowest_current_prob", hoặc "random".
  • corrector_selection_tau (float, mặc định là 1.0) — Nhiệt độ của việc chọn vị trí Gumbel-top-k (giá trị thấp hơn thì tham lam hơn).

Trình lập lịch DDIM rời rạc cho quá trình phá hủy đồng đều, dựa theo “Structured Denoising Diffusion Models in Discrete State-Spaces” (D3PM, https://huggingface.co/papers/2107.03006).

Trên lịch trình tuyến tính, xác suất sống sót của một token sạch tại thời điểm t là alpha(t) = 1 - t. Một bước khử nhiễu từ thời điểm t đến s < t sẽ lấy mẫu mọi vị trí khối từ hậu nghiệm chính xác q(x_s | x_t, x0), vốn đối với kernel đều phân rã thành ba đường dẫn: nhảy sang token sạch dự đoán x0, giữ nguyên token hiện tại, hoặc nhảy sang một token ngẫu nhiên đều. Khác với khuếch tán có mặt nạ, không có token mặt nạ; các vị trí chưa cam kết mang các token ngẫu nhiên.

Chế độ predictor-corrector tùy chọn tuân theo “Uniform Diffusion Models Revisited: Leave-One-Out Denoiser and Absorbing State Reformulation” thông qua bộ khử nhiễu leave-one-out (LOO) (https://huggingface.co/papers/2605.22765). Khi corrector_steps > 0, pipeline sẽ thực hiện số lượt quét corrector Gibbs tương ứng sau mỗi bước predictor (xem step_correct()), lấy mẫu lại các vị trí kém tự tin nhất từ điều kiện một tọa độ Cat(alpha_s * x0_loo + (1 - alpha_s) / K) trong khi giữ nguyên các vị trí còn lại, điều này giữ bất biến phân phối biên p_s và cải thiện chất lượng sinh mà không phát sinh chi phí huấn luyện.

bước

< >

( model_output: torch.Tensortimestep: int | torch.Tensorsample: torch.LongTensortemperature: float = 0.0generator: torch.Generator | None = Nonereturn_dict: bool = True )

Tham số

  • model_output (torch.Tensor có hình dạng (batch_size, block_length, vocab_size)) — Logits 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, trong khoảng [0, num_inference_steps - 1].
  • sample (torch.LongTensor có hình dạng (batch_size, block_length)) — Các ID token của khối hiện tại x_t.
  • temperature (float) — Nhiệt độ lấy mẫu được áp dụng cho logits khi rút x0.
  • generator (torch.Generator, tùy chọn) — RNG để lấy mẫu.
  • return_dict (bool) — Có nên trả về một DiscreteDDIMSchedulerOutput hay một tuple thông thường.

Mẫu khối tiếp theo từ hậu nghiệm q(x_s | x_t, x0) của quá trình làm hỏng đồng đều.

Với a = alpha_t / alpha_s (xác suất sống sót từ s đến t) và b = alpha_s, khối lượng hậu nghiệm của mỗi tuyến đường là

clean: b * (1 - a) / K + a * b * 1[x_t = x0], stay: a * (1 - b) / K, noise: (1 - a) * (1 - b) / K,

do đó bước cuối cùng (b = 1) cam kết một cách tất định các token sạch đã dự đoán.

step_correct

< >

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

Tham số

  • model_output (torch.Tensor có hình dạng (batch_size, block_length, vocab_size)) — Logits thô từ mô hình được tính lại trên sample hiện tại (sau predictor).
  • timestep (int hoặc torch.Tensor) — Chỉ số bước dự đoán vừa hoàn thành; bộ hiệu chỉnh chạy tại điểm lưới tiếp theo s.
  • sample (torch.LongTensor có hình dạng (batch_size, block_length)) — Các ID token của khối hiện tại cần tinh chỉnh.
  • generator (torch.Generator, tùy chọn) — RNG để lấy mẫu.
  • return_dict (bool) — Có nên trả về một DiscreteDDIMSchedulerOutput hay một tuple thông thường.

Chạy một lượt quét corrector Gibbs tại thời điểm sau predictor s, theo phương pháp predictor-corrector leave-one-out của https://huggingface.co/papers/2605.22765.

Các logits của mô hình (được tính lại trên sample hiện tại) được chuyển đổi thành bộ khử nhiễu LOO, điều kiện một tọa độ p_s(x^l | x^{-l}) = Cat(alpha_s * x0_loo + (1 - alpha_s) / K) được hình thành, các vị trí corrector_k kém tự tin nhất được chọn, và các vị trí đó được lấy mẫu lại trong khi phần còn lại được giữ nguyên. Việc quét này bảo toàn p_s, do đó nó tinh chỉnh mẫu mà không thay đổi phân phối biên của nó và không cần huấn luyện thêm.

DiscreteDDIMSchedulerOutput

lớp diffusers.DiscreteDDIMSchedulerOutput

< >

( prev_sample: torch.LongTensorsampled_tokens: torch.LongTensorsampled_probs: torch.Tensorpred_logits: torch.Tensor )

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.
  • 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, tức là các token sạch dự đoán x0.
  • 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)) — Logits của bộ khử nhiễu, được truyền qua để tự điều kiện cho bước tiếp theo.

Lớp đầu ra cho trình lập lịch DDIM rời rạc.

Update on GitHub