——如 vLLM、SGLang、TensorRT-LLM,甚至自定义引擎——以在 GPU 集群上实现最佳性能。核心功能包括多异构 GPU 集群池化调度、可插拔推理引擎架构、Day 0 模型支持、性能优化配置(低延迟/高吞吐)、以及企业级运维能力,如故障恢复、负载均衡、监控与权限管理。
GPUStack 可以帮助我们高效地管理vLLM、SGLang等推理引擎,并推动模型从部署走向企业生产落地运营。在开始部署 MiniCPM-V 4.6 之前,首先完成 GPUStack 控制面的安装,并将节点纳入管理。
准备容器环境
GPUStack 以容器方式运行,因此需要提前准备好容器运行环境(如 Docker、Podman 或 Kubernetes)。本文以Docker为例进行说明。
在各节点上安装 Docker,确保服务已正常启动:
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 容器:
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 |
自定义添加 SGLang0.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 |
--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字段:
{ "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参数来强制覆盖默认配置:
--json-model-override-args '{"downsample_mode": "4x"}'修改后的最终可用启动参数配置如下图所示:
小技巧:GPUStack 支持模型部署克隆功能,可在操作菜单中直接使用。对于需要基于现有配置重新部署、仅做少量参数调整的场景,可以省去重复填写参数的步骤。