RU
BAZILEVS
BAZILEVS
10 подписчиков

Fooocus на Kaggle: любой ценой, но бесплатно

Шалом, уважаемые базозавры. В этом гайде разберём, как бесплатно использовать Stable Diffusion XL в облаке. Прежде чем уйти в техническую часть, кратко проясню дискурс.
Fooocus - веб-интерфейс для Stable Diffusion XL. Более прост, чем Automatic1111 и ComfyUI, самое оно для вката нормисов в нейрогенерацию картинок. Вместе с тем Fooocus имеет под капотом gpt-like нейронку, докручивающую запрос на детализацию, за счёт этого картинки лучше получаются.
Fooocus у нас будет в ноутбуке. Ноутбук - это код, расположенный блоками, который исполняет платформа.
Kaggle - платформа, дающая бесплатное машинное время для ваших ноутбуков. Kaggle предоставляет 30 часов в неделю, но никто не запрещает делать мультиаккаунты. Да и 30 часов в неделю - это чуть больше 4 часов в день, так что можно и без мультиаккаунтинга обойтись.
Из аналогов Kaggle я могу назвать только Google Colab, но я окончательно отказался от него по следующим причинам:
- Colab банит запущенный ноутбук с каким-либо интерфейсом для Stable Diffusion. Люди делают обход защиты, но это всё фиксится и приходится обходить заново.
- Colab любит ронять запущенную сессию, а разворачивать потом всё заново не хочется.
- Colab вынуждает купить платный тариф, в котором ограничений нет, а я старый пират и люблю бесплатно.
Приступим к подготовке инфраструктуры.
Готовим Kaggle
Если у вас нет аккаунта на Kaggle, то заходим на сайт и регистрируемся. Дальше понадобится подтвердить номер телефона, чтобы нам дали машинное время. Заходим в настройки аккаунта и находим блок "Phone verification". Жмём по кнопке "Phone verify", вводим номер телефона и вводим код из полученной SMS. Если же вы не хотите светить свой номер или делаете мультиакк, то можно воспользоваться сайтами с смс-активацией. Они гуглятся по запросу "купить виртуальный номер для приёма смс", принять одну смску для Kaggle стоит от 10 до 20 рублей. Да, не совсем бесплатно, но куда дешевле, чем арендовать видюху.
Далее открываем страничку с ноутбуком Fooocus. Ноутбук я для вас перевёл и пофиксил в нём баг, мешающий установке. Жмём кнопку "Copy & Edit" справа вверху. У вас создастся и откроется своя копия этого ноутбука, с которой вы и будете работать. В левом блоке у вас ноутбук, в правом настройки сессии. Правый блок пролистываем до раздела "Session options" и выставляем настройки так: 
Accelerator: GPU P100
Environment: Pin to original environment (2023-11-15)
Persistence: Files only
Акселератор - GPU P100 тут единственная видюха, который нам подойдёт.
Environment - это окружение, в котором будет работать ноутбук. Мы ставим оригинальное. Если выставить другое, то будет конфликт версий библиотеки numpy и ничего не запустится.
Persistence - постоянное хранение файлов и переменных. Мы же ставим так, чтобы хранились только файлы.
Также в настройках оставляем язык Python и проверяем, чтобы переключатель "Internet on" был включен. В целом, настройки должны выглядеть так, как на скриншоте ниже.
Работа с ноутбуком
Вы уже могли заметить, что ноутбук поделён на блоки с текстом и кодом. Эти блоки называются ячейками. Мы будем запускать ячейки с кодом сначала по очереди, а потом по необходимости. Также важно знать, что одновременно может работать только одна ячейка. Это значит, что если нам понадобится запустить какую-либо ячейку, когда работает ячейка с Fooocus, то Fooocus придётся остановить.
Сначала займёмся установкой и включением Fooocus. Жмём в любое место на первой ячейке с кодом в ноутбуке, ячейка в блоке "Установка". Слева от ячейки появится чёрная полоса, означающая, что сейчас активна эта ячейка. Дальше в верхней панели жмём на кнопку с треугольником, обращённым вправо, чтобы запустить ячейку. 
Вот так это у вас это должно выглядеть и на эту кнопку нужно нажать. Сначала запустится сессия с ноутбуком, а затем начнётся исполнение ячейки. Под ячейкой появится лог исполнения. Конкретно в этой ячейке мы устанавливаем Fooocus. Устанавливается он около пяти минут, так что ждём + греемся.  
Как понять, кончилась ли установка и выполнение ячейки в целом? На верхней панели кнопка запуска ячейки должна снова стать активной, что и логично.
Вот так выглядит верхняя панель с запущенной ячейкой, кнопка запуска неактивна, есть кнопка остановки:
А тут верхняя панель без запущенной ячейки, кнопка запуска активна:
Дальше надо включить уже установленный Fooocus и войти в него. Есть два путя: простой и сложный. Разницы в функционале не будет. Начнём со сложного. В разделе "Включение WebUI" находим ячейку с кодом для первого варианта, где код для ngrok. В этом случае нам потребуется токен для ngrok. Получить его просто. Сначала идём на сайт ngrok.com под VPN, так как русским оркам туда нельзя. Регистрируемся, логинимся и в левом блоке открываем раздел "Your Authtoken".
На скриншоте выше показан нужный раздел. В правом поле на скриншоте расположен токен, копируем его. Свой токен я частично прикрыл. Возвращаемся в ноутбук и находим в ячейке для авторизации в ngrok строчку с переменной Ngrok_token. Скриншот ниже.
Вставляем полученный токен ngrok в переменную. Выглядеть это должно так:
Запускаем ячейку через верхнюю панель, как и предыдущую. Внизу ячейки опять появится лог. Ждём, пока в логе внизу не появится строчка "App started successful. Use the app with http://127.0.0.1:7865/ or 127.0.0.1:7865". Это значит, что Fooocus запущен успешно. Теперь нам будет нужно найти в логе ссылку для авторизации, она в начале лога и заканчивается на ngrok-free.app. Пример в скриншоте ниже:
При каждом запуске ссылка будет меняться. Копируем ссылку и вставляем в адресную строку в другой вкладке браузера. Откроется вот такое окно:
Жмём по кнопке "Visit Site" и заходим в интерфейс Fooocus. Всё получилось:
Теперь войдём в Fooocus вторым путём. В разделе "Включение WebUI" находим ячейку с кодом для второго варианта, где код для RemoteMoe. Включаем эту ячейку. Ждём, пока в логе не появится строчка "App started successful. Use the app with http://127.0.0.1:7865/ or 127.0.0.1:7865". Она так же означает, что Fooocus стартовал успешно. Опять ищем в логе ссылку для авторизации, она тоже сверху, тоже меняется при каждом запуске и кончается на remote.moe:
Открываем её в новой вкладке браузера и видим тот же Fooocus:
Через remote.moe авторизация намного быстрее, так как не нужна предварительная подготовка. Собственно, Fooocus мы уже запустили,  гойда! По умолчанию установлена модель jaggernautXL_v8 и ничего не делающая LoRA. Можно уже генерить.
Однако если вам этого мало, то можно и нужно поставить свои модели и LoRA, потому пойдём по следующим ячейкам. Сразу остановим ячейку с работающим Fooocus, чтобы была возможность работать с другими ячейками. В верхней панели жмём "Cancel Run":
Ячейка с Fooocus остановилась, листаем ноутбук вниз. Видим ячейки для установки моделей и LoRA в постоянное хранилище:
Обе ячейки работают так, что они качают модель, она же чекпойнт, или LoRA под заданным вами именем в нужную для Fooocus папку, поэтому установку LoRA я рассматривать не буду. Разберём только установку модели. Идём на civitai.com и ищем чекпойнт для SDXL. Модели для других нейронок с Fooocus несовместимы.
Как найти модель или LoRA на CivitAI: идём в раздел с моделями, жмём кнопку "Filters" и выставляем параметры "Model Types" на "Checkpoint" или "LoRA", а "Base model" на "SDXL 1.0". Скриншот ниже:
Допустим, я нашёл чекпойнт "Memes XL Turbo" и хочу скачать его в свой Fooocus. Для этого нам в ячейке для скачки нужно переназначить две переменные: "model_url" - это ссылка на скачку; "model_name" - имя файла с моделью. 
Нам нужна прямая ссылка на скачку. Я её получаю так: в браузере Vivaldi я начинаю скачивание: 
Дальше в списке загрузок я останавливаю скачку и по правому клику на закачку открываю меню, в котором копирую ссылку:
Ссылку я вставляю в ячейку с кодом в переменную "model_url", а имя модели пишу сам в переменную "model_name". Чтобы было понятнее, сначала очистите обе переменные в ячейке:
Затем подставьте нужные данные:
Запустите ячейку.  Если лог выглядит так и выполнение ячейки остановилось, то модель установлена:
В Fooocus выбираем скачанную модельку, она работает:
Ну вот и двухвостый жадный поросёнок:
А теперь очень важно. В правом блоке в разделе "Output" смотрим то, сколько памяти мы занимаем, нам доступно 19.5 гигабайт. После установки и запуска Fooocus занимает 7.2 GB вместе с JaggernautXL: 
Если же вы наигрались с одной скачанной вами моделькой и хотите запустить другую, то памяти не хватит, скачанную ранее модель придётся удалить. У вас опять же два путя: удалить вообще все модели или поставить файловый менеджер и удалить конкретную. Плюсом в файловом менеджере можно работать с какими-либо файлами конкретно, изменяя их или перемещая.
Ячейка в разделе "Удалить все модели и LoRA из постоянного хранилища" делает именно то, что и написано. Полезно, если вы не хотите заходить ради этого в файловый менеджер.
Ниже неё есть раздел с файловым менеджером. Там есть две ячейки: первая ячейка с установкой, вторая с запуском. Запуск через remote.moe, как и Fooocus, тоже надо искать ссылку для входа в логе. Сделали то, что нужно, ячейку выключили. 
Есть ещё две ячейки: установка LoRA во временное хранилище, это третья ячейка в разделе "Установка моделей и LoRA", и ячейка в разделе "Пример создания ярлыка на временную LoRA". 
Ячейку с установкой во временное хранилище устанавливаем так же, как делали это ранее с моделью, подставляя ссылку на скачку и название и запуская ячейку. Чтобы Fooocus увидел эту LoRA, нам надо сделать ярлык на неё в нужной для Fooocus папке. В ячейке в разделе "Пример создания ярлыка на временную LoRA" название LoRA меняем на то название, с которым мы скачивали, затем запускаем.
С функциями ноутбука разобрались. Не будем забывать, что после окончания работы его надо выключить, а то время будет идти и квота уйдёт впустую. В верхней панели жмём на три точки и затем на "Stop Session":
На этом разбор ноутбука закончен. Некоторые моменты, не вошедшие в повествование:
- при выборе пресета (галочка на Advanced - раздел Setting - блок Preset), если выбрать realistic, то автоматически начнёт качаться чекпойнт. Это кушает физическую память, так что имейте в виду.
- если выбрать много параметров в разделе "Style", то ноутбук сломается из-за нехватки свободной оперативной памяти. Выбирайте два-три.
- около двух минут генерируется одна картинка на Performance Quality.
- напоследок могу посоветовать после окончания работы останавливать сессию и удалять ноутбук (File - Delete Notebook), а потом скопировать его заново и установить Fooocus в нём снова. Если этого не делать, то иногда бывают баги, которые отследить и исправить у меня не удалось.
Спасибо за прочтение! Этот гайд был опубликован бесплатно, поэтому, если он был вам полезен, то, пожалуйста, подпишитесь на мой Telegram @bazilevs_based и поддержите меня подпиской на Boosty, чтобы я смог писать подобные гайды чаще и делать видео качественнее, так как ваша поддержка напрямую влияет на мои видео.

Уровни подписки

Базозавр-котёнок

$ 1,13 в месяц
Маленькая поддержка

Базозавр-слон

$ 2,82 в месяц
Поддержка побольше

Гигабазозавр

$ 5,7 в месяц
Жесть какая большая поддержка
Наверх