Diffusers documentation

Планировщики

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Планировщики

🤗 Diffusers предоставляет множество функций планировщика для процесса диффузии. Планировщик принимает выход модели (образец, с которым работает процесс диффузии) и шаг времени, чтобы вернуть образец с удалённым шумом. Шаг времени важен, так как он определяет, на какой стадии процесса диффузии выполняется шаг: данные генерируются путём итерации вперёд на n шагов времени, а инференс происходит путём распространения назад через шаги времени. В зависимости от шага времени планировщик может быть дискретным, в этом случае шаг времени — это int, или непрерывным, в этом случае шаг времени — это float.

В зависимости от контекста планировщик определяет, как итеративно добавлять шум к изображению или как обновлять образец на основе вывода модели:

  • в процессе обучения планировщик добавляет шум (существуют различные алгоритмы добавления шума) к образцу для обучения диффузионной модели
  • во время inference планировщик определяет, как обновлять образец на основе вывода предобученной модели

Многие планировщики реализованы на основе библиотеки k-diffusion от Katherine Crowson и также широко используются в A1111. Чтобы сопоставить планировщики из k-diffusion и A1111 с планировщиками в 🤗 Diffusers, обратитесь к таблице ниже:

A1111/k-diffusion🤗 DiffusersИспользование
DPM++ 2MDPMSolverMultistepScheduler
DPM++ 2M KarrasDPMSolverMultistepSchedulerinit с use_karras_sigmas=True
DPM++ 2M SDEDPMSolverMultistepSchedulerinit с algorithm_type="sde-dpmsolver++"
DPM++ 2M SDE KarrasDPMSolverMultistepSchedulerinit с use_karras_sigmas=True и algorithm_type="sde-dpmsolver++"
DPM++ 2S aN/Aочень похож на DPMSolverSinglestepScheduler
DPM++ 2S a KarrasN/Aочень похоже на DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...)
DPM++ SDEDPMSolverSinglestepScheduler
DPM++ SDE KarrasDPMSolverSinglestepSchedulerinit с use_karras_sigmas=True
DPM2KDPM2DiscreteScheduler
DPM2 KarrasKDPM2DiscreteSchedulerinit с use_karras_sigmas=True
DPM2 aKDPM2AncestralDiscreteScheduler
DPM2 a KarrasKDPM2AncestralDiscreteSchedulerinit с use_karras_sigmas=True
DPM адаптивныйN/A
DPM fastN/A
EulerEulerDiscreteScheduler
Euler aEulerAncestralDiscreteScheduler
HeunHeunDiscreteScheduler
LMSLMSDiscreteScheduler
LMS KarrasLMSDiscreteSchedulerinit с use_karras_sigmas=True
N/ADEISMultistepScheduler
N/AUniPCMultistepScheduler

Шкалы шума и типы шкал

A1111/k-diffusion🤗 Diffusers
Karrasinit с use_karras_sigmas=True
sgm_uniforminit с timestep_spacing="trailing"
простойinit с timestep_spacing="trailing"
экспоненциальныйinit с timestep_spacing="linspace", use_exponential_sigmas=True
betainit с timestep_spacing="linspace", use_beta_sigmas=True

Все планировщики создаются на основе базового класса SchedulerMixin, который реализует низкоуровневые утилиты, общие для всех планировщиков.

SchedulerMixin

класс diffusers.SchedulerMixin

< >

( )

Базовый класс для всех планировщиков.

SchedulerMixin содержит общие функции, используемые всеми планировщиками, такие как общие функции загрузки и сохранения.

ConfigMixin отвечает за сохранение атрибутов конфигурации (таких как num_train_timesteps), которые передаются в функцию __init__ планировщика, а доступ к атрибутам осуществляется через scheduler.config.num_train_timesteps.

Атрибуты класса:

  • _compatibles (list[str]) — список классов планировщиков, совместимых с родительским классом планировщика. Используйте from_config() для загрузки другого совместимого класса планировщика (должно быть переопределено в родительском классе).

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLike | None = Nonesubfolder: str | None = Nonereturn_unused_kwargs: bool = False**kwargs: Any ) → SchedulerMixin or tuple[SchedulerMixin, dict[str, Any]]

