🎯 本文目标:在星睿O6上基于chatglm.cpp框架运行智谱AI文本大模型,对比llama.cpp的性能差异,重点测试GLM系列模型在专用框架上的优化效果。
经过查阅资料和深入学习,在星睿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实现智能代码生成
本文是第七篇:在星睿O6上运行智谱AI文本大模型(基于chatglm.cpp)
📤 上传智谱AI模型
将之前在PC上chatglm.cpp环境转换的模型,上传到星睿O6
# 操作电脑执行:批量上传
# Linux:
# model_name_list="chatglm3-6b glm-4-9b-chat glm-4v-9b"
# macos:
model_name_list=(chatglm3-6b glm-4-9b-chat glm-4v-9b)
for model_name in $model_name_list
do
scp -c aes128-ctr -o "MACs umac-64@openssh.com" weyou_server_new:/data/home/honestqiao/Projects/orion-o6/chatglm.cpp/models/${model_name}-ggml.bin orion-o6:~/Projects/chatglm.cpp/models/
done
ssh orion-o6 "ls -lh ~/Projects/chatglm.cpp/models/*glm*"模型传输说明:
- chatglm.cpp使用.ggml格式,与llama.cpp的.gguf格式不同
- 传输完成后需要确认文件完整性
🚀 运行文本大模型
cd ~/Projects/chatglm.cpp
source .venv/bin/activate
export LLAMA_CPP_DIR=$(pwd)
cd $LLAMA_CPP_DIR
# 文本大模型
model_name=chatglm3-6b
$LLAMA_CPP_DIR/build/bin/main -m models/${model_name}-ggml.bin -i -v
# 对话大模型
model_name=glm-4-9b-chat
$LLAMA_CPP_DIR/build/bin/main -m models/${model_name}-ggml.bin -i -v运行参数说明:
-m:指定模型文件路径-i:启用交互模式,支持多轮对话-v:开启verbose模式- 默认使用最佳的推理参数
📊 性能对比测试
测试环境:
- 星睿O6:12核ARMv9 CPU,16GB内存
- chatglm.cpp vs llama.cpp
- 相同模型:chatglm3-6b, glm-4-9b-chat
性能对比结果:
| 框架 | 模型 | 加载时间 | 内存占用 | 推理速度 | 对话流畅度 |
|---|---|---|---|---|---|
| llama.cpp | chatglm3-6b | 4秒 | 6.6GB | 7 tokens/s | 一般 |
| chatglm.cpp | chatglm3-6b | 1秒 | 3.2GB | 6 tokens/s | 一般 |
| llama.cpp | glm-4-9b-chat | 10秒 | 9.7GB | 5 tokens/s | 一般 |
| chatglm.cpp | glm-4-9b-chat | 1秒 | 5GB | 4 tokens/s | 略慢 |
关键优势:
- 内存效率:节省40-50%内存使用
- 推理速度:降低10-20%推理速度
- 加载速度:加载方式不同,导致加载时间差距巨大
从实际测试结果来看,chatglm.cpp的生成速度,并没有提升,但是内存占用节省优势明显,非常适合在资源有限的设备上运行。
💬 实际对话测试
测试案例1:技术咨询
用户:如何在ARM架构上优化大模型推理?- chatglm3-6b
测试案例2:创意写作
用户:写一首关于边缘AI的现代诗- glm-4-9b-chat
测试案例3:代码理解
用户:解释这段Python代码的作用
#python
def optimized_matrix_multiply(A, B):
return np.dot(A, B)- glm-4-9b-chat
🔧 高级使用技巧
参数调优:
# 优化输出配置
$LLAMA_CPP_DIR/build/bin/main -m models/glm-4-9b-chat-ggml.bin \
--temp 0.7 \
--top_p 0.9 \
--repeat_penalty 1.1
# 快速响应配置
$LLAMA_CPP_DIR/build/bin/main -m models/chatglm3-6b-ggml.bin \
--temperature 0.8对话技巧:
- 系统提示:在对话开始前设置明确的角色和目标
- 上下文管理:适时总结对话内容,避免上下文过长
- 温度调节:创造性任务使用较高温度,精确任务使用较低温度
📊 监控与维护
性能监控:
# 实时监控
btop✅ 框架对比完成
通过这些测试和优化,chatglm.cpp在星睿O6上展现出不错的性能,能适合中文对话和GLM系列模型的推理需求。
🔗 下一篇文章预告
在下一篇中,我们将探索视觉大模型的运行,基于llama.cpp和chatglm.cpp两个框架测试GLM-Edge视觉系列和GLM-4V系列的多模态能力。