1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/cann-cann-halo

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 6.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 14:59 7997f81

Интеграция ODLA с Ascend: руководство по эксплуатации

Подготовка среды

Аппаратная среда

Сервер Atlas300I (3000) с объёмом памяти не менее 16 ГБ и свободным пространством корневого каталога более 64 ГБ. Установите последние версии драйверов и встроенного ПО, следуя инструкциям в руководстве пользователя.

Программная среда

gcc/g++: версия сервера gcc/g++ должна быть не ниже 7.5.0. docker: установите docker на сервер Atlas300.

Конфигурация Docker-контейнера

  1. Загрузите образ ODLA на сервере с помощью команды root-пользователя (все команды в этом руководстве выполняются от имени root):
docker pull registry-intl.us-west-1.aliyuncs.com/computation/halo:latest-devel-x86_64-ubuntu18.04

Не используйте скрипт start_docker_cpu.sh из этого руководства для загрузки и запуска образа.

  1. Измените скрипт start_docker_cpu.sh для образа ODLA, добавив следующие строки для поддержки Atlas300I:
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 `

Остальные строки оставьте без изменений.

  1. Запустите изменённый скрипт start_docker_cpu.sh, чтобы войти в Docker-контейнер.

  2. Установите Python 3.7.5 в контейнере, следуя инструкции в руководстве.

  3. Создайте пользователя HwHiAiUser в контейнере:

    • Введите команду id HwHiAiUser на хост-машине, чтобы узнать идентификатор группы (gid) пользователя HwHiAiUser.
    • В контейнере выполните команду:
groupadd -g <gid> HwHiAiUser && useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser && echo ok

Замените на значение, полученное на шаге 5(a). Если команда возвращает «ok», пользователь создан успешно.

  1. Скопируйте файл /etc/ascend_install.info с хост-машины в каталог /etc контейнера.

  2. Установите последнюю версию CANN-пакета для Atlas300I в контейнер. Скачайте пакет с официального сайта или сообщества и следуйте инструкциям по установке.

Интеграция Halo с Ascend

  1. Скачайте код halo с GitHub:
git clone https://github.com/alibaba/heterogeneity-aware-lowering-and-optimization.git --recurse-submodules -j8

Если у вас проблемы с сетью, не используйте параметр -j8.

  1. Скачайте ascend-код:
 git clone https://gitee.com/cann/cann-halo.git
  1. Скопируйте папку cann-halo/ascend в каталог ODLA/platforms в коде halo.

  2. В файле CMakeLists.txt в каталоге ODLA/platforms добавьте строку:

option(ODLA_BUILD_ASCEND "Build ODLA Runtime Library for ASCEND" ON)
if (ODLA_BUILD_ASCEND)
  add_subdirectory(ascend)
endif()
  1. В каталоге heterogeneity-aware-lowering-and-optimization создайте каталог build и скомпилируйте halo:
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.

Пример интеграции Resnet50_v2 с Ascend

Чтобы интегрировать ascend с примером resnet50_v2 в halo, необходимо внести изменения в следующие файлы:

  1. В скрипте входа в пример resnet50_v2 добавьте поддержку ascend:
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
  1. При использовании инструмента halo для генерации кода модели с использованием опции --emit-data-as-c, убедитесь, что файл весов представлен в исходном коде, например:
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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/cann-cann-halo.git
git@api.gitlife.ru:oschina-mirror/cann-cann-halo.git
oschina-mirror
cann-cann-halo
cann-cann-halo
master