Ускорение и улучшение генераций
Далее мы разберём не только способы ускорения, но и улучшения генераций. В плане ускорения мы затронем темы использования Turbo, lighting и обычных XL модели, а также использование Lora для ускорения. Ключевым моментом является упор на сохранение или даже улучшение качества генерации. Также, помимо Автоматика будет приложена схема ComfyUI с ещё большим ускорением.
Основы
Главным элементом будет являться совокупность из настроек для модели и применение SPO Lora. Настройки будут немного отличаться в зависимости от используемой модели, если нужно максимальное ускорение и ART - пользуемся Lighting моделью, для фотогенераций берём обычную модель. Настройки будут варьироваться в указанных диапазонах, начните со средних значений и регулируйте исходя из примечаний.
Настройки Lighting XL
XL - Lighting
- Lightning Модель - важнейшим элементом для ускорения конечно же является модель, в примерах ниже мы будем рассматривать juggernautXL_v9Rdphoto2Lightning. Использование данной модели обусловлено её универсальностью, модель отлично понимает стили Artist, токены камеры или тела, может генерировать как в реалистичном стиле, так и мультяшном, отлично подойдёт для карикатур или зомби ужасов.
- Использование SPO Lora - лора вытягивает из картинки максимум насыщенности и детализации. Т.к. мы будем использовать "ускоренные" параметры, нам важно получить больше параметров за шаг, в этом нам поможет Lora для пошаговой оптимизации spo_sdxl_10ep_4k-data_lora_webui. Вес = 1 - 2, при этом чем выше вес Lora - тем больше изображение превращается в эпический арт, чем меньше - тем более реалистичной становится генерация.
- Sampling method = DPM++ SDE - это важный параметр подтверждённый тестами. Нам нужно "свести" изображение к конечному результату за указанное количество шагов, этот семплер лучше всего с этим справляется.
- Sampling steps = 4 - это немного меньше рекомендуемого (5 шагов) для Lighting модели, но судя по тестам даёт более реалистичные, детализированные изображения и заодно ускоряет генерацию при условии выполнения всех пунктов по настройке.
- CFG Scale = 1 - 2 - большее значение рекомендуется для артов и для большей послушности подсказке, меньшее значение делает изображения более реалистичными.
- Включаем расширение Kohya Hires.fix (ставится через расширения по поиску sd-webui-kohya-hiresfix) если разрешение превышает рекомендуемое и при этом проявляется эффект даблёбл. Аналогичная нода так же есть для ComfyUI. Применение данного расширения заметно ускоряет генерацию по сравнению с обычными методами Upscaler при увеличении разрешения в пару раз от рекомендуемого.
- Подключаем FreeU - для согласования мелких деталей. Больше актуально для Art генераций, для фото требуется больше позамарачиваться с настройками, поэтому на фото рекомендуется включать только при Особой необходимости.
8. При использовании ComfyUI подключаем ноду wavespeed (далее будет упоминаться как волна). Так же имеются аналоги в виде "чая" и "тритона" - но в данном материале мы их рассматривать не будем, ибо это отдельная тема. Сейчас держим в уме саму перспективу ещё немного ускориться.
Настройки обычной модели XL
Обычная модель XL
- Если нужно больше фотореализма - используем обычную модель juggernautXL_v9Rdphoto2, с ней тоже можно ускориться - но поменьше.
- Использование SPO Lora - лора вытягивает из картинки максимум насыщенности и детализации. Т.к. мы будем использовать "ускоренные" параметры, нам важно получить больше параметров за шаг, в этом нам поможет Lora для пошаговой оптимизации spo_sdxl_10ep_4k-data_lora_webui. Вес = 1 - 2, при этом чем выше вес Lora - тем больше изображение превращается в эпический арт, чем меньше - тем более реалистичной становится генерация.
- Sampling method = DPM++ SDE - это важный параметр подтверждённый тестами. Нам нужно "свести" изображение к конечному результату за указанное количество шагов, этот семплер лучше всего с этим справляется.
- Sampling steps = 6-12 (при 20+ рекомендуемых) - чем меньше шагов, тем больше делаем вес Lora.
- CFG=1-4 в зависимости от композиции и стиля - большее значение рекомендуется для артов и для большей послушности подсказке, меньшее значение делает изображения более реалистичными
- Включаем расширение Kohya Hires.fix (ставится через расширения по поиску sd-webui-kohya-hiresfix) если разрешение превышает рекомендуемое и при этом проявляется эффект даблёбл. Аналогичная нода так же есть для ComfyUI. Применение данного расширения заметно ускоряет генерацию по сравнению с обычными методами Upscaler при увеличении разрешения в пару раз от рекомендуемого.
- Подключаем FreeU - для согласования мелких деталей. Больше актуально для Art генераций, для фото требуется больше позамарачиваться с настройками, поэтому на фото рекомендуется включать только при Особой необходимости.
8. При использовании ComfyUI подключаем ноду wavespeed (далее будет упоминаться как волна). Так же имеются аналоги в виде "чая" и "тритона" - но в данном материале мы их рассматривать не будем, ибо это отдельная тема. Сейчас держим в уме саму перспективу ещё немного ускориться.
Плюшки
Применение SPO Lora позволяет в буквальном смысле из какхи делать конфетку, поэтому значительно понижаются требования к Prompt инженерингу. При применении этой волшебной Lora - можно получать потрясные результаты на коротких и даже абстрактных подсказках, вплоть до того, что в подсказке теперь можно писать белиберду и получать шикарные генерации!! Конечно же, чем более внятными будут подсказки - тем более контролируемый будет результат. Если ваша подсказка состоит из произвольных символов то рекомендую использовать Sampler=DPM++SDE. Если подсказка более человеческая, то можно пробовать включить свой любимый семплер.
Эксперименты
Примеры выполнены на приблизительно единых настройках, без улучшайзеров в виде исправления рук, лиц и глаз. Все подсказки (workflow) внутри полнарозмерных изображений открытых на отдельной вкладке.
Примеры являются экспериментальными, для демонстрации возможностей конкретных моделей. В примерах ниже моделям в 1, 2 шага внимание не уделялось - хотя такие модели существуют, но данный материал нацелен не столько и не только на ускорении, сколько на улучшении качества при уменьшении времени генерации на ВАШЕЙ модели.
Тест CFG vs Вес LORA - lighting XL
Протестируем влияние CFG и вес SPO Lora. Как видим увеличение CFG приводит к "пережарености", а уменьшение веса Lora - к уменьшению детализации и "выцветанию".
Среднее значение CFG и веса Lora = 1, далее можно поэкспериментировать в сторону уменьшения или увеличения значения параметров в зависимости от задачи.
Kohya Hires.fix - lighting XL
При превышении рекомендуемого разрешения для генерации, особо актуально для моделей SD1.5 и SDXL, можно воспользоваться расширением Kohya Hires.fix. Параметры для 2048на1024 приведены ниже. Суть расширения сводится к подготовке заготовки для генерации, для этого предварительно генерируется образ на меньшем (рекомендуемом) разрешении, которое растягивается и накладывается в качестве слоя на новую генерацию.
Аналог SPO - cfg_scale_boost - lighting XL
Аналогом SPO является Lora cfg_scale_boost. Тут на вкус и цвет, лично мне больше нравится и удобнее пользоваться SPO. Хотя обе Lora без проблем комбинируются при уменьшении их веса.
В примере ниже сравнение <lora:cfg_scale_boost:0.28> (слева) и <lora:spo_sdxl_10ep_4k-data_lora_webui:1> (справа). разница в весах.
Примеры 2048-1024 SDXL - lighting XL
Итого от 20 до 25 секунд на GTX 3060 и это на разрешении 2048 на 1024 в Automatic1111! Параметры описаны вверху статьи, или можете глянуть внутри полноразмерной картинки.
примеры
Prompt
ТУТ ДОЛЖНА БЫТЬ ВАША ПОДСКАЗКА
<lora:spo_sdxl_10ep_4k-data_lora_webui:1>
Steps: 4, Sampler: DPM++ SDE, Schedule type: Karras, CFG scale: 1, Seed: 3, Size: 2048x1024, Model hash: c8df560d29, Model: juggernautXL_v9Rdphoto2Lightning, DSHF_s1: 0, DSHF_d1: 4, DSHF_s2: 0.2, DSHF_d2: 8, DSHF_scaler: nearest-exact, DSHF_down: 0.5, DSHF_up: 3, DSHF_smooth: True, DSHF_early: False, DSHF_one: True, Lora hashes: "spo_sdxl_10ep_4k-data_lora_webui: 5256ee0c312f", Version: v1.10.1
Примеры 2048-1024 ComfyUI - lighting XL
Итого от 9 до 15 секунд на GTX 3060 и это на разрешении 2048 на 1024!
Примечания к схеме
настройки
Нода Kohya Deep Shrink - нужна при превышении рекомендуемого разрешения, для стандартного размера (см. примечание к своей модели) данную ноду нужно отключить (выбрать Bypass в меню)
Нода кэширования Wavespeed (волна) - с основным параметром является residual_diff_threshold. Чем выше значение - тем выше скорость и хуже генерация отличающаяся от оригинала. Актуальна на большом количестве шагов, в нашем случае даёт небольшой прирост.
В схему встроен блок "Upscaler" - задействуем тогда, когда нас устраивает предварительная генерация. Схема так же содержит ноду волны.
Примеры белибердовых подсказок с офигенным результатом - обычная XL
В случае применения SPO - можете писать любую чепуху, вплоть до последовательности символов и цифр на разных языках - всё равно что-нибудь интересненькое нарисует. Однако результат будет заметно лучше когда подсказка будет из более человеческих слов.
Примеры на 8 шагах обычная XL
примеры
Вот пример на модели \juggernautXL_v9Rundiffusionphoto2 (НЕ lighting) - это "обычная" XL универсальная модель, тем не менее применение Lora - <lora:spo_sdxl_10ep_4k-data_lora_webui:1> позволяет вытянуть картинки приемлемого качества даже на 8 шагах, CFG=4. Итак, попросим универсальную модель сгенерировать красивые обои, для этого в подсказку пропишем: 4k wallpaper, beautiful, masterpiece, <lora:spo_sdxl_10ep_4k-data_lora_webui:1>
Как говорилось ранее, SPO вытягивает из картинки максимум, и чем более понятный Prompt тем больше можно жонглировать параметрами. В примере ниже специально идут 4 последовательных генерации на семлерах DPM++ 2M и DPM++ SDE в сравнении с друг другом.
Hyper ускорение на 4 шага - обычная XL
Небольшой вывод: SPO Lora всё же генерирует более приближённое к оригиналу изображение и является более гибким при настройке параметров.
Примеры на 4 шагах обычная XL - SPO Lora
примеры
Вот пример на модели juggernautXL_v9Rundiffusionphoto2 (НЕ lighting) - это "обычная" XL универсальная модель, тем не менее применение Lora с повышенным весом - <lora:spo_sdxl_10ep_4k-data_lora_webui:2> позволяет вытянуть картинки приемлемого качества даже на 4 шагах, CFG=1,5 - для реалистичных генераций и до 4 для Арт.
При малом количестве шагов нам нужно как можно быстрее "свести" изображение к конечному результату, лучше всего с этим справляется Sampler=DPM++ SDE.
В примере ниже попросим универсальную модель сгенерировать реалистичного орка делающего селфи, и крутотачку Бугатти, При этом, на этот раз проверим более развёрнутую подсказку:
{Ваша подсказка}, (epic:1.2), trending on artstation, extremely detailed, great lighting, masterpiece, high score, great score, Professional fashion illustration, ultra detailed, fine texture, crisp detail, crisp edges, raw photo, newest, 4k wallpaper, beautiful, masterpiece, HD photo, highest quality, perfect photo, detailed, Photorealistic, best quality, 8k, HD, DSLR, Fujifilm XT3, award winning, film grain, highres, depth of field, best quality, very aesthetic, absurdres,
<lora:spo_sdxl_10ep_4k-data_lora_webui:2>
1) В случае Орка нам потребуется более реалистичная картинка, поэтому пропишем в подсказку орка: A selfie taken by a happy orc during the Battle of Helms Deep
и выставим следующие настройки: Steps: 4, Sampler: DPM++ SDE, Schedule type: Karras, CFG scale: 1,
2) А для крутотачки нам потребуется более артовая картинка, поэтому пропишем в подсказку тачку: Bugatti
и выставим следующие настройки: Steps: 4, Sampler: DPM++ SDE, Schedule type: Karras, CFG scale: 4,
Примеры на 4 шагах обычная XL - Hyper Lora
примеры
Hyper Lora бывают разные на 1, 2, 4, 8 и 12 шагов. Вообще использовать данные lora на обычной модели - это изврат, но мы же экспериментируем, и нас никто за это не укусит, поэтому пробуем. На 4 шагах на обычной модели лучше отработала двух шаговая модель.
Вот пример на модели juggernautXL_v9Rundiffusionphoto2 (НЕ lighting) - это "обычная" XL универсальная модель, тем не менее применение Hyper Lora - <lora:Hyper-SDXL-2steps-lora:1> позволяет вытянуть картинки приемлемого качества даже на 4 шагах, CFG=1 - для реалистичных генераций и до 2 для Арт.
При малом количестве шагов нам нужно как можно быстрее "свести" изображение к конечному результату, лучше всего с этим справляется Sampler=DPM++ SDE.
В примере ниже попросим универсальную модель сгенерировать реалистичного орка делающего селфи, и крутотачку Бугатти, Вот подсказка:
{Ваша подсказка}, (epic:1.2), trending on artstation, extremely detailed, great lighting, masterpiece, high score, great score, Professional fashion illustration, ultra detailed, fine texture, crisp detail, crisp edges, raw photo, newest, 4k wallpaper, beautiful, masterpiece, HD photo, highest quality, perfect photo, detailed, Photorealistic, best quality, 8k, HD, DSLR, Fujifilm XT3, award winning, film grain, highres, depth of field, best quality, very aesthetic, absurdres,
<lora:Hyper-SDXL-2steps-lora:1>
1) В случае Орка нам потребуется более реалистичная картинка, поэтому пропишем в подсказку орка: A selfie taken by a happy orc during the Battle of Helms Deep
и выставим следующие настройки: Steps: 4, Sampler: DPM++ SDE, Schedule type: Karras, CFG scale: 1,
2) А для крутотачки нам потребуется более Артовая картинка, поэтому пропишем в подсказку тачку: Bugatti
и выставим следующие настройки: Steps: 4, Sampler: DPM++ SDE, Schedule type: Karras, CFG scale: 1,5,
Hyper ускорение на 4 шага - "XL Hyper"
Рассмотрим модель Juggernaut_X_RunDiffusion_Hyper. Для начала, используя рекомендованные настройки Steps=6 и CFG=2 сгенерируем "оригинал", затем на Steps=4 и CFG=2 сгенерируем повторно изображение, что бы понять разницу в качестве и времени генерации. В конце концов подключим SPO Lora и на Steps=4 и CFG=1 Сравним результаты:
Вывод: На меньшем количестве шагов, более фактурным вышел орк с подключённой SPO Lora. Т.е. по факту улучшили качество и уменьшили время. Сюжет с Орком - один из примеров, на других композициях ситуация аналогичная.
Hyper Lora - несработали, поэтому результаты даже приводить не буду.
LCM lora - тест обычной и lighting XL
Рассмотрим модель juggernautXL_v9Rundiffusionphoto и её lighting версию. Для начала подключим только LCM lora, текст подсказки будет выглядеть следующим образом: 4k wallpaper, beautiful, masterpiece, <lora:lcm-lora-sdxl-pytorch_lora_weights:1>
LCM Lora нужна для ускорения генерации изображений в реальном времени по текстовому описанию или наброску - этот фокус актуален для comfyUI когда в одном окне идёт рисование эскиза, а в другом идёт генерация в режиме реального времени, позже я выложу данную схему. Однако сейчас проверим эффект ускорения на автоматике. Она сокращает количество необходимых шагов семплирования — процессов преобразования исходного текста или изображения в более качественное и детализированное изображение.
Слева обычная модель, справа lighting - тестируем семплеры, шаги и CFG с подключённой LMC Lora (без SPO)
Теперь вставим SPO lora в дополнение к LCM. Проверим на других семплерах, включая наш любимый DPM++SDE. Расширим тест шагов, CFG и сравним на разных моделях. Слева обычная модель, справа lighting:
Проверим наши выводы:
1) на обычной модели лучше всего всё же отрабатывает SPO с настройками указанными в начале статьи
2) если уж ускоряться, то подключаем LCM и SPO и шагов достаточно 4 на обычной модели!
3) если хочется ускориться, и генерация нужна с оттенком ART, то лучшим решением является lighting модель и 4 шага с одной только SPO
Окончательный вывод:
На lighting моделях шикарно выходят ART на Steps=4 и CFG=1. Для фотореализма берёте соответствующую обычную модель и ставите Steps=10 и CFG=1, регулируя данный параметр до 4 можно перейти от фото к арту. Пример с SPO Lora на модели juggernautXL_v9Rundiffusionphoto2: