🎯 本文目标:将llama.cpp环境迁移到星睿O6开发板,并针对ARMv9架构进行专门优化配置,充分发挥硬件性能。
经过查阅资料和深入学习,在星睿O6开发板上成功部署了智谱AI系列大模型,包括文本生成大模型、视觉大模型,以及代码生成大模型。
在学习研究的过程中,我做了详细的笔记,经过整理,成为本系列文章,分享给大家。
通过本系列文章,您将了解到:
第一阶段:开发环境准备
- 第一篇:星睿O6与智谱AI大模型概览
- 第二篇:在PC上搭建llama.cpp推理环境
- 第三篇:在PC上搭建chatglm.cpp推理环境
第二阶段:环境迁移与部署
- 第四篇:将llama.cpp环境部署至星睿O6
- 第五篇:将chatglm.cpp环境部署至星睿O6
第三阶段:大模型实战运行
- 第六篇:在星睿O6上运行智谱AI文本大模型(基于llama.cpp)
- 第七篇:在星睿O6上运行智谱AI文本大模型(基于chatglm.cpp)
- 第八篇:在星睿O6上运行智谱AI视觉大模型
- 第九篇:为llama.cpp与chatglm.cpp部署Web服务与OpenAI兼容API
第四阶段:专项能力扩展
- 第十篇:在星睿O6上部署CodeGeeX2实现智能代码生成
本文是第四篇:将llama.cpp环境部署至星睿O6
我在星睿O6上运行的操作系统,是参考官方文档 使用固态硬盘盒安装系统 | Radxa Docs,下载 资源汇总下载 | Radxa Docs 中的 orion-o6_bookworm_gnome_t2.output_512.img.xz 进行安装:
为了提供充足的硬盘空间,我还挂了一块4T的硬盘:
并将该硬盘挂载到 ~/Projects ,这样子可以有足够的磁盘空间,方便进行各种大模型操作实验。
🐍 设置python环境
# 安装基础依赖库
# python虚拟环境
sudo apt install python3.11-venv
# git工具
sudo apt install git-lfs
# 设置pip安装源为国内源,加快安装速度
mkdir ~/.pip
nano ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
timeout = 10
trusted-host = pypi.tuna.tsinghua.edu.cnARM平台优化:
- 星睿O6预装Python 3.11,无需额外安装
- 使用国内镜像源可以显著提升包下载速度
- git-lfs用于处理大文件(如模型文件)
📥 下载llama.cpp源码
## 安装llama.cpp
mkdir ~/Projects
cd ~/Projects
# 加速方式1:【不考虑】
# 如果不能正常访问github.com,需要设置代理
# 设置代理
# git config --global http.proxy http://192.168.1.100:8080
# git config --global https.proxy http://192.168.1.100:8080
# 取消代理
# git config --global --unset http.proxy
# git config --global --unset https.proxy
git clone https://github.com/ggml-org/llama.cpp.git
# 加速方式2:【优先考虑】
# 不设置访问代理,使用加速服务 https://ghfast.top/
git clone https://ghfast.top/https://github.com/ggml-org/llama.cpp.git
# 设置文件忽略
cd llama.cpp
git config core.filemode false网络优化策略:
- 使用ghfast.top镜像服务,比代理更稳定
- 避免复杂的代理配置,简化部署流程
🛠️ 建立专用运行环境
# 创建专属虚拟运行环境
python -m venv --system-site-packages .venv
source .venv/bin/activate虚拟环境说明:
- 使用
--system-site-packages共享系统包,减少重复安装 - 虚拟环境隔离依赖,避免系统污染
- 便于环境备份和恢复
🔨 编译llama.cpp
# 安装编译依赖工具包
sudo apt install curl libcurl4-openssl-dev
# 设置编译参数
cmake -B build -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv9-a+i8mm+dotprod -DGGML_CPU_KLEIDIAI=ON
# 如果出现github.com访问错误,则设置代理
# export https_proxy=192.168.1.15:7890
# export http_proxy=192.168.1.15:7890
# 编译llama.cpp
cmake --build build --config ReleaseARM特定优化参数说明:
GGML_NATIVE=OFF:禁用x86原生指令集GGML_CPU_ARM_ARCH=armv9-a+i8mm+dotprod:启用ARMv9架构和AI加速指令GGML_CPU_KLEIDIAI=ON:启用KleidiAI优化(此芯NPU支持)I8MM:int8矩阵乘法指令,加速AI计算DOTPROD:点积指令,提升向量运算性能
编译性能优化:
- Release模式提供最佳性能
- ARM特定优化充分利用硬件特性
- 首次编译时间约10-15分钟
📦 安装python支持包
# 安装大模型工具包
pip install huggingface_hub
pip install modelscope
# 安装python依赖包
pip3 install -r ./requirements.txt📤 上传DeepSeek-R1-Distill-Qwen-1.5B模型
将之前在PC上的llama.cpp环境中,转换的gguf格式文件,上传到星睿O6
# 操作电脑执行:单个文件上传
model_name=DeepSeek-R1-Distill-Qwen-1.5B
scp -c aes128-ctr -o "MACs umac-64@openssh.com" ssh-ohos-new:/data/home/honestqiao/Projects/orion-o6/llama.cpp/models/${model_name}-Q4_K_M.gguf orion-o6:~/Projects/llama.cpp/models/
ssh orion-o6 "ls -lh ~/Projects/llama.cpp/models/${model_name}-Q4_K_M.gguf"🚀 运行DeepSeek-R1-Distill-Qwen-1.5B模型
# 设置完整路径
cd cd ~/Projects/llama.cpp
export LLAMA_CPP_DIR=$(pwd)
# 运行DeepSeek-R1-Distill-Qwen-1.5B模型
model_name=DeepSeek-R1-Distill-Qwen-1.5B
$LLAMA_CPP_DIR/build/bin/llama-cli -m models/${model_name}-Q4_K_M.gguf执行上面的命令之后,就可以开始对话了。
⚙️ 参数设置
$LLAMA_CPP_DIR/build/bin/llama-cli 可以设置的参数非常多,可以用下面的命令查看:
$LLAMA_CPP_DIR/build/bin/llama-cli -h常见的参数包括:
带参数调用的例子如下:
# 单次生成,显示详细性能信息
$LLAMA_CPP_DIR/build/bin/llama-cli -m models/${model_name}-Q4_K_M.gguf \
-p "请解释一下一见钟情" \
-n 200 \
-v --perf \
-t 8 -c 4096
# 进入交互式对话
$LLAMA_CPP_DIR/build/bin/llama-cli -m models/${model_name}-Q4_K_M.gguf \
-i \
--temp 0.7 \
--top-k 40 --top-p 0.9 \
-c 8192 \
--repeat-penalty 1.1
# 为内存有限的设备优化
$LLAMA_CPP_DIR/build/bin/llama-cli -m models/${model_name}-Q4_K_M.gguf \
-c 2048 \
-b 512 \
-t 4 \
--threads-batch 2 \
--cache-type-k q4_0 --cache-type-v q4_0 \
--mmap📊 实测效果
- 你好:
- 请解释一下一见钟情:
- 讲一个关于龙的神话故事,情节要有翻转,结尾出乎意料,不超过500字:
📈 性能对比测试
初步测试结果:
- 模型大小:1.1G
- 模型加载时间:约2秒
- 内存占用:约1.8GB
- 推理速度:13 tokens/秒
与PC对比:
- 推理速度慢于PC,但是使用没有任何问题
- 功耗显著更低,适合长期运行
- 发热控制良好,风扇噪音小
具体的对比结果如下:
性能监控:
# 查看CPU、内存、磁盘、网络等使用情况
btop✅ 部署成功完成
通过这个完整的迁移过程,llama.cpp环境就在星睿O6上成功运行了。接下来可以继续部署其他模型和框架。
🔗 下一篇文章预告
在下一篇中,我们将部署chatglm.cpp环境到星睿O6,这是专为GLM系列优化的框架,在ARM设备上运行效率更高,内存使用更优化。