MiniCPM-V 4.6 部署实战:基于 GPUStack 与 SGLang 的端侧多模态模型部署
MiniCPM-V 4.6 是 1.3B 参数的轻量级多模态模型,支持图像、视频理解。本文演示了基于 GPUStack 与 SGLang 的部署、测试与视觉 token 压缩配置流程。
关注🌟⌈GPUStack⌋ 💻
一起学习 AI、GPU 管理与大模型相关技术实践。
OpenBMB 近期开源了最新轻量化多模态模型 MiniCPM-V 4.6 。该模型仅 1.3B 参数量,但依然具备单图、多图与视频理解能力,并针对移动端与边缘设备进行了专门优化。
MiniCPM-V 4.6 在架构上进行了深度视觉特征压缩,引入了混合 4x/16x 视觉 token 压缩 技术,专为边缘设备和移动端部署设计。它在保持低推理成本的同时,可广泛适配 iOS 、Android 和 HarmonyOS 等主流移动平台。对于希望在本地资源受限 环境中探索多模态能力,或需要轻量级视觉处理 方案的开发者而言,这是一款非常值得尝试的轻量级利器。
官方放出的在三大主流终端平台实测录屏:
iPhone
iPhone 17 Pro Max
Android
Redmi K70
HarmonyOS
HUAWEI nova 14
本文演示如何安装 GPUStack ,并在其上部署和实测 MiniCPM-V 4.6。
GPUStack 安装与集群初始化
GPUStack 是一个开源 GPU 集群管理与 AI 模型服务平台 ,旨在高效部署 AI 模型。它可以配置并编排多种推理引擎------如 vLLM、SGLang、TensorRT-LLM,甚至自定义引擎------以在 GPU 集群上实现最佳性能。核心功能包括多异构 GPU 集群池化调度 、可插拔推理引擎架构 、Day 0 模型支持 、性能优化配置 (低延迟/高吞吐)、以及企业级运维能力,如故障恢复、负载均衡、监控与权限管理。
GPUStack 可以帮助我们高效地管理 vLLM、SGLang 等推理引擎,并推动模型从部署走向企业生产落地运营。在开始部署 MiniCPM-V 4.6 之前,首先完成 GPUStack 控制面的安装,并将节点纳入管理。
准备容器环境
GPUStack 以容器方式运行,因此需要提前准备好容器运行环境 (如 Docker、Podman 或 Kubernetes)。本文以 Docker 为例进行说明。
在各节点上安装 Docker,确保服务已正常启动:
bash
docker info
启动 GPUStack Server
GPUStack Server 无需依赖 GPU,可运行在普通 CPU 节点,也可直接部署在 GPU 节点上,同时支持 Server 与 Worker 单节点部署。本文以单机双卡 NVIDIA RTX 4090 48GB 为实验环境,在同一节点上部署 GPUStack Server 与 Worker。
双卡 NVIDIA RTX 4090 48GB 仅作为实验环境,并不代表运行 MiniCPM-V 4.6 需要如此高的硬件配置。MiniCPM-V 4.6 模型本身体积较小,可在低显存 GPU 或纯 CPU 环境下运行。
启动 GPUStack Server 容器:
bash
sudo docker run -d --name gpustack \
--restart unless-stopped \
-p 80:80 \
--volume gpustack-data:/var/lib/gpustack \
swr.cn-south-1.myhuaweicloud.com/gpustack/gpustack:v2.1.2 \
--bootstrap-password GPUStack@123
参数说明:
- -p 80:80:
docker run的参数,用于对外暴露 Web 控制台端口,如需修改为其他端口(例如 8080),可调整为 -p 8080:80。 - --volume:
docker run的参数,持久化平台数据(包括模型服务、计量数据、API Key 等) - --bootstrap-password:初始化 admin 用户密码
容器启动后,可以通过日志确认服务是否正常运行:
docker logs -f gpustack
访问控制台并初始化
打开浏览器访问:http://<Server 主机 IP>:80
使用默认账号登录:
- 用户名:admin
- 密码:GPUStack@123
登录后,首先创建一个 Docker 类型的集群,用于统一管理后续接入的节点。
添加 NVIDIA GPU 节点
集群创建完成后,可接入 Worker 节点,但需先完成基础环境检查。
(1)驱动版本检查
在目标节点上执行以下命令:
nvidia-smi
该命令会显示当前安装的 NVIDIA 驱动版本、支持 CUDA 最高版本,及 GPU 显存、功率等详细信息,如下图所示:
(2)Nvidia Container Toolkit 检查
执行以下命令检查 Docker 是否正确配置了 Nvidia Container Toolkit:
sudo docker info 2>/dev/null | grep -q "Runtime.*nvidia" && echo "Nvidia Container Toolkit OK" || (echo "Nvidia Container Toolkit not configured"; exit 1)
- 该命令会从
docker info输出中查找是否存在nvidia运行时配置。 - 如果输出 "Nvidia Container Toolkit OK",说明 Docker 已正确配置,可在容器中访问 GPU。
- 如果输出 "Nvidia Container Toolkit not configured",则说明未正确配置,需要安装并启用 Nvidia Container Toolkit,否则推理容器无法使用 GPU 资源。
(3)接入 Worker 节点
在 GPUStack 控制台中,选择添加节点(Worker),按照步骤提示填写信息,并复制系统生成的接入命令,在目标节点执行。
该命令本质是启动一个 Worker 容器,并自动注册到 Server。
(4)验证 Worker 状态
节点接入后,可以在节点上查看容器日志:
docker logs -f gpustack-worker
同时,在 GPUStack 控制台中也可以看到节点状态是否为 Ready。
至此,GPUStack 的控制面已成功部署,NVIDIA GPU 节点也顺利接入集群,并能够正常采集设备名称、索引、厂商信息、温度、利用率及显存使用等指标。接下来即可在该环境中部署具体的推理服务。
GPU 资源监控数据
添加自定义 SGLang 版本
GPUStack 支持可插拔的推理引擎架构,允许自定义推理后端及其版本,用于引入 GPUStack 未内置的 vLLM / SGLang / MindIE 版本,或接入其他自定义推理引擎镜像。
为了部署 MiniCPM-V 4.6 模型,这里以 SGLang 最新 v0.5.12 版本为例,将其作为 SGLang 的自定义版本添加 GPUStack 的推理后端中:
| CUDA 版本 | 官方镜像地址 | 国内镜像地址 |
|---|---|---|
| cu130 | lmsysorg/sglang:v0.5.12 |
swr.cn-south-1.myhuaweicloud.com/gpustack/sglang:v0.5.12 |
| cu129 | lmsysorg/sglang:v0.5.12-cu129 |
swr.cn-south-1.myhuaweicloud.com/gpustack/sglang:v0.5.12-cu129 |
对于其他 GPU,可前往 https://hub.docker.com/r/lmsysorg/sglang/tags 查找 SGLang 官方打包的专用镜像。
在推理后端 菜单,编辑 SGLang,在版本配置中选择添加版本,添加一个新的 SGLang 版本,按实际情况填写镜像地址:
| 配置 | 值 |
|---|---|
| 版本 | 0.5.12 |
| 镜像名称 | swr.cn-south-1.myhuaweicloud.com/gpustack/sglang:v0.5.12 |
| 框架 | CUDA |
自定义添加 SGLang 0.5.12 镜像配置如图所示:
也可以切换到 YAML 模式,直接使用以下的 YAML 导入:
version_configs:
0.5.12-custom:
image_name: swr.cn-south-1.myhuaweicloud.com/gpustack/sglang:v0.5.12
run_command: ''
entrypoint: ''
custom_framework: cuda
env: {}
公众号复制可能存在特殊格式,可以发送给 AI 重新整理,或者直接下载下方文件使用:
https://gpustack-cn-blogs.oss-cn-shanghai.aliyuncs.com/assets/minicpm-v-4.6/sglang-0.5.12.yml
注意:如果当前已经有其它自定义版本,需要将其它自定义版本一同添加在 version_configs 中一起导入。
部署 MiniCPM-V 4.6
MiniCPM-V 4.6 与 v4.5 通过 enable_thinking 切换模式不同,v4.6 将 instruct 与 thinking 拆分为两个独立 checkpoint,按需选择即可。
| 版本 | HuggingFace ID | ModelScope (魔搭) ID |
|---|---|---|
| Instruct | openbmb/MiniCPM-V-4.6 | OpenBMB/MiniCPM-V-4.6 |
| Thinking(思考) | openbmb/MiniCPM-V-4.6-Thinking | OpenBMB/MiniCPM-V-4.6-Thinking |
在线部署 MiniCPM-V 4.6
GPUStack 支持在线从 Hugging Face 和 ModelScope (魔搭) 下载模型权重并部署,也可从本地路径进行部署(离线环境下可使用此方法)。
国内环境推荐从 ModelScope 下载部署模型,如下图所示:
在弹窗口中搜索 OpenBMB/MiniCPM-V-4.6 ,并在右侧配置窗口选择 SGLang 推理后端和 0.5.12 自定义版本,如下图所示:
要部署思考版本则搜索 OpenBMB/MiniCPM-V-4.6-Thinking。
参考文档,获取模型部署参数:
| 文档来源 | 文档地址 |
|---|---|
| OpenBMB | GitHub - MiniCPM-V-CookBook |
| SGLang | SGLang Docs - MiniCPM-V-4.6 |
shell
--trust-remote-code
--dtype=bfloat16
--tool-call-parser=qwen3_coder
--uvicorn-access-log-exclude-prefixes /health /metrics
若部署的是 Thinking 版本,则还需添加
--reasoning-parser=qwen3参数。
注意:SGLang 使用 --mem-fraction-static 参数控制显存占用、使用 --context-length 控制上下文长度。大家按实际情况设置,这里作为演示,不作指定。
等待模型启动时,可以在操作 中点击查看日志,实时观察启动过程:
当模型实例状态显示为 Running 时,说明模型已经成功启动,可以进行后续的测试:
模型测试与排障
GPUStack 提供了多种类型模型的试验场,可进行基础模型测试与推理速度观察。
要测试刚刚部署的 MiniCPM-V 4.6,可通过以下两种方式在试验场进行测试:
-
在模型部署操作 菜单中,选择打开试验场:
-
直接打开对话试验场,在右侧模型选择框中选择需要测试的模型:
在对话框输入内容,以进行模型测试:
如图所示,模型直接报错,返回 top_k must be -1 (disable) or at least 1, got 0.
这是由于官方模型文件 generation_config.json 中存在 "top_k": 0。
这个问题有两个解决办法:
-
编辑文件,删除 top_k 字段:
diff{ "bos_token_id": 248045, "do_sample": true, "eos_token_id": [ 248044, 248046 ], "temperature": 0.7, - "top_k": 0, "top_p": 1.0, "repetition_penalty": 1.0, "transformers_version": "5.7.0" } -
(推荐)添加
--sampling-defaults=openai后端参数:
修改配置后,删除重建现有示例,再重新测试:
Instruct & Thinking 对比
GPUStack 试验场支持多模型对比测试,进入对话 试验场,点击顶部多模型对比按钮切换到多模型对比视图,支持同时测试六个模型。
测试 MiniCPM-V 4.6 思考和非思考模式:
如果发现测试效果不佳,可调整参数,尝试向官方默认值靠拢,如上文 generation_config.json 内容所示,我们将 temperature 对齐到 0.7 再次测试:
模型基准测试
GPUStack 内置基准测试功能,可针对模型实例进行多种类型的测试,例如吞吐、延迟、长上下文等场景,并支持根据实际需求灵活调整测试参数。
进阶:混合 4x/16x 视觉 token 压缩
MiniCPM-V 4.6 引入了创新的 混合 4x/16x 视觉 token 压缩 技术。在默认情况下,模型为了追求极致的推理速度和移动端效率,会自动采用高效的 16x 压缩模式(即高比例下采样)。
然而,在处理超高分辨率图像、密集型 OCR 文本识别或极其微小的视觉元素时,16x 压缩可能会因为过度合并视觉 Token 而丢失部分细节。此时,我们可以将其调整为 4x 压缩模式,以保留多达 4 倍的视觉特征碎片的精细度。
切换为 4x 精细压缩模式
SGLang API 暂不支持 downsample_mode 参数传递,要想切换到 4x 模式,需调整部署参数。
在 GPUStack 的模型配置或启动参数中,添加 --json-model-override-args 参数来强制覆盖默认配置:
shell
--json-model-override-args '{"downsample_mode": "4x"}'
修改后的最终可用启动参数配置如下图所示:
小技巧:GPUStack 支持模型部署克隆功能,可在操作菜单中直接使用。对于需要基于现有配置重新部署、仅做少量参数调整的场景,可以省去重复填写参数的步骤。
效果验证与对比
总结
MiniCPM-V 4.6 虽然只有 1.3B 参数量,但已经具备了相当完整的多模态能力,并通过混合 4x/16x 视觉 token 压缩,在移动端与边缘侧场景中实现了较好的性能与资源平衡。对于希望在低成本环境中尝试视觉多模态、端侧 AI 或轻量化推理方案的开发者来说,是一个非常有意思的新选择。
本文也基于 GPUStack 演示了从集群初始化、SGLang 自定义版本接入,到模型部署、测试、排障与视觉压缩模式切换的完整流程。借助 GPUStack,可以更方便地统一管理推理引擎与模型实例,并在后续进一步扩展到多节点、生产化和团队协作场景。
如果你对端侧多模态、小模型部署或 GPU 集群管理感兴趣,不妨亲自部署体验一下 MiniCPM-V 4.6。
加入 GPUStack 社区
GPUStack 社区聚焦 AI 基础设施与大模型实践。
社区中持续分享真实环境下的部署经验、问题排查案例,以及推理引擎、算力管理和系统架构相关讨论。
欢迎扫码加入 GPUStack 社区,与更多关注 AI Infra 与大模型推理实践的伙伴一起交流、学习与分享。
若群聊已满或二维码失效,请访问以下页面查看最新群二维码:
https://github.com/gpustack/gpustack/blob/main/docs/assets/wechat-group-qrcode.jpg
About GPUStack
GPUStack 是由 GPUStack.ai 所推出的开源项目。GPUStack.ai 成立于2022年,是 AI Infra 解决方案提供商,目前已完成5300万元种子轮融资。创始团队成员均来自业界应用广泛的 Kubernetes 管理平台 Rancher 的核心团队。其中,联合创始人及 CTO 梁胜博士是前 SUSE 全球工程及创新总裁,加入 SUSE 之前,梁胜博士于2014年9月创立全球著名的容器管理平台公司 Rancher Labs 并担任 CEO。
我们的愿景是赋能企业可以在任意环境使用人工智能以实现业务的卓越运营。GPUStack 是实现这一目标的重要一步。
使用 GPUStack 迅速搭建你的专属 MaaS 平台!开始在本地快速构建 GPU 集群,运行和使用各种 AI 模型,赋能您的 AI 应用。
【开源地址】:github.com/gpustack/gpustack