了不起的学习生产板OrangePiAiPro

一. OrangePi AiPro介绍和初始化配置

  1. 介绍

香橙派 orangePiAIpro这个板子其实早在一年前就已经有了大面积推广且应用于各种真实的智能场景中了,比如图像识别,大文本语义解析,语音识别等,今日我也终于下手啦。

因为本人本科是一个嵌入式爱好者做了一些机器人机器车等,但当时AI智能还没有火起来;后来上了研究生,开示搞深度学习,可惜当时主要的工作是AI编译器优化或者说深度学习编译器优化,比如TVM,LLVM-IR等,又与真实的人工智能擦肩而过,直到23年人工智能火起来,又重新唤醒了我对人工智能机器人的热情,所以趁着520之际,送给自己一个小小的礼物,希望能够通过这款OrangePiAIPRO板子完成我的一些人工智能机器人的idea。

正式介绍一下这个板子

8TOPS、8GB内存,大拇哥!

所以懂了吧,与其买个3060做训练,不如买个AIpro做训练,小巧、闭环、平时还能用来当个NAS或者小主机,最不要脸还能all in one,训练生活生产各不耽误。

这里有详细介绍就不多说了

https://www.hiascend.com/forum/thread-0285140173361311056-1-1.html

2. 实际安装和使用

我想用来做实验机的, 所以简单的连上我家的路由器, 通过路由器的客户端就能识别到新增的设备IP, 在通过ssh访问这个开发板非常简单

ssh HwHiAiUser@192.168.31.69 密码是Mind@123
登录后可以通过passwd修改密码的吼!

二. OrangePi AiPro日常生产工具的使用

  1. 先把我的nvme的板子搞上去

有一块年久不用的nvme256, 翻箱倒柜的终于找到了, 赶紧装上去再说. 这里不得不说一下OrangePi AIPro这块板子好像对nvme不太友好, 正常的想法是怎么将系统烧到tf卡中, 就怎么把系统烧到nvme应该就可以了吧, 但是我烧了, 根本没反应, 我也匹配了拨码开关到ssd的模式, 完全没有用, 看了操作手册也没有说明为啥不行, 所以只能将nvme当成一块普通的硬盘挂载OrangePi AIPro上了, 系统依然在tf卡中吧!

下面是实际操作, 将nvme挂载到路径/share/m2

cat /proc/partitions 
# 259        0  125034840 nvme0n1 # 这个就是ssd盘符
# 分区
(echo o; echo n; echo p; echo 1; echo ""; echo ""; echo w; echo q) | fdisk /dev/nvme0n1
# 格式化为ext4格式
mkfs.ext4 /dev/nvme0n1p1 
# 查看分区的block ID
(base) HwHiAiUser@orangepiaipro:~$ sudo blkid /dev/nvme0n1p1
[sudo] password for HwHiAiUser: 
/dev/nvme0n1p1: UUID="e774b04e-8436-4ade-8aa1-5f63e62801d1" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="9ea454a9-01"
# 设置开机自动挂载
HwHiAiUser@orangepiaipro:~$ vi /etc/fstab
# 新增
UUID="e774b04e-8436-4ade-8aa1-5f63e62801d1" /share/m2 ext4 defaults 0 0
# 重启生效
sudo reboot

  1. 更新下载源, 下载必须的软件

(base) HwHiAiUser@orangepiaipro:~$ cat /etc/apt/sources.list
# 添加下面的下载源
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb http://repo.huaweicloud.com/ubuntu-ports/ jammy main restricted universe multiverse
deb http://repo.huaweicloud.com/ubuntu-ports/ jammy-security main restricted universe multiverse
deb http://repo.huaweicloud.com/ubuntu-ports/ jammy-updates main restricted universe multiverse
deb http://repo.huaweicloud.com/ubuntu-ports/ jammy-proposed main restricted universe multiverse
deb-src http://repo.huaweicloud.com/ubuntu-ports/ jammy main restricted universe multiverse
deb-src http://repo.huaweicloud.com/ubuntu-ports/ jammy-security main restricted universe multiverse
deb-src http://repo.huaweicloud.com/ubuntu-ports/ jammy-updates main restricted universe multiverse
deb-src http://repo.huaweicloud.com/ubuntu-ports/ jammy-proposed main restricted universe multiverse
# 更新和下载
sudo apt update -y && sudo apt upgrade -y

  1. 担心内存不足, 先搞16G的共享内存再说

# 创建文件
mdkir -p /share/m2/.swap && cd /share/m2/.swap

# 下载创建swap文件的工具
git clone https://github.com/jetsonhacks/postFlashTX1.git && cd postFlashTX1/

