• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

cann-halo: HALO/ODLA通过CANN的开放接口使能Ascend的Adapter Sample

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

cann-halo

开源软件地址:

https://gitee.com/cann/cann-halo

开源软件介绍:

ODLA集成Ascend操作指南

环境准备

硬件环境

Atlas300I(3000)服务器,要求内存不小于16G,根目录磁盘剩余空间大于64G。按照《用户指南》安装最新的驱动与固件

软件环境

gcc/g++: 服务器gcc/g++版本大于等于7.5.0

docker:在Atlas300服务器上安装好docker

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包

Halo集成Ascend

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.shmkdir -p buildcd buildcmake -DCMAKE_BUILD_TYPE=Release -DODLA_BUILD_TRT=NO -G Ninja ..ninja 

其中HALO_ROOT是下载的halo代码路径,根据实际情况设置。在build/lib目录下生成了libodla_ascend.so,说明ascend集成成功

Resnet50_v2样例集成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 $2fi

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.shexport PYTHONWARNINGS='ignore:semaphore_tracker:UserWarning'

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap