Введение
Ускорители Huawei серий Atlas и Ascend в последние годы стали заметным явлением на рынке ИИ-железа, прежде всего благодаря сочетанию большого объема видеопамяти, достаточной вычислительной мощности и цены, ощутимо ниже, чем у сопоставимых решений Nvidia. Это делает их привлекательным вариантом для тех, кто хочет получить много VRAM без космического бюджета. Но у этой привлекательности есть обратная сторона: Atlas и Ascend — далеко не «plug and play» устройства. Если попытаться просто установить драйвер и запустить нагрузку, скорее всего ничего не заработает — платформа требует довольно глубокой и не самой очевидной подготовки окружения. В этом материале мы пошагово разбираем процесс подготовки сервера и запуска инференса на примере Huawei Atlas 300i Duo 96GB.
Выбор операционной системы
Первый и во многом определяющий вопрос — какую ОС использовать. Для Atlas 300i Duo 96GB рекомендуется Ubuntu Server 20.04: именно эта версия обеспечивает корректную и предсказуемую работу всего стека программных зависимостей, необходимых для драйверов Ascend. Формально поддерживается и Ubuntu Server 22.04 (как и обычные, не серверные редакции 20.04 и 22.04), но на практике система на этой версии работает менее стабильно.
Использовать более свежий LTS-релиз Ubuntu, к сожалению, не получится — актуальные версии дистрибутива несовместимы со стеком драйверов и библиотек, которые требует ускоритель. Важно понимать, что это не особенность конкретно Atlas 300i: та же проблема совместимости актуальна для всей линейки решений на чипах Ascend 910A/B/C, для которых точно так же приходится собирать отдельное, специфическое окружение.
Подготовка системы и установка зависимостей
После установки ОС начинается подготовка окружения. Первый шаг — обновление списка пакетов командой sudo apt update. Здесь есть важный нюанс: выполнять apt upgrade не нужно, поскольку обновление всей системы может нарушить совместимость с последующими шагами установки драйверов.
Значительная часть дальнейших операций требует прав root, поэтому удобнее сразу перейти в root-режим командой sudo -s. После этого нужно установить набор пакетов, необходимых для сборки и работы драйверов:
apt install build-essential gcc g++ make cmake unzip zlib1g-dev libbz2-dev python3-pip libssl-dev libncurses5-dev liblzma-dev mc vim dkms module-assistant linux-headers-$(uname -r) docker net-tools
В этот список входят компиляторы и инструменты сборки (build-essential, gcc, g++, make, cmake), библиотеки для работы с архивами и криптографией (zlib1g-dev, libbz2-dev, libssl-dev, liblzma-dev), Python-инфраструктура (python3-pip), модули для сборки ядра (dkms, module-assistant, заголовки текущего ядра), а также docker и сетевые утилиты net-tools — они понадобятся на более поздних этапах.
Установка драйверов Ascend
Второй крупный этап — установка непосредственно драйверов ускорителя. Прежде чем к нему приступать, стоит заранее собрать все нужные файлы драйверов в одну директорию — это заметно упрощает дальнейшую установку.
Отдельный важный момент, который легко пропустить: перед установкой драйверов необходимо вручную создать пользователя и группу HwHiAiUser. Имя фиксированное — драйверы Huawei ожидают именно такого пользователя и не создают его автоматически. Делается это двумя командами:
groupadd HwHiAiUseruseradd -g HwHiAiUser HwHiAiUser
Для самой установки понадобятся три файла:
Ascend-hdk-310p-npu-driver_ваша_версия.run— драйвер устройства;Ascend-cann-toolkit_8.2.Ваша.Версия.run— набор инструментов CANN;Ascend-cann-kernels-310p_8.2.Ваша.Версия.run— ядра вычислений для платформы 310p.
Находясь в директории с этими .run-файлами, сначала делаем их исполняемыми:
chmod +x *.run
Установку необходимо проводить строго в определенном порядке: сначала драйвер, затем toolkit, и только потом kernels. Нарушение этой последовательности приводит к ошибкам установки:
./Ascend-hdk-310p-npu-driver_ваша_версия.run --full
./Ascend-cann-toolkit_8.2.Ваша.Версия.run --install
./Ascend-cann-kernels-310p_8.2.Ваша.Версия.run --install
Обратите внимание, что ключи запуска у разных пакетов отличаются: для одних используется префикс full, для других — install. После того как все три компонента установлены, сервер необходимо перезагрузить командой reboot.
Проверка и управление ускорителем
После перезагрузки нужно убедиться, что оба NPU-чипа Atlas 300i Duo видны системе и работают корректно. Для управления ускорителем используется фирменная утилита Huawei — npu-smi, входящая в состав toolkit. Запускать ее рекомендуется от имени администратора командой npu-smi info.
По функциям утилита является прямым аналогом привычной nvidia-smi: она показывает вычислительную нагрузку на каждый из двух NPU-чипов ускорителя, их температуру и потребление памяти в реальном времени.
Дополнительно стоит проверить наличие устройств на уровне ядра — командой ls /dev/. В выводе должны присутствовать устройства davinci0, davinci1 и davinci_manager: первые два соответствуют двум физическим NPU-чипам Atlas 300i Duo, а третье отвечает за управление ими на уровне драйвера. Если все три устройства присутствуют и npu-smi info возвращает корректные данные, ускоритель готов к работе.
Развертывание Docker-окружения
Дальше нужна среда для запуска Python-кода на PyTorch с поддержкой NPU. Проще всего воспользоваться готовым Docker-образом, собранным сообществом энтузиастов Ascend, — он избавляет от необходимости вручную собирать весь стек зависимостей.
Контейнер запускается с пробросом устройств ускорителя и нужных системных файлов драйвера:
docker run --name ascend_container --device /dev/davinci1 --device /dev/davinci0 --device /dev/davinci_manager --device /dev/devmm_svm --device /dev/hisi_hdc -v /usr/local/dcmi:/usr/local/dcmi -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info -v /etc/ascend_install.info:/etc/ascend_install.info -it ascendai/pytorch:2.2.0 bash
Здесь через --device в контейнер пробрасываются оба NPU-чипа и служебные устройства devmm_svm и hisi_hdc, а через -v — утилита npu-smi, библиотеки драйвера и файлы, содержащие информацию о версии установки. Это позволяет контейнеру напрямую взаимодействовать с ускорителем так, будто он работает в системе нативно.
Использование готового контейнера — не единственный путь, а лишь наиболее практичный. Собрать окружение вручную вполне реально, но нужно быть готовым потратить на это значительное время: слишком много взаимозависимых компонентов приходится увязывать между собой — сам драйвер Ascend, фреймворк Huawei CANN и, при необходимости, отдельно устанавливаемый torch_NPU.
Тестирование инференса
Когда контейнер успешно запущен, можно переходить к проверке работоспособности ускорителя на реальных задачах PyTorch. Тестирование проводилось в три этапа, с использованием как собственных, так и типовых скриптов.
Первым запускался скрипт test_card.py, разработанный специалистами СервакМастер. Он тестирует карту через операцию матричного умножения (matmul) и снабжен простым интерфейсом, который в реальном времени выводит информацию о состоянии NPU. Успешное выполнение скрипта подтверждает, что ускоритель корректно справляется с базовыми математическими вычислениями.
Следующим шагом стал скрипт bench.py, выполняющий на карте различные математические операции средствами Python. Параллельно с его работой полезно следить за выводом npu-smi, чтобы визуально наблюдать за вычислительной нагрузкой, распределяемой между двумя NPU-чипами Atlas 300i Duo 96GB.
Финальным и наиболее показательным тестом стал test_ascend.py — проверка на основе реальной языковой модели GPT-2. Скрипт загружает датасет GPT-2 и выполняет на NPU-чипе инференс для простой задачи: модель должна предсказать (угадать) следующее слово в предложении. Успешное выполнение этого теста демонстрирует, что ускоритель готов к работе не только с синтетическими вычислениями, но и с реальными задачами инференса языковых моделей.
Заключение
В этом руководстве мы прошли полный путь от чистой установки Ubuntu Server до первого успешного инференса GPT-2 на Huawei Atlas 300i Duo 96GB: выбрали подходящую версию ОС, установили системные зависимости, корректно развернули драйверы Ascend с обязательным созданием пользователя HwHiAiUser, научились контролировать состояние ускорителя через npu-smi, подняли рабочее Docker-окружение и проверили карту серией тестовых скриптов на PyTorch.
Стоит подчеркнуть, что это лишь базовый уровень работы с платформой — подготовка ускорителя к работе и знакомство с азами взаимодействия через Python и PyTorch. Возможности Huawei Atlas этим не ограничиваются, а сфера применения подобных NPU-решений значительно шире, чем может показаться после первого знакомства. В следующих материалах мы планируем показать запуск полноценного инференса больших языковых моделей на этой платформе — то есть сделать шаг в сторону практического, в том числе коммерческого использования китайских ИИ-ускорителей.