
Предупреждение: впереди вас ждет короткий гайд по запуску webui в колабе после Апреля 2023, когда данное поведение стало осуждаемым со стороны google. Если вы человек принципа и осуждаете омежек, использующих дары от google в своих корыстных целях - дальше вы не увидите ничего интересного.
Производные Stable Diffusion набрали огромную популярность, что не могло обойти стороной нагрузку серверов Google Colab, которые они на бесплатной основе предоставляли энтузиастам в сфере ML.
Я владею хоть и не самой слабой картой на текущем рынке, но она принадлежит красному вендору. Это усложняет локальный способ запуска нейросетей на ней с pipeline.to("cuda") до тёмных ритуалов жертвоприношения, именуемых PlaidML. Однако я хочу войти в роль обычного потребителя, забыть про то, что скрывается за фразой "использовать нейросети" и просто написать "1girl..." "Astronaut in a ocean" - и получить изображение космонавта, тонущего в луже.
Однако, огромный онлайн на серверах гугла, связанный с бесконечным количеством отаку, желающих бесплатно рисовать аниме персонажей на свой вкус и цвет не мог остаться незамеченным, как следствие ограничения не заставили себя долго ждать (на самом деле заставили - почти полгода).
В общем, пару месяцев назад таки появился в правилах использования Colab пунктик об Webui`ях разных. Но мы пользователи опытные, знаем что не пойман - не вор. Однако, всевышние силы посылают всплывающие окна, тем самым даже думать нам запрещают об нарушении правил!


Выражаются последствия отклонения этого Предупреждения так: Среда выполнения падает через небольшой промежуток времени после запуска.
Я пойман, полагаю как вор... Верно?

Не могла же такая крупная компания быть обманута переименованием файлов, да?
Как вы уже поняли - да могла. И не только мы это поняли, но и авторы сборок Stable-Diffusion-webui и в корне решили проблему.
Они стали называть папки не Stable-Diffusion-webui а sd-webui
Как вы понимаете, тема проработала буквально неделю и ответственные люди из Google второй раз пресекли непотребства - они добавили sd-webui в банворды.
Время шло, а готовое решение всё не гуглилось... Казалось бы, используйте сгенерированный на ходу id, публикуйте свои сборки, хотя бы под другим именем - решений проблемы масса. Почему никто не выложил готовый блокнот? Есть подводные камни?
Спустя несколько месяцев после введения ограничений я решил сам написать желаемый функционал. И знаете - на это у меня ушло от силы 10 минут.
Обходим ограничения
Ну, если вся проверка безопасности выполняемой ячейки в colab сводится к поиску подстроки, то решение напрашивается само собой - обфускация. Это я изначально и реализовал, но есть проблема: запускать код блокнота нужно неким аналогом exec(), однако в блокноте мы пишем на Ipython (далее: .ipy), следовательно exec падает, видя первый же синтаксис из Ipy. Но Ipy не был бы таким крутым, если бы не мог переводиться в обычный .py одной библиотекой.
!pip install jupyter
!pip install nbconvert
!jupyter nbconvert "tmp.ipynb" --to python
И тут я понял - никакая обфускация мне и не нужна. можно просто запускать недопустимый код из .ipynb файла - и никто ничего не заподозрит. Остается:
закинуть в колаб нашу сборку webui в виде файла .ipynb
применить на нём переводчик .ipynb > .py
в среде Ipython прочитать и запустить .py обычным exec()
from google.colab import files
name, cont=list(files.upload().items())[0] # Загрузка недопустимого блокнота
with open("tmp.ipynb","w") as f: f.write(cont.decode()) # Запись его в файл
!pip install jupyter
!pip install nbconvert # Перевод из .ipynb файла в .py файл
!jupyter nbconvert "tmp.ipynb" --to python
with open("tmp.py","r") as f: exec(f.read()) # Чтение и запуск .py
после запуска этих 7 строк кода ячейка предлагает нам загрузить наш "недопустимый" блокнот.

Закидываем сюда предварительно скачанный webui stable diffusion для колаба и она его запускает, не привлекая при этом внимания бан-машины google.
Надеюсь кому-то поможет этот короткий гайд в запуске его любимого чекпоинта без напряга для локального железа.