一、硬件驱动下载地址:

社区版-固件与驱动-昇腾社区https://www.hiascend.com/hardware/firmware-drivers/community?product=2&model=3&cann=8.0.0.alpha003&driver=Ascend+HDK+24.1.0

二、华为CANN开发套件下载地址:

昇腾异构计算架构CANN-昇腾社区https://www.hiascend.com/software/cann

三、安装驱动及固件、CANN开发套件

3.1安装驱动及固件

以root用户登录安装环境,将驱动和固件包上传至安装环境的任意目录。(如“/home/package”)

创建驱动运行用户HwHiAiUser:

groupadd HwHiAiUser
useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash

增加对软件包的可执行权限:

chmod +x Ascend-hdk-<soc_version>-npu-driver_23.0.2_linux-x86-64.run
chmod +x Ascend-hdk-<soc_version>-npu-firmware_7.1.0.4.220.run

※注释:soc_version 软件包相关版本

执行如下命令,校验安装包的一致性和完整性:

./Ascend-hdk-<soc_version>-npu-driver_23.0.2_linux-x86-64.run --check
./Ascend-hdk-<soc_version>-npu-firmware_7.1.0.4.220.run --check

执行如下命令安装驱动:

./Ascend-hdk-<soc_version>-npu-driver_23.0.2_linux-x86-64.run --full --install-for-all

出现类似如下回显信息,说明安装成功 : Driver package installed successfully!

您还可以通过执行npu-smi info命令查看,出现类似如下信息,说明驱动加载成功。

执行如下命令安装固件:

./Ascend-hdk-<soc_version>-npu-firmware_7.1.0.4.220.run --full

出现类似如下回显信息,说明安装成功 : 

Firmware package installed successfully! Reboot now or after driver installation for the installation/upgrade to take effect 

驱动和固件安装完成后,重启系统:

reboot

3.2安装CANN开发工具套件

驱动固件安装完成后,就可以进行CANN软件包的安装了,本节以在昇腾AI处理器上安装开发套件包为例,介绍CANN软件安装的步骤。CANN开发套件包包含开发应用程序所需的库文件、开发辅助工具等,安装之后开发者可进行应用及自定义算子的开发。需要注意CANN开发套件包安装过程需要安装相关依赖,请确保安装环境能够连接外部网络,并已配置软件源,以下以root用户操作为例。

安装第三方依赖:

apt-get install -y gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev libffi-dev unzip pciutils net-tools libblas-dev gfortran libblas3

安装Python:

可执行如下命令检查系统是否安装满足要求的Python开发环境。(要求python3.7.5~3.7.11、python3.8.0~3.8.11、python3.9.0~3.9.7和python3.10.0~3.10.12)

python3 --version
pip3 --version

如果没有版本安装命令:

sudo apt install python3 python3-pip

安装pip3支持CANN开发套件的相关依赖:

pip3 install attrs numpy decorator sympy cffi pyyaml pathlib2 psutil protobuf scipy requests absl-py wheel typing_extensions

安装CANN开发套件包:

将CANN开发套件包上传至安装环境的任意目录,执行如下命令增加对软件包的可执行权限。

chmod +x Ascend-cann-toolkit_8.0.RC3.alpha001_linux-x86_64.run

执行如下命令校验软件包的一致性和完整性。

./Ascend-cann-toolkit_8.0.RC3.alpha001_linux-x86_64.run --check

执行如下命令安装CANN开发套件包。

./Ascend-cann-toolkit_8.0.RC3.alpha001_linux-x86_64.run --install

用户需签署华为企业业务最终用户许可协议(EULA)后进入安装流程,根据回显页面输入y或Y接受协议,输入其他任意字符为拒绝协议,确认接受协议后开始安装。安装完成后,若显示如下信息,则说明软件安装成功:[INFO] Ascend-cann-toolkit install success

配置CANN环境变量:

source /usr/local/Ascend/ascend-toolkit/set_env.sh

四、AsendCL应用开发样例测试

此样例测试为验证推理卡是否可以通过CANN开发套件进行适配。

4.1样例测试

下载样例:samples: CANN Sampleshttps://gitee.com/ascend/samples

samples仓右上角选择 【克隆/下载】 下拉框并选择 【下载ZIP】。

将ZIP包上传到开发环境中的普通用户家目录中。

【例如:${HOME}/ascend-samples-master.zip】

开发环境中,执行以下命令,解压zip包:

cd ${HOME}     
unzip ascend-samples-master.zip 
cd ascend-samples-master

※注:如果需要下载其它版本代码,请先请根据前置条件说明进行samples仓分支切换。

下载成功后,切换到根目录下

“cplusplus\level2_simple_inference\1_classification\resnet50_firstapp”目录下,查看该样例的目录结构,下文所有的操作步骤均需先切换到resnet50_firstapp目录:

resnet50_firstapp

├── data

│   ├── dog1_1024_683.jpg            // 测试图片,需按下文的指导获取图片,放到该目录下

├── model

