Мини гайд на TensorRT для SD
Я не нашел упоминания этой "фичи" на пикабу, поэтому решил перенести свой адоптированный мини гайд из моей телеги сюда (ссылки на саму телегу не будет, там прон контент, а не разговоры про SD ( ͡• ͜ʖ ͡• ) ).
Что вообще такое этот TensorRT? По сути это библиотеки dll которые Invidia выпустила специально для работы с ИИ, они оптимизируют и ускоряют генерацию. Подробно можно ознакомится на офф сайте TensorRT SDK | NVIDIA Developer. И да это работает только на картах зеленых! Владельцы AMD плачут в сторонке.
В качестве примера вот картинка показывающая скорость и результат без использования RT и с ним:
Без RT


Вместе с RT


Промт, негатив и сид обеих генераций одинаковый, и специально выставлено 150 шагов для долгой генерации, изначальное разрешение 640х640 с апскейлом х2 до 1280х1280:
anime, 2d, (highly detailed:1.2), (highres:1.2), black hair, (dark-skinned female, dark elf, dark skin:1.2),
Negative prompt: EasyNegative,
Steps: 150, Sampler: Euler a, CFG scale: 7, Seed: 970209888, Size: 640x640, Model hash: fa15cea776, Model: aniverse_thxEd14, VAE hash: c6a580b13a, VAE: vae-ft-mse-840000-ema-pruned.ckpt.vae.pt, Denoising strength: 0.3, Clip skip: 2, Hires upscale: 2, Hires upscaler: 4x-AnimeSharp, Version: v1.6.0
Как видно, время генерации упало с 2минут и 35 секунд до 45 секунд. У вас естественно результат будет другой, это зависит от вашей видеокарты. Различия в картинках минимальны, куда большее отличие можно получить просто изменяя количество шагов, иногда картинка на 20 шагах разительно может отличаться от картинки на 22 шагах на одном и том же сиде. Тем кто использует мало чекпоинтов и лор это может очень помочь в скорости генерации.
Предупреждаю сразу, перед тем как начинать, сделайте полную копию вашего рабочего билда!!! Лично мне пришлось полностью переустановить SD. И я не гарантирую, что оно вообще у вас заработает таким методом! Вдобавок ко всему есть ряд ограничений для работы:
-вы должны удалить аргументы medvram и lowvram, с ними не работает! про другие не вкурсе но тоже может не работать.
-может не работать с некоторыми чекпоинтами, лорами или VAE
-размеры картинки по высоте и ширине должны быть кратны 64
-для каждого чекпоинта и каждой лоры требуется отдельная RT модель которая будет весить примерно 1,7Гб так что тем у кого много чекпоинтов и лор придется отдать лютую часть свободного места на диске под это "дело"
Нус начнем ставить.
1) обновите ваш SD до последней версии, или установите заново свежий
2) обновите драйвер инвидиа до последней версии
3) в корневой папке SD удалите папку "venv"
4) запустите "webui.bat" чтобы он восстановил "venv" папку в чистом виде, после восстановления и запуска UI SD все закройте
5) запустите CMD и перейдите в корневую папку SD где лежит "webui.bat"
6) введите команду "venv\Scripts\activate.bat" после чего у вас должен прописаться (venv) в начале строки (смотрите скрин)
7) выполните поочередно команды:
1. python.exe -m pip install --upgrade pip
2. python -m pip install nvidia-cudnn-cu11==8.9.4.25 --no-cache-dir
3. python -m pip install --pre --extra-index-url https://pypi.nvidia.com/ tensorrt==9.0.1.post11.dev4 --no-cache-dir
4. python -m pip uninstall -y nvidia-cudnn-cu11
5. venv\Scripts\deactivate.bat после чего можно закрыть CMD
8) запустите "webui.bat" и установите TensorRT через ссылку https://github.com/NVIDIA/Stable-Diffusion-WebUI-TensorRT , и в настройках самого SD в "User interface" в поле "Quicksettings list" пропишите "sd_unet", после чего перезапустите UI через кнопку "Apply and Restart UI"
9) во вкладке "TensorRT" написана инструкция, прочитайте ее(переводчик вам в помощь), но все довольно легко, вы просто выбираете чекпоинт в поле чекпоинта слева вверху как обычно, а во вкладке "TensorRT Exporter" выпираете "Preset", ВАЖНО! В названии чекпоинта не должно быть пробелов! Сначала всегда делается экспорт пресета Default! Только потом можно выбрать другой пресет и изменить его настройки в "Advanced Settings" и сделать экспорт еще раз.
10) во вкладке "TensorRT Lora" можно сделать TensorRT model для Лоры, просто выбираем лору и экспортируем. ВАЖНО! В названии лоры не должно быть пробелов или выкинет ошибку!
11) после создания TensorRT профиля, чтобы его использовать вы выбираете чекпойинт который был использован при его создании и выбираете профиль RT в поле "SD Unet", под каждый чекпоинт свой профиль RT, можно использовать параметр "Автоматик" если используете несколько лор сразу, он вроде нормально работает и сам применяет то что нужно (но это не точно /ᐠ。ꞈ。ᐟ\).
Надеюсь у вас все получится и удачных генераций)