Diffusers library
Теги: machine-learning
Диффузионные модели обучаются пошагово удалять случайный гауссовский шум, чтобы сгенерировать интересующий образец, например изображение или аудио. Diffusers — это библиотека, нацеленная на то, чтобы сделать такие модели широкодоступными для всех.
Краткое введение
Есть три основных компонента библиотеки, о которых нужно знать:
- DiffusionPipeline — это сквозной класс высокого уровня, предназначенный для быстрой генерации выборок из предварительно обученных моделей.
- Популярные предварительно обученные архитектуры моделей и модули, которые можно использовать в качестве строительных блоков для создания диффузионных систем.
- Множество различных планировщиков — алгоритмов, которые управляют тем, как добавляется шум для обучения, и как генерируются изображения с шумоподавлением во время вывода.
Основные задачи
Task | Description | Pipeline |
---|---|---|
Unconditional Image Generation | generate an image from Gaussian noise | unconditional_image_generation |
Text-Guided Image Generation | generate an image given a text prompt | conditional_image_generation |
Text-Guided Image-to-Image Translation | adapt an image guided by a text prompt | img2img |
Text-Guided Image-Inpainting | fill the masked part of an image given the image, the mask and a text prompt | inpaint |
Text-Guided Depth-to-Image Translation | adapt parts of an image guided by a text prompt while preserving structure via depth estimation | depth2img |
Подробнее как организовать простейший пайплайн смотри тут. Как работает дифузионная модель с понижением размерности смотри в этом колабе.
AutoPipeline
Класс AutoPipeline разработан для упрощения разнообразия конвейеров в Diffusers. Это общий конвейер task-first, который позволяет сосредоточиться на задаче (AutoPipelineForText2Image, AutoPipelineForImage2Image и AutoPipelineForInpainting) без необходимости знать конкретный класс конвейера. AutoPipeline автоматически определяет правильный класс конвейера для использования.
Под капотом AutoPipeline :
- Обнаруживает класс для выбранной модели
- В зависимости от задачи, загружает StableDiffusionPipeline, StableDiffusionImg2ImgPipeline или StableDiffusionInpaintPipelin . Любой параметр ( strength, num_inference_steps, и т. д.), который вы передадите этим конкретным конвейерам, также может быть передан AutoPipeline.
Обучение
LoRA для инференса (пример с пикселартом)
Существует множество типов адаптеров (самыми популярными являются LoRA), обученных в разных стилях для достижения разных эффектов. Можно комбинировать несколько адаптеров для создания новых и уникальных изображений.
Load
Файлы моделей и макеты
Файлы
Веса моделей [pytorch] обычно сохраняются с помощью утилиты pickle
Python в виде файлов ckpt или bin. Однако pickle
не является безопасным, и файлы pickle
могут содержать вредоносный код, который может быть выполнен. Эта уязвимость вызывает серьезную озабоченность, учитывая популярность совместного использования моделей. Для решения этой проблемы безопасности была разработана библиотека Safetensors
как безопасная альтернатива pickle
, которая сохраняет модели в виде файлов safetensors.
Safetensors
Safetensors — это безопасный и быстрый формат файла для безопасного хранения и загрузки тензоров. Safetensors ограничивает размер заголовка, чтобы ограничить определенные типы атак, поддерживает ленивую загрузку (полезно для распределенных установок) и в целом имеет более высокую скорость загрузки.
Safetensors хранит веса в файле safetensors. Diffusers загружает файлы safetensors по умолчанию, если они доступны и установлена библиотека Safetensors. Существует два способа организации файлов safetensors:
- Макет Diffusers-multifolder: может быть несколько отдельных файлов safetensors, по одному для каждого компонента конвейера (текстовый кодировщик, UNet, VAE), организованных в подпапки (в качестве примера см. репозиторий stable-diffusion-v1-5/stable-diffusion-v1-5)
- Однофайловая компоновка: все веса моделей можно сохранить в одном файле (в качестве примера см. репозиторий WarriorMama777/OrangeMixs)
Метод from_pretrained()
используется для загрузки модели с файлами safetensors, хранящимися в нескольких папках.
Файлы LoRA
LoRA — это легкий адаптер, который быстро и легко обучается, что делает его особенно популярным для генерации изображений определенным образом или в определенном стиле. Эти адаптеры обычно хранятся в файле safetensors и широко распространены на платформах обмена моделями, таких как civitai.
LoRA загружаются в базовую модель с помощью метода load_lora_weights()
.
ckpt
pickle
файлы могут быть небезопасными, поскольку их можно использовать для выполнения вредоносного кода. Рекомендуется использовать файлы safetensors, где это возможно, или преобразовать веса в файлы safetensors.
CogVideoX
Инференс (подробнее)
Оптимизация
Смотри еще: