AMD и нейросети: Пробую использовать DirectML версию Stable Diffusion Web UI с видеокартой NVIDIA
Предисловие
Нейронные сети на текущий момент доступны обычным пользователям в основном через сервисы в интернете, это может быть единственным вариантом нарисовать картинку из текста если нет полноценного ПК или хотя бы ноутбука.
реклама
Но если у пользователя есть полноценный ПК или ноутбук? Тогда сервисы однозначно плохой вариант по многим причинам начиная с того, что сервисы работают как это нужно владельцу сервиса, а не пользователю, и заканчивая бесконечными проблемами во время генерации изображений по причине нехватки ресурсов у сервисов.
Да и про дискриминацию по национальным и иным признакам не стоит забывать, ибо если у сервиса не будет альтернативы, владельцы сервиса смогут навязывать всё что угодно пользователям, в том числе запрещая доступ к сервису для "неугодных" групп пользователей...
Потому очень важно чтобы была локальная альтернатива доступная независимо от хотелок владельцев сервисов и кого либо вообще, и такую альтернативу я решил создать.
реклама
На текущий момент у меня уже есть сборка SD Web UI для видеокарт от NVIDIA (CUDA), моя сборка работает без особых нареканий, осталось только доработать некоторые мелочи для удобства пользователя и протестировать на чистых операционных системах, вдруг не все зависимости ещё оборвал:
Но есть проблема, уже готовая сборка не будет работать с видеокартами AMD или intel, и меня это очень напрягает, хотя сам с видеокартой от NVIDIA в лице GTX 1070.
В репозитории AUTOMATIC1111 как раз есть ссылки на DirectML вариант, который по идее будет работать с любыми видеокартами, именно с этим я и попробую поработать.
реклама
Выглядит совсем недружелюбно по отношению к пользователям, но что поделать если у разработчиков софта порой руки закручены непонятными узлами и крюками, как правило, этим страдают именно разработчики софта проникшиеся духом Linux, ибо разработчики софта для Windows обычно не допускают такого: Собери сам из грязи и палок разбросанных по соседским участкам и молись, чтобы соседи ничего не изменили и оставили вход открытым...
![]() |
![]() |
-
--
---
SD Web UI DirectML
С чего же начать... Конечно же со скачивания репозитория, я не церемонясь скачиваю ZIP архивом, ведь разработчики не удосужились сделать готовое для использования приложение.
Сначала я думал использовать уже подготовленный Python и Git, но решил с нуля собирать всё воедино не смешивая разные сборки, мне несложно продублировать такие зависимости как Git и Python на каждую сборку в отдельности, я не стану беднее от "лишних" занятых на диске гигабайтов.
![]() |
![]() |
реклама
Конечно же нужно выкачать святые зависимости, ох уж эта вонь от болота зависимостей, вы её чувствуете? И я не чувствую, а она есть...
Естественно PIP требует обновлений, что поделать, нужно накормить беспомощное приложение обновлениями, на минуту работы в данном случае, одну команду ввести в консоль и насосать обновлений из репозиториев.
![]() |
![]() |
![]() |
А вот дальше проблема, сертификаты протухли... Что, опять вручную всё выкачивать через браузер по 10 раз? Серьёзно? Мало мне было в прошлый раз этого ужаса...
![]() |
![]() |
Я немного поковырялся, попытался понять как решить проблему, но я же не очень умный, да и не программист вообще, потому просто скопировал из уже рабочей сборки недостающую зависимость:
Это сработало, мне не пришлось выкачивать "gfpgan", но теперь оно не может скачать какой-то "CLIP"!
![]() |
![]() |
Копируя зависимости вручную я задумался, а зачем вообще этим занимаюсь? В итоге решил поискать проблему в интернете, и да, я не один с подобной проблемой, кто бы сомневался...
Но решение я таки нашёл, нужно просто отключить проверку тухлых SSL сертификатов:
Проверка сертификатов отключена, запускаю снова сборку, и судя по активности сетевого подключения оно таки начало сосать зависимости из репозитория, правда я посмотрел размер этой зависимости в уже готовой сборке... Лучше бы я скопировал вручную эту зависимость из соседней сборки...
Ладно, пусть качает, хотя нет, уже практически полночь за окном, отдыхать тоже ведь нужно, потому закрою консоль и продолжу уже на следующий день.
Вот и настал следующий день, сегодня мобильный интернет относительно стабильно работает судя по графику скорости, и это отлично! Ведь зависимости сами собой не прилетят без доступа в интернет!
Хм, что же могло пойти не так после установки зависимостей... Доступ в интернет предоставил, проверку тухлых сертификатов отключил, зависимости загрузил, и оно всё равно не хочет нормально работать...
Попытался найти решение проблемы в поисковике, было бы удивительно, если бы другие люди не сталкивались с проблемой, а по чьей вине эти проблемы? Правильно, по вине разработчиков от которых несёт паршивыми "линуксами" и болотом зависимостей... Сделали "не как у всех"? Сделали "не как в Windows"? Получайте "результат"!
А ведь решение всех проблем на поверхности, всего-то нужно было собрать все зависимости в одно целое и не насиловать пользователей этим зоопарком, но гордость "пингвинов" она такая...
Ну ничего, я не брезгливый, так что скачаю всё вручную и закину куда надо... Подумал я и скачал Stable Diffusion из репозитория вручную, но что-то снова пошло не так.
В итоге я наколдовал всякого через консоль:
![]() |
![]() |
И о чудо! Оно вроде как заработало! Хотя мне пора идти по другим делам, оставлю я свой ПК наедине с консолью, надеюсь когда вернусь меня не будут ожидать весёлые сюрпризы...
Ну да, конечно, решил перепроверить прогресс перед уходом... Репозитории это хорошо? Репозитории это круто? Надёжность выше крыши до небес? Да, оборвалось скачивание зависимости без которой приложение не будет работать...
Ладно, запустил ещё раз и ушёл, на этот раз всё загрузилось и запустилось когда вернулся и посмотрел в консоль, осталось только проверить, а работает ли оно вообще?
Но как только попытался сгенерировать результат... Я вообще-то надеялся что всё заработает и мне не нужно будет решать очередные проблемы, но реальность сурова, вот бы всё было как в мире фантазий фанатиков Linux, где всё прекрасно и работает без проблем...
Точно, я же не удовлетворил зависимость k_diffusion, но удовлетворение этой зависимости не помогло, всё та же ошибка при попытке сгенерировать изображение.
Я конечно понимаю что сейчас у меня нет видеокарты от AMD для полноценного тестирования, но это не имеет значения в данном случае, оно должно было работать и без видеокарты AMD, но не работает:
![]() |
![]() |
Ладно, пришло время переустанавливать линукс... Тьфу, линуксоидный софт!
Многое у меня уже находилось в кэше, потому на этот раз установилось быстрее обычного, но у меня явно не всё было кэшировано, "torch_directml" в итоге скачивался из интернета, неужели из-за него ничего не вышло с первого раза?
![]() |
![]() |
![]() |
![]() |
Наконец все зависимости присосались куда надо, и снова ругань на отсутствующий stable-diffusion...
Да, k_diffusion и stable-diffusion снова не подсосались из репозиториев по зависимостям, что поделать, запихну вручную эту недоразвитость куда надо, заодно модель подсуну чтобы не выкачивало через мобильный интернет лишние 4 гигабайта которые у меня уже есть в другой папке...
И наконец оно запустилось, со второго, третьего, десятого раза проще всё выходит, не правда ли? А ведь абсолютное большинство адекватного софта для Windows достаточно просто установить дважды кликнув мышью по установочному пакету, и всё будет работать, но сейчас как можно заметить, я имею дело с линуксоидным софтом...
Впрочем, проблема никуда не исчезла после сборки с нуля, наверное нужно купить видеокарту от AMD и тогда заработает, или не заработает? У меня нет видеокарт от AMD потому не знаю.
Да, я пытался всё что возможно перепроверить и скачать если не хватает чего нибудь, но это никак не помогло, всё бесполезно, DirectML версия Stable Diffusion Web UI это просто нерабочий мусор в данном случае.
![]() |
![]() |
Я уже вообще не смотрю на "мануалы" от так называемых разработчиков, теперь я просто делаю чтобы хоть как-то сработало, вдруг повезёт и оно заработает.
Впрочем, я опять нарвался на проблемы с SSL сертификатами судя по всему, или просто ошибка при скачивании, вот так новость. Ну ничего, я ещё раз попробую пока мобильный интернет относительно адекватно работает в плане скоростей...
![]() |
![]() |
Ах да, точно, надо бы модель закинуть чтобы оно не сосало из интернета...
Ладно, хватит, мне надоела возня с этим недоразвитым софтом...
-
--
---
Заключение
Так я и не заставил работать DirectML версию Stable Diffusion Web UI... Надоело, просто надоела эта возня с изначально недоразвитым софтом. А потом жалуются люди, почему подавляющее большинство софта делают под видеокарты NVIDIA, а не AMD, и правда, почему же... Может просто нужно адекватно разрабатывать софт? Ну это, чтобы софт хотя бы работал "из коробки" и пользователю не приходилось всё делать вместо разработчиков...
Взять те же драйверы для видеокарт, NVIDIA хорошо постарались с поддержкой своих видеокарт для Linux, и если дистрибутив не поломался при установке драйвера (а дистрибутив может поломаться от любого чиха), то пользователь получает практически полный функционал видеокарты, и Vulkan API, и OpenCL, и CUDA, адекватную контрольную панель "из коробки", даже с "устаревшей" GTX 1070... А что у AMD с R9 290 или подобной видеокартой? Драйверы "из коробки" которые ничего не могут кроме OpenGL, а при попытке установить другой драйвер можно легко попасть на чёрный экран...
А фанатики Linux ещё имеют наглость прикрывать некомпетентность горе разработчиков понятием Open Source, мол сделали софт бесплатно, значит этот софт может быть кучей навоза неработоспособной и при этом рассыпающейся от любого чиха со стороны.
Почему дистрибутивы Linux не способны конкурировать с Microsoft Windows
Лучше бы я потратил своё время на игры, или на доработку сборок Waifu2X Neuro и Real ESRGAN Neuro, впрочем, линуксоидный софт дело такое, пока не попробуешь...
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила