🎯 本文目标:将chatglm.cpp环境部署到星睿O6开发板,专门针对GLM系列模型进行优化,在ARM设备上实现更高的运行效率和更低的内存占用。
经过查阅资料和深入学习,在星睿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实现智能代码生成
本文是第五篇:将chatglm.cpp环境部署至星睿O6
🌟 chatglm.cpp的优点
为什么选择chatglm.cpp?
- 专为GLM大语言模型设计:针对GLM架构优化,推理效率更高
- 内存使用更优:比llama.cpp更节省内存,适合ARM设备
- 对话体验更好:中文对话更流畅,符合国内用户习惯
- API接口更完整:内置Web UI和OpenAI兼容API
- 编译更简单:依赖较少,编译过程更稳定
与llama.cpp的互补性:
- chatglm.cpp专门处理GLM系列模型
- llama.cpp提供更广泛的模型支持
- 两者可以并存,各自发挥优势
🐍 设置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.cn📥 下载chatglm.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 --recursive https://github.com/li-plus/chatglm.cpp.git
# 加速方式2:【优先考虑】
# 不设置访问代理,使用加速服务 https://ghfast.top/
git clone --recursive https://ghfast.top/https://github.com/li-plus/chatglm.cpp.git
cd chatglm.cpp源码下载说明:
--recursive参数必需,用于下载子模块
🛠️ 建立专属运行环境
python -m venv --system-site-packages .venv
source .venv/bin/activate
python -m pip install -U pip
python -m pip install torch tabulate tqdm transformers accelerate sentencepiece
# 默认安装的transformers==4.33.2依赖包特点:
torch:AI计算核心,在ARM上性能良好transformers:不同模型需要不同版本sentencepiece:GLM系列必需的分词库
🔨 编译chatglm.cpp
# 设置编译参数
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
# 编译chatglm.cpp
cmake --build build --config Release
# 如果cmake提示出错,添加参数
CMAKE_ARGS="-DCMAKE_POLICY_VERSION_MINIMUM=3.5"
# 安装py扩展
CMAKE_ARGS="-DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv9-a+i8mm+dotprod -DGGML_CPU_KLEIDIAI=ON" pip install -e .编译参数详解:
- ARM特定优化参数与llama.cpp相同
- 额外安装Python扩展,提供更好的Python接口
- 首次编译时间约10分钟
🚀 运行默认模型
chatglm.cpp运行时,如果不提供参数,默认会下载 chatglm-6b 模型。在星睿O6上,模型可以下载,但是转换的时候,可能会因为内存不足而退出。
实际使用时,可以将之前在PC上生成的chatglm-6b对应的chatglm-ggml.bin文件,上传到星睿O6开发板进行调用。
# 操作电脑执行:
model_name=chatglm
scp -c aes128-ctr -o "MACs umac-64@openssh.com" ssh-ohos-new:/data/home/honestqiao/Projects/orion-o6/chatglm.cpp/models/${model_name}-ggml.bin orion-o6.ssh:/home/honestqiao/Projects/chatglm.cpp/models/上传完成后,即可直接运行:
cd ~/Projects/chatglm.cpp
export LLAMA_CPP_DIR=$(pwd)
cd $LLAMA_CPP_DIR
# 运行默认模型
$LLAMA_CPP_DIR/build/bin/main -i -v⚙️ 运行参数
$LLAMA_CPP_DIR/build/bin/main有很多参数可以设置,例如:
# 查看参数
$LLAMA_CPP_DIR/build/bin/main -h
# 基本聊天模式
$LLAMA_CPP_DIR/build/bin/main -i
# 单次生成测试(非流式)
$LLAMA_CPP_DIR/build/bin/main --sync -p "请解释一下一见钟情"
# 带详细信息的性能测试
$LLAMA_CPP_DIR/build/bin/main -v -p "长文本测试" --max_new_tokens 1000
# 使用系统角色设定
$LLAMA_CPP_DIR/build/bin/main -i -s "你是一个善解人意的大姐"
# 严格控制输出长度和随机性
$LLAMA_CPP_DIR/build/bin/main -p "讲个故事" --max_new_tokens 100 --temp 0.3 --top_p 0.9关键参数说明:
模式选择:
- --mode chat:适合对话场景,模型会保持对话历史
- --mode generate:适合单次文本生成任务
长度限制:
- --max_length:硬性限制总token数
- --max_context_length:控制上下文窗口大小
- --max_new_tokens:仅限制生成部分长度
采样策略:
- --top_k 40 --top_p 0.9 --temp 0.8:常见平衡配置
- --temp 0.1:更确定性的输出(适合事实性回答)
- --temp 1.0:更创造性的输出
交互模式:
-i 进入交互对话后,输入特殊命令:
- /help 显示帮助
- /exit 或 Ctrl+D 退出
- /reset 重置对话历史
📊 实测效果
- 你好:
- 请解释一下一见钟情
- 讲一个关于龙的神话故事,情节要有翻转,结尾出乎意料,不超过500字
📈 性能对比测试
与PC端对比:
从上面的对比结果可以看到,提升到6b以后,两者的生成速度,都明显下降了。
在星睿O6上,6b模型还可以正常运行,也基本上可以使用。
✅ 部署成功完成
通过这个完整的部署过程,chatglm.cpp环境就在星睿O6上成功运行了。结合llama.cpp环境,现在拥有了完整的GLM系列模型支持能力。
🔗 下一篇文章预告
在下一篇中,我们将开始大模型实战运行阶段,首先基于llama.cpp运行智谱AI的文本大模型,包括GLM-Edge系列和GLM-4系列模型的性能测试与优化。