香橙派Kunpeng Pro评测

有幸受邀评测香橙派与华为鲲鹏在2024年5月12刚刚联合发布的新品香橙派Kunpeng Pro。

本文将从软硬件、AI算法测试等角度简单分享一下博主拿到板子以来感受与所做的评测。

一、硬件

在这里插入图片描述
香橙派Kunpeng Pro实物图

处理器方面,香橙派Kunpeng Pro采用了4核64位armv8架构处理器,主频提升到了1.6GHz,同时集成了昇腾(Ascend)AI处理器(应为310B),拥有8TOPS(int8)AI算力。
内存与存储方面,拥有8GB/16GB LPDDR4X内存,支持TF卡、eMMC、NVMe SSD、SATA SSD等多种存储扩展,使得香橙派Kunpeng Pro可以在内存与存储方面支持流行的AI应用。特别是最低8GB的内存,足以支持很多AI模型的推理了。

在这里插入图片描述
在这里插入图片描述

除此之外,香橙派Kunpeng Pro还提供了丰富的接口,包括两个HDMI输出接口(有一个HDMI接口输出貌似还有点问题,需要后续跟进)、GPIO接口、两个USB3.0接口、一个USB Type-C 3.0接口、两个MIPI摄像头接口等。大部分外设的扩展都没有问题。
另外,值得一提的是,香橙派Kunpeng Pro附带的Type-C电源为65W PD电源,属实良心了。

二、软件

香橙派Kunpeng Pro预安装了openEuler系统(默认openEuler与root用户密码都是openEuler),提供了类PC桌面环境,对新手来说,插上电源、显示器和键鼠外设就可以轻松上手。此外还预安装了openGauss(数据库)、DevKit(开发者工具集)等,有相关需求的朋友们可以自行探索它们的用途。
对开发者来说,更令人惊讶的是竟然预装了VSCode。

三、AI应用测试 - 以YOLO算法推理为例

1.Ascned驱动、固件与CANN Toolkit
在Ascend平台上运行AI算法,需要驱动、固件与CANN Toolkit的支持。

在这里插入图片描述

实际上,Ascend芯片的驱动在这块香橙派Kunpeng Pro上也是预安装了的,官方的Kunpeng-Develop-openEuler-22.03-LTS-SP3-20240506-0416镜像中包含了23.0.0的驱动的。在root用户下,执行npu-smi info,可得到如下信息:
在这里插入图片描述

可以看到,实际上目前芯片的健康状态为Alarm,并不是OK的状态,也就无法工作。
我们覆盖安装一次驱动看看。首先在下面地址下载驱动包23.0.0版本:
https://www.hiascend.com/hardware/firmware-drivers/community?product=5&model=25&cann=All&driver=1.0.0.alpha
安装如下:

chmod +x Ascend-hdk-310b-npu-driver-soc_23.0.0_linux-aarch64.run
./Ascend-hdk-310b-npu-driver-soc_23.0.0_linux-aarch64.run --full

在这里插入图片描述

安装成功,重启后再执行npu-smi info,发现也没有任何变化。因此只能等待后续驱动更新再看看了,目前Ascend的性能无法测试。

值得注意的是,在openEuler用户下,执行npu-smi info,会有如下错误提示:
在这里插入图片描述

说明openEuler用户没有权限调动驱动与Ascend NPU。仅能通过root用户调用,存在一定的安全隐患。Ascend官方安装指引为解决这一问题提供了一种可能性(安装时使用–install-for-all选项),为此,博主在安装310B驱动包时曾尝试为所有用户安装驱动,然而却发现这一选项–install-for-all并未被23.0.0驱动所支持:
在这里插入图片描述

因此只能暂时作罢,希望后续这个问题也可以得到解决。

注意,由于Ascend并不能被正确调用,接下安装固件和CANN Toolkit操作其实没有太大意义,只是期待后续驱动更新后,可以直接使用Ascend。

观察/usr/local/Ascend目录,发现并没有固件目录firmware:
在这里插入图片描述

上述下载驱动页面同样提供了固件下载。安装固件:

chmod +x Ascend-hdk-310b-npu-firmware-soc_7.1.0.3.220.run ./Ascend-hdk-310b-npu-firmware-soc_7.1.0.3.220.run --full

