"пре релиз"
Раз уж я взялся за доработку изначально не очень развитого софта, то почему бы не сделать свою сборку? Учитывая сколько времени и сил было потрачено на доработку этого дела "напильником", мне бы не хотелось повторно всё собирать если вдруг случайно удалю или потеряю файлы, даже банально если нужно будет запустить Stable Diffusion на другом ПК:
Конечно, я могу собрать заново Stable Diffusion web UI по кусочкам, и даже мог бы написать "инструкцию" как это сделать и при этом не наложить кирпичей в штаны... Но я не стану равнять всех людей по своим навыкам и знаниям, и не буду предъявлять ничего условному продавцу который заинтересовался нейронными сетями, но не осилил сборку Stable Diffusion из репозиториев.
Нет, пользователь вообще не должен собирать приложение из разбросанных по всему интернету кусков, собирать приложение до уровня "распаковал и запустил" это обязанность разработчиков, но в среде Linux обычно эту обязанность перекладывают на пользователя, того же условного продавца из магазина.
Конечно, я не разработчик этого хм... Этого приложения, и среда у меня гораздо более дружелюбная Windows, но я могу сделать сборку из разрозненных кусков (зависимостей) и поделиться своей работой, чтобы условный продавец не занимался дурной работой пытаясь запустить приложение.
А теперь к делу.
Внимательные могли заметить один "пре релиз" в репозитории "AUTOMATIC1111/stable-diffusion-webui", мол уже готовые для использования файлы, даже Python и Git не надо устанавливать! Звучит круто, и я действительно это заметил только сейчас. Правда меня смущает одна строчка в конце "After running once...", и она гласит, что после первого запуска можно скопировать приложение на другой ПК и запустить без интернета.
Это выглядит действительно неплохо, если бы не одно "но". Размер будет маловат, я то знаю реальный размер когда всё собрано воедино, и там должно быть не 50 мегабайт, и даже не 5 гигабайт... Теперь мне понятен смысл строчки "After running once...".
Ну что, пробую! Конечно же чудо не свершилось, сразу же началось скачивание зависимостей... И это разработчики ещё называют "Everything is included" (всё включено)!
В любом случае "пре релиз" от AUTOMATIC1111 выглядит интересно, и мне наверное не пришлось бы страдать скачивая и устанавливая всё вручную если бы я знал про существование этого "пре релиза"? Или пришлось бы? Это я и проверю, но сначала один вопрос...
Неужели так сложно добавить одну строчку в разделе установки SD WEBUI и указать ссылку на "пре релиз"? Чтобы пользователи не мучились с ручной установкой зависимостей и прочими непотребствами свойственными обычно софту для Linux?
Ну что, пора проверить в деле, а сможет ли "готовое" решение от разработчиков действительно за один запуск всё установить как заявлено? Чтобы прям один раз я всё скачал и оно работало без загрузки зависимостей из интернета.
Просто скачивание зависимостей, ничего интересного...
Вот казалось бы все зависимости загрузились, но с первого запуска не сработало как было обещано, ладно, подкину вручную модель в папку, и вот тут я уже понимаю что дальше будет веселее...
К слову, вот настоящий размер Stable Diffusion web UI без моделей, и это ещё не "всё в одном", это только начало:
Копирование файла между разделами диска гораздо более приятное занятие, чем загрузка зависимостей из репозиториев, не правда ли?
Запускаю, уж теперь то не должно быть проблем... Ещё несколько зависимостей насосало из интернета, не страшно, хотя и обидно, ведь обещали автономность после первого запуска. А вот что произошло дальше действительно страшно, пакет "всё в одном" оказался нерабочим:
Ладно, попробую домучить этот "пре релиз" и ищу в поисковике всплывшую проблему, как обычно проблему подняли уже везде где только смогли... А ведь всего-то разработчику нужно было включить мозг и собрать действительно автономный архив с готовым для использования приложением, и таким разработчикам не приходилось бы опускаться в чан с навозом каждый раз, когда пользователи спотыкаются об такие проблемы на ровном месте:
Эх, снова плясать над консолью и загружать зависимости из интернета...
Конечно, разбежался, ведь в этой куче навоза нет venv (сборище инструментов и зависимостей), потому я не могу по инструкциям из интернета решить проблему, я уже не удивляюсь, это просто типичная рутина, нерабочий мусор исправлять нерабочими мануалами.
Ведь внезапно выясняется, что понятие "всё в одном" от некоторых разработчиков не очень то и совпадает с истинным смыслом выражения "всё в одном", на самом деле у меня так много вопросов, но так мало ответов прямо сейчас:
Тут я уже думал бросить ковыряние с нерабочим хламом, но ладно, всё же попытаюсь запустить это кривое "Everything is included", неприятно конечно ~40 тысяч файлов копировать, но что поделать если разработчики не смоги сделать всё по-человечески.
Начинаю колдовать в консоли, но у меня не получается, и правда, почему же? Может потому что "инструкция" содержит ошибки? Да нет, быть не может! Святые "мануалы" не могут ошибаться! Есть проблема - бегом читать мануалы! RTFM!!!
Впрочем, даже исправив ошибки в инструкции по исправлению ошибок я получил только новые ошибки:
И после всего этого обязательно вылезет несколько фанатиков Linux которые начнут защищать "своего" разработчика любимого, мол раз Open Source то приложение может быть бесполезной кучей навоза, скажут не нравится - не пользуйся... И будут неправы.
А ещё до меня дошло кое-что, почему разработчики не вписали "пре релиз" в инструкцию по установке приложения, ведь это просто кривой мусор которой не работает, и судя по всему об этом было известно, но не сказано.
Теперь я точно решил бросить это недоразвитое "приложение" и вернуться к работе над своей сборкой...
Правда вся эта возня с кривым софтом уже заняла много места в статье, и мне не остается ничего другого как разбить материал на две части.
А ведь если подумать, stable-diffusion-webui от AUTOMATIC1111 это ещё не самый ужасный софт в плане установки и запуска, может я и критикую жёстко этот проект и разработчиков, но в то же время именно на его основе я решил сделать свою сборку, а знаете почему? Потому что проект по моему мнению стоит того, чтобы сделать на его основе сборку.
Может разработчики и не смогли осилить многие нюансы для удобства пользователей и не способны донести свой софт до обычных пользователей, значит я сам попытаюсь это сделать, в первую очередь чтобы самому иметь адекватное автономное приложение, а не набор кривых зависимостей едва рабочих.
И про мою сборку уже пойдет речь в следующей части что ещё в стадии написания, там действительно много веселых приключений и неожиданных "камней" всплыло... Думаю небольшой спойлер не помешает здесь:
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.