Diffusers documentation
KDPM2DiscreteScheduler
KDPM2DiscreteScheduler
KDPM2DiscreteScheduler được lấy cảm hứng từ bài báo Elucidating the Design Space of Diffusion-Based Generative Models, và trình điều phối này được chuyển đổi và tạo bởi Katherine Crowson.
Mã nguồn gốc có thể được tìm thấy tại crowsonkb/k-diffusion.
KDPM2DiscreteScheduler
lớp diffusers.KDPM2DiscreteScheduler
< source >( num_train_timesteps: int = 1000beta_start: float = 0.00085beta_end: float = 0.012beta_schedule: str = 'linear'trained_betas: numpy.ndarray | list[float] | None = Noneuse_karras_sigmas: bool = Falseuse_exponential_sigmas: bool = Falseuse_beta_sigmas: bool = Falseprediction_type: str = 'epsilon'timestep_spacing: str = 'linspace'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.00085) — Giá trịbetaban đầu của suy luận. - beta_end (
float, mặc định là0.012) — Giá trịbetacuối cùng. - beta_schedule (
str, 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. Chọn từlinearhoặcscaled_linear. - trained_betas (
np.ndarrayhoặclist[float], tùy chọn) — Truyền trực tiếp một mảng betas vào constructor để bỏ quabeta_startvàbeta_end. - use_karras_sigmas (
bool, mặc định làFalse) — Có sử dụng Karras sigmas cho kích thước bước trong lịch trình nhiễu trong quá trình lấy mẫu hay không. NếuTrue, các sigmas được xác định theo một chuỗi các mức nhiễu {σi}. - use_exponential_sigmas (
bool, mặc định làFalse) — Có sử dụng exponential sigmas cho kích thước bước trong lịch trình nhiễu trong quá trình lấy mẫu hay không. - use_beta_sigmas (
bool, mặc định làFalse) — Có sử dụng beta sigmas cho kích thước bước trong lịch trình nhiễu trong quá trình lấy mẫu hay không. Xem Beta Sampling is All You Need để biết thêm thông tin. - prediction_type (
str, defaults to"epsilon") — Prediction type of the scheduler function; can beepsilon(predicts the noise of the diffusion process),sample(directly predicts the noisy sample) orv_prediction` (see section 2.4 of Imagen Video paper). - timestep_spacing (
str, mặc định là"linspace") — Cách các bước thời gian (timesteps) nên được mở rộng. 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.
KDPM2DiscreteScheduler được lấy cảm hứng từ DPMSolver2 và Algorithm 2 trong bài báo Elucidating the Design Space of Diffusion-Based Generative Models.
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: Tensor ) → torch.Tensor
Tham số
- original_samples (
torch.Tensor) — Các mẫu gốc mà nhiễu sẽ được thêm vào. - noise (
torch.Tensor) — Tensor nhiễu cần thêm vào các mẫu gốc. - timesteps (
torch.Tensor) — Các bước thời gian (timesteps) để thêm nhiễu, xác định mức nhiễu từ lịch trình (schedule).
Trả về
torch.Tensor
Các mẫu nhiễu với nhiễu được thêm vào, được điều chỉnh theo lịch trình bước thời gian.
Thêm nhiễu vào các mẫu gốc theo lịch trình nhiễu tại các bước thời gian được chỉ định.
index_for_timestep
< source >( timestep: typing.Union[float, torch.Tensor]schedule_timesteps: typing.Optional[torch.Tensor] = None ) → int
Tham số
- timestep (
floathoặctorch.Tensor) — Giá trị bước thời gian cần tìm trong lịch trình. - schedule_timesteps (
torch.Tensor, tùy chọn) — Lịch trình bước thời gian để tìm kiếm. Nếu làNone, sẽ sử dụngself.timesteps.
Trả về
int
Chỉ số của bước thời gian trong lịch trình. Đối với bước đầu tiên, trả về chỉ số thứ hai nếu có nhiều kết quả khớp để tránh bỏ qua một sigma khi bắt đầu giữa lịch trình (ví dụ: cho image-to-image).
Tìm chỉ số của một bước thời gian (timestep) cho trước trong lịch trình bước thời gian.
scale_model_input
< source >( sample: Tensortimestep: typing.Union[float, torch.Tensor] ) → 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_begin_index
< source >( begin_index: int = 0 )
Đặt chỉ số bắt đầu cho trình lập lịch. Hàm này nên được chạy từ pipeline trước khi suy luận.
set_timesteps
< source >( num_inference_steps: intdevice: typing.Union[str, torch.device, NoneType] = Nonenum_train_timesteps: int | None = None )
Tham số
- num_inference_steps (
int) — Số bước khuếch tán được sử dụng khi tạo mẫu bằng mô hình đã được huấn luyện trước. - device (
strhoặctorch.device, tùy chọn) — Thiết bị mà các bước thời gian (timesteps) sẽ được chuyển đến. Nếu làNone, các bước thời gian sẽ không được chuyển. - num_train_timesteps (
int, tùy chọn) — Số bước khuếch tán được sử dụng để huấn luyện mô hình. Nếu làNone,self.config.num_train_timestepssẽ được sử dụng.
Đặ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: typing.Union[torch.Tensor, numpy.ndarray]timestep: typing.Union[float, torch.Tensor]sample: typing.Union[torch.Tensor, numpy.ndarray]return_dict: bool = True )
Tham số
- model_output (
torch.Tensorhoặcnp.ndarray) — Đầu ra trực tiếp từ mô hình khuếch tán đã học. - timestep (
floathoặctorch.Tensor) — Bước thời gian rời rạc hiện tại trong chuỗi khuếch tán. - sample (
torch.Tensorhoặcnp.ndarray) — 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ềKDPM2DiscreteSchedulerOutputhay tuple hay không.
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 nhất là nhiễu được dự đoá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.