Top.Mail.Ru
Гайд по инференсу Qwen-30B и Qwen3-32B на Huawei Atlas 300i Duo | Блог ServerFlow Скачать
прайс-лист
Бесплатная
доставка по РФ
Бонус за
обратную связь
Интернет-магазин
Серверного оборудования
8 (800) 222-70-01 Консультация IT-специалиста Сравнение

Гайд по инференсу Qwen-30B-A3B Q8 и Qwen3-32B на Huawei Atlas 300i Duo 96 GB

~ 15 мин
3220
Сложный
Гайды
Гайд по инференсу Qwen-30B-A3B Q8 и Qwen3-32B на Huawei Atlas 300i Duo 96 GB

Введение

Китайские ИИ-ускорители считаются моветоном для большинства ИИ-энтузиастов. И дело не в том, что у них слабая производительность или мало VRAM — напротив, такие решения, как Huawei Atlas 300i Duo с 96 ГБ памяти и производительностью до 280 TOPS в INT8 дают возможность вполне успешно запускать даже самые современные ИИ-модели. А вот то, что действительно отпугивает любителей локального инференса, так это сложность настройки и запуска LLM на китайском чуде техники. Мы прошли эти 9 кругов ада на личном опыте, причем неоднократно, поэтому команда ServerFlow решила пощадить нервы наших читателей, подготовив подробный гайд (и видеогайд) по инференсу передовой ИИ-модели Qwen3-30B-A3B на не менее передовом NPU-ускорителе Huawei Atlas 300i Duo.

Подробнее о Huawei Atlas 300i Duo

Huawei Atlas 300I Duo — это однослотовый, полнопрофильный ИИ-ускоритель от компании Huawei, представленный в 2022 году и предназначенный для инференса локальных моделей искусственного интеллекта. Dual в названии этого решения добавлено не для красного словца — ускоритель имеет два NPU-процессора Ascend 310P, которые обеспечивают ИИ-производительность до 280 TOPS в INT8 и 140 TFLOPS в FP16, сохраняя энергоэффективность на уровне 1,86 TOPS/Вт. Но ключевая особенность Huawei Atlas 300I Duo даже не в двухчиповой конфигурации, а в огромном объеме память — 96 ГБ LPDDR4X. Да, это не сверхскоростная HBM и даже не быстрая GDDR, но за счет внушительной емкости VRAM, на карте можно с легкостью запускать даже самые современные языковые модели. Huawei Atlas 300I Duo поддерживает интеграцию в слот PCIe Gen4 x16 и потребляет всего 150 Вт. Карта имеет пассивную систему охлаждения, поскольку изначально Huawei Atlas 300I Duo ориентированы на интеграцию в плотные серверные шасси. Само собой, никаких CUDA и уж тем более ROCm эта карточка не поддерживает — у Huawei есть своя открытая библиотека инструментов для выполнения задач искусственного интеллекта под названием CANN. Пока решение выглядит как идеальный ИИ-ускоритель для тех, кто не хочет переплачивать за GPU AMD и Nvidia, но есть несколько важных нюансов, о которых мы расскажем ниже.
Huawei Atlas 300i Duo 96 GB
Передовой китайский ИИ-ускоритель Huawei Atlas 300I Duo с 96 ГБ  LPDDR4X.

Развертывание ИИ на Huawei Atlas 300I Duo

Переходим к гвоздю программы — пошаговому руководству для запуска нейросети Qwen3-30B-A3B на Huawei Atlas 300I Duo.

Подготовка системы и установка драйверов

Для начала обновим зависимости и встроенные инструменты командами:

sudo apt-get update
sudo apt-get install -y net-tools
sudo apt-get install -y make dkms gcc linux-headers-$(uname -r)

Затем выполним установку драйверов с официального сайта Huawei Ascend. Выберите тип устройства “ИИ-ускоритель”, название карты “Huawei Atlas 300I Duo”, версию библиотеки CANN 8.5.0, тип устройства NPU, формат пакетов run, архитектуру центрального процессора (в нашем случае x86) и версию прошивки Ascend HDK 25.3.RC1. Затем перед вами появится список драйверов — для скачивания у вас должен быть аккаунт на hiascend.com. Чтобы облегчить вам задачу, мы загрузили драйвера на Huawei Atlas 300I Duo в наш Telegram-канал и на наш файловый сервер.

