Содержимое
А вы знаете, что такое успех? Успех, это когда крупнейшие производители видеокарт делают расширение к фанатскому веб-интерфейсу и переписывают драйвер под него 😼 О чём это я, спросите вы? Как всегда - об оптимизациях! Буквально вчера nVidia выпустила свежие драйвера - 545.84. В них, помимо всяких геймерских штучек, заявлена поддержка TensorRT для Web-UI Automatic1111! Подробно об этом сами разработчики написали вот в этом посте. Но мы, естественно, на слово им не поверим, а проверим! Что нам понадобится: 1) Свежий драйвер 545.84 (от 17.10.2023) и позже. Качайте с официального сайта. 2) cuDNN v8.9.4 (August 8th, 2023) для CUDA 11.x - необязательный пункт, но для 30хх/40хх серий видеокарт - желательный, многим помогает поднять производительность SD без дополнительных манипуляций. Брать тут, нужна регистрация. 3) Официальный экстенжин для подержки TensorRT от компании nVidia - https://github.com/NVIDIA/Stable-Diffusion-WebUI-TensorRT 4) Ну и сам Автоматик1111, конечно же. Прежде чем начнём разбирать, немного оговорок о том, как это работает. Во-первых, что бы использовать TensorRT вам придётся переконвертить U-net каждого используемого чекпоинта самостоятельно и только на своём ПК. Собственно, расширение для этого и предназначено. Ещё одно ограничение - вам придётся жёстко (или диапазонно) задать используемое разрешение и батч-сайз при конвертации. Т.е. выставив разрешение 512х512 при создании Ю-нета на этом новом чекпоинте вы не сможете генерировать 512х768. Придётся делать новую конвертацию под новое расширение. К счастью, делается это всего несколько минут, и также можно выставить динамическое разрешение (от 512 до 768 по любой стороне и батчсайз от 1 до 4, к примеру) - это слегка скажется на скорости генераций и на используемой памяти. Так же придётся переконвертить Лоры, которые будите использовать в промте. Во-вторых, на стабильной версии Автоматика1111 (1.6.0) сейчас работают через TensorRT SD 1.5 и 2.1. SDXL через новый способ работает пока только в Dev-ветке. Т.е. либо ставите сейчас дев-ветку и рабоаете с SD XL, либо ждёте новой стабильной версии, а пока работаете с 1.5/2.1. Будьте внмательны, ключи --medvram и ему подобные вызывают ошибку при конвертации! Запускайте Автоматик без них, когда хотите переконвертить. Генерация с ними работает нормально. Теперь, если все ограничения вас устраивают, начнём ставить и тестить. Обновив драйвера рекомендую снести папку venv и поставить заново - во избежание несовместимостей. Так же, если вы качали cuDNN v8.9.4, то после переустановки положите библиотеки из папки \bin\ внутри архива в вашу папку \venv\Lib\site-packages\torch\lib с заменой файлов. Запустив Автоматик и установив расширение, переходим на новую появившуюся вкладку. Расширение будет устанавливаться и билдиться довольно длительное время, так что не думайте, что всё зависло - просто ждите. В конце установки расширение покажет ошибку - просто пезерапустите SD и всё доустановится само. Выбрав нужный пресет (их можно править "на лету") и чекпоинт, нажимаем конвертацию и ждём. Это тоже займёт время, конвертация на 3060 получилась около 5-7 минут. SD XL в 3 раза дольше. Далее, что бы использовать получившуюся модель, нужно добавить в "быстрые настройки" используемный U-net, что бы каждый раз не лезть во вкладку основных настроек. Для этого выбираем "Пользовательский интерфейс" и в быстрые настройки вбиваем sd_unet (картинка 3). Сохраняем, перезапускаем интерфейс, и сверху у нас появится новый список, где будут видны, в том числе, и наши переконверченные модели (картинка 4). Вот, собственно, пожалуй и всё. Больше пояснений есть в самом экстенжине. Теперь по тестам (ну, для чего-то мы всё это затевали, да? 🤔). Картинка 5 и 6 - генерации на обычном чекпоинте без оптимизаций и с оптимизациями. Картинка 7 - те же условия, с новым U-net-ом. ToMe и unCond с ними не работают. И что у нас в итоге? Ускорение получается в 1.5-2.5 раз от скоростей с оптимизациями! Без оптимизаций там и сравнивать страшно - в 4 раза! Обсудить / пообщаться Наш чат @text2image