MiniCPM-o 2.6 是一款 8B 参数的端侧全模态模型,性能比肩 GPT-4o,本文记录了该模型的开箱适配过程。它集成视觉、听觉与语音合成能力,在 OpenCompass 和 StreamingBench 等榜单上超越多个闭源模型。
其核心优势包括:领先的视觉理解,支持 180 万像素输入,OCR 能力卓越;先进的实时语音交互,支持中英文、情绪/音色控制和声音克隆;创新的多模态直播,可实时处理音视频流并支持打断。
| 配套 | 版本 | 环境准备指导 |
|---|---|---|
| Python | 3.11.14 | - |
| torch | 2.9.0 | - |
| torch_npu | 2.9.0 | - |
| vLLM- Ascend | 0.14.0rc1 | - |
| CANN | 8.5.0 | - |
整机:Atlas 800T A2
NPU:910B昇腾
部署方式:单卡部署
操作系统:openEuler 22.03 (LTS-SP2), ARM
docker pull quay.io/ascend/vllm-ascend:v0.14.0rc1mkdir -p /opt/data/models/OpenBMB/MiniCPM-o-2_6
modelscope download --model OpenBMB/MiniCPM-o-2_6 --local_dir /opt/data/models/OpenBMB/MiniCPM-o-2_6export IMAGE=quay.io/ascend/vllm-ascend:v0.14.0rc1
docker run --rm \
--name vllm-omni-npu-v14 \
--shm-size=1g \
--device /dev/davinci0 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /root/.cache:/root/.cache \
-v /opt/data/models:/opt/data/models \
-it $IMAGE bash由于MiniCPM-o-2_6具备语音输入和输出能力的全模态模型,需要使用到torchaudio。如果不安装启动服务时会报如下错误:

安装时需要指定torchaudio的版本,否则默认安装最新的torchaudio,导致和torch\torch_npu版本不匹配
pip install torchaudio==2.9.0虽然MiniCPM-o-2_6是一个全模态大模型, 但它 是一个基于 transformers 库构建的端到端全模态理解模型,所以启动时不需要添加--omni选项
vllm serve /opt/data/models/OpenBMB/MiniCPM-o-2_6 --trust-remote-code --port 8091curl http://localhost:8091/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/opt/data/models/OpenBMB/MiniCPM-o-2_6",
"messages": [
{"role": "user", "content": "介绍一下北京。"}
],
"max_tokens": 300
}'输出示例如下:

使用模型自带的音频文件demo.wav文件进行验证,新建一个名为test_minicpm_audio.py的python文件,文件内容如下:
import requests
import base64
with open("/opt/data/models/OpenBMB/MiniCPM-o-2_6/assets/demo.wav", "rb") as f:
audio_base64 = base64.b64encode(f.read()).decode()
response = requests.post(
"http://localhost:8091/v1/chat/completions",
json={
"model": "/opt/data/models/OpenBMB/MiniCPM-o-2_6",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "这段音频讲了什么?"},
{
"type": "audio_url",
"audio_url": {"url": f"data:audio/mp3;base64,{audio_base64}"}
}
]
}
],
"max_tokens": 300
}
)
print(response.json())使用python test_minicpm_audio.py,输出示例如下:

使用模型自带的视频文件Skiing.mp4文件进行验证,新建一个名为test_minicpm_video.py的python文件,文件内容如下:
import requests
import base64
with open("/opt/data/models/OpenBMB/MiniCPM-o-2_6/assets/Skiing.mp4", "rb") as f:
video_base64 = base64.b64encode(f.read()).decode()
response = requests.post(
"http://localhost:8091/v1/chat/completions",
json={
"model": "/opt/data/models/OpenBMB/MiniCPM-o-2_6",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "这个视频里发生了什么?"},
{
"type": "video_url",
"video_url": {"url": f"data:video/mp4;base64,{video_base64}"}
}
]
}
],
"max_tokens": 300
}
)
print(response.json())使用python test_minicpm_video.py,输出示例如下:
