HonestQiao · 1 天前 · 北京

【星睿O6评测】从零玩转智谱AI全栈大模型之5-将chatglm.cpp环境部署至星睿O6

🎯 本文目标:将chatglm.cpp环境部署到星睿O6开发板,专门针对GLM系列模型进行优化,在ARM设备上实现更高的运行效率和更低的内存占用。

经过查阅资料和深入学习,在星睿O6开发板上成功部署了智谱AI系列大模型,包括文本生成大模型、视觉大模型,以及代码生成大模型。

001.jpg

在学习研究的过程中,我做了详细的笔记,经过整理,成为本系列文章,分享给大家。

通过本系列文章,您将了解到:

  • 第一阶段:开发环境准备

    • 第一篇:星睿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?

  1. 专为GLM大语言模型设计:针对GLM架构优化,推理效率更高
  2. 内存使用更优:比llama.cpp更节省内存,适合ARM设备
  3. 对话体验更好:中文对话更流畅,符合国内用户习惯
  4. API接口更完整:内置Web UI和OpenAI兼容API
  5. 编译更简单:依赖较少,编译过程更稳定

与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 .

002.jpg

编译参数详解

  • 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 重置对话历史

📊 实测效果

  • 你好:
    003.jpg
  • 请解释一下一见钟情
    004.jpg
  • 讲一个关于龙的神话故事,情节要有翻转,结尾出乎意料,不超过500字
    005.jpg

📈 性能对比测试

与PC端对比
006.jpg

从上面的对比结果可以看到,提升到6b以后,两者的生成速度,都明显下降了。
在星睿O6上,6b模型还可以正常运行,也基本上可以使用。


✅ 部署成功完成

通过这个完整的部署过程,chatglm.cpp环境就在星睿O6上成功运行了。结合llama.cpp环境,现在拥有了完整的GLM系列模型支持能力。

🔗 下一篇文章预告
在下一篇中,我们将开始大模型实战运行阶段,首先基于llama.cpp运行智谱AI的文本大模型,包括GLM-Edge系列和GLM-4系列模型的性能测试与优化。

推荐阅读
关注数
1
内容数
11
此芯AI PC开发套件瑞莎“星睿O6”评测
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息