Diffusers documentation
FlowMatchEulerDiscreteScheduler
FlowMatchEulerDiscreteScheduler
FlowMatchEulerDiscreteScheduler dựa trên phương pháp lấy mẫu flow-matching được giới thiệu trong Stable Diffusion 3.
FlowMatchEulerDiscreteScheduler
lớp diffusers.FlowMatchEulerDiscreteScheduler
< source >( num_train_timesteps: int = 1000shift: float = 1.0use_dynamic_shifting: bool = Falsebase_shift: float | None = 0.5max_shift: float | None = 1.15base_image_seq_len: int = 256max_image_seq_len: int = 4096invert_sigmas: bool = Falseshift_terminal: float = Noneuse_karras_sigmas: bool = Falseuse_exponential_sigmas: bool = Falseuse_beta_sigmas: bool = Falsetime_shift_type: typing.Literal['exponential', 'linear'] = 'exponential'stochastic_sampling: bool = False )
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. - shift (
float, mặc định là 1.0) — Giá trị shift cho lịch trình timestep. - use_dynamic_shifting (
bool, mặc định là False) — Có áp dụng timestep shifting theo thời gian thực dựa trên độ phân giải của hình ảnh hay không. - base_shift (
float, mặc định là 0.5) — Giá trị để ổn định việc tạo ảnh. Tăngbase_shiftsẽ giảm sự biến đổi và ảnh sẽ nhất quán hơn với đầu ra mong muốn. - max_shift (
float, mặc định là 1.15) — Giá trị thay đổi được phép cho các vector tiềm ẩn. Việc tăngmax_shiftkhuyến khích nhiều biến đổi hơn và hình ảnh có thể trở nên phóng đại hoặc mang tính cách điệu hơn. - base_image_seq_len (
int, mặc định là 256) — Chiều dài chuỗi hình ảnh cơ bản. - max_image_seq_len (
int, mặc định là 4096) — Chiều dài tối đa của chuỗi hình ảnh. - invert_sigmas (
bool, mặc định là False) — Có đảo ngược các sigmas hay không. - shift_terminal (
float, mặc định là None) — Giá trị cuối của lịch trình bước thời gian đã dịch chuyển. - 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 khi lấy mẫu hay không. - 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 (noise schedule) 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 khi lấy mẫu hay không. - time_shift_type (
str, mặc định là “exponential”) — Loại dịch chuyển bước thời gian phụ thuộc vào độ phân giải động cần áp dụng. Có thể là “exponential” hoặc “linear”. - stochastic_sampling (
bool, mặc định là False) — Có sử dụng lấy mẫu ngẫu nhiên hay không.
Trình lập lịch Euler.
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.
index_for_timestep
< source >( timestep: typing.Union[float, torch.FloatTensor]schedule_timesteps: typing.Optional[torch.FloatTensor] = None ) → int
Tham số
- timestep (
floathoặctorch.FloatTensor) — Bước thời gian để tìm chỉ số tương ứng. - schedule_timesteps (
torch.FloatTensor, tùy chọn) — Các bước thời gian (timesteps) của lịch trình để kiểm tra. Nếu làNone, các timesteps của trình lập lịch (scheduler) sẽ được sử dụng.
Trả về
int
Chỉ số của bước thời gian.
Lấy chỉ số cho bước thời gian đã cho.
scale_noise
< source >( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: typing.Optional[torch.FloatTensor] = None ) → torch.FloatTensor
Quá trình tiến trong flow-matching
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.
Đặt giá trị dịch chuyển cho trình lập lịch.
set_timesteps
< source >( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device] = Nonesigmas: list[float] | None = Nonemu: float | None = Nonetimesteps: list[float] | None = None )
Tham số
- num_inference_steps (
int, tùy chọn) — 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. - sigmas (
list[float], tùy chọn) — Các giá trị tùy chỉnh cho sigmas được sử dụng cho mỗi bước khuếch tán. NếuNone, sigmas sẽ được tính toán tự động. - mu (
float, tùy chọn) — Xác định mức độ dịch chuyển được áp dụng cho sigmas khi thực hiện dịch chuyển bước thời gian phụ thuộc vào độ phân giải. - timesteps (
list[float], tùy chọn) — Các giá trị tùy chỉnh cho timesteps được sử dụng cho mỗi bước khuếch tán. NếuNone, các timesteps sẽ được tính toán tự độ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: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensors_churn: float = 0.0s_tmin: float = 0.0s_tmax: float = infs_noise: float = 1.0generator: typing.Optional[torch.Generator] = Noneper_token_timesteps: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → FlowMatchEulerDiscreteSchedulerOutput or tuple
Tham số
- model_output (
torch.FloatTensor) — Đầu ra trực tiếp từ mô hình khuếch tán đã học. - timestep (
float) — Bước thời gian rời rạc hiện tại trong chuỗi khuếch tán. - sample (
torch.FloatTensor) — Một bản thể hiện tại của mẫu được tạo ra bởi quá trình khuếch tán. - s_churn (
float) — - s_tmin (
float) — - s_tmax (
float) — - s_noise (
float, mặc định là 1.0) — Hệ số tỷ lệ cho nhiễu được thêm vào mẫu. - generator (
torch.Generator, tùy chọn) — Bộ tạo số ngẫu nhiên. - per_token_timesteps (
torch.Tensor, tùy chọn) — Các bước thời gian (timesteps) cho từng token trong mẫu. - return_dict (
bool, mặc định làTrue) — Có nên trả về mộtFlowMatchEulerDiscreteSchedulerOutputhay tuple hay không.
Trả về
FlowMatchEulerDiscreteSchedulerOutput hoặc tuple
If return_dict is True,
FlowMatchEulerDiscreteSchedulerOutput 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 nhất là nhiễu được dự đoán).
stretch_shift_to_terminal
< source >( t: Tensor ) → torch.Tensor
Kéo giãn và dịch lịch trình bước thời gian để đảm bảo nó kết thúc tại giá trị cấu hình shift_terminal đã được thiết lập.
time_shift
< source >( mu: floatsigma: floatt: Tensor ) → torch.Tensor
Áp dụng dịch chuyển thời gian vào các sigma.