华为Atlas 200DK环境搭建&推理测试

本文详细描述了如何在华为Atlas200DK开发板上进行环境搭建,包括硬件准备、软件安装、系统刻录、网络配置、CANN工具链安装以及基于ResNet50的图片分类应用示例。重点介绍了固件驱动版本选择和CANN的安装过程。
摘要由CSDN通过智能技术生成

引子

  前文已经有一篇,华为服务器Atlas芯片的文章(华为Atlas300ipro/Atlas300t芯片环境搭建_atlas300交叉编译器-CSDN博客)。熟悉AI的同学们一定知道,除了服务器端端训练推理。AI推理还有一部分是边端推理,各大芯片厂商都有推出边端推理芯片,凑巧,拿到一个一块很老的华为Atlas 200DK板子,那就倒腾下这块板子吧,OK,让我们开始吧。

一、环境搭建

1.1 物理硬件准备

  一台x86架构的Linux PC机、USB连接线、网线、一张内存不低于32GB的SD卡、SD卡读卡器。

1.2 软件准备

  注:经过多次测验本设备并不兼容1.0.13的固件驱动版本,尽管官网声称Altas 200 DK可以兼容1.0.13版本的固件驱动,但是用该版本的固件驱动烧录系统后开发板子并不能启动。需要选择1.0.12版本,但是官网提供的最低驱动版本为1.0.13,因此需要从网络上自行搜索下载1.0.12版本的固件驱动。这里给出网络下载链接(下面这篇博客中给出的链接):QA200RC Atlas200 开发板 (一)分设场景下环境部署_libmedia_mini.so-CSDN博客或者从下面的百度网盘下载

百度网盘链接:https://pan.baidu.com/s/1N0qQhIUdjigHt9m8Gg0qfg?pwd=ltxg

提取码:ltxg

1.3 开始刻录开发板的系统

  第一步:将装入SD卡的读卡器与用户PC机的USB接口连接。

  第二步:在用户PC机中执行如下命令安装qemu-user-static、binfmt-support、yaml、squashfs-tools与交叉编译器。

  su – root #切换到root账号

  执行如下命令更新源:

  apt-get update

  执行如下命令安装相关python依赖:

  pip3 install pyyaml

  apt-get install qemu-user-static binfmt-support python3-yaml squashfs-tools gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

  第三步:在用户PC机中以root用户执行如下命令创建制卡工作目录。

  mkdir $HOME/mksd

  制卡目录可任意指定。

  将软件包准备获取的Ubuntu操作系统镜像包、开发者板驱动包上传到制卡工作目录中(例如:“$HOME/mksd”)。

  在制卡工作目录下(例如:“$HOME/mksd”)执行如下命令获取制卡脚本。

  下载制卡入口脚本“make_sd_card.py”。

  从gitee下载:

  wget https://gitee.com/ascend/tools/raw/master/makesd/generic_script/make_sd_card.py

  从github下载:

        wget https://raw.githubusercontent.com/Ascend/tools/master/makesd/generic_script/make_sd_card.py

  说明:“NETWORK_CARD_DEFAULT_IP”:NIC网卡的IP地址,默认值“192.168.0.2”。“USB_CARD_DEFAULT_IP”:USB网卡的IP地址,默认值“192.168.1.2”。

  执行制卡脚本。

  以root用户执行如下命令查找SD卡所在的USB设备名称。

  fdisk -l

  例如,SD卡所在USB设备名称为“/dev/sda”,可通过插拔SD卡的方式确定设备名称。

  运行SD制卡脚本“make_sd_card.py”。

  python3 make_sd_card.py local /dev/sda

  “local”表示使用本地方式制作SD卡。

  “/dev/sda”为SD卡所在的USB设备名称。

  如图1所示表示制卡成功。

  制卡成功后,将SD卡从读卡器取出并插入Atlas 200 DK开发者板卡槽。上电Atlas 200 DK开发者板。开发板四个灯都亮证明系统刻录成功。

1.4 网络配置

  提前装好PC机的USB网卡驱动,然后将usb与开发板连接。Atlas 200 DK提供了USB网卡和NIC网卡,其中USB网卡的默认IP地址为“192.168.1.2”,NIC网卡的默认IP地址为“192.168.0.2”,用户可以通过这两个网卡实现与PC机的通信,并把Atlas 200 DK接入互联网。

