# PiflowScheduler

`PiflowScheduler` — это планировщик с малым числом шагов для дистиллированных контрольных точек Kandinsky 6, как для модели текст/изображение в видео и аудио, так и для модели супер-разрешения видео, а также для дистиллированных контрольных точек Kandinsky S2V 1.0. Он реализует [π-Flow](https://huggingface.co/papers/2510.14974): трансформер предсказывает `n_grid` оценки денуазинга на каждый латентный канал в небольшом количестве точек сетки, а планировщик интегрирует политику без сети между ними.

Референсная реализация доступна по адресу [Lakonik/LakonLab](https://github.com/Lakonik/LakonLab).

## PiflowScheduler[[diffusers.PiflowScheduler]]

#### diffusers.PiflowScheduler[[diffusers.PiflowScheduler]]

```python
diffusers.PiflowScheduler(num_train_timesteps: int = 1000, shift: float = 5.0, n_grid: int = 10, eps: float = 1e-06, final_step_size_scale: float = 0.5, num_policy_substeps: int = 128)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_piflow.py#L144)

**Параметры:**

num_train_timesteps (`int`, *optional*, по умолчанию 1000) : Количество шагов диффузии при обучении.

shift (`float`, *необязательный*, по умолчанию 5.0) : Сдвиг шага времени flow-matching.

n_grid (`int`, *необязательный*, по умолчанию 10) : Количество предсказаний в расширенном выводе модели.

eps (`float`, *необязательный*, по умолчанию 1e-6) : Минимальный шаг и знаменатель политики.

final_step_size_scale (`float`, *необязательный*, по умолчанию 0.5) : Относительный размер последнего сегмента с необработанными шагами.

num_policy_substeps (`int`, *optional*, по умолчанию 128) : Максимальное количество подшагов интеграции политики на единицу raw-timestep.

Многошаговый планировщик PiFlow для диффузионных трансформеров с расширенным выходом.

PiFlow оценивает модель денойзинга в небольшом количестве точек сетки и интегрирует политику без сети между этими оценками. Планировщик предназначен для дистиллированных чекпоинтов Kandinsky 6, включая основную модель видео/аудио и модель супер-разрешения видео. Выходные данные их модели содержат `n_grid` предсказаний на канал каждого образца.

Этот планировщик наследуется от [SchedulerMixin](/docs/diffusers/main/ru/api/schedulers/overview#diffusers.SchedulerMixin) и [ConfigMixin](/docs/diffusers/main/ru/api/configuration#diffusers.ConfigMixin). Общие методы, реализованные для всех планировщиков (загрузка, сохранение и т. д.), описаны в документации суперкласса.

#### set_timesteps[[diffusers.PiflowScheduler.set_timesteps]]

```python
set_timesteps(num_inference_steps: int | None = None, device: typing.Union[str, torch.device, NoneType] = None, sigmas: list[float] | None = None, mu: float | None = None, timesteps: list[float] | None = None)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_piflow.py#L224)

**Параметры:**

num_inference_steps (`int`) : Количество оценок модели.

device (`str` или `torch.device`, *необязательный*) : Устройство для расписания.

sigmas (`list[float]`, *необязательный*) : Неподдерживаемое пользовательское расписание сигмы.

mu (`float`, *необязательный*) : Неподдерживаемый параметр динамического сдвига.

timesteps (`list[float]`, *необязательный*) : Неподдерживаемое пользовательское расписание шагов времени.

Установите расписание шагов времени дистиллированной PiFlow.

#### шаг[[diffusers.PiflowScheduler.step]]

```python
step(model_output: FloatTensor, timestep: typing.Union[float, torch.FloatTensor], sample: FloatTensor, return_dict: bool = True)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_piflow.py#L331)

**Параметры:**

model_output (*torch.FloatTensor*) : Расширенный вывод модели, содержащий `n_grid` предсказаний на канал каждого примера.

timestep (*float* или *torch.FloatTensor*) : Текущий шаг планировщика.

sample (*torch.FloatTensor*) : Текущий зашумленный образец.

return_dict (*bool*, *optional*, по умолчанию True) : Возвращать ли [*PiflowSchedulerOutput*].

**Возвращает:** [*PiflowSchedulerOutput*] или *tuple*

Обновленный пример.

Сделайте один шаг вперед, интегрировав политику PiFlow.

## PiflowSchedulerOutput[[diffusers.schedulers.scheduling_piflow.PiflowSchedulerOutput]]

#### diffusers.schedulers.scheduling_piflow.PiflowSchedulerOutput[[diffusers.schedulers.scheduling_piflow.PiflowSchedulerOutput]]

```python
diffusers.schedulers.scheduling_piflow.PiflowSchedulerOutput(prev_sample: Tensor)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_piflow.py#L30)

**Параметры:**

prev_sample (`torch.Tensor`) : Вычисленная выборка в следующей точке сетки PiFlow. Должна использоваться как следующий вход для процесса денойзинга.

Класс результата для вывода функции `step` планировщика.

