BlueXIII's Blog

热爱技术,持续学习

0%

华为Atlas200DK学习笔记

相关资源

官网

PDF下载

软件部署指南PDF下载

  • 了解产品/Atlas 200 用户指南.pdf
  • 了解产品/华为服务器 安全信息.pdf
  • 安装升级/Atlas 200 DDK安装指南(CentOSX86).pdf
  • 安装升级/Atlas 200 DDK安装指南(UbuntuX86).pdf
  • 安装升级/Atlas 200 源码编译安装指南.pdf
  • 安装升级/Atlas 200 软件开发指南.pdf
  • 参考指南/Atlas 200 IDE-daemon-client命令参考.pdf
  • 二次开发/Atlas 200 DVPP API参考.pdf
  • 二次开发/Atlas 200 GE API参考.pdf
  • 二次开发/Atlas 200 Matrix API参考.pdf
  • 二次开发/Atlas 200 TE API参考.pdf
  • 二次开发/Atlas 200 TE自定义算子开发指导 (命令行方式).pdf
  • 二次开发/Atlas 200 应用软件开发指导书.pdf
  • 二次开发/Atlas 200 模型转换指导.pdf
  • 二次开发/Atlas 200 硬件开发指南.zip
  • 二次开发/Atlas 200 算子清单.pdf
  • 二次开发/Atlas 200 高性能应用编程用户手册.pdf

文章收集

初步了解

Atlas 200 DK

华为Atlas 200 DK AI开发者套件是以昇腾310芯片为核心的一个开发者板形态产品,帮助AI应用的开发者快速熟悉开发环境。

其主要功能是将昇腾310芯片的核心功能通过该板上的外围接口开放出来,方便用户快速简捷的接入并使用昇腾310芯片强大的处理能力。

Atlas 200 DK配备一个核心部件Atlas 200 AI加速模块,通过高速连接器将昇腾310芯片的主要业务接口通过底板扩展出来。

得益于昇腾芯片的全栈全场景能力,基于Atlas 200 DK AI开发者套件开发的程序只需一次开发,即可实现端、边、云全场景部署。

可以运用于平安城市、无人机、机器人、视频服务器、闸机等众多领域的开发。

2019-10-28-15-01-35

昇腾310 AI芯片

华为在全联接大会2018上,首次宣布了华为的AI战略以及全栈解决方案。与此同时,华为发布了自研云端AI芯片“昇腾(Ascend )”系列,基于达芬奇架构,首批推出7nm的昇腾910以及12nm的昇腾310。

昇腾310芯片的最大功耗仅为8W,主打极致高效计算低功耗AI芯片。半精度(FP16)运算能力8TFLOPS,整数精度(INT8)16TOPS,支持16通道全高清视频解码(H.264/265)。

Mind Studio

Mind Studio是一套基于华为昇腾AI处理器开发的AI全栈开发平台,提供了自定义算子的开发,网络层的网络移植、优化和分析等功能,另外在业务引擎层提供了一套可视化的AI引擎拖拽式编程服务,内置了丰富的高性能算子库,极大的降低了AI应用程序的开发门槛。

Mind Studio是基于Eclipse CHE架构的集成开发环境。
其中:
DDK(Device Development Kit),为开发者提供了基于Ascend芯片的算法开发工具包,包括Host侧及Device侧开发编译时所依赖的库,开发机(UI Host)使用的工具及依赖库,以及一些公共头文件、第三方依赖库、DDK样例等

其中:
Host指与Device相连接的X86服务器、ARM服务器或者WindowsPC,会利用Device提供的NN(Neural-Network)计算能力完成业务。

Device指安装了Ascend 310处理器的硬件设备,利用PCIe接口与Host侧连接,为Host提供NN计算能力。

对于Atlas 200 DK,Ascend 310处理器所在硬件设备与与之相连接的ARM服务器合设,统称为Host。

开发机(UI Host):指Mind Studio所在服务器。

Mind Sutdio的IDE Plugins集成了层的各个工具模块(如模型管理工具(OMG/OME)、调试器、性能分析工具、日志工具、性能调优工具等),为用户提供简洁、友好的图形化编码、编译、调试、性能分析平台

