Buckets:

mishig's picture
|
download
raw
22.5 kB

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

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

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

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

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

A1111/k-diffusion 🤗 Diffusers Использование
DPM++ 2M DPMSolverMultistepScheduler
DPM++ 2M Karras DPMSolverMultistepScheduler init с use_karras_sigmas=True
DPM++ 2M SDE DPMSolverMultistepScheduler init с algorithm_type="sde-dpmsolver++"
DPM++ 2M SDE Karras DPMSolverMultistepScheduler init с use_karras_sigmas=True и algorithm_type="sde-dpmsolver++"
DPM++ 2S a N/A очень похож на DPMSolverSinglestepScheduler
DPM++ 2S a Karras N/A очень похож на DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...)
DPM++ SDE DPMSolverSinglestepScheduler
DPM++ SDE Karras DPMSolverSinglestepScheduler init с use_karras_sigmas=True
DPM2 KDPM2DiscreteScheduler
DPM2 Karras KDPM2DiscreteScheduler init с use_karras_sigmas=True
DPM2 a KDPM2AncestralDiscreteScheduler
DPM2 a Karras KDPM2AncestralDiscreteScheduler init с use_karras_sigmas=True
DPM адаптивный N/A
DPM fast N/A
Euler EulerDiscreteScheduler
Euler a EulerAncestralDiscreteScheduler
Heun HeunDiscreteScheduler
LMS LMSDiscreteScheduler
LMS Karras LMSDiscreteScheduler init с use_karras_sigmas=True
N/A DEISMultistepScheduler
N/A UniPCMultistepScheduler

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

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

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

SchedulerMixin[[diffusers.SchedulerMixin]]

diffusers.SchedulerMixin[[diffusers.SchedulerMixin]]

diffusers.SchedulerMixin()

Источник

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

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

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

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

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

from_pretrained[[diffusers.SchedulerMixin.from_pretrained]]

from_pretrained(pretrained_model_name_or_path: str | os.PathLike | None = None, subfolder: str | None = None, return_unused_kwargs: bool = False, **kwargs: 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.

> Для использования частных или gated models выполните вход с помощью hf > auth login. Вы также можете активировать специальный режим > "offline-mode", чтобы использовать этот метод в > среде с файрволом.

save_pretrained[[diffusers.SchedulerMixin.save_pretrained]]

save_pretrained(save_directory: str | os.PathLike, push_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]]

diffusers.schedulers.scheduling_utils.SchedulerOutput[[diffusers.schedulers.scheduling_utils.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]]

diffusers.utils.PushToHubMixin[[diffusers.utils.PushToHubMixin]]

diffusers.utils.PushToHubMixin()

Источник

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

push_to_hub[[diffusers.utils.PushToHubMixin.push_to_hub]]

push_to_hub(repo_id: str, commit_message: str | None = None, private: bool | None = None, token: str | None = None, create_pr: bool = False, safe_serialization: bool = True, variant: str | None = None, subfolder: str | None = None)

Источник

Параметры:

repo_id (str) : Имя репозитория, в который вы хотите загрузить файлы модели, планировщика или конвейера. При загрузке в организацию оно должно содержать имя вашей организации. repo_id также может быть путём к локальному каталогу.

commit_message (str, необязательный) : Сообщение для коммита при выполнении push. По умолчанию "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")

Xet Storage Details

Size:
22.5 kB
·
Xet hash:
22c93c67cbfc2e24f842bf2a8dfda08eaf32629dc09be0082a7d726cc5c0416c

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.