Страница скачивания драйверов Huawei Ascend
Страница скачивания драйверов Huawei Ascend. Источник: Huawei Ascend.

Затем необходимо перейти в терминал и сделать файлы исполняемыми. Для этого выполните команду:

chmod +x Ascend-hdk-<chip_type>-npu-driver_<version>_linux-<arch>.run
chmod +x Ascend-hdk-<chip_type>-npu-firmware_<version>.run

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

sudo ./Ascend-hdk-310p-npu-driver_25.3.rc1_linux-x86-64.run --full --install-for-all

После успешной установки драйверов ИИ-ускорителя, вам также нужно обновить Firmware. Для этого введите команду:

sudo ./Ascend-hdk-310p-npu-firmware_7.8.0.2.212.run --full

После успешной установки всех драйверов, перезагрузите систему, чтобы изменения вступили в силу. Чтобы проверить, видит ли система ИИ-ускоритель Huawei Atlas 300I Duo, введите команду:

npu-smi info

Установка движка инференса MindIE

Huawei Atlas 300i Duo поддерживает инференс через движки vLLM или llama.cpp, но скорость оставляет желать лучшего — для достижения наибольшей производительности, Huawei разработала свой собственный открытый движок под названием MindIE. Вы могли бы подумать, что это очередной китайский костыль, который не идет ни в какое сравнение с западными аналогами, но вы ошибаетесь. MindIE поддерживает все современные механизмы ускорения инференса искусственного интеллекта, вроде PagedAttention, Continuous Batching, Sinking и далее по списку. В общем, в производительном многопоточном инференсе MindIE ничем не уступает тому же llama.cpp. Кроме того, MindIE поддерживает инференс современных открытых LLM, включая DeepSeek, Qwen, Mistral, GLM и других топовых нейросетей.

Страница движка инференса Huawei MindIE
Страница движка инференса Huawei MindIE. Источник: Huawei Ascend.

Чтобы скачать движок, перейдите на официальный страницу с версиями сборок контейнеров MindIE и выберите версию, которая подходит под версию вашей ОС, версию CANN 8.5.0 и архитектуру центрального процессора. В нашем случае мы будем использовать сборку 2.2.RC1-300I-Duo-py311-openeuler24.03-lts, так как именно на ней наиболее стабильно выполняется квантизация нейросетей и инференс ИИ-модели Qwen3, которую мы будем запускать на Huawei Atlas 300I Duo. Учтите, что если вы собираетесь запускать именно MoE-версию Qwen3, вам потребуется сборка 2.3.0-300I-Duo-py311-openeuler24.03-lts.

Затем выполняем установку контейнера для квантизации командой:

docker run -itd --net=host --ipc=host --shm-size=2g --name mindie_2.2_video
 --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:rw \
swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.2.RC1-300I-Duo-py311-openeuler24.03-lts

Для инференса ИИ-моделей также нужно установить отдельный контейнер, в нем будет выполняться непосредственно запуск LLM после их квантизации. Для установки контейнера инференса введите команду:

docker run -itd --net=host --ipc=host --shm-size=2g --name mindie_2.2_video
 --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:rw / swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.3.0-300I-Duo-py311-openeuler24.03-lts

Также не забудьте указать название образа, чтобы Docker автоматически выполнил его пул, если его нет на устройстве. В нашем случае назовем контейнер mindie_2.2_test. Вся дальнейшая настройка будет происходить именно в этом контейнере. Выполните команду для старта контейнера:

docker start mindie_2.2_test

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

docker exec -it mindie_2.2_test bash

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

dnf install -y git

В конце выполните установку cmake make в контейнере командой:

dnf install -y cmake make gcc gcc-c++ git

Квантизация Qwen3-32B на Huawei Atlas 300I Duo

Квантизация на ИИ-ускорителях Huawei Atlas 300I Duo — это не то же самое, что и на решениях AMD/Nvidia, так как квантизация напрямую связана с движком инференса MindIE и софтом для квантизации msModelSlim.

