Используйте диффузоры, чтобы вызвать контрольно-пропускной пункт и LoRA в Civitai (2)
Используйте диффузоры, чтобы вызвать контрольно-пропускной пункт и LoRA в Civitai (2)

фон

Предыдущая статья《Используйте диффузоры для вызова контрольно-пропускного пункта и LoRA в Civitai.》использовать ПонятноDiffusersсценарий ВоляCстоять(civitai)изcheckpointиLoRAпреобразован вDiffusersможно идентифицироватьиз Формат,Тогда служи Диффузериспользовать.

С точки зрения лора метод из предыдущей статьи имеет следующие проблемы:

  1. LoRA необходимо скачать и конвертировать в автономном режиме на основе файлов checkpoint и LoRA в новые модели на несколько ГБ для использования Диффузорами. Вес LoRA нельзя регулировать во время онлайн-работы, что не так удобно, как sd-webui;
  2. Эффект генерации картинок не такой, как у sd-webui. После Diffusers v0.20.0 появилось новое решение. Делюсь этим со всеми, проверено на себе и работает.

принцип

Решение, представленное в этой статье, работает хорошо и быстро, хотя оно требует дополнительного управления альфа-весом LoRA. Нам нужно создать переменную для запоминания текущего альфа-веса LoRA. Потому что загрузка кода LoRA просто добавляет вместе матрицы A и B в LoRA.

Гири от LoRA
Гири от LoRA

Затем он объединяется с весом модели основной контрольной точки W.

Объединить веса LoRA с весами контрольных точек
Объединить веса LoRA с весами контрольных точек

Чтобы удалить веса LoRA, нам нужен отрицательный -α для удаления весов LoRA или воссоздания конвейера.

Другой способ использования LoRA — изменить код, выполняющий процесс пересылки модулей, и ввести веса LoRA во время расчета вложений текста и оценок внимания.

Патч-модель обезьяны и LoRA
Патч-модель обезьяны и LoRA

Это метод загрузки LoRA LoraLoaderMixin от Diffusers до версии 0.20.0. Преимущество этого подхода заключается в том, что вместо обновления весов модели мы можем легко сбросить LoRA и предоставить новый α для определения весов LoRA. Однако этот метод отличается от метода sd-webui, предложенного вьетнамским боссом, что приводит к множеству неприятностей при использовании Диффузоров.

После Diffusers v0.20.0 эти проблемы частично решены. Тем не менее, мы можем использовать диффузоры для загрузки модели контрольных точек с помощью LoRA и получить точно такие же результаты, используя sd-webui.

Практика написания кода и последствия

Давайте сначала посмотрим на диффузоры. docsсерединарекомендоватьиз Способ。https://huggingface.co/docs/diffusers/v0.20.0/en/training/lora

Язык кода:python
кодКоличество запусков:0
копировать
import torch
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained(
    "emilianJR/chilloutmix_NiPrunedFp32Fix",
    torch_dtype = torch.float16,
    safety_checker = None
)
pipe = pipe.to("cuda")
lora_path = "<path/to/lora.safetensors>"
pipe.load_lora_weights(lora_path)

seed = int.from_bytes(os.urandom(2), "big")
generator = torch.Generator("cuda").manual_seed(seed)
image = pipe(
    prompt="(masterpiece),(best quality),(ultra-detailed),1boy, full body, chibi, yellow, outdoors, beret", 
    negative_prompt="(low quality:1.3), (worst quality:1.3)",
    width=512,
    height=768,
    guidance_scale=9,
    num_inference_steps=30,
    generator=generator
).images[0]
output_path = f"/tmp/out-{seed}.png"
image.save(output_path)

Всего одна строка кода: Pipe.load_lora_weights(lora_path) может завершить загрузку модели Лоры. Если вам нужно загрузить несколько лора, вызовите Pipe.load_lora_weights(lora_path) несколько раз.

Примечание:

<path/to/lora.safetensors>да ВоляCстоятьизLoRAСкачатьиз*.safetensorsПоставить на локальный жесткий дискизконкретный путьиимя файла;

emilianJR/chilloutmix_NiPrunedFp32Fix берется из содержимого в красном поле на картинке, его не нужно загружать вручную.

emilianJR/chilloutmix_NiPrunedFp32Fixоткрасная коробочка на картинкевсодержание
emilianJR/chilloutmix_NiPrunedFp32Fixоткрасная коробочка на картинкевсодержание

Если вы хотите использовать локальный кеш после однократной загрузки, вы можете добавить параметр cache_dir. Пример:

Язык кода:python
кодКоличество запусков:0
копировать
import torch
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained(
    "emilianJR/chilloutmix_NiPrunedFp32Fix"
    , torch_dtype = torch.float16
    , safety_checker = None
    , cache_dir="diffusers-cache"
).to("cuda")

lora_path = "<path/to/lora.safetensors>"
pipe.load_lora_weights(lora_path)

Чтобы сбросить LoRA, просто вызовите функцию unload_lora_weights:

Язык кода:python
кодКоличество запусков:0
копировать
pipe.unload_lora_weights()

Здесь мы можем найти проблему,Это мы в SD-Webui,Можно установитьloraизмасса,Например, мыpromptПрисоединяйтесь:<lora:myLora:0.5>。но здесьда Не поддерживаетсяиз。Что делать?Andrew Zhuпоставлять Понятноабзацкодрешить эту проблему:

Язык кода:python
кодКоличество запусков:0
копировать
pipe.unload_lora_weights()
lora_path = "<path/to/lora.safetensors>"

lora_w = 0.5
pipe._lora_scale = lora_w

state_dict, network_alphas = pipe.lora_state_dict(
    lora_path
)

for key in network_alphas:
    network_alphas[key] = network_alphas[key] * lora_w

#network_alpha = network_alpha * lora_w
pipe.load_lora_into_unet(
    state_dict = state_dict
    , network_alphas = network_alphas
    , unet = pipe.unet
)

pipe.load_lora_into_text_encoder(
    state_dict = state_dict
    , network_alphas = network_alphas
    , text_encoder = pipe.text_encoder
)

Давайте посмотрим на сравнение воздействия этого слова-подсказки с обеих сторон:

Язык кода:txt
копировать
(masterpiece),(best quality),(ultra-detailed),1boy, full body, chibi, yellow, outdoors, beret<lora:blindbox_v1_mix:0.5>
Negative prompt: (low quality:1.3), (worst quality:1.3)
Steps: 30, Sampler: Euler, CFG scale: 9, Seed: 1875473241, Size: 512x768, Model hash: fc2511737a, Model: chilloutmix_NiPrunedFp32Fix, Lora hashes: "blindbox_v1_mix: ee3fbe5a8576", Version: v1.3.2
SD-Webui
SD-Webui
Диффузорысередина
Диффузорысередина

Вы видите разницу?

Подвести итог

В этой статье описаны последние события в поддержке Лоры со стороны Diffusers. Благодаря обновлению Diffusers v0.20.0 мы можем получить тот же эффект, что и sd-webui, через Diffusers, что облегчает сравнение эффектов между различными платформами. Конечно, есть еще ряд проблем, которые необходимо решить:

  1. Если вы хотите поддерживать веса LoRA онлайн, вы можете использовать только Эндрю Чжу или аналогичные хакерские методы, которые в настоящее время не поддерживаются диффузорами.
  2. Одновременная загрузка нескольких LoRA с разным весом не поддерживается. Ждём новых решений в будущем.
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose