华为Atlas 200DK环境搭建&推理测试_atlas200 环境搭建和推理-程序员宅基地

技术标签: python  国产AI芯片  AI编程  华为  服务器  

引子

  前文已经有一篇,华为服务器Atlas芯片的文章(华为Atlas300ipro/Atlas300t芯片环境搭建_atlas300交叉编译器-程序员宅基地)。熟悉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-程序员宅基地或者从下面的百度网盘下载

百度网盘链接: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 [email protected]

  切换到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-程序员宅基地或者从下面的百度网盘链接下载: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******

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zzq1989_/article/details/135905546

智能推荐

软件测试流程包括哪些内容?测试方法有哪些?_测试过程管理中包含哪些过程-程序员宅基地

文章浏览阅读2.9k次,点赞8次,收藏14次。测试主要做什么?这完全都体现在测试流程中,同时测试流程是面试问题中出现频率最高的,这不仅是因为测试流程很重要,而是在面试过程中这短短的半小时到一个小时的时间,通过测试流程就可以判断出应聘者是否合适,故在测试流程中包含了测试工作的核心内容,例如需求分析,测试用例的设计,测试执行,缺陷等重要的过程。..._测试过程管理中包含哪些过程

政府数字化政务的人工智能与机器学习应用:如何提高政府工作效率-程序员宅基地

文章浏览阅读870次,点赞16次,收藏19次。1.背景介绍政府数字化政务是指政府利用数字技术、互联网、大数据、人工智能等新技术手段,对政府政务进行数字化改革,提高政府工作效率,提升政府服务质量的过程。随着人工智能(AI)和机器学习(ML)技术的快速发展,政府数字化政务中的人工智能与机器学习应用也逐渐成为政府改革的重要内容。政府数字化政务的人工智能与机器学习应用涉及多个领域,包括政策决策、政府服务、公共安全、社会治理等。在这些领域,人工...

ssm+mysql+微信小程序考研刷题平台_mysql刷题软件-程序员宅基地

文章浏览阅读219次,点赞2次,收藏4次。系统主要的用户为用户、管理员,他们的具体权限如下:用户:用户登录后可以对管理员上传的学习视频进行学习。用户可以选择题型进行练习。用户选择小程序提供的考研科目进行相关训练。用户可以进行水平测试,并且查看相关成绩用户可以进行错题集的整理管理员:管理员登录后可管理个人基本信息管理员登录后可管理个人基本信息管理员可以上传、发布考研的相关例题及其分析,并对题型进行管理管理员可以进行查看、搜索考研题目及错题情况。_mysql刷题软件

根据java代码描绘uml类图_Myeclipse8.5下JAVA代码导成UML类图-程序员宅基地

文章浏览阅读1.4k次。myelipse里有UML1和UML2两种方式,UML2功能更强大,但是两者生成过程差别不大1.建立Test工程,如下图,uml包存放uml类图package com.zz.domain;public class User {private int id;private String name;public int getId() {return id;}public void setId(int..._根据以下java代码画出类图

Flume自定义拦截器-程序员宅基地

文章浏览阅读174次。需求:一个topic包含很多个表信息,需要自动根据json字符串中的字段来写入到hive不同的表对应的路径中。发送到Kafka中的数据原本最外层原本没有pkDay和project,只有data和name。因为担心data里面会空值,所以根同事商量,让他们在最外层添加了project和pkDay字段。pkDay字段用于表的自动分区,proejct和name合起来用于自动拼接hive表的名称为 ..._flume拦截器自定义开发 kafka

java同时输入不同类型数据,Java Spring中同时访问多种不同数据库-程序员宅基地

文章浏览阅读380次。原标题:Java Spring中同时访问多种不同数据库 多样的工作要求,可以使用不同的工作方法,只要能获得结果,就不会徒劳。开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中。使用Spring框架时,使用单一数据库是非常容易的,但如果要同时访问多个数据库的话事件就变得复杂多了。本文以在Spring框架下开发一个Sp..._根据输入的不同连接不同的数据库

随便推点

EFT试验复位案例分析_eft电路图-程序员宅基地

文章浏览阅读3.6k次,点赞9次,收藏25次。本案例描述了晶振屏蔽以及开关电源变压器屏蔽对系统稳定工作的影响, 硬件设计时应考虑。_eft电路图

MR21更改价格_mr21 对于物料 zba89121 存在一个当前或未来标准价格-程序员宅基地

文章浏览阅读1.1k次。对于物料价格的更改,可以采取不同的手段:首先,我们来介绍MR21的方式。 需要说明的是,如果要对某一产品进行价格修改,必须满足的前提条件是: ■ 1、必须对价格生效的物料期间与对应会计期间进行开启; ■ 2、该产品在该物料期间未发生物料移动。执行MR21,例如更改物料1180051689的价格为20000元,系统提示“对于物料1180051689 存在一个当前或未来标准价格”,这是因为已经对该..._mr21 对于物料 zba89121 存在一个当前或未来标准价格

联想启天m420刷bios_联想启天M420台式机怎么装win7系统(完美解决usb)-程序员宅基地

文章浏览阅读7.4k次,点赞3次,收藏13次。[文章导读]联想启天M420是一款商用台式电脑,预装的是win10系统,用户还是喜欢win7系统,该台式机采用的intel 8代i5 8500CPU,在安装安装win7时有很多问题,在安装win7时要在BIOS中“关闭安全启动”和“开启兼容模式”,并且安装过程中usb不能使用,要采用联想win7新机型安装,且默认采用的uefi+gpt模式,要改成legacy+mbr引导,那么联想启天M420台式电..._启天m420刷bios

冗余数据一致性,到底如何保证?-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏9次。一,为什么要冗余数据互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量。水平切分会有一个patition key,通过patition key的查询能..._保证冗余性

java 打包插件-程序员宅基地

文章浏览阅读88次。是时候闭环Java应用了 原创 2016-08-16 张开涛 你曾经因为部署/上线而痛苦吗?你曾经因为要去运维那改配置而烦恼吗?在我接触过的一些部署/上线方式中,曾碰到过以下一些问题:1、程序代码和依赖都是人工上传到服务器,不是通过工具进行部署和发布;2、目录结构没有规范,jar启动时通过-classpath任意指定;3、fat jar,把程序代码、配置文件和依赖jar都打包到一个jar中,改配置..._那么需要把上面的defaultjavatyperesolver类打包到插件中

VS2015,Microsoft Visual Studio 2005,SourceInsight4.0使用经验,Visual AssistX番茄助手的安装与基本使用9_番茄助手颜色-程序员宅基地

文章浏览阅读909次。1.得下载一个番茄插件,按alt+g才可以有函数跳转功能。2.不安装番茄插件,按F12也可以有跳转功能。3.进公司的VS工程是D:\sync\build\win路径,.sln才是打开工程的方式,一个是VS2005打开的,一个是VS2013打开的。4.公司库里的线程接口,在CmThreadManager.h 里,这个里面是我们的线程库,可以直接拿来用。CreateUserTaskThre..._番茄助手颜色

推荐文章

热门文章

相关标签