以下所有的在板子上的操作我都用的root去做的,建议作为参考。
下载需要的驱动文件:链接地址
【用wget下载到板子上也可以,下载toolkit,nnrt的不用下载了,切记确认一下版本,目前香橙派官方镜像用的8.0.0,但是百度网盘给的驱动文件是7.0.0的,一定要和宿主机系统镜像的一致!】
存储到自定义的一个目录下nnrt不需要了 
创建Dockerfile和可执行的sh文件
文件名:Dockerfile_toolkit
文件名:build.sh
文件名:run.sh 【这个文件有帖子可以查到,有博主遇到容器内npu-smi报错,故而加上的】
文件名:requirements.txt
【懒得改代码就直接往这个文件夹下放】 
执行build.sh文件进行创建镜像
等待执行完成docker images 这里只需要一个dockerfile_toolkit 即下面对应的dev tag 
创建容器
【这里有看到其他博主里面有yaml的so,但是在宿主机上没找到所以去掉了以下映射 -v /usr/lib64/libyaml-0.so.2:/usr/lib64/libyaml-0.so.2:ro \】 【另外有看到其他博主把最后的/bin/bash改成bash -c "/home/AscendWork/run.sh && sleep 8640000" 用sleep来防止容器停止的,没有尝试,觉得应该也没问题,有遇到容器里面npu-smi info还报错的我觉得可以尝试一下,当然,在dockerfile中把cmd直接改成这样效果应该也是一样的,这样创建容器倒是可以省一行】
【执行前尽量检查一下宿主文件是否都存在吧】
H1 最后进入容器确认一下

[/home/HwHiAiUser/data]这个地址是我python文件工作的目录,所以映射了一下,py文件在/home/HwHiAiUser/data/Project/Publish/CalProject/start.py,上述dockerfile中最后注释了workdir和cmd,放开以后在创建容器是去掉最后的/bin/bash,容器启动后就会直接开始执行python程序。 下面是案例下 docker logs --tail 100 -ft yolov5zs