# 利用工具创建swap空间, 挂载的位置是/share/m2/.swap/swapfile文件中
sudo ./createSwapfile.sh -d /share/m2/.swap -s 16

# 打开swap
sudo swapon -a

# 挂载到/home/swap
sudo swapon swapfile

# 卸载 /swap
sudo swapoff swapfile

# 产看swap
(base) HwHiAiUser@orangepiaipro:.swap$ free -h
               total        used        free      shared  buff/cache   available
Mem:           7.4Gi       1.5Gi       1.0Gi        33Mi       4.9Gi       5.6Gi
Swap:           15Gi       300Mi        15Gi
sudo blkid swapfile 
(base) HwHiAiUser@orangepiaipro:.swap$ cat /etc/fstab 
UUID="27803c0f-6cd2-4d03-b0ff-8d576c0fc4d6" none swap sw 0 0
/share/m2/.swap/swapfile swap swap defaults 0 0

  1. 部署casaos: 远程服务器管理的最佳软件

每拿到一个板子, 我一般第一个服务都会部署casaos, 之所以会部署casaos, 原因有三个:

第一, 他可以让我们清晰地监控到OrangePi AiPro的常规信息, 内存, CPU, 存储信息, 如下图所示

第二, 因为一键安装, wget -qO- https://get.casaos.io | sudo bash, 安装过程中会把常见的软件都自动安装了, 比如git, vim, docker, sambd等等, 最重要的就是docker会安装上, 对后续做项目有非常大的帮助

第三, casaos占用资源非常低, 比起宝塔低上10个量级也不为过

浏览器访问 192.168.31.69 即可

  1. 既然sambd已经安装了, 就用OrangePiAIPro先做一个存储服务(假NAS)

因为我挂载了nvme256, 所以我把这个分区share出来没问题吧

sudo vi /etc/samba/smb.conf
[share] 
	comment = share folder
	#共享文件的服务器所在文件路径
	path = /share/m2
	# 允许浏览          
	browseable = yes  
    # 设置允许的访问的用户, 必须是系统包含的人
	valid user = HwHiAiUser
	#共享开放
	public = no 
	#可写
	writable = yes  
	# 可直接读写使用, 比如视频可以直接播放
	available = yes 
	create mask = 0777 
	directory mask = 0777
	force user = nobody
	force group = nogroup

sudo smbpasswd -a HwHiAiUser

#  重启服务
sudo /etc/init.d/samba-ad-dc restart
# 注意 不用设置开机自动启动, 因为是默认的
# 启动nmbd服务:
sudo service nmbd restart
# 启动smbd服务:
sudo service smbd restart

到这里, 无论是通过浏览器监控主板性能, 还是通过ssh访问后台,, 还是通过文件管理器访问/share/m2都搞定了, 此时的板子已经具备了日常使用的条件和功能了.

文件夹访问\\192.168.31.69\share\m2即可

  1. 那docker都安装完了, 必然要挂点服务啦

首先要修改docker的默认存储路径, 毕竟tf卡才32G, 要把docker路径改为nvme256上面

sudo docker run hello-world
sudo groupadd docker
sudo usermod -aG docker $USER
sudo gpasswd -a $USER docker
newgrp docker
(base) HwHiAiUser@orangepiaipro:swap$ cat /etc/docker/daemon.json 
{
    "registry-mirrors": [
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com"
    ],
    "data-root": "/share/m2/swap/docker"
}
sudo systemctl restart docker
cat docker info
 Docker Root Dir: /share/m2/docker

第一个服务是docker监控, 你以为是命令行嘛? 显然, casaos就行了, 这里有个感叹, 啥时候docker也能识别NPU设备就好了, 当前还是停留在GPU的时代....

其他的服务都是雷同, 整体来开盒, OrangePi AIPro的流畅度真的很不错

  1. 试试整个网络性能吧, 看看当一个NAS合格不

最近有个大模型, 正想存到OrangePi AIPro, 那就一边从Windows上给班子传数据, 一边在下载docker, 看看nvme, 网络, 主板的契合度怎么样

scp -r 文件 HwHiAiUser@192.168.31.69:/share/m

实验结果还真的不错, 加起来100MB/s, 完全够用了!!!

三. OrangePi AiPro大学生入门AI的第一款板子怎么样?

  1. 安装TVM, 试试模型训练效果如何(未完待续...)

TVM

