最近在使用Atlas 200 DK开发一些应用,使用时感觉环境部署有些麻烦,这里把自己做好的镜像提供给大家,帮助大家快速搭建实验环境。
以下介绍来自官方文档:
Atlas 200 DK是以昇腾310处理器为核心的开发者板形态的终端类产品。主要功能是将昇腾AI处理器的核心功能通过板上的外围接口开放出来,方便用户快速简捷的接入并使用昇腾AI处理器强大的处理能力。Atlas 200 DK 可以运用于平安城市、无人机、机器人、视频服务器等众多领域的预研开发。
开发Atlas 200 DK应用分为两部分内容,开发和运行,由于Atlas 200 DK无法外接键盘、显示器,因此通过PC机开发应用,Atlas 200 DK运行应用。
Atlas 200 DK主要包含Hi3559 Camera模块以及Atlas 200 AI加速模块,开发工具MindStudio所在PC通过USB接口或者网线与Atlas 200 DK开发者板连接。
如图所示,环境部署分为两部分,在PC机上安装开发套件包部署开发环境,在Atlas 200 DK上部署运行环境,Atlas 200 DK跟树莓派一样,是用SD卡做系统的,因此这一步是比较简单的。
本博客提供的方式更简单,开发环境使用Docker镜像,运行环境用img镜像,镜像中除了包含官方文档中要求安装的开发套件包,也安装了OpenCV等通用的软件包,软件包安装参考以下链接:
官方文档:https://support.huaweicloud.com/environment-deployment-Atlas200DK202/atlased_04_0001.html
Gitee文档:
https://gitee.com/ascend/samples/tree/master/cplusplus/environment
https://gitee.com/ascend/samples/tree/master/python/environment
说明:
1.0.9.alpha是Atlas 200 DK的固件和驱动版本号,而应用开发时使用的开发套件包属于CANN,镜像中安装的是社区版CANN3.2.0.alpha001。
首先需要有一台运行Linux系统的PC机,物理机和虚拟机都可以,Windows和MacOS不行,后面会说明原因,资源要求中的Windows系统PC机用于运行环境制作,只需一次。以下以Ubuntu系统为例,其他发行版替换下命令即可。
如果已经安装Docker可跳过该步骤
Docker可以获取别人制作好的镜像,无需自己安装软件包即可使用。
注: Ubuntu桌面版系统默认不启用root账户,而是有一个管理员账户,以下操作均在管理员账户下操作,其他系统可切换到普通用户,配置相应权限。
sudo apt-get update
sudo apt-get install curl
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
说明:
如果安装失败,请参考https://www.cnblogs.com/dream4567/p/9690850.html进行换源操作。
sudo groupadd docker
sudo gpasswd -a USER docker
sudo service docker restart
newgrp docker
USER为当前使用的用户名,比如zmstest,需根据实际情况替换。
说明:
以上命令只需要执行一次,但是在打开新的终端使用普通用户执行docker指令时还是会报权限不足的错误,此时只要在新打开的终端下执行newgrp docker命令就可以了。
直接从Docker Hub中拉取镜像,适用于访问Docker Hub网速较快的。
docker pull taotaoba/develop-env:cann3.3.a1
docker images
推荐使用方式一,当方式一无法拉取镜像的时候再采用这种方式,
tar -zxvf cann3.3.a1.tar.gz
说明:
解压时间较长,解压过程中请勿进行操作,耐心等待即可。
docker load < cann3.3.a1.tar
说明:
时间同样较长,请耐心等待。
docker images
获取镜像之后需要用镜像创建容器,在容器内进行操作。
输入以下命令创建容器,以普通用户Ascend登录,IMAGE ID需要根据实际情况替换:
docker run -it --privileged -v /dev:/dev -v /tmp:/tmp --net=host -e DISPLAY=$DISPLAY IMAGE ID
说明:
镜像中包含root用户和普通用户Ascend,密码均为Huawei@123 ,默认进入为root用户。
输入以下命令切换到Ascend用户。
su Ascend
bash
运行环境部署是把制作好的IMG镜像写到SD卡当中,由于Linux中DD命令恢复镜像对新手不友好,因此使用Windows下软件写入,推荐用Etcher工具快速恢复镜像至SD卡。
Etcher工具下载地址:https://www.balena.io/etcher/
SD卡镜像下载地址(阿里云盘有分享功能后会替换):
镜像,密码:hlij
解压镜像后,打开Etcher工具,选择img文件和SD卡设备,点击Flash,一直等到Flash成功,软件会有进度提示。
说明:
原始镜像基于16G内存卡制作,因此这里需要使用16G以上的SD卡。
SD卡烧录完成后,Windows系统可能会弹出是否格式化的窗口,点取消。
由于SD卡原始镜像采用16G的SD卡制作,因此烧录之后只用了16G的空间,对于更大容量的SD卡来说,需要进行扩区操作。
sudo apt-get update
sudo apt-get install gparted
#安装完成后输入以下命令启动
gparted
请参考官网给出的方法,连接开发板和开发环境。
https://support.huaweicloud.com/environment-deployment-Atlas200DK202/atlased_04_0014.html
注意:
由于Docker容器网络是与宿主机环境共享网络的,所以,以上过程是在宿主机操作系统操作的,也就是说,开发板与宿主机操作系统连接后,Docker容器也与开发板连接了。
通过以上步骤,一个基本的环境就搭建完了。接下来,通过一个Mindstudio自带的Classification(resnet50)样例,来验证环境是否部署成功。
之前已经通过镜像创建了容器,后续进入容器的命令如下:
#可以查看所有容器,包含运行中和已停止。
docker ps -a
#根据ID启动容器
docker start CONTAINER ID
#进入一个已经启动的容器,可以输入命令进行交互
docker exec -it CONTAINER ID /bin/bash
#根据ID关闭容器
docker stop CONTAINER ID
MindStudio已经在Docker中安装完成,在/home/Ascend/program目录下,需要切换到Ascend用户,然后输入以下命令启动:
cd /home/Ascend/program/MindStudio/bin/
./MindStudio.sh
MindStudio已经配置了ADK路径,并打开了一个样例工程,可参考以下链接运行首个应用(Sample-ResNet50)。
https://support.huaweicloud.com/usermanual-MindStudioC76/atlasms_02_0083.html
#通过ID在容器和宿主机之间拷贝文件,拷贝宿主机文件到Docker,拷贝文件夹也无需加-r参数
docker cp path1 CONTAINER ID:path2
#拷贝Docker文件到宿主机
docker cp CONTAINER ID:path1 path2
#通过ID删除一个已停止的容器
docker rm CONTAINER ID
#通过ID删除一个未使用的镜像
docker rmi IMAGE ID
自此,极简安装的Atlas 200 DK环境就已经搭建完成。
如果有兴趣,可以就以下资源去了解AI和产品相关的知识。
1. 华为昇腾开发者论坛:https://bbs.huaweicloud.com/forum/forum-726-1.html
2. 华为昇腾开发者社区:https://ascend.huawei.com