接下来,安装CANN Toolkit。注意,能找到的支持310B的CANN版本应为7.0.0.beta1。安装步骤步骤如下:
1)安装依赖
yum install -y gcc gcc-c++ make cmake unzip zlib-devel libffi-devel openssl-devel pciutils net-tools sqlite-devel lapack-devel gcc-gfortran
2)下载CANN安装包【注意需要登录,下载7.0.0.beta1】
https://www.hiascend.com/developer/download/community/result?from=firmware&product=5&model=25&cann=All
3)命令行安装CANN

# 给予执行权限
chmod +x Ascend-cann-toolkit_7.0.0_linux-aarch64.run
# 执行安装命令
./Ascend-cann-toolkit_7.0.0_linux-aarch64.run --install

2.安装MindSpore
需要根据CANN和MindSpore对硬件平台的支持选择安装的版本:
https://www.mindspore.cn/versions/en#ascend-supporting-software-package
在这里插入图片描述

CANN一般向下兼容,此前安装了7.0.0.beta1,硬件平台为Ascend 310B,因此可以选择安装MindSpore 2.1.1。

推荐使用官方自动安装脚本,会自动安装sympy、te、hccl。使用官方自动安装脚本安装MindSpore的步骤如下:

# 安装MindSpore 2.1.1和Python 3.7
wget https://gitee.com/mindspore/mindspore/raw/master/scripts/install/euleros-ascend-pip.sh 
MINDSPORE_VERSION=2.1.1 bash -i ./euleros-ascend-pip.sh

注1:博主实测时发现miniconda始终下载不下来,如果有遇到同样问题的,可以试着修改下安装脚本里的源,或者直接再conda官网下载最新的linux_aarch64架构的安装包,自行安装。

上述自动安装脚本创建了mindspore_py37虚拟环境,后续可以在此环境安装AI算法库等。

下面测试安装结果。CPU平台:

import numpy as np
import mindspore as ms
import mindspore.ops as opsms.set_context(device_target="CPU")
x = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
y = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
print(ops.add(x, y))

在这里插入图片描述

测试通过。

Ascend平台测试:

import numpy as np
import mindspore as ms
import mindspore.ops as opsms.set_context(device_target="Ascend")
x = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
y = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
print(ops.add(x, y))

测试无法给出运行结果。

3.mindyolo克隆与测试
mindyolo是MindSpore Lab基于Mindspore实现的YOLO系列算法的集成工具箱。博主基于这个工具箱对香橙派Kunpeng Pro的AI推理性能进行测试。在执行下列命令前,注意切换到mindspore_py37虚拟环境。

git clone https://github.com/mindspore-lab/mindyolo.git
cd mindyolo/
pip install -r requirements.txt
pip install mindyolo

接下来,下载YOLO v5s预训练权重:

wget https://download.mindspore.cn/toolkits/mindyolo/yolov5/yolov5s_300e_mAP376-860bcf3b.ckpt

mindyolo支持的测试平台有:[‘CPU’, ‘GPU’, ‘Ascend’, ‘Davinci’]。目前,我们只能先测试一下CPU。随便下载一张图片,博主下载了一张airplane.jpg的照片:
在这里插入图片描述

测试如下:

python demo/predict.py --config ./configs/yolov5/yolov5s.yaml --weight=./yolov5s_300e_mAP376-860bcf3b.ckpt --image_path ./airplane.jpg --device_target=CPU

在这里插入图片描述
在这里插入图片描述

可以看到推理耗时为18s,还是挺长的。值得注意的是这里面包含了较长的模型加载时间,在进行视频在线推理时,这个时间可以被省掉。感兴趣的读者可以进一步测试。

我们参考https://zhuanlan.zhihu.com/p/648665620中对树莓派4B(4G)进行测试的结果做一个简单对比。下面这张图的推理耗时约72s:
在这里插入图片描述

在香橙派Kunpeng Pro上进行推理测试如下:

python demo/predict.py --config ./configs/yolov5/yolov5s.yaml --weight=./yolov5s_300e_mAP376-860bcf3b.ckpt --image_path ./image1.png --device_target=CPU

在这里插入图片描述
在这里插入图片描述

可见,推理耗时约为21s,相比于树莓派4B,这块香橙派Kunpeng Pro 的CPU性能是有很大的进步的。