1.4.1 安装PC机的USB网卡驱动

  Ubuntu操作系统为通过Windows操作系统上的虚拟机安装的场景下,需要在Windows操作系统上安装USB网卡驱动,即RNDIS(Remote Network Driver Interface Specification)驱动,否则Atlas 200 DK通过USB连接Ubuntu所在的Windows主机时,在Ubuntu操作系统中无法识别Atlas 200 DK的USB虚拟网卡。

  在“计算机管理”操作界面中选择“设备管理器 >其他设备”,如下图所示,RNDIS为未识别状态。

   右键单击“RNDIS”,选择“更新驱动程序(P)”。

  在弹出的“更新驱动程序 - RNDIS窗口”中选择“浏览我的计算机以查找驱动程序软件(R)”,然后选择“让我从计算机上的可用驱动程序列表中选取(L)”,单击“下一步(N)”。

在“常见硬件类型”列表中选择“网络适配器”,单击“下一步(N)”。

   在“选择要为此硬件安装的设备驱动程序”界面中选择“Microsoft”厂商的“USB RNDIS6适配器”。

   单击“下一步”,在弹出的“更新驱动程序警告”窗口选择“是”。

  返回“设备管理器 > 网络适配器”,可看到已经正常显示了USB RNDIS6适配器的驱动。

1.4.2 配置网络连接

  Atlas 200 DK与PC机分别通过USB连线与网线进行连接,其中USB方式的连接,用于将PC机与Atlas 200 DK进行通信,从而可以从PC机上SSH登录到Atlas 200 DK;网线连接用于Atlas 200 DK共享PC机网络,Atlas 200 DK eth0的网关地址需要与PC机中与Atlas 200 DK相连的NIC网卡的IP地址保持一致,将PC机上网络共享给连接Atlas 200 DK的NIC网卡,则Atlas 200 DK即可接入互联网。

   配置示例如下图所示:

  用USB连接线将Atlas 200 DK与PC机连接,PC机的“网络连接”面板会新增‘本地连接’名称为‘USB RNDIS6适配器’

  配置USB虚拟网卡的IP地址,IP地址需要与Atlas 200 DK的USB网卡的默认IP地址在同一网段。Atlas 200 DK的USB网卡默认IP为“192.168.1.2”,例如配置PC机的USB虚拟网卡的IP地址为“192.168.1.101”,如下图所示:

  然后SSH连接开发板子,地址192.168.1.2 账号:HwHiAiUser 密码:Mind@123

  SSH登录进开发板之后,配置Atlas 200 DK的eth0网卡的网关。

  Atlas 200 DK中eth0网卡的网关与eth0 IP地址在同一网段即可,例如Atlas 200 DK的eth0的默认IP地址为“192.168.0.2”,则此处可以配置eth0的网关为“192.168.0.101”。(说明:Atlas 200 DK通过网络共享接入网络的方式,数据走eth0,然后通过网关访问网络,所以需要确保eth0的IP地址能够访问网关)

  配置方式如下:

  在PC机上以SSH方式登录Atlas 200 DK。

  ssh HwHiAiUser@192.168.1.2

  切换到root用户。

  su - root

  配置eth0的网关地址。

  vi /etc/netplan/01-netcfg.yaml

  配置示例如下图所示:

   执行如下命令重启网络服务。

  netplan apply

  之后,在PC侧进行网络配置,将网络共享给Atlas 200 DK。用网线线将Atlas 200 DK与PC机连接,PC机的“网络连接”面板会新增‘以太网’,这个网卡就是连接Atlas 200 DK的网卡。

右键单击网卡“Ethernet”,然后选择“Properties > Sharing”,按照下图所示进行配置。

  修改“以太网”的IP地址为Atlas 200 DK eth0网关的IP地址

  经过上面的配置,Atlas 200 DK中eth0的IP地址“192.168.0.2”与网关“192.168.0.101”是互通的。PC机上可以接入互联网的“Ethernet”网卡将网络共享给了网关“192.168.0.101”,则该网关可以接入互联网。Atlas 200 DK需要联网时,通过域名解析,会自动选择请求的出口到网关,便可以接入互联网了。至此,Atlas 200 DK已可以接入互联网。重新登录开发板,执行ping命令可以看到开发板子已经接入互联网。

