Diffusers documentation
MiniMaxH3Scheduler
MiniMaxH3Scheduler
MiniMaxH3Scheduler là trình lập lịch Euler của rectified-flow (eta = 0) với sự dịch chuyển sigma mũ được sử dụng bởi MiniMax-H3, sigma' = s * sigma / (1 + (s - 1) * sigma).
Các pipeline của MiniMax-H3 đăng ký hai trong số chúng, vì các latent của video và audio bước xuống theo hai lịch trình khác nhau bên trong một lần gọi transformer cho mỗi bước: scheduler mang lịch trình video (shift=12.0 trong các checkpoint đã phát hành) và audio_scheduler mang lịch trình audio (shift=3.0).
MiniMaxH3Scheduler
lớp diffusers.MiniMaxH3Scheduler
< source >( shift: float = 12.0stochastic_sampling: bool = Falseshift_provided_sigmas: bool | None = None )
Tham số
- shift (
float, mặc định là12.0) — Lệch mũ áp dụng cho lưới sigma,sigma' = s*sigma / (1 + (s-1)*sigma). Các checkpoint được phát hành sử dụng12.0cho video latents và3.0cho audio latents. - stochastic_sampling (
bool, mặc định làFalse) — Thay thế phép trộn Euler bằng một bước cập nhật tái nhiễu: dự đoán mẫu sạch, sau đó tái nhiễu nó đến sigma tiếp theo bằng nhiễu mới. Các adapter Pika H3 Flex ít bước được huấn luyện cho bước cập nhật này; các checkpoint gốc thì không. - shift_provided_sigmas (
bool, tùy chọn) — Liệu cácsigmastường minh được truyền vào set_timesteps() có phải là lưới cơ sở để trình lập lịch dịch chuyển, giống như lướilinspacecủa nó, hay là một lịch trình hoàn chỉnh được sử dụng nguyên văn. Nếu không được đặt, giá trị mặc định là nguyên văn kèm theo cảnh báo sắp ngừng hỗ trợ; giá trị mặc định sẽ làTruetrong 0.44.0.
Trình lập lịch Euler cho luồng đã chỉnh sửa (eta = 0) với sự dịch chuyển sigma theo hàm mũ, như được sử dụng bởi MiniMax-H3.
index_for_timestep
< source >( timestep: typing.Union[float, torch.Tensor] ) → int
Ánh xạ một giá trị bước thời gian (timestep) đến chỉ số của nó trong lịch trình.
scale_noise
< source >( sample: FloatTensortimestep: typing.Union[float, torch.FloatTensor]noise: FloatTensor ) → torch.FloatTensor
Quy trình tiến của rectified-flow, theo quy ước t của MiniMax-H3: x_t = t*x_0 + (1 - t)*noise.
MiniMax-H3 sử dụng điều này để thêm nhiễu vào các neo điều kiện của nó, trong đó t là mức noise_aug chứ không phải một mục trong lịch trình, do đó timestep được lấy theo giá trị thực và không được tra cứu trong self.timesteps.
set_begin_index
< source >( begin_index: int = 0 )
Đặt chỉ số bắt đầu cho trình lập lịch.
set_shift
< source >( shift: float )
Ghi đè sigma shift đã cấu hình; gọi trước set_timesteps().
MiniMax-H3 hiển thị điều này cho từng yêu cầu dưới dạng flow_shift (video) / audio_flow_shift (âm thanh).
set_timesteps
< source >( num_inference_steps: int | None = Nonedevice: typing.Union[str, torch.device, NoneType] = Nonesigmas: typing.Union[list[float], torch.Tensor, NoneType] = None )
Tham số
- num_inference_steps (
int, tùy chọn) — Số lượng điểm lưới sigma, bao gồm0cuối cùng. Bỏ qua khisigmasđược cung cấp. - device (
strhoặctorch.device, tùy chọn) — Thiết bị mà các tensor lịch được chuyển đến. Bản thân lưới luôn được xây dựng trên CPU ở float32 để lịch không phụ thuộc vào bộ tăng tốc. - sigmas (
list[float]hoặctorch.Tensor, tùy chọn) — Một lưới tường minh, giảm nghiêm ngặt và kết thúc tại0.0. Vớishift_provided_sigmas=True, đây là một lưới cơ sở trong[0, 1]đi qua phép dịch chuyển giống như lướilinspace; nếu không, nó được sử dụng nguyên văn (mặc định đã bị ngừng hỗ trợ).
Xây dựng lịch sigma / bước thời gian.
Lưới là linspace(1, 0, num_inference_steps) được đẩy qua phép dịch chuyển mũ, với các phần tử trùng lặp liên tiếp được gộp lại, hoặc là sigmas tường minh, cũng được dịch chuyển khi shift_provided_sigmas được đặt. Giá trị cuối 0 vốn đã là một phần của lưới — phép dịch chuyển ánh xạ 0 thành đúng 0 — do đó lịch trình giữ num_inference_steps sigmas và điều khiển num_inference_steps - 1 lần đánh giá mô hình, được phơi bày dưới dạng self.timesteps = 1 - sigmas[:-1].
bước
< source >( model_output: FloatTensortimestep: typing.Union[float, torch.FloatTensor]sample: FloatTensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → MiniMaxH3SchedulerOutput or tuple
Tham số
- model_output (
torch.FloatTensor) — Dự đoán vận tốc của transformer tạitimestep. - timestep (
floathoặctorch.FloatTensor) — Bước thời gian hiện tại, một trong sốself.timesteps(do đótimestep == 1 - sigma). - sample (
torch.FloatTensor) — Mẫu hiện tạix_t. - generator (
torch.Generator, tùy chọn) — Bộ sinh mà nhiễu mới được lấy từ đó bằngstochastic_sampling; không được sử dụng trong các trường hợp khác. - return_dict (
bool, mặc định làTrue) — Có nên trả về mộtMiniMaxH3SchedulerOutputthay vì một tuple thông thường hay không.
Trả về
MiniMaxH3SchedulerOutput hoặc tuple
mẫu cho bước tiếp theo.
Thực hiện một bước Euler (eta = 0) hoặc một bước tái nhiễu với stochastic_sampling.
Đầu ra của mô hình là một vận tốc dữ liệu, do đó ước lượng khử nhiễu là x0 = x_t + (1 - t) * v — lưu ý dấu +,
ngược với quy ước flow-match thông thường. Sau đó, phép cập nhật là sự pha trộn x_next = r*x_t + (1 - r)*x0 với r = sigma_next / sigma, được đánh giá ở float32 cho các mẫu half-precision. Với stochastic_sampling,
phép cập nhật là x_next = (1 - sigma_next) * x0 + sigma_next * noise với nhiễu mới từ generator, tất cả
ở float32, vì vậy bước cuối (sigma_next = 0) trả về x0.
MiniMaxH3SchedulerOutput
lớp diffusers.schedulers.scheduling_minimax_h3.MiniMaxH3SchedulerOutput
< source >( prev_sample: FloatTensor )
Lớp đầu ra cho kết quả của hàm step của trình lập lịch.