Diffusers documentation
DiscreteDDIMScheduler
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
< source >( 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.0khô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
< source >( model_output: torch.Tensortimestep: int | torch.Tensorsample: torch.LongTensortemperature: float = 0.0generator: torch.Generator | None = Nonereturn_dict: bool = True )
Tham số
- model_output (
torch.Tensorcó hình dạng(batch_size, block_length, vocab_size)) — Logits thô từ mô hình cho khối hiện tại. - timestep (
inthoặctorch.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.LongTensorcó hình dạng(batch_size, block_length)) — Các ID token của khối hiện tạix_t. - temperature (
float) — Nhiệt độ lấy mẫu được áp dụng cho logits khi rútx0. - 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
< source >( model_output: torch.Tensortimestep: int | torch.Tensorsample: torch.LongTensorgenerator: torch.Generator | None = Nonereturn_dict: bool = True )
Tham số
- model_output (
torch.Tensorcó hình dạng(batch_size, block_length, vocab_size)) — Logits thô từ mô hình được tính lại trênsamplehiện tại (sau predictor). - timestep (
inthoặctorch.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 theos. - sample (
torch.LongTensorcó 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
< source >( prev_sample: torch.LongTensorsampled_tokens: torch.LongTensorsampled_probs: torch.Tensorpred_logits: torch.Tensor )
Tham số
- prev_sample (
torch.LongTensorcó 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.LongTensorcó 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ánx0. - sampled_probs (
torch.Tensorcó 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.Tensorcó 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.