Квантизация выполняется следующим образом:
  • Берется исходная модель в формате FP16;
  • Через msModelSlim выбирается нужный режим квантизации;
  • Программа msModelSlim создает новые веса, дополнительные служебные тензоры и наборы параметров;
  • Результат квантизации сохраняется в виде нового набора файлов;
  • После этого готовая модель запускается через MindIE.
Как работает квантизация ИИ-моделей в экосистеме Huawei
Как работает квантизация ИИ-моделей в экосистеме Huawei. Источник: YouTube.

Huawei предлагает 5 методов квантизации нейросетей:
  • W8A8 — веса и активации переводятся в INT8, поддерживается на Huawei Atlas 300I Duo и Huawei Atlas 800I A2;
  • W8A8SC/W16A16SC — специальный формат для разряженной квантизации, где веса и активации переводятся в 8 или 16 бит, часть маловажных весов обнуляются и дополнительно кодируются, поддерживается только на Huawei Atlas 300I Duo;
  • W8A16 — веса в INT8, активации в 16-бит, поддерживается на Huawei Atlas 800I A2;
  • W4A8 — особый режим для MoE-моделей, поддерживается на Huawei Atlas 800I A2.
Виды квантизации в экосистеме Huawei
Виды квантизации в экосистеме Huawei. Источник: YouTube.

Чтобы приступить к процессу квантизации, сначала необходимо клонировать репозиторий msModelSlim с Git командой: 

env -u LD_LIBRARY_PATH git clone https://gitcode.com/Ascend/msit

После этого нужно перейти в msModelSlim и запустить bash-скрипт для установки необходимых зависимостей и сборки компонента weight_compression под установленный CANN, чтобы дальше можно было выполнять sparse-компрессию и упаковку весов в формат. Для перехода в msModelSlim введите команду:

cd msit/msmodelslim/

Для запуска bash-скрипта введите команду:

cd/usr/local/lib/python3.11/site-packages/msmodelslim/pytorch/weight_compression/compress_graph/
bash build.sh ~/../usr/local/Ascend/ascend-toolkit/latest
chmod -R 550 build

Затем создайте папку, чтобы сохранять квантизованную модель командой:

mkdir -p ~/../data/models/Qwen3-32B-w8a8s

В нашем случае мы будем выполнять кванизацию W8A8S ИИ-модели Qwen3-32B. Стоит отметить, что квантизацию ИИ-ускоритель Huawei Atlas 300I Duo поддерживает только на одном NPU-чипе, поэтому второй чип нужно временно сделать невидимым командой:

export ASCEND_RT_VISIBLE_DEVICES=0

Затем запускаем квантизацию указав путь до исходной модели, путь до квантизованной модели, NPU-чип и тип квантизации. Для запуска введите команду:

msmodelslim quant --model_path /data/models/Qwen3-32B --save_path /data/models/Qwen3-32B-w8a8s/ --device npu --model_type Qwen3-32B --quant_type w8a8s --trust_remote_code True

Будьте готовы, что процесс будет долгим — у нас он занял 17 минут.

А теперь необходимо закончить квантизацию модели Qwen3-32B, но уже в формат W8A8SC. Для этого также нужно создать отдельную папку командой:

mkdir -p /data/models/Qwen3-32B-w8a8sc-tp2

В этот раз нужно включить уже оба чипа, так как в противном случае готовая модель будет запускаться только на одном NPU, что урежет производительность в два раза. Для активации двух чипов введите команду:

export ASCEND_RT_VISIBLE_DEVICES=0,1

Затем запускаем скрипт для квантизации W8A8SC следующей командой:

torchrun --nproc_per_node 2
 -m examples.convert.model_slim.sparse_compressor
 --model_path /data/models/Qwen3-32B-w8a8s
 --save_directory /data/models/Qwen3-32B-w8a8sc-tp2

Квантизация снова отнимет много времени — в этот раз 21 минута.

Квантизация Qwen-30B-A3B Q8 на Huawei Atlas 300I Duo

Мы также решили выполнить квантизацию MoE-модели Qwen-30B-A3B Q8, которая при инференсе будет работать быстрее стандартной dense-модели.

