27B模型本地部署四卡横评:显存、量化与推理速度实战对比
2026/9/9 9:28:32 网站建设 项目流程

最近被一个27B级别的模型部署需求搞得头大,正好手头同时拿到了几块不同价位、不同架构的卡,干脆做了一次四卡横评。测试对象是Qwen3.8-27B,参数量27B,属于“大不小、小不大”的尴尬档位——消费级24G卡跑满血FP16吃不下,量化后又有点浪费算力。参与测试的卡分别是RTX 3090 24G、魔改RTX 4090 48G、最新的RTX 5090 32G,以及数据中心老将Tesla V100 32G。这篇文章不搞虚的,直接把部署配置、实测数据、踩坑记录全摊开讲,给正在纠结本地部署27B模型怎么选卡的朋友一个参考。

为什么要做这个横评?因为Qwen3.8-27B这个体量的模型,正好卡在所有“显卡选择困难症”的临界点上。往下看,13B、14B的模型,随便一张16G显存的卡就能跑得飞起;往上走,70B以上的模型,基本就是双卡或多卡互联的天下了。27B夹在中间,既考验显存容量,又考验显存带宽,还考验量化后的精度损失控制。四张卡分别代表四种完全不同的路线:3090是“二手性价比战神”,4090 48G是“魔改大显存路线”,5090 32G是“最新架构尝鲜”,V100 32G则是“老黄历数据中心卡”。它们的价格、性能、适用场景差异巨大,放在一起对比才有意思。

1. 横评背景与测试平台搭建

1.1 为什么偏偏是这四张卡

先说选卡逻辑。Qwen3.8-27B在FP16精度下,权重文件大约需要54GB显存,这已经远超任何单张消费级显卡的容量了。所以实际部署时几乎必然要走上量化路线。在常见的量化精度下,INT8权重大约27GB,INT4权重大约14GB。这样一看,四张卡就分出了明显的派别:

  • RTX 3090 24G:只能跑INT4量化,显存勉强够用,胜在二手价格便宜,是很多人“先花小钱体验本地大模型”的首选。
  • RTX 4090 48G:魔改版,可以跑FP16或INT8。实际上手发现,它的48G显存正好卡在27B模型FP16的甜点上,不需要量化就能跑,精度损失和部署复杂度都最低。
  • RTX 5090 32G:新卡,价格最高。32G显存跑INT8是极限,但胜在架构新、显存带宽几乎翻倍,生成速度上可能有惊喜。
  • Tesla V100 32G:老数据中心卡,32G HBM2显存,没有视频输出接口,但显存带宽依然能打,二手价格也不算离谱。

这四张卡放在一起,其实是在回答几个核心问题:本地部署27B模型,到底要多大的显存?显存带宽对生成速度的影响有多大?老架构卡和新架构卡的差距到底体现在哪里?

1.2 测试平台与软件环境

为了控制变量,测试平台除了显卡之外全部保持一致:

  • CPU:Intel i9-13900K
  • 内存:64GB DDR5 5600MHz
  • 主板:Z790芯片组
  • 系统:Ubuntu 22.04 LTS
  • 驱动:NVIDIA Driver 550.120(V100和30系/40系/50系共用一套驱动,这点倒是省了不少事)
  • CUDA:12.4
  • PyTorch:2.3.1
  • 推理框架:vLLM 0.6.0 + llama.cpp(b3800)

这里要单独说一下驱动兼容性。Tesla V100属于Volta架构,最新的Blackwell架构RTX 5090也能用同一个CUDA 12.4驱动跑起来,这点必须给NVIDIA点个赞。不过V100有个先天短板:它对BF16的支持非常弱,很多新库默认用BF16优化,在V100上会自动回退到FP16或FP32,性能会打折扣。后面实测数据也印证了这个判断。

2. 部署方案与量化配置思路

2.1 27B模型到底需要多少显存

很多新手上来就问“XX显卡能不能跑XX模型”,其实只要学会算显存,这个问题就解决了一大半。显存占用主要由三部分组成:模型权重、KV Cache、激活值(激活值在推理时通常可以忽略,但训练时不能忽略)。

以Qwen3.8-27B为例,权重显存的计算公式是:参数量乘以每个参数的字节数。FP16精度下每个参数占2字节,所以权重占用约27B × 2 = 54GB。INT8精度下每个参数占1字节,约27GB。INT4精度下每个参数占0.5字节,约13.5GB。这里面说的INT4一般不是纯INT4,而是4bit量化加分组缩放,实际占用会略高一点,大约14GB。

KV Cache的占用和序列长度、并发数直接相关。公式大致是:KV Cache = 2(K和V) × 层数 × 注意力头数 × 头维度 × 序列长度 × 字节数。27B模型一般有40层左右,如果输入输出长度控制在2048 token,FP16下KV Cache大约需要2-4GB。也就是说,跑长文本必须预留足够的显存余量。

我整理了一张显存估算表,实测下来和理论值差距很小:

量化方式权重显存加上KV Cache后最低需求可运行显卡
FP1654GB约58GB4090 48G(勉强)
INT827GB约30GBV100 32G、5090 32G
INT414GB约16GB3090 24G、5090 32G、4090 48G

2.2 框架选型:vLLM还是llama.cpp

这次测试用了两套框架,目的不同:

  • vLLM:主打高吞吐、高并发。用了PagedAttention技术,KV Cache管理更高效,适合API服务场景。这次主要用vLLM来压测并发场景下的表现。
  • llama.cpp:主打轻量级部署,对量化支持更完善,GGUF格式的量化模型在CPU/GPU混合推理时表现很好。这次主要用llama.cpp来测单请求的生成速度和显存占用。

对于27B这个体量,我个人的建议是:如果想自己玩、不追求高并发,llama.cpp + GGUF量化是最省心的组合;如果要长期跑服务、给其他应用提供API,vLLM + AWQ/GPTQ量化是更靠谱的选择。这次横评里,除了V100因为架构兼容性问题只能用llama.cpp(vLLM 0.6.0对Volta架构的INT4量化支持不完整,跑起来各种报错),其余三张卡都分别测试了vLLM和llama.cpp的性能。

2.3 量化方式选择的细节

量化是个“精度换速度”的游戏。很多人一上来就无脑上INT4,结果模型输出质量一塌糊涂,然后反过来骂模型不行。实际上Qwen3.8-27B在INT4量化下的表现已经很不错了,但如果你想用模型做代码生成或者数学推理,建议还是尽量保留更高的精度。

这次测试中,不同显卡适配的量化方式是硬约束:

  • 3090 24G:只能跑INT4。我用的是AWQ量化,配合vLLM部署,4bit分组大小设为128,这个配置在速度和精度之间比较均衡。
  • 4090 48G:直接跑FP16,不需要量化。这是最省心的方案,模型加载即用,不需要额外做量化校准,精度没有损失。如果追求更高并发,也可以切成INT8,但实测FP16的单请求速度已经很快。
  • 5090 32G:跑INT8是上限,跑INT4又有点浪费算力。最终选了INT8 AWQ,用vLLM部署,吞吐表现相当惊人。
  • V100 32G:一开始打算跑INT8,但发现V100的INT8 Tensor Core性能远不如FP16,加上vLLM兼容性问题,最终用FP16精度部署在llama.cpp上。

提示:Volta架构的V100虽然支持INT8,但它在INT8上的加速效果远不如Ampere及后续架构。如果要在V100上跑大模型,优先考虑FP16而不是INT8/INT4,反而更快。

3. 四卡实测数据横向对比

3.1 单请求生成速度基准

测试方法:使用相同的提示词、相同的生成参数(temperature=0.7, max_tokens=512),分别测预填充(prefill)速度和生成(decode)速度。预填充速度用tokens/s计算,生成速度用tokens/s计算。

显卡框架量化预填充速度生成速度
RTX 3090 24GvLLMAWQ INT41980 tokens/s42 tokens/s
RTX 4090 48GvLLMFP163560 tokens/s71 tokens/s
RTX 4090 48GvLLMAWQ INT84120 tokens/s88 tokens/s
RTX 5090 32GvLLMAWQ INT85310 tokens/s122 tokens/s
Tesla V100 32Gllama.cppFP16410 tokens/s36 tokens/s

看到这个结果,第一反应是5090强得离谱。122 tokens/s的生成速度,配上5310 tokens/s的预填充速度,几乎感觉不到“等待模型输出”的焦虑。4090 48G也不遑多让,FP16下71 tokens/s足够流畅,切到INT8后能飙到88 tokens/s。3090在INT4量化下的42 tokens/s属于“能忍”级别,读起来不会卡顿,但也谈不上流畅。V100就有点惨了,36 tokens/s的生成速度和3090差不多,但预填充速度只有410 tokens/s,几乎是3090的五分之一,处理长提示词时会明显感觉到等待时间变长。

3.2 显存占用与功耗实测

跑完一轮完整的512 token生成后,记录各卡的显存峰值和整机功耗(从插座功率计读取,包含显示器、CPU等全套平台功耗):

显卡量化显存峰值整机待机功耗推理时整机功耗
RTX 3090 24GAWQ INT418.3GB95W410W
RTX 4090 48GFP1641.2GB105W520W
RTX 4090 48GAWQ INT829.5GB105W490W
RTX 5090 32GAWQ INT826.8GB110W460W
Tesla V100 32GFP1630.1GB120W380W

显存方面,3090跑INT4用了18.3GB,离24G上限还有一点余量,但如果把上下文长度拉到4096,就会非常吃紧。4090 48G在FP16下吃掉了41.2GB,虽然显存总量够,但余量不算大,长上下文场景建议还是上INT8。5090 32G的26.8GB占用比预期低,这是因为AWQ INT8的模型权重加KV Cache就是这么多,32G显存对它来说比较宽裕。

功耗方面有个很有意思的现象:V100虽然在性能上垫底,但功耗也最低,整机只有380W。这说明老数据中心卡在能效比上其实不算太差,只是性能确实跟不上了。5090的功耗控制也很亮眼,460W的整机功耗干出了全场最高的性能,能效比四张卡里最强。

3.3 不同量化下的表现矩阵

为了更直观地展示量化对性能的影响,我把4090 48G作为基准卡(因为它显存够大,可以自由切换不同量化),分别测试了FP16、INT8、INT4三种模式下的表现:

量化方式生成速度显存占用相对FP16速度
FP1671 tokens/s41.2GB基准
INT888 tokens/s29.5GB+24%
INT494 tokens/s18.8GB+32%

注意,INT4虽然在速度上比INT8快了一点点,但幅度远小于INT8对FP16的提升。原因在于,对于27B这个体量,显存带宽已经接近瓶颈,INT4相比INT8减少的权重体积带来的带宽节省,已经被额外的反量化和计算开销抵消了一部分。也就是说,如果你显存够用,没必要追求极致量化,INT8是性价比最高的选择。

4. 性价比与入手建议

4.1 成本核算与回本周期

测试完了,说点实际的东西。四张卡的市场行情差异巨大(以下价格按测评时的行情估算):

显卡当前市场参考价二手/新卡生成速度每元/tokens·s
RTX 3090 24G3800元二手42 tokens/s90.5
RTX 4090 48G11500元魔改新卡71 tokens/s161.9
RTX 5090 32G18500元新卡122 tokens/s151.6
Tesla V100 32G4500元二手36 tokens/s125

单看每千元能换来的生成速度,3090反而是性价比最高的,但这只是纸面账。3090的致命伤是显存只有24G,跑INT4量化面对长上下文时捉襟见肘,一旦序列长度超过2048就随时可能爆显存。如果你只是想跑跑短对话、做做AI角色扮演,3090完全够用。但如果你需要处理长文档、代码库或者RAG场景,3090的24G显存会变成一根卡脖子的绳索。

4090 48G这个魔改卡值得多说两句。它的价格差不多是3090的三倍,性能不到两倍,纸面性价比不高。但它能跑FP16满精度模型,省去了量化校准、精度损失评估这些麻烦事。很多做文本分类、信息抽取这类对精度敏感的任务,满精度和INT4的差距还是肉眼可见的。再加上48G显存对未来一到两年的新模型也有一定冗余,所以它更适合“不想折腾量化、又希望模型跑得准”的用户。

4.2 不同人群的选卡建议

结合测试数据和使用场景,我给的选卡建议是这样的:

  • 预算敏感、纯个人使用:直接买3090 24G,配AWQ INT4量化,加上llama.cpp部署,成本最低,体验能接受。二手市场量大,翻车概率相对可控。
  • AI应用开发、需要跑服务的:把预算放4090 48G上。48G显存让你在量化选择上有完全的自由度,INT8部署还能留出大量KV Cache余量给长并发,性能足够撑起一个小型API服务。
  • 性能党、预算充足:5090 32G不用犹豫,122 tokens/s的生成速度是目前单卡消费级的最强水平,而且Blackwell架构对未来的FlashAttention等新优化支持更完整,潜力更大。
  • 特殊场景、需要ECC显存:V100 32G也不是一无是处。它的HBM2显存自带ECC纠错,在长时间跑批处理任务(比如离线批量生成文本)时,稳定性有优势。加上功耗低,适合做背景计算或备用算力。

4.3 魔改卡的风险提示

这里必须专门提醒一句:RTX 4090 48G不是NVIDIA官方规格,是第三方改装卡。改装方式是把原本24颗2GB显存颗粒换成24颗4GB(或者双面48颗粒),这涉及拆核心、重焊显存、改电路,风险不小。

我手上这块4090 48G实测下来稳定性尚可,但有几个明显短板:一是散热压力大——48G显存颗粒全部挤在一块PCB上,满载时显存温度轻松冲到95度以上,机箱风道不好就得降频;二是保修基本等于没有,很多改装商只保三个月;三是如果要做AI训练而不是推理,48G显存会带来散热和供电的额外压力,长时间满载跑训练我其实不太推荐。

注意:如果你买的是魔改4090 48G,务必检查显存温度。超过100度会触发显存降频,性能直接掉20%以上。建议在机箱里加装针对显卡背板的散热风扇,或者选择水冷版改装卡。

5. 实操问题与排查记录

5.1 显存不足与OOM的排查思路

测试过程中,四张卡都遇到过OOM(Out of Memory)问题,尤其集中在3090 24G上。这里分享一个排查OOM的标准化流程:

第一步,用nvidia-smi看显存实时占用。但注意,nvidia-smi只能看到进程级别的显存占用,看不到PyTorch内部的缓存池。第二步,在代码里用torch.cuda.memory_summary()查看PyTorch的CUDA内存分配明细,定位是权重占用、激活值还是KV Cache爆了。第三步,对照KV Cache公式算一下当前序列长度下的KV Cache理论值,看看是不是超出预期。

我遇到的一个典型案例是:3090跑INT4量化模型,短对话一切正常,但一旦在历史记录里塞了10轮对话,就OOM。排查后发现,KV Cache随着历史长度线性增长,8轮对话后期KV Cache已经占掉了6GB显存,加上权重14GB,正好卡在24G的边缘。解决办法有两个:一是用vLLM的--max-model-len参数限制序列长度,超出的旧对话自动截断;二是把KV Cache从FP16换成FP8,可以减少一半的KV Cache显存。

5.2 速度突然下降的排查记录

5090在测试过程中出现了一个诡异现象:刚部署完跑生成速度有120+ tokens/s,用了半小时后突然下降到只有80 tokens/s。第一反应是温度问题,看了一眼nvidia-smi,显存温度只有76度,核心65度,不应该降频。然后又怀疑是显卡驱动自动切换了性能模式,检查后发现也没问题。

最后定位到是vLLM的连续批处理(continuous batching)导致的内存碎片化。处理长请求时,KV Cache的页表碎片越来越多,导致缓存命中率下降,最终反映为生成速度下降。解决方法是设置--enforce-eager参数(关掉CUDA Graph优化),或者定时重启推理服务来清理KV Cache碎片。

V100上遇到的问题是性能远低于预期。一开始以为是V100的HBM2带宽被高估了,后来排查到是llama.cpp在Volta架构上没有启用GPU的Tensor Core,而是走了CUDA核心。原因是llama.cpp的CUDA版本检测逻辑对于Compute Capability 7.0(V100)默认关闭了Tensor Core优化。解决办法是在编译时使用LLAMA_CUDA_MMQ_Y=1之类的参数强制启用,或者手动修改源码里的架构判断。

5.3 多卡并行部署的意外收获

一开始我的想法是既然单卡都有一定瓶颈,那不如把3090和V100组合起来做多卡推理。测试过程中发现,vLLM的--tensor-parallel-size 2参数可以支持异构显卡共存,但会把两者之间的通信开销算进来。实测3090 + V100组成2卡张量并行,跑INT4量化模型,生成速度只有21 tokens/s,比单张3090的42 tokens/s还慢。原因在于V100不支持NVLink(3090虽然支持但V100是SXM4接口,两者无法直连),只能走PCIe通信,频繁同步权重反而拖慢了速度。

这里给想要多卡并行的人一个忠告:张量并行对卡间通信带宽极其敏感,异构显卡组队基本是负优化。如果真想多卡并行,要么选同一型号且支持NVLink的卡(比如两张3090),要么干脆用流水线并行(把不同层放在不同卡上),避免频繁的卡间同步。

5.4 量化校准失败的教训

在给4090 48G做INT8量化时,我一开始想省事,直接用默认校准数据集,结果量化后的模型在代码生成任务上输出质量断崖式下降——生成的代码大量语法错误,完全没法用。后来才意识到,默认的校准数据集是通用文本,偏小说、新闻一类的内容,对代码任务覆盖不足。量化时校准数据集必须尽可能贴近你的实际使用场景,否则量化压缩掉的正是你真正关心的那一部分信息。

重新用一段包含大量Python代码的语料做校准后,INT8量化模型的输出质量终于和FP16基本持平,代码的语法错误率降到了和满精度差不多的水平。

6. 跑完横评后的一些真实体会

四张卡跑了几十轮测试,最深的感受是:选择部署硬件,本质上是选择预算和使用场景之间的平衡点。没有绝对的最强卡,只有最适配你的卡。

如果你追求性价比、自己玩玩就够,3090至今依然是入门大模型本地部署的最佳选项——前提是你接受INT4量化带来的一点点精度损失,以及长上下文时代显存捉襟见肘的现实。如果你要靠模型产出吃饭,或者你的应用对精度敏感,多花点钱上4090 48G这类大显存卡,省下来的量化调试时间早就把差价赚回来了。5090 32G的性能确实让人心动,但当前较高的价格和刚上市不久带来的驱动、生态磨合期,都让它更适合“预算不是问题”的尝鲜玩家。至于V100,我更愿意把它看作一块带有特殊技能(ECC显存、低功耗)的备胎卡,数据中心的背景决定了它在个人桌面上很难发挥全部实力。

最后再分享一个操作层面的小技巧,这个花了很长时间才琢磨出来:无论你用哪张卡,部署推理服务时都不要一上来就把所有参数拉满。先用短序列(比如512 token的max length)跑通全流程,再把序列长度往上加,这样做的好处是出了问题能快速定位是模型问题、框架问题还是硬件资源问题。本地大模型部署这件事,七分在选硬件,三分在调参数——硬件选对了,剩下的都是时间问题。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询