2019-10-28-14-57-13

环境搭建准备

教程学习

整体架构

2019-10-30-09-09-59

安装介质及工具下载

MindStudio部署

安装Ubuntu系统

  • MindStudio需要安装在Ubuntu系统下
  • 版本号最好是16.04.3,且与接下来的SD卡中的Ubuntu系统版本号保持一致
  • 可以使用虚拟机方式安装,也可以直接装到PC机上

安装依赖

1
sudo apt-get install gcc g++ cmake curl libboost-all-dev libatlas-base-dev unzip haveged liblmdb-dev python-skimage python3-skimage python-pip python3-pip libhdf5-serial-dev libsnappy-dev libleveldb-dev swig python-enum python-future make graphviz autoconf libxml2-dev libxml2 libzip-dev libssl-dev sqlite3 python

安装JDK

1
sudo apt install openjdk-8-jdk
1
2
3
4
vi ~/.bashrc

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

注意,必须添加JAVA_HOME和PATH

添加sudoers权限

1
2
3
4
5
6
7
8
su root
chmod u+w /etc/sudoers
vi /etc/sudoers

在`# User privilege specification`下面插入:
yourname ALL=(ALL:ALL) NOPASSWD:SETENV:/usr/bin/apt-get

chmod u-w /etc/sudoers

安装MindStudio

介质准备:

  • mini_mind_studio_Ubuntu.rar
  • MSpore_DDK-1.3.T34.B891-x86_64.ubuntu16.04-aarch64.ubuntu16.04-aarch64.ubuntu16.04.tar.gz

    注意先提前解压mini_mind_studio_Ubuntu.rar
    MSpore_DDK放置到相同目录即可,不要解压

执行安装脚本:

1
2
sudo ./add_sudo.sh yourname
./install.sh

配置交叉编译环境

如果接下来制卡所用到的的Host主机和安装MindStudio的主机是同一台,则可以省略掉此步骤

  1. 解压HuaweiAscend-tools-master.zip
  2. su -到root用户下
  3. 安装依赖并执行make_ui_cross_env.py脚本
    1
    2
    3
    4
    5
    pip3 install pexpect

    apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

    python3 make_ui_cross_env.py

制卡

硬件准备

提前采购:

  • TF卡,16G以上
  • 树霉派兼容摄相头

安装依赖

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

介质准备

  • ubuntu-16.04.3-server-arm64.iso
  • mini_developerkit-1.3.T34.B891.rar
  • HuaweiAscend-tools-master.zip

    放到同一目录下,只解压HuaweiAscend-tools-master.zip

