Skip to content

Tlntin/ascend-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简介

  1. 昇腾推理基础镜像,基于ubuntu22.04制作,内部集成推理通用的第三方库(系统包、pip)和TOOLKIT推理引擎。
  2. 主要用途:模拟昇腾cpu运行环境。当我们执行atc命令转换模型结构时,因为开发板上面的cpu性能较差,我们可以在性能较好的x86_64 CPU上的Linux系统上面使用docker镜像来执行该操作,然后将转换后的模型再放到昇腾设备上进行推理,这样可以节省模型转换需要的等待时间。
  3. 参考了官方的docker构建项目:gitee地址
  4. 该项目主要是之前做通义千问大模型推理时,使用动态shape转换模型onnx模型到om模型时,需要非常长的模型转换时间,于是想到了这个方法来改善。相关帖子可见:基于香橙派AI PRO适配通义千问大模型过程分享

编译docker镜像

  1. 根据你要模拟的昇腾芯片,修改build.sh中的soc_version(该参数决定昇腾芯片型号)和cann_version(该参数决定CANN开发工具的版本)。目前参数默认值如下所示:
soc_version cann_version
310b (可选值:310b, 310p, 910, 910b) 8.0.RC2
  1. 该容器编译后的.om模型最终还是需要在昇腾设备上面运行,所以请确保昇腾设备上面安装的CANN版本和该容器的CANN版本一致,这点非常重要。

  2. 根据你上面定的参数值,去官方下载对应的文件。下载地址,以容器即将运行的平台x86_64为例,我们需要下载下面3个文件,并存放在data目录中。

Ascend-cann-toolkit_8.0.RC2_linux-x86_64.run
Ascend-cann-nnae_8.0.RC2_linux-x86_64.run
Ascend-cann-kernels-310b_8.0.RC2_linux.run
  1. 运行下面的命令,检查一下三个文件是否完整。提示SHA256 checksums are OK. All good.则说明没啥问题。
# 进入目录
cd data

# 授予可执行权限
chmod +x ./Ascend-cann-toolkit_8.0.RC2_linux-x86_64.run
chmod +x ./Ascend-cann-nnae_8.0.RC2_linux-x86_64.run
chmod +x ./Ascend-cann-kernels-310b_8.0.RC2_linux.run

# 分别检查
./Ascend-cann-toolkit_8.0.RC2_linux-x86_64.run --check
./Ascend-cann-nnae_8.0.RC2_linux-x86_64.run --check
./Ascend-cann-kernels-310b_8.0.RC2_linux.run --check

# 返回上层目录
cd ..
  1. 运行build.sh,开始编译docker镜像。编译成功后,可以得到一个docker镜像:ascend-310b:8.0.RC2-x86_64
  2. 运行docker镜像,可以使用下面的命令来简单测试一下。
docker run -it --name ascend ascend-310b:8.0.RC2-x86_64 /bin/bash

测试docker镜像

  1. 在容器内,输入下面的命令简单测试一下atc命令,没报错说明则说明是正常的。
atc --help
  1. 测试onnx转om。可以拿官方的demo来测试一下atc转onnx为om的能力。项目地址,提示ATC run success, welcome to the next use.则说明转换成功。
# 下载模型
curl https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx -o resnet50.onnx 

# 转onnx为om,目标设备为310B1(根据你的设备选择,我是310B1,可以通过npu-smi info查看)
atc --model=resnet50.onnx --framework=5 --output=resnet50 --input_shape="actual_input_1:1,3,224,224"  --soc_version=Ascend310B1

# 另开一个终端,将模型从容器拷贝到本机
docker cp ascend:/home/AscendWork/resnet50.om .
  1. 测试om能否正常推理。我们可以将转换后的resnet50.om文件拷贝到310b上面设备上执行,测试一下是不是能用,并且精度在预期范围内。
    git clone https://gitee.com/ascend/samples.git
    cd samples/inference/modelInference/sampleResnetQuickStart/cpp
    # 将你的om模型拷贝到model路径,路径自定义
    mv path/resnet50.om model/
    # 安装opencv开发包
    sudo apt install libopencv-dev -y
    # 软链接一下头文件路径
    sudo ln -s /usr/include/opencv4/opencv2 /usr/include/opencv2
    # 编译项目
    ./scripts/sample_build.sh
    # 下载狗狗图片到data目录
    curl https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg -o ./data/dog1_1024_683.jpg
    # 运行项目
    ./scripts/sample_run.sh
    # 输出结果如下,无报错,且输出的分类置信度为0.902209,和demo输出的结果一样,说明精度损失忽略不计,测试通过。
    # [INFO] The sample starts to run
    # out_dog1_1024_683.jpg
    # label:162  conf:0.902209  class:beagle
    # [INFO] The program runs successfully

About

昇腾推理基础镜像,基于ubuntu22.04制作

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors