
先说明一个问题很多人看到我的显卡能跑多大的模型时第一反应是看参数数量。比如7B模型、13B模型、70B模型好像量和显存直接划等号。实际跑起来完全不是这么回事——同一个7B模型有人在8GB显存上流畅跑有人16GB却爆显存同一张24GB显卡有人能跑32B量化版有人连14B都开不了长上下文。核心原因在于你真正需要算的不是模型有多大而是模型跑起来时到底会占多少显存。这篇文章就围绕显存计算这事展开把选型逻辑讲透。内容包括显存里那笔账到底由哪几块构成、不同显存档位适合哪些模型、二十多GB显存的单卡在日常部署中能做到什么程度、以及显存之外哪些指标同样卡脖子。目标读者是手里有一张或多张显卡、想跑本地大模型或个人推理服务的人也包括准备买卡、租卡但不知道选多大规模才不浪费的朋友。1. 显存需求的真实构成为什么模型参数不是唯一标准1.1 四笔必须算清的账把一个模型加载到显卡里准备推理时显存里不是只放权重文件那么简单。以一张24GB显卡为例你在nvidia-smi里看到的占用峰值通常包含下面四块第一块是模型权重本身。这个最基础根据保存精度不同每参数字节数也不同FP32占4字节FP16/BF16占2字节INT8占1字节INT4约0.5字节。一个70亿参数模型用FP16保存就是约14GB权重但它加载后实际占用还会更高因为推理框架往往会在显存里保留额外的工作副本。第二块是KV Cache。Transformer结构推理时每生成一个token都要根据之前所有token的Key和Value去算注意力所以框架会把历史token对应的K、V缓存留在显存里。KV Cache大小和上下文长度直接相关计算公式可以粗略表达为KV Cache字节数 ≈ 2K与V两组× 层数 × 每层KV维度 × 序列长度 × 批次数 × 单值字节数不同模型差距很大。以某8B模型为例32层、KV维度1024FP16精度下跑8K上下文KV Cache差不多在1GB量级但一些没有用GQA分组查询注意力、KV维度很高的模型同样8K上下文能吃下4GB以上显存。模型文件明明只有5GB上下文一拉长显存占用翻倍就是这个原因。第三块是激活值。推理场景下batch为1时激活值通常只占几百MB到1GB但如果开了大batch提升吞吐批量请求多、序列又长激活值可能冲到3GB以上不能直接忽略。第四块是框架与驱动的固定开销。CUDA context、PyTorch的缓存预留、推理引擎的显存池一般固定吃掉500MB到1GB。这个属于不管跑什么都得先交的钱。1.2 把公式落到自己显卡上把上面四块加起来可以写一个足够做选型判断的估算式总显存需求 ≈ 参数量 × 每参数精度字节数 KV Cache 激活值 0.5~1GB框架开销拿几个典型搭配来算7B模型、Q4量化约4GB权重4K上下文下KV Cache约0.5GB加1GB开销总需求约6GB8GB显卡可以跑但要关掉其他占显存程序。13B模型、Q4量化约7.5GB权重8K上下文下KV Cache约1.5GB加1GB开销总需求约10GB16GB显卡比较舒服8GB显卡只能把上下文压到2K以下勉强跑。32B模型、Q4量化约19.5GB权重16K上下文下KV Cache和激活值加起来可能要5GB以上24GB显卡刚好卡在临界点这也是很多人抱怨32B量化版放在24GB卡上总是崩的根因。70B模型、Q4量化约40GB权重哪怕只给2K上下文加上开销也要43GB以上单卡能跑的企业卡至少得48GB24GB显卡基本无望。建议你在做任何选型决定前都先按这个公式预估算一笔别只看模型页面上写的文件大小7.8GB就觉得谁都能跑。2. 按显存档位选模型8GB、16GB、24GB、48GB分别该跑什么2.1 8GB档位别碰10B以上的中高量化模型8GB显存是消费级甜品卡的常见配置3060Ti、4060、3070这些。此前群里不少人问8GB能不能跑14B Q4直接给结论能跑但体验很糟糕。14B Q4量化权重约8GB加载权重后基本没有KV Cache空间推理时会大量触发offload把计算拿到内存和CPU上做生成速度会降到每秒钟几个token几乎没有实用价值。8GB显卡的甜点区间在7B~9B模型加Q4量化上下文控制在4K~8K。日常聊天、写代码补齐、做文档摘要这个组合是够用的。如果一定要跑更大模型优先做三件事第一把上下文压到2K第二关掉框架的显存自适应扩展第三清理后台所有吃显存进程比如浏览器硬件加速。2.2 16GB档位消费级性价比之王4070Ti Super、4080、5070Ti这类的16GB显卡是我认为最实用的本地推理门槛。它可以把14B模型在Q4/Q5量化下跑得很从容7B模型甚至可以尝试FP16精度视觉语言模型也能在图生文场景下保留足够显存给图像编码器。如果你手头是16GB显卡选型优先级建议是这样首选14B~16B的Q4_K_M或Q5量化版上下文给到16K都没压力。想追求效果可以上14B的Q6/Q8代价是占用逼近11~12GB开着长上下文会有点险。32B模型用Q3甚至Q2超低量化能在16GB卡上点亮但输出质量明显劣化我认为没有长期使用价值当技术实验可以。2.3 24GB档位单卡跑32B的临界点24GB是很特殊的一个容量既有3090、4090这种消费级旗舰也有P40、L20等企业加速卡。它的核心价值在于能装下32B模型的Q4量化权重或者34B级别模型的中低量化版。建议配置为32B Q4量化加8K~16K上下文这是单卡24GB能做到既跑得动又有点质量的组合。但要泼一盆冷水24GB跑70B Q4基本不现实除非接受极低上下文和重度offload。70B Q4光权重就超过40GB24GB差得太远了。有些玩家会用多卡张量并行拼容量这个后面会讲但消费级平台拼多卡跑的代价很大。同样的24GB不同卡用途差异也很大。P40这块卡经常被新手盯上原因很简单二手便宜、24GB显存量大。但它不适合打游戏原因不只是没有显示输出接口Pascal架构的指令集覆盖、驱动支持、显存带宽都跟不上现代游戏的需求与其说它是显卡不如说它是一张AI推理计算卡适合跑长时间任务而不是交互式体验。L20则是企业推理定位显存48GB适合部署中大规模模型的高并发推理服务个人玩家单卡用L20有些浪费。2.4 48GB及以上服务性部署的入场券48GB档位L20、A6000等可以正式部署70B级别模型的Q4量化或者做34B模型的高精度版本。但需要注意70B Q4约40GB权重加上KV Cache和开销48GB显存能给的上下文余量并不多。如果目标是稳定的长对话服务建议直接看80GBA100/H100或通过多卡方案扩展。多卡拼显存也不是把容量简单相加。张量并行会把每层的权重切到多张卡上显存需求按卡数近似均摊但卡与卡之间要频繁同步中间结果NVLink或高速互联是必须的纯PCIe互联时通信开销会严重拖慢推理速度。我实际对比过两张PCIe直连的消费卡拼70B速度经常不如一张48G企业卡跑同样的模型日常折腾成本还更高。3. 一次完整的选型验证从查卡到确认能跑的实操路径3.1 拿到机器后先做三件事无论新配机器还是租了云服务器第一步不是急着下模型而是确认显卡到底被系统正确认出来了。命令行是最直接的# NVIDIA显卡查看型号、驱动版本、显存总量和当前占用 nvidia-smi # 实时刷新每秒一次看波动 watch -n 1 nvidia-smi # AMD显卡 rocm-smi # 更直观的终端监控面板 nvtop这里有个特别容易踩的坑nvidia-smi里显示的CUDA Version只是驱动所支持的CUDA最大版本不代表你当前运行时的CUDA版本。驱动支持12.4但PyTorch可能用的是CUDA 12.1运行时这个概念别搞混。检查PyTorch是否识别显卡用这个直接确认import torch print(torch.cuda.is_available()) print(torch.cuda.get_device_properties(0))如果是Intel显卡比如Arc系列或核显就不能装NVIDIA CUDA那一套需要安装Intel Extension for PyTorchIPEX并配置SYCL环境PyTorch才会把GPU当计算设备用。AMD显卡同理走ROCm或第三方翻译层框架认可之后才谈得上显存计算。3.2 从OOM报错反推显存缺口如果模型已经下载好了跑起来爆显存报错通常是CUDA out of memory. Tried to allocate 512.00 MiB这种报错只会告诉你还差512MB不会告诉你是哪一块缺了。我的排查顺序是固定的一套先把上下文长度改到最小比如512batch设为1再启动模型观察峰值显存。如果这时显存占用接近权重加1GB开销说明权重放得下。在最小配置能跑通的基础上逐步拉长上下文每加一档记录一次峰值显存。如果显存增长斜率突然变大说明KV Cache在吃显存需要控制长度。如果最小配置都放不下权重说明量化档位还不够低或者并发进程占了显存。先看是不是有僵尸进程占着显存用nvidia-smi查看进程列表必要时直接清理。清理不掉考虑换更低量化比如Q8换Q4而不是硬开offload硬开offload经常会让你误判模型能跑实际上速度已经到了不能用的地步。3.3 实测数据的参考意义贴一份我实际跑过的经验值供参考具体数值因模型架构和框架不同会浮动但比例关系是稳定的模型档位量化权重体积8K上下文KV Cache预估峰值占用建议最低显存7BQ4_K_M约4.5GB约0.8GB约6.5GB8GB14BQ4_K_M约8GB约1.2GB约10.5GB16GB32BQ4_K_M约19.5GB约2.5GB约23.5GB24GB70BQ4_K_M约40GB约5GB约46GB48GB注意这些值都是以单并发推理估算的如果做并发服务kv cache和激活值都会翻倍甚至三倍增长这也是为什么企业场景常常选择大显存企业卡而不是消费级大显存卡——算力足够但显存容量才是并发吞吐的上限瓶颈。4. 显存之外的关键约束带宽、算力与混合显卡选型误区4.1 显存带宽决定出字速度很多人在30系、40系显卡之间纠结时只看显存容量却忽略了另一个关键指标显存带宽。大模型推理属于典型的带宽敏感型负载每生成一个token都要把权重从显存搬运到计算单元带宽越高生成速度越快。举一个例子同样是24GB显存P40的带宽约346GB/s而4090超过1000GB/s跑同一个14B量化模型4090的token生成速度可能是P40的2到3倍。P40能跑不代表跑得舒服就是这个原因。选卡时不能只对着显存容量选建议把带宽、FP16算力、显存容量三个维度一起看。网上常有人晒显卡AI算力TOPS排行或显卡天梯图这类排行可以作为初步参考但天梯图通常反映游戏帧率AI推理场景下带宽和容量往往比单纯的FP32/FP16算力更先碰到瓶颈。正确姿势是先按容量筛卡再按带宽挑型号最后看算力是否够任务用。4.2 PCIe带宽和多卡互联的真实代价单卡放不下模型时最自然的想法是再加一张卡。但显存计算完成后还有一个通信账要算。典型的PCIe 4.0 x16单向带宽约32GB/s而多卡张量并行中每计算一层都要做一次全规约通信模型越大、层数越多通信占用的时间越明显。结果就是双卡拼起来的有效算力往往只有单卡的60%~80%具体取决于互联方式。我个人经验是如果一张48GB企业卡能解决容量问题优先选单卡方案省掉多卡调试的麻烦如果必须多卡至少保证卡间有NVLink/NVSwitch级别的互联。消费级平台组多卡跑70B模型不是不能跑而是你花在调优上的时间也许早够租一台高显存云GPU跑几十次实验了。4.3 混合显卡场景下的显存判断逻辑还有一种常见情况机器上既有核显又有独显或者同时插了A卡和N卡模型默认跑到了核显上显存计算全部失真。判断方法很简单跑模型时看任务管理器或nvidia-smi里哪块GPU的显存占用在涨。如果模型没走独立显卡需要显式指定设备CUDA_VISIBLE_DEVICES0 python run_model.py在PyTorch里也可以强制指定torch.cuda.set_device(0)混合显卡平台还有个隐蔽问题显卡型号被魔改或刷过BIOS后系统识别的显存和实际物理显存可能不一致。用MATS这类NVIDIA显存检测工具可以排查硬件级故障但它需要对应驱动版本和测试环境普通用户先用GPU-Z看传感器信息更实际。如果识别显存和标注容量对不上优先怀疑显存虚标或颗粒故障而不是去调软件参数。5. 显存看着够却跑不动以及驱动报错背后的排查路径5.1 显存够用但速度极慢先做这三步显存计算都验证过了剩余容量也足够但实际跑起来还是卡顿我遇到的情况基本就三类第一显存碎片化。跑了半天模型又关掉显存里到处是小的空闲块新的模型不一定能利用角落碎片框架会显式报OOM。先把所有显存进程清干净再看空闲显存是不是恢复了。第二共享显存与专用显存混淆。Windows任务管理器里显示的GPU内存经常包含共享系统内存这部分带宽极低看起来显存够用实际计算全部命中慢速路径。要看专用GPU内存这个数值而不是总内存。第三功耗和散热限制。消费级显卡满载跑大模型时功耗会拉满小机箱或笔记本散热跟不上就会降频表现就是显存余量充足但token生成速度忽快忽慢。用watch nvidia-smi观察温度是否到90度以上是的话先解决散热。5.2 驱动层报错的边界判断热搜里常看到显卡代码43事件ID 0nvlddmkm153这类问题很多人第一反应是显卡坏了。根据我处理几十次类似问题的经验驱动报错的概率远高于硬件损坏。代码43在Windows设备管理器里是设备已停止或报告错误常见原因包括驱动不匹配、显存超频过度、供电不足。处理顺序是查看系统事件日志中显卡相关来源的详细信息在设备管理器里禁用再启用设备用DDU工具在安全模式下彻底清除旧驱动后重装官方驱动最后才考虑硬件问题。nvlddmkm相关事件频繁出现时先检查是不是驱动新版本与系统组件冲突回退上一版驱动往往能解决。真的需要确认显存硬件有没有损伤再上MATS或专业检测卡那是售后级别的操作普通排查不需要走到那一步。5.3 判断该优化还是该换卡的三条线当你已经做完整轮排查发现现有显卡确实不够跑目标模型时用三条线来判断方向缺口小于3GB优先优化比如降低量化档位、控制上下文长度、限制并发数通常能挤出来。缺口在3~10GB视投入产出决定如果是租卡就换更大规格的实例如果是自有卡且经常要跑大模型可以考虑出掉换卡。缺口超过10GB别折腾了。硬凑量化会让效果劣化到没法用offload又会把速度拖到不可接受直接换卡或租云GPU是更理性的选择。租卡时也记得用前面的显存公式估算实例规格别盲目选最大显存。比如你只需要70B Q4加4K上下文48GB实例就够选中80GB实例多出来的成本是纯浪费。云平台高峰期经常显示无空闲高显存实例与其干等不如用显存公式往下找一个容量恰好满足需求的档位排队概率会低很多。落到最后我会把估算公式和实测表格放在手边每次拿到一张新卡、要部署一个新模型前先算一遍省掉无数试试看的时间。显卡选型这事本质上是容量、带宽、算力、互联和预算之间的平衡显存计算只是第一步但通常是最关键的一步——算明白了后面少走弯路。