以下所有的在板子上的操作我都用的root去做的,建议作为参考。
下载需要的驱动文件:链接地址
存储到自定义的一个目录下nnrt不需要了
创建Dockerfile和可执行的sh文件
文件名:Dockerfile_toolkit
# syntax = docker/dockerfile:experimental FROM ubuntu:22.04 as buildtemp WORKDIR /tmp COPY . ./ FROM ubuntu:22.04 ARG ASCEND_BASE=/usr/local/Ascend WORKDIR /home/AscendWork # 安装系统依赖 RUN sed -i "s@http://.*ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \ apt update && \ apt upgrade -y && \ apt install -y --no-install-recommends gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev \ libffi-dev unzip pciutils net-tools libblas-dev gfortran libblas3 curl git liblzma-dev bzip2 libbz2-dev && \ apt clean && rm -rf /var/lib/apt/lists/* ENV LD_LIBRARY_PATH=/usr/local/python3.9.2/lib:$LD_LIBRARY_PATH ENV PATH=/usr/local/python3.9.2/bin:$PATH # 推理程序需要使用到底层驱动,底层驱动的运行依赖HwHiAiUser,HwBaseUser,HwDmUser三个用户 # 创建运行推理应用的用户及组,HwHiAiUse,HwDmUser,HwBaseUser的UID与GID分别为1000,1101,1102为例 RUN umask 0022 && \ groupadd HwHiAiUser -g 1000 && \ useradd -d /home/HwHiAiUser -u 1000 -g 1000 -m -s /bin/bash HwHiAiUser && \ groupadd HwDmUser -g 1101 && \ useradd -d /home/HwDmUser -u 1101 -g 1101 -m -s /bin/bash HwDmUser && \ usermod -aG HwDmUser HwHiAiUser && \ groupadd HwBaseUser -g 1102 && \ useradd -d /home/HwBaseUser -u 1102 -g 1102 -m -s /bin/bash HwBaseUser && \ usermod -aG HwBaseUser HwHiAiUser # 安装python和python库 RUN umask 0022 && \ curl -k https://repo.huaweicloud.com/python/3.9.2/Python-3.9.2.tgz -o Python-3.9.2.tgz && \ tar -xf Python-3.9.2.tgz && cd Python-3.9.2 && ./configure --prefix=/usr/local/python3.9.2 --enable-shared --with-bz2 && \ make -j20 && make install && \ ln -sf /usr/local/python3.9.2/bin/python3 /usr/bin/python3 && \ ln -sf /usr/local/python3.9.2/bin/python3 /usr/bin/python && \ ln -sf /usr/local/python3.9.2/bin/pip3 /usr/bin/pip3 && \ ln -sf /usr/local/python3.9.2/bin/pip3 /usr/bin/pip && \ cd .. && \ rm -rf Python* # 安装python库和CANN包 RUN --mount=type=cache,target=/tmp,from=buildtemp,source=/tmp \ cp /tmp/run.sh /home/AscendWork/ && \ chmod +x /home/AscendWork/run.sh && \ mkdir -p ~/.pip && \ echo '[global] \n\ index-url=http://mirrors.aliyun.com/pypi/simple\n\ trusted-host=mirrors.aliyun.com' >> ~/.pip/pip.conf && \ pip3 install pip -U && \ pip3 install -r /tmp/requirements.txt && \ rm -rf /root/.cache/pip && \ bash /tmp/Ascend-cann-toolkit*.run --quiet --install --install-path=$ASCEND_BASE --install-for-all --force && \ chown -R HwHiAiUser:HwHiAiUser /home/AscendWork/ && \ ln -sf /lib /lib64 && \ mkdir /var/dmp && \ mkdir /usr/slog && \ mkdir /usr/lib64 && \ cp /tmp/libdp.so /usr/lib64/libdp.so && \ chown HwHiAiUser:HwHiAiUser /usr/slog && \ chown HwHiAiUser:HwHiAiUser /var/dmp ENV LD_PRELOAD=/lib/aarch64-linux-gnu/libc.so.6 ENV ASCEND_TOOLKIT_HOME=/usr/local/Ascend/ascend-toolkit/latest ENV TOOLCHAIN_HOME=${ASCEND_TOOLKIT_HOME}/toolkit ENV PYTHONPATH=${ASCEND_TOOLKIT_HOME}/python/site-packages:${ASCEND_TOOLKIT_HOME}/opp/built-in/op_impl/ai_core/tbe ENV ASCEND_AICPU_PATH=${ASCEND_TOOLKIT_HOME} ENV ASCEND_OPP_PATH=${ASCEND_TOOLKIT_HOME}/opp ENV ASCEND_HOME_PATH=${ASCEND_TOOLKIT_HOME} ENV LD_LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/lib64:${ASCEND_TOOLKIT_HOME}/lib64/plugin/opskernel:${ASCEND_TOOLKIT_HOME}/lib64/plugin/nnengine:/usr/local/python3.9.2/lib:/usr/local/Ascend/driver/lib64:/usr/lib64 ENV PATH=${ASCEND_TOOLKIT_HOME}/bin:${ASCEND_TOOLKIT_HOME}/compiler/ccec_compiler:/usr/local/python3.9.2/bin:$PATH RUN git config --global http.sslVerify false && \ pip3 install -v 'git+https://gitee.com/ascend/tools.git#egg=aclruntime&subdirectory=ais-bench_workload/tool/ais_bench/backend' && \ pip3 install -v 'git+https://gitee.com/ascend/tools.git#egg=ais_bench&subdirectory=ais-bench_workload/tool/ais_bench' # WORKDIR /home/HwHiAiUser/data/Project/Publish/CalProject/ USER 1000 CMD bash /home/AscendWork/run.sh # CMD python start.py文件名:build.sh
#!/bin/bash version=24.0.RC1 cp -r /usr1/package/Ascend-cann-toolkit_*_linux-aarch64.run . #检查cann have_toolkit=$(find . | grep "toolkit" | grep "linux-aarch64" | wc -l ) if [ $have_toolkit == 0 ]; then echo "please put toolkit package here" exit 1 fi DOCKER_BUILDKIT=1 docker build -t ascend-infer-310b:${version}-arm64 . -f Dockerfile || exit 1文件名:run.sh 【这个文件有帖子可以查到,有博主遇到容器内npu-smi报错,故而加上的】
文件名:requirements.txt
【懒得改代码就直接往这个文件夹下放】
执行build.sh文件进行创建镜像
等待执行完成docker images 这里只需要一个dockerfile_toolkit 即下面对应的dev tag
创建容器
docker run -it --net=host --restart=always --privileged=true \ --name yolov5zs1 \ --device=/dev/upgrade:/dev/upgrade \ --device=/dev/davinci0:/dev/davinci0 \ --device=/dev/davinci_manager \ --device=/dev/vdec:/dev/vdec \ --device=/dev/vpc:/dev/vpc \ --device=/dev/pngd:/dev/pngd \ --device=/dev/venc:/dev/venc \ --device=/dev/sys:/dev/sys \ --device=/dev/svm0 \ --device=/dev/ts_aisle:/dev/ts_aisle \ --device=/dev/dvpp_cmdlist:/dev/dvpp_cmdlist \ -v /etc/sys_version.conf:/etc/sys_version.conf:ro \ -v /etc/hdcBasic.cfg:/etc/hdcBasic.cfg:ro \ -v /usr/lib64/libaicpu_processer.so:/usr/lib64/libaicpu_processer.so:ro \ -v /usr/lib64/libaicpu_prof.so:/usr/lib64/libaicpu_prof.so:ro \ -v /usr/lib64/libaicpu_sharder.so:/usr/lib64/libaicpu_sharder.so:ro \ -v /usr/lib64/libadump.so:/usr/lib64/libadump.so:ro \ -v /usr/lib64/libtsd_eventclient.so:/usr/lib64/libtsd_eventclient.so:ro \ -v /usr/lib64/libaicpu_scheduler.so:/usr/lib64/libaicpu_scheduler.so:ro \ -v /usr/lib64/libcrypto.so.3:/usr/lib64/libcrypto.so.3:ro \ -v /usr/lib64/libdcmi.so:/usr/lib64/libdcmi.so:ro \ -v /usr/lib64/libmpi_dvpp_adapter.so:/usr/lib64/libmpi_dvpp_adapter.so:ro \ -v /usr/lib64/aicpu_kernels/:/usr/lib64/aicpu_kernels/:ro \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi:ro \ -v /dev:/dev \ -v /etc/localtime:/etc/localtime \ -v /usr/lib64/libstackcore.so:/usr/lib64/libstackcore.so:ro \ -v /usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64:ro \ -v /var/slogd:/var/slogd:ro \ -v /var/dmp_daemon:/var/dmp_daemon:ro \ -v /etc/slog.conf:/etc/slog.conf:ro \ -v /etc/ascend_install.info:/etc/ascend_install.info:ro \ -v /usr/lib64/libtensorflow.so:/usr/lib64/libtensorflow.so:ro \ -v /home/HwHiAiUser/data:/home/HwHiAiUser/data \ -d ascend-infer-310b:{tag} \ /bin/bash【这里有看到其他博主里面有yaml的so,但是在宿主机上没找到所以去掉了以下映射 -v /usr/lib64/libyaml-0.so.2:/usr/lib64/libyaml-0.so.2:ro \】 【另外有看到其他博主把最后的/bin/bash改成bash -c "/home/AscendWork/run.sh && sleep 8640000" 用sleep来防止容器停止的,没有尝试,觉得应该也没问题,有遇到容器里面npu-smi info还报错的我觉得可以尝试一下,当然,在dockerfile中把cmd直接改成这样效果应该也是一样的,这样创建容器倒是可以省一行】
【执行前尽量检查一下宿主文件是否都存在吧】
H1 最后进入容器确认一下
[/home/HwHiAiUser/data]这个地址是我python文件工作的目录,所以映射了一下,py文件在/home/HwHiAiUser/data/Project/Publish/CalProject/start.py,上述dockerfile中最后注释了workdir和cmd,放开以后在创建容器是去掉最后的/bin/bash,容器启动后就会直接开始执行python程序。 下面是案例下 docker logs --tail 100 -ft yolov5zs