四、总结

总体来看,香橙派Kunpeng Pro 在软硬件层面都是干货满满,值得入手。不足的是,目前Ascend芯片的调用还存在一些问题,官方也没有给出详细的配置指引,期待后续的更新。

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

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

相关文章

gulp入门6:watch

当使用Gulp进行前端开发自动化时,gulp.watch 是一个非常有用的功能,用于监视文件或文件夹的变化,并在这些文件或文件夹发生变化时执行特定的任务。以下是关于 gulp.watch 的深入讲解: 1. gulp.watch 的基本用法 gulp.watch 的基…

生产者延迟消息和重试机制

messageDelayLevel1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 延迟消息级别public PutMessageResult putMessage(final MessageExtBrokerInner msg) {//事务消息处理if (tranType MessageSysFlag.TRANSACTION_NOT_TYPE|| tranType MessageSysFlag.TRANSACT…

Android manifest清单文件意外权限来源和合并规则

问题背景 当自写APP发现无缘无故多申请了多个权限,其中一个就是:android.permission.WAKE_LOCK. 一想就知道如果并非自己在APP main中引入的,那就是依赖的库清单文件导入进来的. 定位问题 定位手段 1.manifest-merger-buildVariant-report.txt 根据其内容可知, WAKE_LOCK 权…

揭秘!编写高质量代码的关键:码农必知的黄金法则!

文章目录 一、保持代码的简洁与清晰二、遵循良好的命名规范三、注重代码的可读性四、利用抽象与封装五、遵循SOLID原则六、关注代码性能七、确保代码安全性《码农修行:编写优雅代码的32条法则》编辑推荐内容简介目录前言/序言 在编程的世界里,每一位码农…

源达投顾的客户服务质量怎么样?

在金融服务行业中,客户服务质量是衡量一个公司成功与否的关键因素之一。源达投顾作为一家专业的投资顾问机构,其客户服务质量一直备受关注。那么,源达投顾的客户服务质量怎么样? 一、客户满意度调查方法 为了全面、客观地了解源…

如何使低版本浏览器支持HTML5标签,以及如何实现布局中的左边固定宽度、右边自适应,并设置滚动条自动选择最高的那个

要让低版本浏览器支持HTML5标签,可以使用以下方法: 1:使用 HTML5 Shiv 库: HTML5 Shiv 是一个 JavaScript 库,可以让低版本的 IE 浏览器(IE6-IE9)识别和渲染 HTML5 标签。使用方法如下: <!--[if lt IE 9]><script src="https://cdnjs.cloudflare.com/ajax/lib…

通讯录恢复怎么办?保护珍贵联系信息的2个必备技能!

手机通讯录扮演着重要的角色&#xff0c;它不仅仅是一个简单的联系方式列表&#xff0c;更是我们与亲朋好友、同事、业务伙伴等之间关系的见证。万一不慎丢失或误删通讯录&#xff0c;学会通讯录恢复的技能变得非常重要。本文将为你介绍几种保护珍贵联系信息的必备技能&#xf…

长文总结 | Python基础知识点,建议收藏

测试基础-Python篇 基础① 变量名命名规则 - 遵循PEP8原则 普通变量&#xff1a;max_value 全局变量&#xff1a;MAX_VALUE 内部变量&#xff1a;_local_var 和关键字重名&#xff1a;class_ 函数名&#xff1a;bar_function 类名&#xff1a;FooClass 布尔类型的变量名…

2024 rk

1.mysql、redis分布式锁 case: 商品秒杀 1)使用 MySQL 作为分布式锁来实现商品秒杀功能可能存在以下几个缺点&#xff1b; 使用 MySQL 作为分布式锁来实现商品秒杀功能可能存在以下几个缺点&#xff1a; 单点故障&#xff1a;如果使用单个 MySQL 实例作为分布式锁的存储介质…

文件包含FI漏洞总结

文件包含漏洞模板 文件包含读取 ?filephp://filter/convert.base64-encode/resourcexxx.php ?filephp://filter/readconvert.base64-encode/resourcexxx.php 文件包含 ?filephp://input ?filefile://c:\boot.ini ?filedata://text/plain;base64,SSBsb3ZlIFBIUAo ?fileph…

yolox-何为混合精度计算AMP?

何为AMP&#xff1f; 全称&#xff1a;Automatic mixed precision自动混合精度。 功能&#xff1a;在神经网络推理过程中&#xff0c;实现针对不同层采用不同的数据精度进行计算&#xff0c;从而实现节省显存和加速训练的目的。 此处提到的不同数据精度包括&#xff1a;32位浮…

【Golang】gin框架如何在中间件中捕获响应并修改后返回

【Golang】gin框架如何在中间件中捕获响应并修改后返回 本文讲述如何捕获中间件响应以及重写响应如果想在中间件中记录响应日志等操作&#xff0c;我们该如何获取响应数据呢&#xff1f;假如需要统一对响应数据做加密&#xff0c;如何修改这个返回数据再响应给客户端呢&#xf…

适合学生党的蓝牙耳机有哪些?盘点四大性价比蓝牙耳机品牌

对于追求高品质音乐体验而又预算有限的学生党来说&#xff0c;一款性价比高的蓝牙耳机无疑是最佳选择&#xff0c;在众多品牌和型号中&#xff0c;如何挑选到既适合自己需求又价格亲民的蓝牙耳机&#xff0c;确实是一个值得思考的问题&#xff0c;作为一个蓝牙耳机大户&#xf…

AI 绘图要如何入门?有哪些好用的软件推荐?(附工具+教程+变现模式)

1.Ai绘画如何入门 不需要把Ai绘画想的很复杂 抛去复杂的应用 使用现成简单的工具 只需要学会提示词 描述你想要的画面即可 提示词 不需要太复杂&#xff0c;也不能太简单&#xff0c;太简单依赖于ai的基本样式&#xff0c;关键是要抓住你想要的核心描述 AI不太擅长理解人类的…

leetcode 712.两个字符串的最小ASCII删除和

思路&#xff1a;LCS&#xff0c;dp 其实就是把dp的状态信息变了一下&#xff0c;但是本质上的状态转移其实是没有很大的变动&#xff0c;既然是让我们删除其他不一样的字符&#xff0c;那么保留下来的肯定就是两个字符串的最长公共子序列了。这样的我们就可以设状态方程为最长…

k8s笔记——GVK是什么

文章目录 k8s的GVK是什么查看资源的GVK查看pod查看service查看Deployment查看NameSpace查看Node 参考资料 k8s的GVK是什么 在 Kubernetes 中&#xff0c;GVK 是指 Group、Version 和 Kind 三个字段&#xff0c;用于唯一标识 Kubernetes 资源对象。 Group 指的是 Kubernetes A…

如何批量结构化分汇多工作表sheet?

目录 一、如遇合并表格&#xff0c;注意结构化二、确认主键&#xff0c;合并所有文件数据三、sheet2同理四、案例总结 如果遇到这样情形&#xff0c;多文件夹多文件&#xff0c;多工作表的分汇场景&#xff1b;可以参考以下方法解决。 一、如遇合并表格&#xff0c;注意结构…

脑机接口:是现代医学的外挂,更是瘫痪病人的豪赌

5 月 17 日&#xff0c;马斯克公开表示&#xff0c;继今年年初首次成功将大脑芯片植入患者大脑后&#xff0c;Neuralink 正在寻找第二位受试者接受这项手术。 5 月 20 日&#xff0c;美国食品药品监督管理局 (FDA) 批准了马斯克的 Neuralink 公司为第二位患者植入脑芯片&#…

Python图形界面(GUI)Tkinter笔记(十四):Entry与Button的碰撞(1)

用功能按钮(Button)、单行文本输入框(Entry)、文本框内容读取(get)实现一个极简易的加法运算,及与其他控件的交互,提高体验,主要体现其人机交互的意义。因为Entry()文本输入框没有限制输入内容属性的参数,它是把所有的输入都视作它特有的一个类属性,所以用get()方法读取出…

若依新增页面,在左侧显示菜单栏的页面,可点击

选择指定的某个目录下 菜单名称&#xff0c;路由地址&#xff0c;组件路径这几个是必填的&#xff0c;其他的暂时就不用管了。 菜单名称&#xff1a;就是显示到左侧目录中的名称。 路由地址&#xff1a;自定义&#xff0c;一般写页面名称就可以。 组件路径&#xff1a;根据前端…