Для этого снова создаем отдельную папку для MoE-модели и выполняем скрипт, модифицированный нашими специалистами, так как стандартный алгоритм квантизации не работает. Скрипт скинули в наш Telegram-канал. Для запуска скрипта выполните команду:

python3 /usr/msit/msmodelslim/example/Qwen3-MOE/quant_qwen_moe_w8a8.py \
 --model_path /data/models/Qwen3-30B-A3B \
 --save_path /data/models/Qwen3-30B-A3B-w8a8-fixed \
 --anti_dataset /data/models/qwen3-moe_anti_prompt_50.json \
 --calib_dataset /data/models/qwen3-moe_calib_prompt_50.json \
 --batch_size 1 \
 --device_id 0 \
 --trust_remote_code True

В отличие от dense-модели, при квантизации MoE каждый слой нейросети будет обрабатываться поочередно, что можно наглядно увидеть в логах.

Запуск моделей через движок инференса MindIE

Чтобы запустить квантизированные модели, необходимо отредактировать конфиг-файл MindIE: выключите https, укажите номера NPU-чипов, их количество, а также путь до выбранной модели. Чтобы открыть конфиг-файл, введите команду:

vim usr/local/Ascend/mindie/latest/mindie-service/conf/config.json

Затем добавить в окружение пути к библиотекам PyTorch, а также загрузить переменные окружения MindIE Service и Ascend Toolkit. Это нужно для того, чтобы система корректно находила исполняемые файлы необходимые для работы сервиса и NPU. Для этого введите команду:

export LD_LIBRARY_PATH=/usr/local/lib64/python3.11/site-packages/torch/lib:$LD_LIBRARY_PATH
 source /usr/local/Ascend/mindie/latest/mindie-service/set_env.sh
 source /usr/local/Ascend/ascend-toolkit/set_env.sh

После этого запустите mindieserivece deamon — это процесс, который запускает сервер инференса ИИ-моделей через движок MindIE. Для запуска введите команду:

./usr/local/Ascend/mindie/latest/mindie-service/bin/mindieservice_daemon

Если вы увидели надпись “daemon start success”, значит инференс прошел успешно. С ИИ-моделями уже можно вести диалог, но лучше всего перейти в веб-интерфейс для удобства работы, например, OpenWebUI. Для этого перейдите в OpenWebUI, зайдите в настройки администратора, и в настройках подключения OpenAI API укажите эндпоинт с вашим локальным адресом http (именно http, а не https).

Если все введено корректно, в разделе моделей OpenWebUI должна появится ваша ИИ-модель. Выберите ее и смело задавайте свой первый вопрос вашей локальной нейросети!

Инференс Qwen-30B-A3B Q8 на на Huawei Atlas 300I Duo
Инференс Qwen-30B-A3B Q8 на на Huawei Atlas 300I Duo. Источник: YouTube.

Запуск бенчмарков

Теперь давайте запустим несколько бенчмарков, чтобы протестировать скорость инференса ИИ-моделей Qwen-30B-A3B Q8 и Qwen3-32B на Huawei Atlas 300I Duo.

Для этого необходимо установить дополнительный инструмент AISBench. Чтобы запустить установку, введите команду:

git clone https://gitee.com/aisbench/benchmark.git 
cd benchmark/ 
pip3 install -e ./ --use-pep517
pip3 install -r requirements/api.txt 
pip3 install -r requirements/extra.txt

Инструмент AISBench предварительно установлен в образе MindIE, поэтому вы также можете использовать следующую команду, чтобы просмотреть путь установки инструмента AISBench в MindIE:

pip show ais_bench_benchmark

Затем необходимо подготовить набор данных для проведения тестов. Например, можно взять набор gsm8k Скачайте этот набор данных и поместите извлеченный gsm8k/folder в папку ais_bench /databases в корневом каталоге инструмента.

После этого настройте AISBench в зависимости от того, насколько сильно вы хотите нагрузить инференс LLM. После настройки введите команду:

from ais_bench.benchmark.models import VLLMCustomAPIChatStream  
models = [
    dict(
        attr="service",
        type=VLLMCustomAPIChatStream,
        abbr='vllm-api-stream-chat',
        path="",                         
        model="Qwen3-32B",             
        request_rate = 0,                  
        retry = 2,
        host_ip = "localhost",            
        host_port = 8080,                 
        max_out_len = 512,           
        batch_size=1,                 
        generation_kwargs = dict(
            temperature = 0.5,
            top_k = 10,
            top_p = 0.95,
            seed = None,
            repetition_penalty = 1.03,
            ignore_eos = True,        
        )     
    ) 
]

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

ais_bench --models vllm_api_stream_chat --datasets demo_gsm8k_gen_4_shot_cot_chat_prompt --mode perf --debug

Делимся результатами скорости инференса в single batch и в multi batch:

Результаты тестирования инференса в single batch
Результаты тестирования инференса в single batch. Источник: YouTube.

Результаты тестирования инференса в multi batch
Результаты тестирования инференса в multi batch. Источник: YouTube.

Выводы

Локальный инференс на Huawei Atlas 300I Duo — это сложно, это муторно, но это возможно. Конечно, этот ускоритель далеко не Plug-n-Play, а процесс квантизации накладывает дополнительные трудности, но при должной сноровке и, что самое главное, подробным гайдом под рукой, любой ИИ-энтузиаст сможет запустить топовые современные нейросети на этом необычном железе. А если вы решили приобрести Huawei Atlas 300I Duo, но все еще боитесь столкнуться со сложностями развертывания, обращайтесь в компанию ServerFlow — наши специалисты проведут вас за руку от покупки этого передового ИИ-ускорителя до настройки всего необходимого софта и запуска вашей первой локальной ИИ-модели на китайском NPU.
Автор: Serverflow Serverflow
Поделиться

Комментарии 4

Написать комментарий
Илья
При квантизации MoE-модели вы использовали модифицированный скрипт вместо стандартного. Это значит, что стандартные инструменты msModelSlim не поддерживают MoE «из коробки» и требуют ручной доработки под каждую модель или сценарий.
Serverflow
Да, стандартный алгоритм квантизации не заточен под MoE-архитектуру, поэтому пришлось адаптировать скрипт. Для обычных dense-моделей таких проблем не возникает.
Станислав
Неожиданно, что для запуска MoE-версии Qwen3 потребовалась отдельная сборка MindIE 2.3.0, а стандартная 2.2.RC1 не подходит. Значит, поддержка разреженных экспертных моделей в экосистеме Huawei всё ещё привязана к конкретным версиям контейнеров.
Serverflow
Совершенно верно, поддержка MoE-моделей действительно завязана на более свежий контейнер. Версия 2.2.RC1 не умеет работать с экспертной архитектурой.
Pavel
96 ГБ LPDDR4X: это ёмко, но пропускная способность такой памяти на порядок ниже HBM или GDDR. На практике это должно ограничивать скорость инференса при длинном контексте, так как узким местом станет шина памяти, а не вычислительные TOPS.
Serverflow
Верно, для длинных последовательностей пропускная способность LPDDR4X действительно становится бутылочным горлышком, особенно в multi-batch режиме.
Фёдор
При квантизации W8A8A8S для плотной модели вы использовали только один NPU-чип, а для W8A8SC включили оба с torchrun --nproc_per_node 2. Получается, что разреженный формат принципиально требует двухчипового развёртывания, а обычный INT8 может работать на одном?
Serverflow
Да, вы верно заметили. Разрежённая квантизация W8A8SC использует тензорную параллельность между двумя NPU, поэтому без включения обоих чипов модель не соберётся корректно.
Написать отзыв
До 6 фото, размером до 12Мб каждое
Мы получили ваш отзыв!

Он появится на сайте после модерации.

Написать комментарий

Комментарий появится на сайте после предварительной модерации

До 6 фото, размером до 12Мб каждое
Мы получили ваш отзыв!

Он появится на сайте после модерации.

Мы свяжемся с вами утром

График работы: Пн-Пт 10:00-18:30 (по МСК)

Обработаем вашу заявку
в ближайший рабочий день

График работы: Пн-Пт 10:00-18:30 (по МСК)