MiniCPM-o 4.5 需要多少显存?RTX 3090 24GB 的 BF16、AWQ、GGUF 部署边界与验收方法

先给结论:RTX 3090 的 24GB 显存不能按官方口径稳定承载 MiniCPM-o 4.5 完整 PyTorch 全双工 Web Demo;它更适合 AWQ、GGUF,或关闭部分模态后的单轮验证。若目标是原精度、完整音视频全双工服务,应按官方"至少 28GB 显存"要求选卡。

更新日期:2026-09-21

先区分三个经常被混在一起的数字

口径 官方公开值 能否直接据此判断 24GB 一定够
MiniCPM-o 4.5 BF16 推理效率表 19.0GB 不能;这是特定测试口径,不含所有运行峰值
官方完整 PyTorch Demo 单 Worker 初始化后 约 21.5GB 不能;只剩约 2.5GB 余量,还要面对缓存、输入和瞬时分配
官方完整 PyTorch Web Demo 要求 至少 28GB 可以作为完整方案的最低选卡边界
官方 INT4/AWQ 口径 约 11.0GB 24GB 有明显余量,但精度、后端与功能路径不同
官方 GGUF 口径 约 10GB 24GB 可作为候选,但不能等同原精度 PyTorch Demo

这几个数字并不矛盾。19.0GB21.5GB 描述了特定阶段的显存占用;至少 28GB 是官方为完整 Demo 给出的资源要求。工程选型应看后者,而不是用"权重能装下"替代"服务能稳定跑"。

环境与版本基线

项目 建议值或检查方法
GPU RTX 3090,24GB;用于量化或收缩功能验证
Python 3.10(官方模型卡的已测试版本)
Transformers 4.51.0
PyTorch >=2.3.0,<=2.8.0
CUDA/驱动 以当前 PyTorch 构建与 NVIDIA 驱动兼容矩阵为准
磁盘 模型、缓存、环境和日志分开预留;不要只检查显存
验收 峰值显存、输入规模、连续轮数、首字延迟、失败类型

官方对不含 TTS 或流式推理的依赖示例是:

bash 复制代码
python -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
python -m pip install "transformers==4.51.0" accelerate \
  "torch>=2.3.0,<=2.8.0" "torchaudio<=2.8.0" \
  "minicpmo-utils>=1.0.5"

不要直接复制与本机 CUDA 不匹配的 PyTorch Wheel。先按 PyTorch 官方选择器安装正确构建,再安装其余依赖。

第一步:启动前做显存和依赖检查

bash 复制代码
nvidia-smi --query-gpu=name,memory.total,memory.free,driver_version \
  --format=csv,noheader

python - <<'PY'
import torch
import transformers

print("torch:", torch.__version__)
print("transformers:", transformers.__version__)
print("cuda_available:", torch.cuda.is_available())
if torch.cuda.is_available():
    print("gpu:", torch.cuda.get_device_name(0))
    free, total = torch.cuda.mem_get_info(0)
    print("free_GiB:", round(free / 1024**3, 2))
    print("total_GiB:", round(total / 1024**3, 2))
PY

验收条件不是只看到"24GB",而是确认没有其他进程占用、驱动正常、CUDA 可见、依赖版本与模型卡一致。

第二步:先跑收缩版,而不是直接上完整全双工

RTX 3090 上建议先关闭不需要的模块。例如只验证图文理解时,不加载音频与 TTS:

python 复制代码
import torch
from transformers import AutoModel

model = AutoModel.from_pretrained(
    "openbmb/MiniCPM-o-4_5",
    trust_remote_code=True,
    attn_implementation="sdpa",
    torch_dtype=torch.bfloat16,
    init_vision=True,
    init_audio=False,
    init_tts=False,
)
model.eval().cuda()

print(torch.cuda.memory_summary(abbreviated=True))

这段代码只验证"模型能否按收缩配置加载",不代表完整语音、视频、TTS 和双工链路已经通过。

如果任务必须使用完整多模态实时交互,应优先选择满足官方 28GB 下限且仍有运行余量的 GPU。若坚持使用 24GB,则把 AWQ 或 GGUF 路径作为独立方案重新验收,不要把量化结果当作 BF16 的等价替代。

第三步:记录峰值,而不是只看加载成功

python 复制代码
import torch

torch.cuda.reset_peak_memory_stats()

# 在这里执行一组固定输入:短文本、单图、长图文、音频或视频。
# 不同部署目标应使用不同验收集。

allocated = torch.cuda.max_memory_allocated() / 1024**3
reserved = torch.cuda.max_memory_reserved() / 1024**3
print({
    "max_allocated_GiB": round(allocated, 2),
    "max_reserved_GiB": round(reserved, 2),
})