下载llvm和clang
https://github.com/llvm/llvm-project/releases/download/llvmorg-17.0.2/clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz
git clone --recursive https://github.com/mlc-ai/relax.git tvm_unity && cd tvm_unity/
mkdir -p build && cd build
cp ../cmake/config.cmake .
vi config.cmake
set(USE_LIBBACKTRACE OFF)
set(CMAKE_BUILD_TYPE RelWithDebInfo) #这一项在文件中没有,需要添加
set(USE_OPENCL ON) #这一项在文件中可以找到,需要修改
set(HIDE_PRIVATE_SYMBOLS ON) #这一项在文件中没有,需要添加
#这一项在文件中可以找到,需要修改
set(USE_LLVM 路径clang+llvm-17.0.2-aarch64-linux-gnu/bin/llvm-config) 
cmake .. && make -j8

编译完成后, 就可以插入到python环境中了, 整个编译过程大约用了1个小时, 后续需要用TVM进行训练暂时还没想好训练什么, 当前先把环境搞定了已经算成功一大半了!

  1. 查看NPU信息

NPU的常用命令和指南 https://support.huawei.com/enterprise/zh/doc/EDOC1100079287/10dcd668#ZH-CN_TOPIC_0000001264656717

从显示结果上看, 这款OrangePi AIPro板子底层NPU用的是Ascend 310B4, 那么就可以用来做CANN训练了, 网上能搜到很多相关的操作方案, 这里就不做进一步实践了.

【CANN训练营笔记】OrangePI AIPro 体验手写体识别模型训练与推理

  1. 具体的业务应用 yolo图像识别

yolo图像识别其实在商业上有很多应用和成果, 比如海康威视做监控摄像实时识别路人老人宠物等或者根据动态信息行为进行告警, 在或者智能家具通过手势识别在做不同的智能场景.

用这个OrangePi AIPro部署一下yoloV8, 一方面校验一下部署的复杂程度, 另一方面考研一下下OrangePi AIPro的性能, 如下图所示, 识别一张640x480像素的图片, 其中包含四个人和一辆车, 用时8.9ms; 想来如果用yoloV8的模型, 完成视频流的图片识别也是轻轻松松的.

conda create -n tvm python=3.10
conda activate tvm
pip install ultralytics
yolo predict model=yolov8n.pt bus.jpg
# 参考 git clone https://github.com/ultralytics/yolov8.git

在给一个代码测试吧

from ultralytics import YOLO

# Load a model
#  model = YOLO("yolov8n.yaml")  # build a new model from scratch
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)

# Use the model
model.train(data="coco8.yaml", epochs=3)  # train the model
metrics = model.val()  # evaluate model performance on the validation set
results = model("bus.jpg")  # predict on an image
path = model.export(format="onnx")  # export the model to ONNX format

  1. 具体的业务应用之语言大模型工具ollama部署测试

最近一年里其实大语言模型火的一塌糊涂, 尤其是chatgpt简直是YYDS. 这就引爆了市场, 思考通过大模型训练一些专用场景的AI工具变得可能, 比如常见的辅助程序员写写代码, 辅助医生做做病人病人的健康诊断, 辅助运维人员识别识别老bug等

ollama是开源语言大模型的一个服务化工具, 能够让本地的大模型运行起来, 并且提供了很多模型库用来使用, 如果能将ollama部署到orangePi AIPro这块板子上, 这个板子完全就可以用来做日常沟通的趣味机器人, 并且随着未来大模型的演进, 只会实现更精准的语言回答, 让这个板子的未来应用更加有意义.

下面介绍具体是怎么部署的吧, 模型和框架这里都用docker部署, 绝对十分钟部署完成

# 这里安装大模型的UI服务端(用来使用大模型)
(base) HwHiAiUser@orangepiaipro:~$ docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:mainv
# 这里安装大模型的服务端(用来下载大模型)
(tvm) HwHiAiUser@orangepiaipro:yolov8$ docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

(tvm) HwHiAiUser@orangepiaipro:yolov8$ docker ps
CONTAINER ID   IMAGE                                COMMAND               CREATED          STATUS                      PORTS                                           NAMES
9d821d2d4861   ollama/ollama                        "/bin/ollama serve"   22 seconds ago   Up 21 seconds               0.0.0.0:11434->11434/tcp, :::11434->11434/tcp   ollama
2f3c561f6662   ghcr.io/open-webui/open-webui:main   "bash start.sh"       12 minutes ago   Up 12 minutes (unhealthy)   0.0.0.0:3000->8080/tcp, :::3000->8080/tcp       open-webui