Параметры

  • pretrained_model_name_or_path (str или os.PathLike, необязательный) — Может быть:
    • Строка, идентификатор модели (например, google/ddpm-celebahq-256) предобученной модели, размещенной на Hub.
    • Путь к каталогу (например, ./my_model_directory), содержащему конфигурацию планировщика, сохранённую с помощью save_pretrained().
  • subfolder (str, необязательный) — Расположение подпапки файла модели внутри более крупного репозитория моделей на Hub или локально.
  • return_unused_kwargs (bool, необязательный, по умолчанию False) — Определяет, следует ли возвращать аргументы kwargs, которые не используются классом Python.
  • cache_dir (str или os.PathLike, необязательный) — Путь к каталогу, в котором кэшируется загруженная конфигурация предобученной модели, если стандартный кэш не используется.
  • force_download (bool, необязательный, по умолчанию False) — Следует ли принудительно (пере)скачивать веса модели и файлы конфигурации, игнорируя кэшированные версии, если они существуют.
  • proxies (dict[str, str], необязательный) — Словарь прокси-серверов, используемых по протоколу или конечной точке, например, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Прокси применяются при каждом запросе.
  • output_loading_info (bool, необязательный, по умолчанию False) — Возвращать ли также словарь, содержащий отсутствующие ключи, неожиданные ключи и сообщения об ошибках.
  • local_files_only (bool, необязательный, по умолчанию False) — Определяет, следует ли загружать только локальные веса модели и файлы конфигурации. Если установлено значение True, модель не будет скачана с Hub.
  • token (str или bool, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Если указано True, используется токен, сгенерированный командой diffusers-cli login (сохранённый в ~/.huggingface).
  • revision (str, необязательный, по умолчанию "main") — Конкретная версия модели, которую следует использовать. Может быть именем ветки, именем тега, идентификатором коммита или любым другим идентификатором, поддерживаемым Git.

Возвращает

SchedulerMixin или tuple[SchedulerMixin, dict[str, Any]]

Планировщик, созданный из конфигурации. Если return_unused_kwargs равно True, возвращается кортеж, вторым элементом которого является словарь неиспользованных именованных аргументов.

Создайте планировщик из заранее определённого файла конфигурации JSON в локальном каталоге или репозитории Hub.

> Для использования частных или модели с ограниченным доступом выполните вход с помощью hf > auth login. Также можно активировать специальный режим > «офлайн», чтобы использовать этот метод в > среде с файрволом.

save_pretrained

< >

( save_directory: str | os.PathLikepush_to_hub: bool = False**kwargs: Any )

Параметры

  • save_directory (str или os.PathLike) — Каталог, в котором будет сохранён файл конфигурации JSON (будет создан, если не существует).
  • push_to_hub (bool, необязательный, по умолчанию False) — Указывает, следует ли отправлять вашу модель в Hugging Face Hub после сохранения. Репозиторий, в который вы хотите отправить модель, можно указать с помощью repo_id (по умолчанию используется имя save_directory в вашем пространстве имён).
  • kwargs (dict[str, Any], необязательный) — Дополнительные именованные аргументы, передаваемые в метод push_to_hub().

Сохраните объект конфигурации планировщика в каталог, чтобы его можно было загрузить с помощью метода класса from_pretrained().

SchedulerOutput

класс diffusers.schedulers.scheduling_utils.SchedulerOutput

< >

( prev_sample: Tensor )

Параметры

  • prev_sample (torch.Tensor формы (batch_size, num_channels, height, width) для изображений) — Вычисленная выборка (x_{t-1}) предыдущего шага. prev_sample следует использовать как следующий вход модели в цикле шумоподавления.

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

KarrasDiffusionSchedulers

KarrasDiffusionSchedulers представляют собой широкую обобщающую форму для планировщиков в 🤗 Diffusers. Планировщики этого класса различаются на высоком уровне по стратегии выборки шума, типу сети и масштабированию, стратегии обучения и способу взвешивания функции потерь.

Различные планировщики в этом классе, в зависимости от типа решателя обыкновенных дифференциальных уравнений (ODE), подпадают под вышеописанную классификацию и обеспечивают хорошую абстракцию для проектирования основных планировщиков, реализованных в 🤗 Diffusers. Планировщики этого класса приведены здесь.

PushToHubMixin

класс diffusers.utils.PushToHubMixin

< >

( )

Миксин для загрузки модели, планировщика или конвейера на Hugging Face Hub.

push_to_hub

< >

( repo_id: strcommit_message: str | None = Noneprivate: bool | None = Nonetoken: str | None = Nonecreate_pr: bool = Falsesafe_serialization: bool = Truevariant: str | None = Nonesubfolder: str | None = None )

Параметры

  • repo_id (str) — Имя репозитория, в который вы хотите загрузить файлы модели, планировщика или конвейера. При загрузке в организацию оно должно содержать имя вашей организации. repo_id также может быть путём к локальному каталогу.
  • commit_message (str, необязательный) — Сообщение для коммита при отправке. По умолчанию "Upload {object}".
  • private (bool, optional) — Определяет, следует ли сделать репозиторий приватным. Если None (по умолчанию), репозиторий будет публичным, если только по умолчанию для организации не задан приватный режим. Это значение игнорируется, если репозиторий уже существует.
  • token (str, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Токен, сгенерированный при выполнении hf auth login (хранится в ~/.huggingface).
  • create_pr (bool, необязательный, по умолчанию False) — Создавать ли PR с загруженными файлами или коммитить изменения напрямую.
  • safe_serialization (bool, необязательный, по умолчанию True) — Определяет, следует ли преобразовать веса модели в формат safetensors.
  • variant (str, необязательный) — Если указано, веса сохраняются в формате pytorch_model.<variant>.bin.

Загрузите файлы модели, планировщика или конвейера в 🤗 Hugging Face Hub.

Примеры:

from diffusers import UNet2DConditionModel

unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")

# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")

# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")
Update on GitHub