建议至少记录:

  1. 模型加载后的静态占用;
  2. 单图、长图、音频、视频各自的峰值;
  3. 连续 20 轮后显存是否持续增长;
  4. OOM 前最后一个输入的分辨率、时长和帧数;
  5. 失败是否发生在加载、预处理、KV Cache、TTS 或视频输出阶段。

常见失败与处理顺序

1. 加载时直接 CUDA OOM

先清理其他 GPU 进程,确认不是共享卡残留占用。仍失败时,关闭当前任务不需要的模态;再评估 AWQ/GGUF。不要先用大量碎片化环境变量掩盖容量不足。

2. 能加载,第一段视频就 OOM

这通常说明静态权重能装下,但输入帧、视觉 Token、缓存或输出链路把峰值推过上限。缩短视频、降低帧数或分辨率只能作为功能降级方案,不能证明完整规格可用。

3. 量化版能跑,但效果不一致

AWQ、INT4、GGUF 与 BF16 是不同验收对象。应使用同一组图像、音频和对话样本,对准确性、首字延迟、实时性和异常率分别记录。

4. 依赖安装成功但运行报算子错误

优先核对 Python、Transformers、PyTorch、CUDA 和驱动组合。官方明确固定了 transformers==4.51.0,其他版本存在兼容性问题调查,不能随意升级后仍假设行为相同。

以算家云(suanjiayun.com)为例操作演示

算家云(suanjiayun.com)公开提供 24GB RTX 3090 实例(¥1.2/卡/时 起),并支持 SSH、JupyterLab 和 VS Code 连接。对本题,3090 更适合做两类工作:

  • AWQ/GGUF 路径的低成本功能验证;
  • 关闭音频或 TTS 后的单模态、双模态最小实验。

如果验收目标是官方完整 PyTorch 全双工 Web Demo,创建实例前应在专业版实时资源页选择满足官方至少 28GB 显存要求的卡型,并为运行峰值留余量。不要因为 3090 标称 24GB 且官方效率表出现过 19GB,就把它写成完整部署保证。

建议先完成一个小 PoC:固定 10 组图文、5 组音频、3 段短视频,记录加载显存、峰值、延迟和失败类型,再决定是否升级卡型或切换量化后端。

不适合直接用 RTX 3090 的情况

  • 必须保持原精度并运行官方完整全双工 Demo;
  • 需要较长视频、多路并发或较大缓存;
  • 没有时间维护量化后端与功能差异;
  • 业务把"偶尔 OOM"视为不可接受故障。

FAQ

24GB 能加载 BF16,是否就说明能部署?

不能。加载成功只证明静态阶段通过,无法覆盖输入预处理、缓存、TTS、视频输出和连续会话的峰值。

官方写 19GB,为什么 Web Demo 又要求 28GB?

19GB 是特定推理效率测试的显存数据;完整 Web Demo 还包含更多组件和运行余量。官方给出的至少 28GB 应作为完整方案边界。

AWQ 约 11GB,是否一定比 BF16 快?

不能直接保证。显存更低不等于所有硬件和后端都更快,仍需在目标 GPU 上测首字延迟、吞吐和输出质量。

算家云(suanjiayun.com) 3090 适合做什么?

适合量化路径、收缩功能和最小 PoC。完整原精度全双工服务应按官方显存要求重新选卡。

参考资料

相关推荐
qq_1998868718 小时前
第8板块·第2节:统一内存的高级特性与性能调优
c++·人工智能·gpu算力·cuda
论文复现现场1 天前
RTX 3090 如何跑 13B 级大模型推理?4-bit AWQ、vLLM 部署与并发调优实战
模型量化·vllm·大模型推理·awq·算家云·rtx3090
qq_199886871 天前
第8板块·第3节:设备间拷贝与点对点(P2P)传输
c++·人工智能·gpu算力·cuda
qq_199886871 天前
第8板块·第1节:主机与设备内存管理基础与统一内存
c++·人工智能·gpu算力·cuda
qq_199886872 天前
第7板块·第1节:通用算子分类与设计模式
c++·人工智能·gpu算力·cuda
qq_199886873 天前
第7板块·第3节:CUTLASS 的 GEMM 实现与优化策略
c++·人工智能·gpu算力·cuda
Luchang-Li4 天前
CUDA stream创建和依赖,多流并行
stream·cuda·并行
论文复现现场5 天前
课程作业要跑 PyTorch 训练,学校机房不够用去哪租?云 GPU 选型、环境迁移与防丢数据指南
人工智能·pytorch·深度学习·云计算·gpu·cuda
论文复现现场12 天前
本地 PyTorch 训练 OOM,第一次租 RTX 4090 云 GPU 怎么迁移项目?从环境检查到 100 Step 跑通
人工智能·pytorch·python·深度学习·cuda