docker完成后, 需要访问浏览器IP:3000, 创建个人账号, 右上角的图标中有一个setting, 在通用中修改中文, 然后在连接中输入http://IP:11434, 然后在模型中输入要拉取的模型名称, 比如下面这俩, 分分钟下载完成后, 就可以在主页面上正式的玩耍了.

llama3:8b
gpt-3.5-turbo

这是结果, 真的给人很大的惊喜, 现在的大模型已经基本满足一个普通人的日常使用了, 虽然加载的速度比较慢, 但是还是能接受的, 所以非常肯定这块板子的性能完全够用了, 后续计划使用这个板子的NPU进行大模型的训练, 比如增加一些专用的知识库, 做一些专用的训练, 从最大程度上发挥该板子的性能.

四. 最后Orange Pi AIpro 总结

1. 简介

Orange Pi AIpro 是一款基于昇腾技术的 AI 开发板,具备 8TOPS 的算力和 8GB 内存,适合用于图像识别、大文本语义解析、语音识别等智能场景。它小巧、闭环,除了可以作为 AI 训练设备,还能充当 NAS 或小主机,实现训练、生活、生产的多场景应用。

2. 安装和使用
  • SSH 访问:通过家庭路由器分配的 IP 地址,使用默认用户名和密码(HwHiAiUser/Mind@123)进行 SSH 连接,并建议修改默认密码。
  • 硬件扩展:尝试将 NVMe SSD 作为存储设备挂载到 AIpro 上,尽管遇到了一些兼容性问题,但最终通过将 SSD 作为普通硬盘使用,成功扩展了存储空间。
3. 系统配置
  • 更换下载源:更新了系统的软件源,使用了中国科学技术大学的镜像,提高了软件包的下载速度。
  • 内存扩展:创建了 16GB 的 Swap 分区,以缓解物理内存的压力,并通过 Docker 的配置调整,将 Docker 的数据存储路径更改到了 NVMe SSD 上。
4. 服务部署
  • CasaOS:部署了 CasaOS,用于监控系统状态和简化常用软件的安装。
  • Samba 服务:配置了 Samba 服务,将 NVMe 分区作为网络共享存储使用。
  • Docker 服务:利用 Docker 部署了多种服务,包括监控系统和大模型服务。
5. 性能测试
  • 网络性能:通过 SCP 命令和 Docker 的使用测试了网络性能,达到了 100MB/s 的传输速率,表现令人满意。
  • AI 性能:尝试安装成功TVM,同时部署了 YOLOv8 进行图像识别测试。
6. 大模型部署
  • Ollama 部署:成功部署了开源语言大模型服务化工具 Ollama,通过 Docker 容器化部署,提供了丰富的模型库,并通过 Web UI 进行交互。
7. 结论

Orange Pi AIpro 作为一款性价比高的 AI 开发板,不仅在 AI 学习和研究领域表现出色,而且在实际应用中也展现出了良好的性能和扩展性。无论是作为入门学习的工具,还是用于特定的业务场景,它都能够提供足够的支持。随着技术的不断进步和社区的发展,Orange Pi AIpro 的应用前景将更加广阔。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Ambari】Docker 安装Ambari 大数据单机版本

目录 一、前期准备 1.1 部署 docker 1.2 部署 docker-compose 1.3 版本说明 二 、镜像构建启动 2.1 系统镜像构建 2.2 安装包源镜像构建 2.3 kdc镜像构建 2.4 集群安装 2.5 容器导出为镜像 三、Ubuntu环境安装测试 3.1 环境准备 3.2 集群容器启动 一、前期准备 1.…

Android Activity 设计详解

文章目录 Android Activity 设计说明1. Activity 的生命周期2. Activity 的启动模式3. Activity 的通信4. Activity 的布局和视图管理5. Activity 的配置变化处理6. Activity 的保存和恢复状态7. Activity 的任务和返回栈 总结 Android Activity 设计说明 在 Android 中&#…

了解Java垃圾收集

Java 的垃圾收集机制在 Java 应用程序开发中至关重要。此机制对于通过消除不再使用的对象来释放内存空间得过程来说至关重要。在这篇文章中,我带大家深入了解下 Java 垃圾收集的机制,并探索其工作原理、优点以及实现最佳性能的最佳实践。 1.什么是 Java…

数据挖掘之归一化

