На прошлой неделе я исследовал некоторые инструменты графического дизайна ИИ, в том числе Стабильная диффузия. Большинство инструментов для создания изображений ИИ основаны на стабильной диффузии, но либо стоят денег, либо работают в медленной общей среде с другими пользователями. Сегодня я потратил несколько часов, пытаясь запустить 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 локально:
- Загрузите исходный код Stable Diffusion с GitHub — https://github.com/Stability-AI/stablediffusion.
клон git https://github.com/Stability-AI/stablediffusion.git
2. Загрузите исходный код xformers. Это необязательная библиотека, которая повышает производительность Stable Diffusion и практически необходима для бесперебойной работы.
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 на локальном компьютере, я пришел к выводу, что мое оборудование слишком устарело / несовместимо с компьютером, который я использовал. Тем не менее, мне удалось запустить инструмент и решить несколько промежуточных проблем, прежде чем столкнуться с аппаратным препятствием. Я уверен, что выполнение тех же шагов на более новом компьютере (из этого десятилетия) будет успешным. Я планирую попробовать это снова в ближайшие несколько недель с более новым компьютером.