飞腾平台Arm NN软件栈安装使用指南

【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。 点击这里开始你的技术升级之旅吧

image.png

 本文分享至飞腾开发者平台《飞腾平台Arm NN软件栈安装使用指南》

1 介绍

  ArmNN可在基于Arm的高能效平台上轻松构建和运行机器学习应用程序。ArmNN桥接了现有神经网络框架与底层硬件平台。本文介绍了如何在飞腾平台上构建ArmNN软件栈。

2 环境要求

2.1 硬件环境

  硬件环境如下表所示。

项目说明
CPUFT-2000+/64、飞腾腾云 S2500、FT-2000/4、飞腾腾锐 D2000
网络
存储
内存

2.2 软件环境

  软件环境如下表所示。

项目版本下载地址
OScentos8.2、Kylin V10、 Ubuntu19.10
GCC9.2.1、7.3.0、8.3.1、9.3.0
GNU Binutils2.32、2.33、2.34、2.35
Glibc2.28、2.23、2.31、2.30
boosthttps://dl.bintray.com/boostorg/release/1.64.0/source/boost_1...
gatorhttps://github.com/ARM-software/gator.git
ComputeLibraryhttps://github.com/ARM-software/ComputeLibrary.git
protobufhttps://github.com/protocolbuffers/protobuf.git
tensorflowhttps://github.com/tensorflow/tensorflow.git
Arm NNhttps://github.com/ARM-software/armnn.git
googlemockhttps://github.com/google/googlemock/archive/release-1.7.0.zip
googletest

3 编译环境搭建

3.1 编译安装GCC(示例)

  步骤一 获取gcc-9.3。

