链载Ai
标题: 在基于RK3566的嵌入式开发板上本地部署并运行大模型 [打印本页]
作者: 链载Ai 时间: 1 小时前
标题: 在基于RK3566的嵌入式开发板上本地部署并运行大模型
ingFang SC", "Microsoft YaHei", sans-serif;color: rgb(85, 85, 85);letter-spacing: normal;text-wrap: wrap;background-color: rgb(255, 255, 255);">概述ingFang SC", "Microsoft YaHei", sans-serif;font-size: 14px;letter-spacing: normal;text-wrap: wrap;background-color: rgb(255, 255, 255);">当前,在大模型开源的大背景下,我们已不再满足于通过在线网页、API调用等方式使用大模型,而是希望在本地个人计算机部署运行。众所周知,本地运行大模型,对CPU/GPU有极大的算力要求,个人计算机显得遥不可及。但大模型中也逐渐出现了一些”小”体积的模型,如微软最近开源的phi3mini,这让普通个人计算机离线运行成为可能。而我希望在性能更加局限的嵌入式设备上运行离线大模型,本文将基于RK3566嵌入式开发板(lubancat),介绍离线运行qwen1.5大模型的步骤。ingFang SC", "Microsoft YaHei", sans-serif;color: rgb(85, 85, 85);letter-spacing: normal;text-wrap: wrap;background-color: rgb(255, 255, 255);">嵌入式环境ingFang SC", "Microsoft YaHei", sans-serif;font-size: 14px;letter-spacing: normal;text-wrap: wrap;background-color: rgb(255, 255, 255);" class="list-paddingleft-1">处理器:RK3566(4核A55,1.8GHz)
存储:2G RAM + 8G eMMC(可SD卡扩展)
系统:debian 10.13
uname信息:Linux lubancat 4.19.232 #5 SMP Sat May 20 08:56:33 CST 2023 aarch64 GNU/Linux
ingFang SC", "Microsoft YaHei", sans-serif;color: rgb(85, 85, 85);letter-spacing: normal;text-wrap: wrap;background-color: rgb(255, 255, 255);">运行框架ingFang SC", "Microsoft YaHei", sans-serif;font-size: 14px;letter-spacing: normal;text-wrap: wrap;background-color: rgb(255, 255, 255);">本文使用Ollama作为运行框架,Ollama 是一个便于本地部署和运行大型语言模型的工具,它有如下特性:ingFang SC", "Microsoft YaHei", sans-serif;font-size: 14px;letter-spacing: normal;text-wrap: wrap;background-color: rgb(255, 255, 255);" class="list-paddingleft-1">支持本地运行多种大模型,包括Llama 3、Phi-3、Gemma等
支持跨平台:Linux/macOS/Windows
支持通过GGUF导入模型
ingFang SC", "Microsoft YaHei", sans-serif;color: rgb(85, 85, 85);letter-spacing: normal;text-wrap: wrap;background-color: rgb(255, 255, 255);">硬件环境准备ingFang SC", "Microsoft YaHei", sans-serif;font-size: 14px;letter-spacing: normal;text-wrap: wrap;background-color: rgb(255, 255, 255);">由于板载仅8G存储空间,Ollama模型下载、解压需至少预留两倍模型文件大小的空间,因此我希望将模型文件存放在SD卡路径上。ingFang SC", "Microsoft YaHei", sans-serif;font-size: 14px;letter-spacing: normal;text-wrap: wrap;background-color: rgb(255, 255, 255);">由于插入sd卡之后,每次开机需要手动mount到/mnt/sdcard目录,为避免麻烦,可以配置开机自动mount:在文件的最末行,添加:

这样每次开机,/dev/mmcblk1p2会自动mount到/mnt/sdcard目录:

注:/dev/mmcblk1p2 磁盘名称可以使用sudo fdisk -l进行查询。
安装Ollama
Ollama官方实际上提供了在Linux上一条指令进行在线安装的方式:
但是限于网络环境,无法顺利安装完成,本文介绍通过下载Linux可执行文件进行离线安装的方式:
1.下载ollama可执行文件
Ollama提供了amd64、arm64架构下的二进制,RK3566用后者,浏览器输入如下网址既可下载,可直接在Windows环境下载好,再copy到RK3566板子上。
将可执行文件放置到/usr/bin目录下,并更名为ollama:
配置可执行权限:
2.配置ollama为系统启动服务
为ollama创建一个用户
(官方这步创建了一个ollama用户,并且指定了主目录/usr/share/ollama,后续模型文件也会默认下载到该目录,但我发现权限会导致不少问题,所以我会直接使用root用户,并且我希望自定义模型存放目录,所以这步实际上在本文应该可以忽略)
创建/etc/systemd/system/ollama.service文件:
通过vi编辑填入如下内容:
(为避免权限问题,用户/组直接指定为了root)
配置ollama服务:
填入内容,指定模型存放路径为SD卡下的ollama/目录:
3.启动ollama
4.查询ollama服务启动状态
如果状态信息没有err表示启动无错误产生,下方信息可见其当前处于running状态
运行大模型
Ollama目前已支持常见的多种开源模型,考虑RK3566算力有限,本机将运行模型文件仅300M+的Qwen1.5-0.5B。
初次启动模型,需要从ollama网站下载模型文件,如果出错,多试几次既可。下载速度非常快,实测在无需任何特殊网络环境下,基本可到10M+/s(但不知为何,我在Windows/Linux下都试过下载上G的模型,前面速度10M+/s,但最后几百M速度总会降到1M左右)。

实测响应速度(无加速处理,GIF动图播放完成需重新刷新加载播放):

一些思考
难以想象,这样一个仅有300M+的离线模型,在一个嵌入式设备上,其理解能力、回答能力,已经可以秒杀发展了近十年的互联网“智障”音箱了。一年前,我曾发文总结“当前几种使用ChatGPT的方法”,当时,我们还在寻找各种可以免费在线访问大模型的方式。如今,我们已经可以在个人计算机,甚至一些资源局促的嵌入式设备上,离线运行真正免费的大模型了。我也曾在那篇文章中提到,小爱、小度、天猫精灵等“智障”音箱,应该利用已布局的硬件优势,立即接入大模型,以快速走进千家万户。可惜,目前各大厂商仍基本是以手机端APP的方式提供服务,普及性和可玩性大大降低。
小结
本文介绍了在基于RK3566的嵌入式开发板上本地部署并运行大模型的方法,该方法同样可以适用于其他Linux的嵌入式环境。未来,随着嵌入式设备算力的增强,大模型体积的进一步缩小,我相信将会有更多的离线大模型可以运行在嵌入式终端,并且完全有可能具备离线学习的能力。
| 欢迎光临 链载Ai (https://www.lianzai.com/) |
Powered by Discuz! X3.5 |