制做SD卡

  1. 解压HuaweiAscend-tools-master.zip,得到make_sd_card.pymake_ubuntu_sd.sh
  2. fdisk -l命令查找SD卡所在的USB设备名称,例如/deb/sdb
  3. 执行制卡脚本
    1
    python3 make_sd_card.py local /dev/sdb`

    USB虚拟网卡方式连接Atlas200DK

  4. 将SD卡插入AtlasDK,上电
  5. 使用USB TypeC链接AtlasDK
  6. 执行IP配置脚本./configure_usb_ethernet.sh,为虚拟网卡分配一个192.168.1.166的IP地址
  7. ping 192.168.1.2 测试

    默认的USB网卡的IP地址为192.168.1.2,NIC网卡的IP地址为192.168.0.2

网线方式连接Atlas200DK

  1. 使用网线连接Atlas DK
  2. 若使用虚拟机,再添加一个虚拟网卡,类型为Bridged,桥接到物理有线网卡上。
  3. 修改/etc/network/interface配置,添加一个192.168.0网段的虚拟IP
    1
    2
    3
    4
    5
    6
    vi /etc/network/interface

    auto enp0s6
    iface enp0s6 inet static
    address 192.168.0.13
    netmask 255.255.255.0
  4. 修改NetworkManager.conf
    1
    2
    vi /etc/NetworkManager/NetworkManager.conf
    managed=true
  5. 重启服务
    1
    2
    service networking restart
    service NetworkManager restart

    SSH登录开发板

    1
    ssh HwHiAiUser@192.168.0.2

    默认密码 Mind@123

使用Mind Studio

启停MindStudio

1
2
~/tools/bin/start.sh
~/tools/bin/stop.sh

Mind Studio

接下来可以在Ubuntu中直接使用Chrome浏览器打开MindStudio Web页面

如果使用虚拟机方式安装的Ubuntu,也可以宿主机中打开页面

MindStudio https://10.211.55.13:8888/

初始用户名密码为: MindStudioAdmin/Huawei123@ ,新密码改为: yourpassword

注意,需要使用Chrome浏览器,不能用FireFox访问
IP地址,端口在~/tools/script/env.conf中配置

Profiling工具

MSVP https://10.211.55.13:8099

初始用户名密码为: msvpadmin/Admin12#$ ,新密码改为: yourpassword

简单编排案例

  1. 新建工程,注意Target选择AtlasDK
    2019-10-31-14-41-39
  2. 拖拉拽
    2019-10-31-14-40-55
  3. Build -> Run
  4. 可以在最后一个节点右键查看结果

图像分类应用

  1. clone示例应用及模型到Host

    1
    2
    git clone https://github.com/Ascend/sample-classification
    git clone https://github.com/Ascend/models/blob/master/computer_vision/classification/alexnet/alexnet.om

    注意在GitHub上下载模型时,由于是大型二进制文件,所以默认启用了Git LFS,不能直接clone

  2. 配置环境变量

    1
    2
    3
    4
    5
    vi ~/.bashrc
    export DDK_HOME=/home/yourname/tools/che/ddk/ddk
    export LD_LIBRARY_PATH=$DDK_HOME/uihost/lib

    source ~/.bashrc
  3. 运行部署脚本

    1
    ./deploy.sh 192.168.0.2 internet

    internet是指在线部署,需要全程联网

  4. 将模型git/models/computer_vision/classification/alexnet/alexnet.om上传到Device的~/models目录
    将Host中的模型/home/yourname/Downloads/Resnet18.om上传到Device的~/models目录

  5. 准备好一张示例图片,分辨率为224*224,上传到Device的~/HIAI_PROJECTS/ascend_workspace/classification/out目录
    sample picture 224x224

  6. SSH到Atlas200DK,并执行示例应用

    1
    2
    3
    4
    5
    6
    7
    ssh HwHiAiUser@192.168.0.2
    # Mind@123

    cd ~/HIAI_PROJECTS/ascend_workspace/classification/out

    ~~python3 run_classification.py -m ~/models/alexnet.om -w 227 -h 227 -i ./sonic.jpg -n 10~~
    python3 run_classification.py -m ~/models/Resnet18.om -w 224 -h 224 -i ./224x224.jpg -n 10

目标检测应用

此示例未验证成功,第3步模型转换失败

  1. clone示例应用及模型到Host
    1
    git clone https://github.com/Ascend/sample-objectdetection
  2. 下载原始网络模型文件及其对应的权重文件
    下载页面
    • test.prototxt
    • faster_rcnn.caffemodel
  3. 模型是基于Caffe的Faster RCNN模型,需要将其转换为Davinci模型
    在Mind Studio操作界面的顶部菜单栏中选择Tool > Convert Model
    模型转换成功后,后缀为.om的Davinci模型放在~/tools/che/model-zoo/my-model/fast_rcnn
  4. 配置环境变量
    1
    2
    export DDK_HOME=/home/yourname/tools/che/ddk/ddk
    export LD_LIBRARY_PATH=$DDK_HOME/uihost/lib
  5. 部署脚本
    1
    ./deploy.sh 192.168.0.2 internet
  6. 上传.om模型到开发板的/home/HwHiAiUser/models
  7. 运行
    1
    2
    3
    4
    ssh HwHiAiUser@192.168.0.2
    # Mind@123
    cd ~/HIAI_PROJECTS/ascend_workspace/objectdetection/out
    python3 run_object_detection_faster_rcnn.py -m ~/models/faster_rcnn.om -w 800 -h 600 -i ./example.jpg -o ./out -c 21