Atlas300I(3000)服务器,要求内存不小于16G,根目录磁盘剩余空间大于64G。按照《用户指南》安装最新的驱动与固件
gcc/g++: 服务器gcc/g++版本大于等于7.5.0
docker:在Atlas300服务器上安装好docker
1.在服务器上以root用户(注意:本readme所有命令都是在root用户下执行)下载ODLA镜像.参考ODLA环境搭建readme拉取一个仅支持CPU的镜像:
docker pull registry-intl.us-west-1.aliyuncs.com/computation/halo:latest-devel-x86_64-ubuntu18.04
注意:不要使用该readme中的start_docker_cpu.sh脚本拉取和启动镜像
2.修改ODLA镜像启动脚本start_docker_cpu.sh添加了Atlas300I的驱动映射,即将:
ID=`docker run $docker_run_flag --privileged --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d --name $CONTAINER_NAME -v $MOUNT_DIR:/host --tmpfs /tmp:exec --rm $IMAGE `
修改为
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 `
其他代码不做变更。
3.启动镜像。执行修改后的start_docker_cpu.sh,会自动进入docker容器内。
4.源码安装python3.7.5。请参考《安装Python3.7.5(Ubuntu)》安装依赖、编译安装python3.7.5并设置环境变量。
5.在容器中创建HwHiAiUser用户:
(1)在宿主机的命令行下输入命令
id HwHiAiUser
查看宿主机HwHiAiUser的gid
(2)在容器内创建HwHiAiUser用户
groupadd -g <gid> HwHiAiUser && useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser && echo ok
请将上述命令中的gid替换为(1)中查出的gid值。若返回“ok”,则说明创建成功。
6.将宿主机中的/etc/ascend_install.info拷贝到容器/etc/目录下
7.在容器中安装Atlas300I最新的CANN包。下载最新的cann社区版本或者商用版本,参考《环境部署》安装cann ascend-toolkit包
1.按照ODLA环境搭建readme下载halo仓代码
git clone https://github.com/alibaba/heterogeneity-aware-lowering-and-optimization.git --recurse-submodules -j8
如果网络环境不好,不要添加-j8参数
2.下载ascend代码
git clone https://gitee.com/cann/cann-halo.git
3.将cann-halo/ascend拷贝到heterogeneity-aware-lowering-and-optimization/ODLA/platforms/目录下
4.修改heterogeneity-aware-lowering-and-optimization/ODLA/platforms/CMakeLists.txt, 添加
option(ODLA_BUILD_ASCEND "Build ODLA Runtime Library for ASCEND" ON)
if (ODLA_BUILD_ASCEND)
add_subdirectory(ascend)
endif()
5.在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
其中HALO_ROOT是下载的halo代码路径,根据实际情况设置。在build/lib目录下生成了libodla_ascend.so,说明ascend集成成功
在halo odla平台的resnet50_v2中集成ascend,需要修改的有:
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
2.invoke_halo.py中使用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'
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。