归一化(Normalization)的概念 在数据分析和机器学习中,归一化(Normalization)是一个常见的数据预处理技术。归一化的目的是将数据特征缩放到一个共同的尺度上,以便于后续的分析和建模。 归一化也称为最小-最大规范化 公式: x ′ x − m i n ( x ) m a x ( x ) − m i n ( x…

httpsok-v1.12.0支持LB证书自动部署

🔥httpsok-v1.12.0支持LB证书自动部署 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具,基于全新的设计理念,专为 Nginx 、OpenResty 服务器设计。已服务众多中小企业,稳定、安全、可靠。 一行命令,一分钟轻松搞…

【Python】 探索Python中的“命名元组”

基本原理 在Python中,元组(tuple)是一种不可变序列,它允许我们存储一系列的元素,并且这些元素一旦被创建就不能被修改。元组的这种不可变性使得它们在多线程编程中非常安全,因为不需要担心数据被意外修改。…

2024电激世界脉动-中国汽车品牌全球化制胜手册

来源:奥美Ogilvy: 近期历史回顾: 2024中国宏观经济专题报告-数据要素市场建设 2023-2024年度报告.pdf 2024制药与生化医疗技术产业链白皮书.pdf 从可再生能源到绿氢-中国投资助力埃及能源转型.pdf 2024有机旅行中国行业指引.pdf 2024中国技术…

SpringBoot——发送HTML格式的邮件

目录 项目总结 新建一个SpringBoot项目 pom.xml application.properties配置文件 EmailService服务类 SpringbootMailHtmlApplicationTests测试类 项目总结 在SpringBoot项目中发送HTML格式的邮件的思路: 添加依赖:在项目中添加spring-boot-starte…

ROCm上运行网络中的网络(NiN)

7.3. 网络中的网络(NiN) — 动手学深度学习 2.0.0 documentation (d2l.ai) 代码 import torch from torch import nn from d2l import torch as d2ldef nin_block(in_channels, out_channels, kernel_size, strides, padding):return nn.Sequential(nn.…

B端:ElementUI、AntDesign、若依等看腻了,来点不一样的。

现在对ElementUI、AntDesign和若依这些 UI 框架感到厌倦了,本次给大家分享一些更加个性化的UI界面。

PHP深入理解-PHP架构布局

PHP的架构布局涉及多个层次,让我们一起探讨一下吧!🚀 执行流程:解析为Token:将PHP代码解析成标记(tokens)。抽象语法树:将语法解析树转换为抽象语法树。Opcodes:将抽象语…

如何保养和维护气膜体育馆—轻空间

随着经济的飞速发展,气膜体育馆以其新颖的外观、优美的造型、节能环保的特点,迅速进入体育市场。然而,对于气膜体育馆的维护和保养是不容忽视的问题,必须引起重视。下面我们将详细介绍气膜体育馆的维护需要从哪些方面着手。 一、保…

后量子密码算法的数学原理

后量子密码算法,作为应对未来量子计算时代挑战的重要技术手段,其研究和应用正在逐步成为信息安全领域的热点。以下是对后量子密码算法的详细阐述: 一、背景与意义 随着量子计算技术的快速发展,传统的公钥密码算法,如RS…

欧科云链:Web3.0时代 具备链上数据分析能力的公司愈发凸显其价值

在当今激烈的市场竞争中,新兴互联网领域迅速崛起,Web2.0已相对成熟,用户创造数据,但不拥有数据。被视为新的价值互联网的Web3.0,赋予用户真正的数据自主权,它的到来被认为是打破Web2.0垄断的机遇。 在Web3…

深入pandas:数据分析

目录 前言 第一点:导入模块 第二点:准备数据 第三点:简单的分析数据 第四点:【重点】数据透支 总结 前言 在数据分析与挖掘的领域,了解如何使用工具和方法来探索数据是至关重要的。本文将探讨如何利用Python中的…

探索RS与AES加密技术:从经典到现代

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、MD5加密技术:经典中的经典 二、非对称加密:RSA技术的魅力 RSA技…

Samtec mPower®电源连接器:高能、可靠、灵活、小巧

【摘要/前言】 电源连接器是互连解决方案中不可或缺的一个组成部分。虽然相较于比较爱“竞速”的信号连接器,电源连接器的技术迭代不是那么频繁,但是它是连接电源和用电设备的重要纽带,想要确保设备正常运行,就少不了它的身影。 …

记录一次安装k8s初始化失败

实例化 kubeadm init --configkubeadm.yaml --ignore-preflight-errorsSystemVerification报错 [init] Using Kubernetes version: v1.25.0 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR CRI]: co…

移动摄像头专网需要解vlan,如何解决

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

最后两天!百度云加速正式停服

百度云加速将于5月30日,正式关闭服务器,仅保留官网首页通知。 届时如网站还在百度云加速接入的,将无法正常访问! 如果您还有域名在百度云加速接入的请尽快做迁移安排,以免造成损失。 目前在主机吧购买的域名已经全部…