Diffusers documentation
PNDMScheduler
PNDMScheduler
PNDMScheduler, hay các phương pháp số giả cho mô hình khuếch tán, sử dụng các kỹ thuật tích phân ODE tiên tiến hơn như Runge-Kutta và phương pháp đa bước tuyến tính. Bản triển khai gốc có thể tìm thấy tại crowsonkb/k-diffusion.
PNDMScheduler
lớp diffusers.PNDMScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneskip_prk_steps: bool = Falseset_alpha_to_one: bool = Falseprediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon'timestep_spacing: typing.Literal['linspace', 'leading', 'trailing'] = 'leading'steps_offset: int = 0 )
Tham số
- num_train_timesteps (
int, mặc định là1000) — Số bước khuếch tán để huấn luyện mô hình. - beta_start (
float, mặc định là0.0001) — Giá trịbetaban đầu của suy luận. - beta_end (
float, mặc định là0.02) — Giá trịbetacuối cùng. - beta_schedule (
"linear","scaled_linear", hoặc"squaredcos_cap_v2", mặc định là"linear") — Lịch trình beta, một ánh xạ từ một khoảng beta sang một chuỗi các beta để bước qua mô hình. - trained_betas (
np.ndarray, tùy chọn) — Truyền một mảng betas trực tiếp vào constructor để bỏ quabeta_startvàbeta_end. - skip_prk_steps (
bool, mặc định làFalse) — Cho phép trình lập lịch bỏ qua các bước Runge-Kutta được định nghĩa trong bài báo gốc là cần thiết trước các bước PLMS. - set_alpha_to_one (
bool, mặc định làFalse) — Mỗi bước khuếch tán sử dụng giá trị tích của alpha tại bước đó và tại bước trước đó. Đối với bước cuối cùng, không có alpha trước đó. Khi tùy chọn này làTrue, tích alpha trước đó được cố định thành1, ngược lại nó sử dụng giá trị alpha tại bước 0. - prediction_type (
"epsilon"hoặc"v_prediction", mặc định là"epsilon") — Loại dự đoán của hàm scheduler; có thể làepsilon(dự đoán nhiễu của quá trình khuếch tán) hoặcv_prediction(xem mục 2.4 của bài báo Imagen Video). - timestep_spacing (
"linspace","leading", hoặc"trailing", mặc định là"leading") — Cách các timestep nên được scale. Xem Bảng 2 trong Common Diffusion Noise Schedules and Sample Steps are Flawed để biết thêm thông tin. - steps_offset (
int, mặc định là0) — Một giá trị bù được cộng vào các bước suy luận, theo yêu cầu của một số nhóm mô hình.
PNDMScheduler sử dụng các phương pháp số giả cho các mô hình khuếch tán, chẳng hạn như phương pháp Runge-Kutta và phương pháp đa bước tuyến tính.
Mô hình này kế thừa từ SchedulerMixin và ConfigMixin. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các trình lập lịch, chẳng hạn như tải và lưu.
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: IntTensor ) → torch.Tensor
Thêm nhiễu vào các mẫu gốc theo mức độ nhiễu tại mỗi bước thời gian (đây là quá trình khuếch tán thuận).
scale_model_input
< source >( sample: Tensor*args**kwargs ) → torch.Tensor
Đảm bảo khả năng hoán đổi với các trình lập lịch cần mở rộng đầu vào của mô hình khử nhiễu tùy thuộc vào bước thời gian hiện tại.
set_timesteps
< source >( num_inference_steps: intdevice: typing.Union[str, torch.device] = None )
Đặt các bước thời gian rời rạc được sử dụng cho chuỗi khuếch tán (cần chạy trước khi suy luận).
bước
< source >( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple
Tham số
- model_output (
torch.Tensor) — Đầu ra trực tiếp từ mô hình khuếch tán đã học. - timestep (
int) — Bước thời gian rời rạc hiện tại trong chuỗi khuếch tán. - sample (
torch.Tensor) — Một bản thể hiện hiện tại của mẫu được tạo ra bởi quá trình khuếch tán. - return_dict (
bool, mặc định làTrue) — Có nên trả về SchedulerOutput haytuplehay không.
Trả về
SchedulerOutput hoặc tuple
If return_dict is True, SchedulerOutput is returned, otherwise a
tuple is returned where the first element is the sample tensor.
Dự đoán mẫu từ bước thời gian trước đó bằng cách đảo ngược SDE. Hàm này lan truyền quá trình khuếch tán từ các đầu ra của mô hình đã học (thường là nhiễu được dự đoán), và gọi step_prk() hoặc step_plms() tùy thuộc vào biến nội bộ counter.
step_plms
< source >( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple
Tham số
- model_output (
torch.Tensor) — Đầu ra trực tiếp từ mô hình khuếch tán đã học. - timestep (
int) — Bước thời gian rời rạc hiện tại trong chuỗi khuếch tán. - sample (
torch.Tensor) — Một bản thể hiện hiện tại của mẫu được tạo ra bởi quá trình khuếch tán. - return_dict (
bool, mặc định làTrue) — Có nên trả về SchedulerOutput hay tuple hay không.
Trả về
SchedulerOutput hoặc tuple
If return_dict is True, SchedulerOutput is returned, otherwise a
tuple is returned where the first element is the sample tensor.
Dự đoán mẫu từ bước thời gian trước đó bằng cách đảo ngược SDE. Hàm này lan truyền mẫu bằng phương pháp đa bước tuyến tính. Nó thực hiện một lần truyền tiến nhiều lần để xấp xỉ nghiệm.
step_prk
< source >( model_output: Tensortimestep: intsample: Tensorreturn_dict: bool = True ) → SchedulerOutput or tuple
Tham số
- model_output (
torch.Tensor) — Đầu ra trực tiếp từ mô hình khuếch tán đã học. - timestep (
int) — Bước thời gian rời rạc hiện tại trong chuỗi khuếch tán. - sample (
torch.Tensor) — Một bản thể hiện hiện tại của mẫu được tạo ra bởi quá trình khuếch tán. - return_dict (
bool, mặc định làTrue) — Có nên trả về SchedulerOutput hay tuple hay không.
Trả về
SchedulerOutput hoặc tuple
If return_dict is True, SchedulerOutput is returned, otherwise a
tuple is returned where the first element is the sample tensor.
Dự đoán mẫu từ bước thời gian trước bằng cách đảo ngược SDE. Hàm này lan truyền mẫu bằng phương pháp Runge-Kutta. Nó thực hiện bốn lần truyền tiến để xấp xỉ nghiệm của phương trình vi phân.
SchedulerOutput
lớp diffusers.schedulers.scheduling_utils.SchedulerOutput
< source >( prev_sample: Tensor )
Lớp cơ sở cho kết quả của hàm step của một trình lập lịch.