Специально указала длинный текст баннера, чтобы посмотреть как он будет адаптировать на устройствах
Гайд по запуску ComfyUI на Huawei Atlas 300i Duo

Гайд по запуску ComfyUI на Huawei Atlas 300i Duo

Гайды Средний
0
0

Введение

В прошлой статье мы рассказали вам, как запускать большие языковые модели на китайском ИИ-ускорителе Huawei Atlas 300i Duo. Но на развертывании LLM возможности этого передового решения не заканчиваются — вы также можете использовать его для инференса диффузионных нейросетей, генерирующих детальные изображения по вашему текстовому запросу или по референсным медиа-материалам. Однако, ввиду специфики программного стека и отсутствия большого ИИ-сообщества вокруг решений Huawei, найти полезный гайд по развертыванию диффузионок на NPU-ускорителях — дело непростое. Команда ServerFlow решила исправить это и подготовила для вас подробное руководство по запуску диффузионных ИИ-моделей через ComfyUI на Huawei Atlas 300i Duo.

Скачивание и запуск контейнера

О подготовке системы, скачивании драйверов и дополнительных инструментов мы рассказывали в предыдущем материале, поэтому сразу переходим на этап скачивания и развертывания контейнера движка инференса MindIE с ComfyUI. Для этого идем на официальный страницу с версиями сборок контейнеров MindIE и выбираем версию 2.2.RC1-300I-Duo-py311-openeuler24.03-lts. Находим нужный контейнер и выполняем установку командой:

docker run -itd –net=host –ipc=host –shm-size=2g –name mindie_2.2_comfyui_test

–device=/dev/davinci0 –device=/dev/davinci1 –device=/dev/davinci_manager

–device=/dev/hisi_hdc –device=/dev/devmm_svm

-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro

-v /usr/local/sbin:/usr/local/sbin:ro

-v /data/models:/data/models

-v /root/.cache/huggingface:/root/.cache/huggingface:r

swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.2.RC1-300I-Duo-py311-openeuler24.03-lts

Не забываем указать название образа, чтобы Docker автоматически выполнил его пул. В нашем случае название: mindie_2.2_comfyui_test.

После установки запускаем контейнер командой:

docker start mindie_2.2_comfyui_test

Затем войдите в контейнер командой:

docker exec -it mindie_2.2_comfyui_test bash

После входа в среду, пропишите команду для проверки работы NPU-ускорителя внутри контейнера:

npu-smi info

Теперь клонируем репозиторий ComfyUI версии 0.3.65 в контейнер:

wget -O ComfyUI-v0.3.65.zip https://github.com/comfyanonymous/ComfyUI/archive/refs/tags/v0.3.65.zip

Затем нужно распаковать архив через этот python-скрипт:

python3 – <<‘PY’

import zipfile

with zipfile.ZipFile(‘/ComfyUI-v0.3.65.zip’, ‘r’) as z:

z.extractall(‘/’)

print(‘done’)

PY

Теперь нужно перейти в папку с файлами ComfyUI командой:

cd ComfyUI-0.3.65/

В эту папку нужно установить все необходимые зависимости для запуска ComfyUI. Мы будем скачивать их будем через зеркало Huawei Cloud PyPI mirror.

pip install -r requirements.txt -i

https://mirrors.huaweicloud.com/repository/pypi/simple

Когда все зависимости установлены, нужно проверить версии torch-модулей — убедитесь, что они полностью идентичны нашим версиям.

Корректные версии torch-модулей ComfyUI
Корректные версии torch-модулей. Источник: YouTube.

Для проверки выполните команду:

pip list | grep torch

Запуск сервера инференса ComfyUI

Если все выполнено корректно, можно приступать к запуску сервера инференса ComfyUI:

python3 main.py –listen 0.0.0.0 –port 8188 –auto-launch –disable-xformers –cpu-vae

Как вы можете заметить, мы перенесли VAE-операции на CPU, и это сделано не просто так. Дело в том, что в противном случае ComfyUI не будет работать корректно на Huawei Atlas 300i Duo, так как при выполнении операций кодирования и декодирования VAE на NPU могут возникать ошибки совместимости отдельных операторов и типов данных, из-за чего генерация будет завершается с ошибкой.

После запуска сервера в терминале появится ссылка, при переходе на которую вы попадете в интерфейс ComfyUI. Теперь перейдите во вкладку templates и найдите Stable Diffusion XL, после чего выберите именно модель в SDXL Turbo workflow и скопируйте ее URL. Скачайте веса нейросети в папку checkpoints.

Затем перейдите в контейнер и перейдите в эту папку:

comfyui/models/checkpoints

Теперь пропишите wget и вставьте скопированный URL. Дождитесь скачивания, после чего вы можете перейти в ComfyUI и запустить генерацию изображения. Рекомендуем отслеживать нагрузку на NPU при генерации с помощью команды npu-smi info. Не удивляйтесь, что нагрузка идет только на один чип — дело в том, что ComfyUI не может распределить нагрузку между двумя чипами. Первая генерация займет очень много времени, но последующие запуски будут происходить почти моментально.

Инференс SDXL Turbo в ComfyUI на Huawei Atlas 300i Duo

Скорее всего, сгенерированные изображения вас не обрадуют — SDXL Turbo вышла еще в 2023 году, поэтому уровень ее производительности оставляет желать лучшего. Результаты генерации показали в нашем новом видео на YouTube. Другие, более современные ИИ-модели, к сожалению, не поддерживают запуск на Huawei Atlas 300i Duo. Мы также делали попытки выполнить инференс более современных диффузионок, таких как Flux 1.dev и Wan2.1, но они не увенчались успехом — flux 1.dev просто не поддерживается, а генерация видео wan2.1 обрывается, так как мощностей одного NPU просто не хватает.

Выводы

Несмотря на то, что запуск ComfyUI на Huawei Atlas 300i Duo возможен, особого смысла в таком сценарии использования нет — ИИ-ускоритель поддерживает только старые модели, а из-за особенностей работы платформы ComfyUI, нагрузка будет уходить только на один NPU-чип, что режет производительность генерации в два раза. Ввиду этого, можно подвести итог, что Huawei Atlas 300i Duo — это отличное решение для инференса именно больших языковых моделей, но никак не диффузионных нейросетей. Если вы решили приобрести Huawei Atlas 300I Duo, обращайтесь в компанию ServerFlow — наши специалисты проведут вас за руку от покупки топового китайского ИИ-ускорителя до настройки всего необходимого софта и запуска вашей первой локальной ИИ-модели.

Оставь свой комментарий