Зима грустное время года. От скуки и серости я решился на вторую попытку исследования генеративных нейросетей. Впервые я экспериментировал с ними в 2022 году и за прошедшее с тех пор время они совершили большой скачок вперёд.
Меня всегда интересовала возможность запуска локально на своём компьютере, который я с тех пор не обновлял. Тогда мне удалось с большим трудом всё настроить и даже получить какие-то картинки, но качество их было довольно посредственным. Правда тогда это воспринималось как большой успех.
В этот раз задача была более амбициозной: добиться качества изображения как на бесплатных сервисах в интернете. Некоторую сложность добавляло отсутствие вообще какой бы то ни было видеокарты, но технологии продвинулись настолько, что даже это перестало быть большой проблемой.
Я долго решал нужно ли детально описывать конкретику, но в итоге решил не углубляться в технические детали. У меня Линукс и для большинства они все равно будут бесполезны. К тому же по конкретным технологиям в сети информации много, но что выбрать и как связать не всегда бывает понятно.
Так как я планировал использовать только CPU, то решил использовать Stable Diffusion cpp. Скачивается оно с Github’а и собирается из исходников уже на месте. У меня все получилось сразу без каких-либо проблем. Дальше нужно скачать модель. Выбор огромен, но чтобы сэкономить память лучше качать модели с квантованием в формате gguf. Они и на диске занимают меньше места. Гнаться за совсем маленькими моделями с квантованием 4 бита наверное не стоит. Я выбрал 8 битную модель.
Чтобы сократить время создания изображения стоит использовать так называемые lighting или turbo модели. Они позволяют получить результат за 6-8 шагов, вместо 25-30 у обычных. Когда один шаг выполняется 60-120 секунд это значительно ускорит процесс.
Модели довольно большие и скачивать придётся много — порядка 4-8 Гб. Лучше использовать что-то типа wget, который позволяет докачивать файл, если связь оборвалась.
Вот собственно и всё. Можно попробовать сгенерировать первую картинку. Но писать длинные консольные команды неудобно, поэтому я написал на Питоне графический интерфейс для генерации картинок. Я не знал, что существуют уже готовые интерфейсы иначе скачал бы какой-нибудь из них, но сейчас жалко затраченных сил, поэтому продолжу использовать и совершенствовать свой.
Работает это не быстро. На моем оборудовании картинка рисуется около 10 минут. Но оно того стоит. Главные преимущества — отсутствие зависимости от чужого сервиса и интернета, не нужна регистрация, полная приватность и отсутствие цензуры.
Конечно, с хорошей видеокартой процесс шел бы в десятки раз быстрее, но мой опыт доказывает: нейросети сегодня доступны каждому, даже на относительно старом «железе» без GPU.
Однако получить просто качественную картинку — это только полдела. Настоящая магия начинается тогда, когда ты можешь заставить нейросеть рисовать именно то что нужно тебе, сохраняя единый стиль или конкретного персонажа.
В следующей части я расскажу о том, что такое LoRA и своем опыте обучения.