│   ├── resnet50.caffemodel          // ResNet-50网络的预训练模型文件  

                                     // 需按下文的指导获取图片,放到该目录下

│   ├── resnet50.prototxt            // ResNet-50网络的模型文件

                                     // 需按下文的指导获取图片,放到该目录下  

├── script

│   ├── transferPic.py               // 将测试图片预处理为符合模型要求的图片                                   // 包括将*.jpg转换为*.bin,

                                     // 同时将图片从1024*683的分辨率缩放为224*224

├── src

│   ├── CMakeLists.txt               // 编译脚本

│   ├── main.cpp                     // 主函数,图片分类功能的实现文

准备模型

  1. 以运行用户登录开发环境。

  2. 执行模型转换。

    执行以下命令(以昇腾310 AI处理器为例),将原始模型转换为昇腾AI处理器能识别的*.om模型文件。请注意,执行命令的用户需具有命令中相关路径的可读、可写权限。以下命令中的“<SAMPLE_DIR>”请根据实际样例包的存放目录替换、“<soc_version>”请根据实际昇腾AI处理器版本替换。

    cd <SAMPLE_DIR>/cplusplus/level2_simple_inference/1_classification/resnet50_firstapp/model
    wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx
    atc --model=resnet50.onnx --framework=5 --output=resnet50 --input_shape="actual_input_1:1,3,224,224"  --soc_version=<soc_version>
    
    • --model:ResNet-50网络的模型文件路径。
    • --framework:原始框架类型。5表示ONNX。
    • --output:resnet50.om模型文件的路径。若此处修改模型文件名及存储路径,则需要同步修改src/main.cpp中模型加载处的模型文件名及存储路径,即modelPath变量值,修改代码后需要重新编译。
    • --soc_version:昇腾AI处理器的版本。

    关于各参数的详细解释,请参见《ATC工具使用指南》

准备测试图片

图片下载地址:
Linkhttps://gitee.com/link?target=https%3A%2F%2Fobs-9be7.obs.cn-east-2.myhuaweicloud.com%2Fmodels%2Faclsample%2Fdog1_1024_683.jpg获取测试图片dog1_1024_683.jpg,放到“resnet50_firstapp/data“目录下。若此处修改测试图片文件名,则需要同步修改src/main.cpp中读取图片处的文件名,即picturePath变量值,修改代码后需要重新编译。

此处获取的是一个*.jpg图片,与模型对图片的要求不符,为了不影响您学习入门知识,我们在该样例下提供了resnet50_firstapp/script/transferPic.py脚本用于将该测试图片转换为模型要求的图片(RGB格式、分辨率为224*224),该脚本被封装在编译脚本中,执行编译脚本时会自动执行图片转换操作。

编译及运行应用

  1. 编译代码。

    以运行用户登录开发环境,切换到resnet50_firstapp目录下,执行以下命令。 如下为设置环境变量的示例,<SAMPLE_DIR>表示样例所在的目录,$HOME/Ascend/ascend-toolkit表示CANN软件包的安装目录,中的arch表示操作系统架构(需根据运行环境的架构选择),os表示操作系统(需根据运行环境的操作系统选择)。

    export APP_SOURCE_PATH=<SAMPLE_DIR>/cplusplus/level2_simple_inference/1_classification/resnet50_firstapp
    export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest
    export NPU_HOST_LIB=$HOME/Ascend/ascend-toolkit/latest/<arch-os>/devlib
    chmod +x sample_build.sh
    ./sample_build.sh
    

    说明: 如果执行脚本报错“ModuleNotFoundError: No module named 'PIL'”,则表示缺少Pillow库,请使用 pip3 install Pillow --user 命令安装Pillow库。

    如果执行脚本报错“bash: ./sample_build.sh: /bin/bash^M: bad interpreter: No such file or directory”,是由于开发环境中没有安装dos2unix包,需使用sudo apt-get install dos2unix命令安装dos2unix包后,执行dos2unix sample_build.sh,然后再执行脚本。

  2. 运行应用。

    以运行用户将resnet50_firstapp目录上传至运行环境,以运行用户登录运行环境,切换到resnet50_firstapp目录下,执行以下命令。

    chmod +x sample_run.sh
    ./sample_run.sh
    

    终端上屏显的结果如下,index表示类别标识、value表示该分类的最大置信度:

    top 1: index[162] value[0.954676]
    top 2: index[161] value[0.033442]
    top 3: index[166] value[0.006534]
    top 4: index[167] value[0.004561]
    top 5: index[163] value[0.000315]
    

    说明: 类别标签和类别的对应关系与训练模型时使用的数据集有关,本样例使用的模型是基于imagenet数据集进行训练的,您可以在互联网上查阅对应数据集的标签及类别的对应关系,例如,可单击Link查看。 当前屏显信息中的类别标识与类别的对应关系如下:

    "162": ["beagle"]

    "161": ["basset", "basset hound"]

    "166": ["Walker hound", "Walker foxhound"]

    "167": ["English foxhound"]

    "163": ["bloodhound", "sleuthhound"]

Logo

一站式 AI 云服务平台

更多推荐