$ wget [.0.tar.gz](http://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz)

  步骤二 解压并下载所依赖的库。

$ tar -xzvf gcc-9.3.0.tar.gz       //解压缩$ cd gcc-9.3.0            //进入解压文件路径$ ./contrib/download_prerequisites   //运行脚本自动下载所需要的依赖文件和库

  步骤三 建立输出目录。

$ mkdir gcc-build-9.3.0$ cd gcc-build-9.3.0

  步骤四 编译和安装。

$ ../configure -enable-checking=release -enable-language=c,c++ -disable-multilib$ make && make install

  步骤五 加载环境变量。

# 若gcc指令安装目录不在PATH中,则还需设置export PATH=/gcc_path/bin:$PATH$ export LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH

  步骤六 版本查看。

gcc默认安装路径为/usr/local/bin,编译安装成功之后,可使用以下命令进行版本查看:
$ gcc -v

  步骤七 创建链接符号。

$ cd /usr/local/bin$ ln -s aarch64-unknown-linux-gnu-gcc aarch64-linux-gnu-gcc$ ln -s aarch64-unknown-linux-gnu-g++ aarch64-linux-gnu-g++$ ln -s aarch64-unknown-linux-gnu-c++ aarch64-linux-gnu-c++

3.2 编译安装GNU Binutils(示例)

  GNU Binutils是二进制工具的集合,是linux系统不可缺少的一个工具包。

  步骤一 下载binutils源码。

$ cd $HOME$ wget <http://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.gz

  步骤二 解压源码包。

$ tar -xzvf binutils-2.35.tar.gz      //解压缩$ cd binutils-2.35           //进入解压文件路径

  步骤三 编译和安装。

$ mkdir buid$ mkdir -p \$HOME/binutils          //创建安装目录$ cd build# 执行以下命令进行编译安装$ ../configure prefix=\$HOME/binutils$ make$ make install

  步骤四 拷贝指令。

$ cd $HOME/binutils/bin$ sudo cp * /usr/local/bin  //将生成指令拷贝至指定目录中

  步骤五 版本查看。

  编译安装成功之后,可使用以下命令进行版本查看:

$ ld --version

4 构建Arm NN软件栈

  运行build脚本,下载并编译构建Arm NN软件栈所需的所有软件:

$ cd $HOME$ git clone https://github.com/ARM-software/Tool-Solutions.git$ cd Tool-Solutions/ml-tool-examples/build-armnn/$ ./build-armnn.sh

5 示例程序运行

5.1 MNIST Draw

  MNIST Draw是一个有趣的单页网站,用户可以使用机器学习对0到9之间的数字进行手绘和分类,分类时使用对MNIST数据集进行训练得到的机器学习模型。该项目是mnist-draw的修改版,它使用Arm NN SDK在Arm Cortex-A CPU上进行推理。该程序在飞腾平台上运行,可以使用浏览器通过网络进行访问。如下所示:

  步骤一 进入资源库。

$ cd $HOME/Tool-Solutions/ml-tool-examples/mnist-draw# 安装所需要的模块,所需模块具体可见目录下的requirements.txt$ sudo yum install python3-numpy.aarch64$ sudo yum install python3-pillow.aarch64

  步骤二 构建armnn-draw应用程序。

$ make -C armnn-draw

  步骤三 设置Arm NN环境变量。

$ exportLD_LIBRARY_PATH=$HOME/armnn-devenv/armnn/build:$LD_LIBRARY_PATH

  步骤四 启动python服务器。

$ python3 -m http.server --cgi 8000

  步骤五 程序验证。

    在能访问服务器的机器上打开浏览器,进入http://ip-address:8000,网站界面的示例如下图所示:

image.png

  使用鼠标在空白方框中绘制一个0到9之间的数字,然后单击“Predict”按钮以处理其绘制。处理过程中的任何错误将以警告图标指示并打印到控制台。常见错误包括未在armnn-draw/中编译应用程序以及未使用python3。

  结果以条形图显示,其中每个分类标签从机器学习模型获得的分数在0.0到1.0之间。使用clear按钮清除画布以绘制和处理其他数字。

5.2 MNIST Demo

  MNIST演示应用程序使用对MNIST训练的TensorFlow神经网络,该程序使用Arm NN用于推理。两个示例程序,mnist_tf_convol.cpp和mnist_tf_simple.cpp。这两个应用程序都读取TensorFlow模型。模型以protobuf二进制格式存储在model/目录中,MNIST数据集以存储向量的简单格式存储在目录data/中,该目录包含MNIST测试数据和标签。 使用make构建应用程序,如下所示:

  步骤一 构建应用程序。

$ cd $HOME/Tools-Solutions/ml-tool-examples/mnist-demo$ make

  make生成上述两个示例程序。这些示例的目的是演示如何使用Arm NN在C++应用程序中加载和执行TensorFlow模型。

  步骤二 运行MNIST推理。

  要运行该应用程序,请使用命令行指定要使用的硬件(CPU或GPU)以及要处理的图像数:

# 优化模式: 0:CpuRef, 1:CpuAcc, 2:GpuAcc# 输入大小: 1至2000 (要预测的图像数)$ ./mnist_tf_convol 1 10

  步骤三 结果验证。

  程序正常运行,可以得到类似以下内容的输出:

Optimisation mode: CpuAcc#1 | Predicted: 7 Actual: 7…#10 | Predicted: 9 Actual: 9Prediction accuracy: 100%

  步骤四 性能比较。

  可尝试不同的程序配置,并可比较执行时间:

$ time ./mnist_tf_convol 0 10 # 未优化的cpu设备上的10张图像$ time ./mnist_tf_convol 1 100 # 在优化的cpu设备上的100张图像$ time ./mnist_tf_convol 2 1000 # GPU设备上的1000张图像

推荐阅读

  • 飞腾平台Arm ComputeLibrary编译安装指南
  • 飞腾X100 NPU Benchmark使用说明

欢迎广大开发者来飞腾开发者平台获取更多前沿技术文档及资料

如开发者在使用飞腾产品有任何问题可通过在线工单联系我们


版权所有。飞腾信息技术有限公司 2023。保留所有权利。

未经本公司同意,任何单位、公司或个人不得擅自复制,翻译,摘抄本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。

商标声明

Phytium和其他飞腾商标均为飞腾信息技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。

本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/60660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于JavaSpringboot个人博客

一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA 数据库&#xf…

鸿蒙next ui安全区域适配(刘海屏、摄像头挖空等)

目录 相关api 团结引擎对于鸿蒙的适配已经做了安全区域的适配,也考虑到了刘海屏和摄像机挖孔的情况,在团结引擎内可以直接使用Screen.safeArea 相关api

【GPTs】Gif-PT:DALL·E制作创意动图与精灵动画

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | GPTs应用实例 文章目录 &#x1f4af;GPTs指令&#x1f4af;前言&#x1f4af;Gif-PT主要功能适用场景优点缺点 &#x1f4af;小结 &#x1f4af;GPTs指令 中文翻译&#xff1a; 使用Dalle生成用户请求的精灵图动画&#…

JMeter初体验:从入门到入门的性能测试之旅

一、关于性能测试 1、性能测试概述 性能测试是一种非功能测试&#xff0c;旨在评估系统在不同负载条件下的性能表现。它包括负载测试、压力测试、稳定性测试和基准测试等。性能测试的目的是确保系统在预期的负载下能够正常运行&#xff0c;并满足用户对响应时间、吞吐量和其他…

MongoDB新版本安装配置教程(7.0.15版本-zip下载)

找了半天MongoDB新版本怎么解决没有mongo命令,都没有很好的解决方法 现在分享一下: 首先下载: 然后手动创建 data 和 log 两个文件夹 然后再系统变量配置环境变量 在data的目录下&#xff0c;创建一个db文件 然后:在bin目录下cmd执行: mongod --dbpath D:\MongoDB\data\db …

解决虚拟机未被自动分配ip

文章目录 1. 背景2. 解决步骤 1. 背景 从vulnhub下载的靶场文件&#xff0c;网络适配器模式设置为nat模式之后&#xff0c;启动虚拟机之后发现没有成功分配动态ip。推测是虚拟机分配的网卡名称和原先靶机作者设置网络配置文件 网络接口名称不一致导致。 2. 解决步骤 解决办法就…

路径规划——RRT-Connect算法

路径规划——RRT-Connect算法 算法原理 RRT-Connect算法是在RRT算法的基础上进行的扩展&#xff0c;引入了双树生长&#xff0c;分别以起点和目标点为树的根节点同时扩展随机树从而实现对状态空间的快速搜索。在此算法中以两棵随机树建立连接为路径规划成功的条件。并且&…

2024游戏陪玩app源码的功能介绍/线上陪玩交友上线即可运营软件平台源码搭建流程

一个完整的陪玩交友系统从概念到实现再到维护的全过程得以清晰展现。每一步都需要团队的紧密协作与细致规划&#xff0c;以确保系统既满足用户需求&#xff0c;又具备良好的稳定性和可扩展性。 基础框架 移动端开发框架&#xff1a;如uniapp&#xff0c;它支持多平台开发&…

缓冲式线程池C++简易实现

前言 : 代码也比较短&#xff0c;简单说一下代码结构&#xff0c;是这样的&#xff1a; SyncQueue.hpp封装了一个大小为MaxTaskCount的同步队列&#xff0c;这是一个模板类&#xff0c;它在线程池中承担了存放任务等待线程组中的线程来执行的角色。最底层是std::list<T>…

Unity资源打包Addressable AA包

从零到一 很多资料都是通过一步步设置讲解的&#xff0c;有时很想先快速实现&#xff0c;再了解细节。 下面就是远程加载Cube.prefab然后实例化简单的代码。 代码中可以不需要远程的网址&#xff0c;不需要资源下载的位置&#xff0c;不需要判断是否已经下载到本地。 那是如…

MySQL之索引(2)(B树、B+树、索引分类、聚集索引、二级索引、回表查询)

目录 一、B树结构索引&#xff08;B-树&#xff09; &#xff08;1&#xff09;特点。 &#xff08;2&#xff09;问题&#xff1a;范围查询效率&#xff1f;&#xff1f; &#xff08;3&#xff09;缺点。 1、查询的不稳定性。 2、各叶子节点无联系。 3、IO资源的消耗较多。 二…

翼鸥教育:从OceanBase V3.1.4 到 V4.2.1,8套核心集群升级实践

引言&#xff1a;自2021年起&#xff0c;翼鸥教育便开始应用OceanBase社区版&#xff0c;两年间&#xff0c;先后部署了总计12套生产集群&#xff0c;其中核心集群占比超过四分之三&#xff0c;所承载的数据量已突破30TB。自2022年10月&#xff0c;OceanBase 社区发布了4.2.x 版…

ubuntu使用DeepSpeech进行语音识别(包含交叉编译)

文章目录 前言一、DeepSpeech编译二、DeepSpeech使用示例三、核心代码分析1.创建模型核心代码2.识别过程核心代码 四、交叉编译1.交叉编译2.使用 总结 前言 由于工作需要语音识别的功能&#xff0c;环境是在linux arm版上&#xff0c;所以想先在ubuntu上跑起来看一看&#xff…

Go语言入门教案

文章目录 一、教学目标二、教学重难点&#xff08;一&#xff09;重点&#xff08;二&#xff09;难点 三、教学方法四、教学过程&#xff08;一&#xff09;Go语言简介&#xff08;二&#xff09;环境搭建1. 下载和安装Go语言开发环境2. 配置Go语言环境变量3. 命令行查看Go语言…

普通人如何做好AI数字人直播带货月入10W?

在科技飞速发展的今天&#xff0c;AI数字人直播正以惊人的速度崛起&#xff0c;为直播领域带来了一场前所未有的变革。那到底AI数字人直播前景怎么样&#xff0c;是怎样一个形式&#xff0c;普通人能够利用Ai数字人直播赚取到收益吗&#xff1f; 首先讲到AI数字人直播很多人想的…

飞牛私有云访问外网

飞牛私有云 fnOS NAS 是一款有着卓越的性能以及强大的兼容性和智能化的管理界面&#xff0c;它之所以能在 NAS 市场中脱颖而出&#xff0c;是因为 fnOS 基于最新的 Linux 内核&#xff08;Debian发行版&#xff09;深度开发&#xff0c;不仅兼容主流 x86 硬件&#xff0c;还支持…

论文 | The Capacity for Moral Self-Correction in LargeLanguage Models

概述 论文探讨了大规模语言模型是否具备“道德自我校正”的能力&#xff0c;即在收到相应指令时避免产生有害或偏见输出的能力。研究发现&#xff0c;当模型参数达到一定规模&#xff08;至少22B参数&#xff09;并经过人类反馈强化学习&#xff08;RLHF&#xff09;训练后&…

计算机毕业设计Python+大模型农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

一文窥见神经网络

一文窥见神经网络 1.初识神经元1.1 生物神经元1.2 人工神经元1.3 权重的作用1.4 偏置的作用1.5 激活函数的作用1.5.1 线性激活函数1.5.2 非线性激活函数 2. 神经元模型2.1 多输入单神经元模型2.2 一层神经元模型2.3 神经网络&#xff08;多层神经元&#xff09;模型 3. 神经网络…

【视觉SLAM】2-三维空间刚体运动的数学表示

读书笔记&#xff1a;学习空间变换的三种数学表达形式。 文章目录 1. 旋转矩阵1.1 向量运算1.2 坐标系空间变换1.3 变换矩阵与齐次坐标 2. 旋转向量和欧拉角2.1 旋转向量2.2 欧拉角 3. 四元数 1. 旋转矩阵 1.1 向量运算 对于三维空间中的两个向量 a , b ∈ R 3 a,b \in \R^3 …