Интеграция ODLA с Ascend: руководство по эксплуатации
Сервер Atlas300I (3000) с объёмом памяти не менее 16 ГБ и свободным пространством корневого каталога более 64 ГБ. Установите последние версии драйверов и встроенного ПО, следуя инструкциям в руководстве пользователя.
gcc/g++: версия сервера gcc/g++ должна быть не ниже 7.5.0. docker: установите docker на сервер Atlas300.
docker pull registry-intl.us-west-1.aliyuncs.com/computation/halo:latest-devel-x86_64-ubuntu18.04
Не используйте скрипт start_docker_cpu.sh из этого руководства для загрузки и запуска образа.
ID=`docker run $docker_run_flag --privileged --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --net=host -t -d --name $CONTAINER_NAME --cap-add LINUX_IMMUTABLE --device=/dev/davinci0 --device=/dev/davinci_manager --device=/dev/devmm_svm --device=/dev/hisi_hdc -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi -v /usr/local/Ascend/driver/:/usr/local/Ascend/driver -v $MOUNT_DIR:/host --tmpfs /tmp:exec $IMAGE `
Остальные строки оставьте без изменений.
Запустите изменённый скрипт start_docker_cpu.sh, чтобы войти в Docker-контейнер.
Установите Python 3.7.5 в контейнере, следуя инструкции в руководстве.
Создайте пользователя HwHiAiUser в контейнере:
groupadd -g <gid> HwHiAiUser && useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser && echo ok
Замените на значение, полученное на шаге 5(a). Если команда возвращает «ok», пользователь создан успешно.
Скопируйте файл /etc/ascend_install.info с хост-машины в каталог /etc контейнера.
Установите последнюю версию CANN-пакета для Atlas300I в контейнер. Скачайте пакет с официального сайта или сообщества и следуйте инструкциям по установке.
git clone https://github.com/alibaba/heterogeneity-aware-lowering-and-optimization.git --recurse-submodules -j8
Если у вас проблемы с сетью, не используйте параметр -j8.
git clone https://gitee.com/cann/cann-halo.git
Скопируйте папку cann-halo/ascend в каталог ODLA/platforms в коде halo.
В файле CMakeLists.txt в каталоге ODLA/platforms добавьте строку:
option(ODLA_BUILD_ASCEND "Build ODLA Runtime Library for ASCEND" ON)
if (ODLA_BUILD_ASCEND)
add_subdirectory(ascend)
endif()
source /usr/local/Ascend/ascend-toolkit/set_env.sh
mkdir -p build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DODLA_BUILD_TRT=NO -G Ninja ..
ninja
В каталоге build/lib должен появиться файл libodla_ascend.so, что означает успешную интеграцию ascend.
Чтобы интегрировать ascend с примером resnet50_v2 в halo, необходимо внести изменения в следующие файлы:
if [[ $TEST_WITH_ASCEND -eq 1 ]]; then
echo "======== Testing with ODLA Ascend ========"
python3 $curr_dir/../../invoke_halo.py --model $model_file --label-file \
$curr_dir/../1000_labels.txt --image-dir $image_dir \
--odla ascend | tee $2
fi
halo --emit-data-as-c -target cxx resnet50-v2-7.onnx -o resnet50_v2_model.cc
``` 3. **Параметры компиляции g++ включают в себя путь поиска заголовочных файлов Ascend, путь поиска библиотек и подключаемые библиотеки:**
(1) Путь поиска заголовочных файлов Ascend:
* /usr/local/Ascend/ascend-toolkit/latest/opp/op_proto/built-in/inc;
* /usr/local/Ascend/ascend-toolkit/latest/fwkacllib/include.
(2) Путь поиска библиотек Ascend:
* /usr/local/Ascend/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe/op_tiling/;
* /usr/local/Ascend/ascend-toolkit/latest/fwkacllib/lib64/plugin/opskernel/;
* /usr/local/Ascend/ascend-toolkit/latest/fwkacllib/lib64/stub/.
(3) Подключаемые библиотеки Ascend включают libgraph.so, libge_runner.so, libascendcl.so, libfe.so и liboptiling.so.
4. **Путь поиска библиотек Ascend при выполнении приложения:**
* /usr/local/Ascend/driver/lib64;
* /usr/local/Ascend/driver/lib64/common;
* /usr/local/Ascend/driver/lib64/driver;
* /usr/local/Ascend/ascend-toolkit/latest/fwkacllib/lib64;
* /usr/local/Ascend/ascend- toolkit/latest/atc/lib64.
Эти переменные среды также можно установить непосредственно в контейнере Docker:
source /usr/local/Ascend/ascend-toolkit/set_env.sh export PYTHONWARNINGS='ignore:semaphore_tracker:UserWarning'
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )