🎯 本文目标:在星睿O6上运行智谱AI视觉大模型,测试GLM-Edge视觉系列和GLM-4V系列的多模态能力,验证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实现智能代码生成
本文是第八篇:在星睿O6上运行智谱AI视觉大模型
🔍 视觉大模型技术概述
在之前的文章中,已经可以在星睿O6上的llama.cpp和chatglm.cpp环境,运行文本大模型了。在前面的基础上,就可以很轻松的运行视觉大模型。
智谱AI视觉模型特点:
- GLM-Edge视觉系列:专为边缘设备优化,支持图像理解
- GLM-4V系列:全功能视觉理解模型,支持复杂场景分析
- 预训练视觉能力:无需额外微调即可理解图像内容
支持的功能:
- 图像内容描述
- 视觉问答
- 物体识别
- 场景理解
- 图表分析
在本次实验中,计划要测试的模型:
GLM-Edge视觉模型
- glm-edge-v-2b-gguf:适用于边缘设备,llama.cpp运行
- glm-edge-v-5b-gguf:适用于边缘设备,llama.cpp运行
GLM4视觉模型
- glm-4v-9b:智谱AI GLM4视觉大模型,chatglm.cpp运行
GLM-V视觉模型
- GLM-4.6V-Flash:智谱AI最新大模型9b版本,llama.cpp运行
🖥️ 在llama.cpp环境运行视觉大模型
智谱AI为GLM-Edge视觉系列提供了预编译的gguf文件,可以直接下载部署使用。
📥 下载视觉 gguf模型
cd ~/Projects/llama.cpp
source .venv/bin/activate
export LLAMA_CPP_DIR=$(pwd)
export MODELSCOPE_DIR=$(pwd)
# 预编译gguf模型
model_group=ZhipuAI
model_name_list="glm-edge-v-2b glm-edge-v-5b"
for model_name in $model_name_list
do
modelscope download --model $model_group/${model_name}-gguf --local_dir ./$model_group/${model_name}-gguf/
done
ls -lh ./$model_group/
du -csh ./$model_group/* 下载说明:
- 视觉模型文件较大,通常包含主模型和视觉投影器
- GLM-Edge-V系列预编译了mmproj文件
- 总大小约17-44GB,下载时间取决于网络状况
具体的模型文件如下:
🚀 运行gguf模型
# glm-edge-v-2b视觉模型
model_group=ZhipuAI
model_name=glm-edge-v-2b
$LLAMA_CPP_DIR/build/bin/llama-mtmd-cli -m ./$model_group/${model_name}-gguf/ggml-model-Q4_K_M.gguf --mmproj ./$model_group/${model_name}-gguf/mmproj-model-f16.gguf
# glm-edge-v-5b视觉模型
model_group=ZhipuAI
model_name=glm-edge-v-5b
$LLAMA_CPP_DIR/build/bin/llama-mtmd-cli -m ./$model_group/${model_name}-gguf/ggml-model-Q4_K_M.gguf --mmproj ./$model_group/${model_name}-gguf/mmproj-model-f16.gguf命令参数说明:
llama-mtmd-cli:多模态专用命令行工具-m:指定主模型文件--mmproj:指定视觉投影器文件/image:图片路径命令
我准备了两张图片用于测试,分别为:
| 图片1 | 图片2 |
|---|---|
在交互界面,指定图片,然后进行对话即可:
# 图片1
> /image /home/honestqiao/图片/cat.jpg
> 描述一下这张图片的内容。用中文回答我。
> # 图片2
> /image /home/honestqiao/图片/play.jpeg
> 描述一下这张图片的内容。用中文回答我。回车后,风扇会呼呼呼的转动,表示正在进行视觉特征提取:
glm-edge-v-2b视觉大模型,图片1视觉识别最终结果如下:
这张图片展示了一只白色的小猫在秋天的落叶中玩耍。具体来说,图片中间是一只白色的小猫,它站在满是黄色落叶的地面上,抬起一只前爪去抓一旁飘落的棕色枫叶。阳光从上方洒下,使得小猫的毛发闪闪发光,显得十分温暖。背景是一片模糊的树林,增添了一种宁静而自然的氛围。glm-edge-v-2b视觉大模型,图片2视觉识别最终结果如下:
这张图片展示了一群孩子在绿色的草地上踢足球。孩子们穿着不同颜色的衣服,有橙色、蓝色、绿色和白色等。他们分布在草地上,有的在奔跑,有的在踢球。背景是一片绿油油的草地,周围还有一些小花。glm-edge-v-5b视觉大模型,图片1视觉识别最终结果如下:
回复:图片中有一只白色的小猫,它站在满是落叶的地面上,用前爪试图抓住一片飘落的枫叶。背景模糊,但可以看出是秋天的景色,阳光透过树叶洒在小猫和落叶上,给整个画面增添了一种温暖和宁静的感觉。glm-edge-v-5b视觉大模型,图片2视觉识别最终结果如下:
图片中是一群穿着不同颜色衣服的孩子们在草地上踢足球。他们看起来非常开心,正在奔跑和追逐足球。背景是一片绿色的草地,上面散落着一些小花。孩子们的脸上都带着笑容,气氛非常愉快。从上面的实际运行识别的效果来看,视觉识别的准确度是非常高的。虽然识别的速度不是很快,但是已经足以让星睿O6具备了视觉识别的能力了。
🌟 GLM-4.6V-Flash视觉大模型
📤 上传模型
将之前在PC上llama.cpp环境转换的模型,上传到星睿O6
# 操作电脑执行:批量上传
# Linux:
# model_name_list="GLM-4.6V-Flash"
# macos:
model_name_list=(GLM-4.6V-Flash)
# 上传gguf模型文件
for model_name in $model_name_list
do
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/
done
# 上传mmproj模型文件
for model_name in $model_name_list
do
scp -c aes128-ctr -o "MACs umac-64@openssh.com" ssh-ohos-new:/data/home/honestqiao/Projects/orion-o6/llama.cpp/models/${model_name}-mmproj-model-f16.gguf orion-o6:~/Projects/llama.cpp/models/
done🚀 运行模型
# GLM-4.6V-Flash视觉模型
model_group=ZhipuAI
model_name=GLM-4.6V-Flash
$LLAMA_CPP_DIR/build/bin/llama-mtmd-cli -m ./models/${model_name}-Q4_K_M.gguf --mmproj ./models/${model_name}-mmproj-model-f16.gguf启动模型后,就可以用 /image 命令设置图片,识别图片内容:
# 图片1
> /image /home/honestqiao/图片/cat.jpg
> 描述一下这张图片的内容。
> # 图片2
> /image /home/honestqiao/图片/play.jpeg
> 简要描述一下这张图片的内容。经过实际测试,发现GLM-4.6V-Flash的视觉理解能力,强于GLM-Edge-v系列,且图片编解码速度也更快。
💻 chatglm.cpp运行视觉大模型
📤 上传智谱AI模型
# 操作电脑执行:批量上传
# Linux:
# model_name_list="glm-4v-9b"
# macos:
model_name_list=(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🚀 运行视觉大模型
cd ~/Projects/chatglm.cpp
source .venv/bin/activate
export LLAMA_CPP_DIR=$(pwd)
cd $LLAMA_CPP_DIR
# 视觉大模型
model_name=glm-4v-9b
# 直接回复
$LLAMA_CPP_DIR/build/bin/main -m models/${model_name}-ggml.bin --image /home/honestqiao/图片/cat.jpg -p "描述一下这张图片的内容。用中文回答我。"
# 交互式
$LLAMA_CPP_DIR/build/bin/main -m models/${model_name}-ggml.bin --image /home/honestqiao/图片/cat.jpg -i参数说明:
--image:指定要分析的图像路径-p:直接提问模式-i:交互式模式,支持多轮对话
实际运行时,CPU资源没有用完,内存也没有用完,大模型也没有退出,一直处于计算过程中,没有得到结果:
我在PC上面,进行了测试,发现使用glm-4v-9b视觉模型,纯CPU运行,具体结果如下:
在星睿O6上,最终也许可以识别出来结果,但是可能会需要更长时间,不具备实际使用价值了。
📊 性能测试与对比
测试环境:
- 星睿O6:12核ARMv9 CPU,16GB内存
- 测试图像:不同复杂度的图片(简单物体、复杂场景、图表等)
性能对比:
| 模型 | 图像处理时间 | 内存占用 | 理解准确度 | 支持功能 |
|---|---|---|---|---|
| glm-edge-v-2b | 60秒 | 2.8GB | 正常 | 基础描述 |
| glm-edge-v-5b | 130秒 | 5.9GB | 良好 | 详细分析 |
| GLM-4.6V-Flash | 5~6秒 | 11GB | 优秀 | 详细分析 |
关键发现:
- 视觉理解需要显著更多计算资源
- ARM平台可以满足基本的视觉AI需求
💡 实际应用测试
除了上面的图片,我还是用了更复杂的图片进行测试
测试案例1:物体识别
> /image /home/honestqiao/图片/cat2.jpg
> 描述一下这张图片的内容。用中文回答我。
glm-edge-v-2b:这张图片展示了一个宁静而温馨的室内场景。画面中心是一只棕色和黑色相间的猫,它坐在窗台上,身体放松,目光似乎在注视着窗外。猫的毛色呈现出深浅不一的条纹状,显得十分光滑而有光泽。
在猫的左侧,有一个透明的玻璃花瓶,里面插着一株长条形的植物,叶子细长而尖。植物的颜色是浅绿色,与猫的毛色形成了鲜明的对比。花瓶放置在一个白色的表面上,可能是窗台或桌子。
在猫的右侧,可以看到另一株植物,它位于一个棕色的花盆里。这株植物看起来很茂盛,叶子呈深绿色,形态优雅。
整个场景被柔和的自然光线照亮,营造出一种温暖而舒适的氛围。背景是一面白色的墙壁,为整个画面增添了一种简洁而明亮的视觉效果。
总的来说,这张图片传达了一种平和与宁静的感觉,展现了猫咪在家庭环境中展现出的自然美和生命力。测试案例2:场景理解
> /image /home/honestqiao/图片/meeting.jpeg
> 描述一下这张图片的内容。用中文回答我。
glm-edge-v-5b:图片展示了一个会议场景。有五位成年人,其中四位坐着,一位女士站在桌子旁。房间里有一张长桌和几把椅子。墙壁是白色的,墙上挂着时钟和几张白纸。测试案例3:销售图表
> /image /home/honestqiao/图片/sale.jpg
> 分析一下这张图片的内容,给出总结。
GLM-4.6V-Flash:<think>用户现在需要分析这张关于新能源汽车月度销量及增长率的图表,给出总结。首先,先理解图表的结构:横轴是时间(从2023年1月到2025年11月),左侧纵轴是销量(万辆),右侧纵轴是增长率(%)。蓝色线代表增长率,灰色柱子代表销量。
首先看不同年份的销量和增长率数据标注:
- 2023年全年(1 - 11月?不对,图中标注2023年949.5万辆+37.9%,应该是2023年全年销量?然后2024年1286.7万辆+35.5%,2025年1 - 11月1478万辆+31.2%。
然后看月度销量(灰色柱)和月度增长率(蓝色线)的变化趋势。
分析销量趋势:从2023年到2025年,整体销量在增长(2023年约950万,2024年约1287万,2025年1 - 11月约1478万),说明新能源汽车市场销量持续扩张。
增长率趋势:2023年整体增长率较高(37.9%),2024年略降(35.5%),2025年1 - 11月继续增长但增速有所放缓(31.2%)。月度增长率方面,部分月份有波动,比如2023年3月左右有高峰,之后波动,2024年也有波动,2025年部分月份增长,整体增速在下降但销量仍在提升。
总结部分需要整合这些信息:图表展示了2023 - 2025年新能源汽车的月度销量(灰色柱)和月度增长率(蓝色线)。从销量看,整体呈增长态势(2023年约950万辆,2024年约1287万辆,2025年1 - 11月约1478万辆);从增长率看,2023年增速最高(37.9%),2024年(35.5%)、2025年1 - 11月(31.2%)增速有所回落,但销量仍保持增长,反映出新能源汽车市场在销量扩张的同时,增长速度有所放缓(或趋于平稳)。
现在组织语言,确保清晰总结内容。</think>
这张图表展示了2023 - 2025年新能源汽车的**月度销量(灰色柱,单位:万辆)**与**月度增长率(蓝色线,单位:%)**的变化情况,核心信息可总结为:
1. **销量整体增长**:从2023年(约949.5万辆)到2024年(约1286.7万辆),再到2025年1 - 11月(约1478万辆),新能源汽车市场销量持续扩张,规模稳步提升。
2. **增长率趋势**:2023年全年增长率达37.9%(增速较高),2024年降至35.5%,2025年1 - 11月进一步放缓至31.2%,反映出市场增长速度虽有所回落,但销量仍保持增长态势。
3. **月度波动特征**:月度销量(灰色柱)和月度增长率(蓝色线)均存在波动,但整体呈现“销量扩张、增速逐步放缓”的趋势,体现新能源汽车市场从高速增长向更稳健阶段过渡的特征。
简言之,图表直观呈现了新能源汽车市场**销量持续增长、增长速度逐步放缓**的发展阶段,反映行业从爆发式增长向成熟期增长的转变逻辑。🔧 高级使用技巧
图像预处理:
# 调整图像大小以提高处理速度
convert input.jpg -resize 128x128 processed.jpg
# 压缩图像减少传输和编解码时间
convert input.jpg -quality 80 compressed.jpg参数调优:
cd ~/Projects/llama.cpp
source .venv/bin/activate
export LLAMA_CPP_DIR=$(pwd)
# 为边缘设备优化的视觉模型
model_group=ZhipuAI
model_name=glm-edge-v-5b
$LLAMA_CPP_DIR/build/bin/llama-mtmd-cli \
-m ./$model_group/${model_name}-gguf/ggml-model-Q4_K_M.gguf \
--mmproj ./$model_group/${model_name}-gguf/mmproj-model-f16.gguf \
-c 2048 \
-b 256 \
-t 4 \
--no-mmproj-offload # 投影器在CPU运行以节省GPU内存✅ 视觉能力验证完成
通过上面的测试,智谱AI视觉大模型在星睿O6上展现出令人印象深刻的图像理解能力,为边缘AI应用提供了强大支持。
🔗 下一篇文章预告
在下一篇中,我们将为llama.cpp和chatglm.cpp部署Web服务与OpenAI兼容API,构建完整的AI服务生态系统,实现真正的产品化部署。