1.5 安装CANN

  CANN版本必须与固件驱动版本保持一致(驱动与CANN版本的配套关系请参见版本配套说明:https://gitee.com/ascend/tools/blob/master/makesd/Version_Mapping_CN.md)

   由于我们安装的固件驱动版本是1.0.12,而官网提供的最低版本为1.0.13,因此与1.0.12固件驱动版本对应的CANN版本官网也并未提供,我们还得自己从网络上寻找下载链接。这里给出网络下载链接(下面这篇博客中给出的链接):QA200RC Atlas200 开发板 (一)分设场景下环境部署_libmedia_mini.so-CSDN博客或者从下面的百度网盘链接下载:https://pan.baidu.com/s/11HmGssvr5p-c8DOHKMuT6Q?pwd=sm49

提取码:sm49

   由于CANN的安装。要求的python开发环境(要求python3.7.0~3.7.11、python3.8.0~3.8.11和python3.9.0~3.9.7)而安装ubuntu18.04默认会安装Python3.6因此需要卸载不符合版本的python,重新安装python3.7.x或者python3.8.x或者python3.9.x

1.5.1 卸载python

  apt换源编译安装Python3.7,首先检查系统中是否安装了python依赖

  安装完python之后,需要通过pip安装cann toolkit的必要依赖

1.5.2 安装Ascend-cann-toolkit

  将下载好的Ascend-cann-toolkit上传到开发板的任意目录

  CANN安装好之后还需要配置环境变量

  编译流媒体运行依赖文件

1.6 项目演示---基于Resnet50的图片分类应用

  案例地址:git clone samples: CANN Samples

  项目介绍:以ResNet50网络模型为例,演示如何通过模型转换使能静态AIPP功能,使能AIPP功能后,若实际提供给模型推理的测试图片不满足要求(包括图片格式,图片尺寸等),经过模型转换后,会输出满足模型要求的图片,并将该信息固化到转换后的离线模型中(模型转换后AIPP功能会以aipp算子形式插入离线模型中)。

  样例输入:图片。

  样例输出:打屏显示置信度TOP5的类别标识、置信度信息和相应的类别信息。

  获取源码包    

  cd ${HOME}     

  git clone https://gitee.com/ascend/samples.git

  第三方依赖安装 opencv

  执行以下命令安装opencv-python。

  pip3 install opencv-python

  执行以下命令安装numpy。

  pip3 install numpy

  样例运行

  数据准备

  请从以下链接获取该样例的输入图片,放在data目录下。

  cd $HOME/samples/inference/modelInference/sampleResnetAIPP/python/data

  wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg

  ATC模型转换

  将ResNet-50原始模型转换为适配昇腾310处理器的离线模型(*.om文件),放在model路径下。

  # 在这里直接给出原始模型下载及模型转换命令。

  cd $HOME/samples/inference/modelInference/sampleResnetAIPP/python/model

  wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx

  wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50_CV/aipp.cfg

  atc --model=resnet50.onnx --framework=5 --output=resnet50 --input_shape="actual_input_1:1,3,224,224"  --soc_version=Ascend310  --insert_op_conf=aipp.cfg

  样例运行

  设置环境变量,配置程序编译依赖的头文件与库文件路径。“$HOME/Ascend”替换“Ascend-cann-toolkit”包的实际安装路径。

  export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest

  export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub

  执行运行脚本,开始样例运行。

  bash sample_run.sh

  样例结果展示

  执行成功后,在屏幕上显示置信度top5的相关信息如下,提示信息中的label表示类别标识、confidence表示该类别的置信度,class表示对应的类别。

  ======== top5 inference results: =============

  label:162 confidence:0.902194 class:beaglebeagle,

  label:161 confidence:0.096588 class:basset houndbasset hound,

  label:166 confidence:0.000631 class:Walker foxhoundWalker foxhound,

  label:167 confidence:0.000447 class:English foxhoundEnglish foxhound,

  label:163 confidence:0.000056 class:sleuthhoundsleuthhound,

  *****run finish******

  • 16
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

要养家的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值