На прошлой неделе я исследовал некоторые инструменты графического дизайна ИИ, в том числе Стабильная диффузия. Большинство инструментов для создания изображений ИИ основаны на стабильной диффузии, но либо стоят денег, либо работают в медленной общей среде с другими пользователями. Сегодня я потратил несколько часов, пытаясь запустить Stable Diffusion на своем компьютере, чтобы я мог бесплатно генерировать изображения AI.

Для тех, кто не знает контекста, это связано с серией блогов под названием 30 Days of AI, где я поставил перед собой задачу провести следующие 30 дней, изучая ИИ больше.

Что такое стабильная диффузия?

Стабильная диффузия — это модель ИИ, которую можно использовать для создания изображений из текста или других изображений. Это открытый исходный код, и на его основе построено несколько бесплатных / платных инструментов. Однако можно скачать и запустить Stable Diffusion бесплатно.

Шаги установки

Эти шаги установки предполагают, что используемый компьютер работает под управлением Windows (≥ Windows 10) или непосредственно на актуальном дистрибутиве Linux, таком как Ubuntu.

Предпосылки

Прежде чем приступить к работе, обязательно ознакомьтесь с несколькими вещами:

  • Если работаете в Windows, установите wsl. Это позволяет этой функции запускать Linux непосредственно внутри Windows. Это можно сделать, открыв командную строку и набрав:

wsl — установить

  • Убедитесь, что драйверы видеокарты полностью обновлены. Например, у меня есть карта NVIDIA GeForce, поэтому я скачал последнюю версию драйвера с https://www.nvidia.com/Download/index.aspx.
  • Убедитесь, что при использовании видеокарты она имеет >4 ГБ видеопамяти, но в идеале что-то вроде 8–12 ГБ видеопамяти для оптимальной производительности.
  • Убедитесь, что у вас есть как минимум 10–20 ГБ свободного места на диске. Или не менее 50–100 ГБ при первом включении WSL в Windows.
  • Убедитесь, что установлен git. Если вы используете WSL, обязательно установите его внутри WSL.
  • Убедитесь, что в WSL установлен Python версии ≥ 3.10. При использовании WSL с Ubuntu Linux в APT необходимо добавить дополнительный источник диспетчера пакетов. Это связано с тем, что Ubuntu по умолчанию не позволяет APT загружать Python › 3.8.

sudo add-apt-repository ppa:deadsnakes/ppa

sudo apt установить python3.10

  • Установите менеджер пакетов Conda/Miniconda — https://docs.conda.io/en/latest/miniconda.html. Это используется для облегчения установки зависимостей для Stable Diffusion.

Основные шаги

Я выполнил следующие шаги, чтобы запустить Stable Diffusion локально:

  1. Загрузите исходный код Stable Diffusion с GitHub — https://github.com/Stability-AI/stablediffusion.

клон git https://github.com/Stability-AI/stablediffusion.git

2. Загрузите исходный код xformers. Это необязательная библиотека, которая повышает производительность Stable Diffusion и практически необходима для бесперебойной работы.

git клон https://github.com/facebookresearch/xformers

3. Установите xformers напрямую из исходников. Только так я смог установить его правильно. Инструкции находятся на странице GitHub, указанной выше, но для удобства вставлены сюда:

pip install ninja
pip install -v -U git+https://github.com/facebookresearch/xformers.git@main#egg=xformers

Чтобы убедиться, что xformers установлен правильно, запустите:

python -m xformers.info

4. Перейдите в каталог Stable Diffusion и создайте среду conda.

conda env create -f environment.yaml
conda активирует ldm

5. Загрузите вес модели с сайта HuggingFace.co. Это модель с открытым исходным кодом для Stable Diffusion 2.1 — https://huggingface.co/stabilityai/stable-diffusion-2-1/blob/main/v2-1_768-ema-pruned.ckpt.

Запуск стабильной диффузии

После установки инструмент можно запускать со сценариями режима преобразования текста в изображение или изображения в изображение. Вот пример команды для создания изображения из текста:

python scripts/txt2img.py — подсказка «футуристический 3D-робот в фетровой шляпе, приподнимающей шляпу» — ckpt ../models/v2–1_768-ema-pruned.ckpt — config configs/stable-diffusion/v2-inference-v .yaml — H 256 — W 256 — устройство cuda

Примечание. Флаг —ckpt должен указывать на то, куда модель была загружена на диск в рамках шага 5 установки.

Примечание: в случае возникновения проблем можно изменить флаг устройства — на «cpu» вместо «cuda». Значение «cuda» будет пытаться использовать GPU для более быстрой обработки

Общие проблемы

Я столкнулся со многими проблемами, когда пытался запустить это. Вот несколько ошибок, с которыми я столкнулся, и я понял, как их обойти.

ModuleNotFoundError: нет модуля с именем «ldm»

Существует проблема GitHub с некоторыми полезными комментариями о том, как решить эту проблему. Я смог решить эту проблему, добавив некоторый код в начало скрипта txt2img.py:

импорт системы

sys.path.append("/sd/stablediffusion")

Примечание. В /sd/stablediffusion я установил Stable Diffusion. Это заставляет код добавлять этот каталог к ​​путям при поиске загружаемого модуля ldm.

RuntimeError: ожидаемый скалярный тип BFloat16, но найдено значение Float

Я столкнулся с этой проблемой при попытке запуска с использованием «процессора» вместо «cuda» в качестве устройства. Похоже, что на некоторых процессорах есть некоторые проблемы с поддержкой, из-за которых эта ошибка может быть выдана. Реальный обходной путь здесь — либо запустить на более новом процессоре, либо переключиться на CUDA в качестве устройства обработки.

Убит

Эта расплывчатая ошибка может означать множество разных вещей. Что касается моей настройки, я узнал, что Stable Diffusion пытается использовать большой объем оперативной памяти в WSL на Windows. По умолчанию WSL выделяет только около 50% системной оперативной памяти для WSL, поэтому, если какой-либо процесс попытается использовать больше, чем это, он будет убит. Я нашел еще одну полезную проблему с GitHub, в которой обсуждался полезный обходной путь обновления ограничений памяти WSL. Для этого выполните в командной строке следующее (это перезапустит WSL):

Запись-вывод «[wsl2]
memory=14GB» ›› «${env:USERPROFILE}\.wslconfig»

wsl — выключение

Примечание. В моей настройке мне пришлось разрешить до 14 ГБ (из моих максимальных 16 ГБ), прежде чем я перестал видеть эту ошибку.

tritonflashattF` не поддерживается, потому что:
xFormers не был собран с поддержкой CUDA
требуется устройство с возможностями › (8, 0), но у вашего графического процессора есть возможности (5, 2)

В итоге я столкнулся с этой и несколькими подобными ошибками после переключения на устройство CUDA/GPU для обработки. В основном это означает, что графический процессор слишком стар для поддержки возможностей, необходимых инструменту стабильной диффузии. К сожалению, я не нашел никакого обходного пути, кроме как обновить аппаратное обеспечение графического процессора до чего-то более нового.

‹‹ ЭОМ ››

К сожалению, потратив несколько часов на решение проблем с попыткой запустить Stable Diffusion на локальном компьютере, я пришел к выводу, что мое оборудование слишком устарело / несовместимо с компьютером, который я использовал. Тем не менее, мне удалось запустить инструмент и решить несколько промежуточных проблем, прежде чем столкнуться с аппаратным препятствием. Я уверен, что выполнение тех же шагов на более новом компьютере (из этого десятилетия) будет успешным. Я планирую попробовать это снова в ближайшие несколько недель с более новым компьютером.