多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

换显卡跑本地大模型:从RTX 4060到RTX 3090的显存升级实测

换显卡跑本地大模型:从RTX 4060到RTX 3090的显存升级实测 换显卡之前我的电脑是一张RTX 4060 8GB显存平时玩玩游戏还行但本地跑大模型就两个字憋屈。7B模型上4bit量化勉强能跑但上下文稍微拉长一点就爆显存14B模型更是想都别想。后来我花4400元收了一张二手RTX 3090 24GB把同样的模型重新跑了一遍这个提升幅度说实话有点出乎意料。这篇文章就围绕“显卡、本地、大模型”这三件事把我换卡前后的实测数据、部署过程、踩坑记录全部摊开讲给还在纠结要不要升级硬件的朋友做个参考。1. 为什么换显卡先看显存本地大模型的“硬门槛”不是算力而是显存1.1 显存容量决定了你能跑什么体量的模型很多人以为显卡越贵跑大模型越快其实本地大模型第一个卡脖子的地方是显存容量其次才是显存带宽和算力。拿现在很常见的DeepSeek、Qwen这类开源模型来说模型参数文件的体积和显存占用是直接相关的。一个很简单的估算方法以FP16精度为例每10亿参数大概需要2GB显存来放权重。7B模型约14GB14B模型约28GB32B模型约64GB。如果用4bit量化每10亿参数大约是0.5~0.7GB7B模型只要4~5GB14B模型8~10GB32B模型20GB上下。这还不算推理时生成的KV Cache和临时激活值上下文越长KV Cache占用越大。所以8GB显存刚够跑7B量化但上下文一长或者跑14B量化就非常紧张动不动OOM。我原来的RTX 4060就是这种状态单路输出还行一旦用上Agent工具调用或者批量处理后台立马爆显存。因此本地玩大模型的入门门槛是显存不是算力。只要你显存足够大哪怕是上一代架构的显卡也能很舒服地跑几十B参数的模型反过来你拿一张游戏旗舰卡跑70B模型照样没戏。先想清楚你要跑多大参数的模型再决定买多大显存的卡比纠结哪个旗舰卡更划算。1.2 为什么我选了RTX 3090 24G而不是4070 Super或4060 Ti 16G我当时的预算就是4400左右考虑过几类选择新卡RTX 4060 Ti 16G全新大约3300~3600新卡RTX 4070 Super大约4500~4800显存只有12G二手RTX 3090 24G大约4200~4500还有二手RTX 3080 Ti 12G之类。犹豫了很久最终选了二手RTX 3090 24G。原因很简单显存容量24G能跑14B模型FP16或32B模型4bit量化向上兼容空间大。显存带宽936GB/s跑大模型时每个token的吞吐受带宽影响很大这个数字比4060 Ti的288GB/s高好几倍。二手性价比极高4400买24G显存加Ampere旗舰级算力新卡在这个价位根本买不到同等显存。缺点是功耗高、散热压力大、没有全新保修买的时候要测好卡况。这里也想替Ampere架构说句公道话。很多人觉得3090是几年前的卡不支持DLSS 3帧生成也不支持PCIe 5.0但在本地大模型场景里这些游戏向特性根本不重要。你在意的只是三个参数显存容量、显存带宽、FP16算力。3090在这三个维度上依然非常能打。如果你主要玩AI绘画的SDXL/ComfyUI24G显存也特别吃香可以随便堆高清修复和模型叠加。所以“旧卡没用”这个观念在AI时代不太成立关键看你用它做什么。我实际购买前仔细用Mats显卡检测命令把显存测了一遍这个后面单独讲。总之如果你预算刚好摸到5000以内又不想加钱上4090二手3090 24G是本地大模型性价比非常高的选择。2. 换卡记录从拆装、驱动到系统设置别让硬件白换2.1 装机前的电源、机箱和接口检查很多人换显卡翻车不是显卡本体坏了而是电源功率不够或者机箱塞不下。RTX 3090官方TDP是350W瞬间峰值功耗可以到450W以上实际整机满载建议750W以上电源最好850W金牌。我原来电源是650W带一个i5-12400F和两块机械盘GPU满载时整机功耗接近600W虽然没断电但电源风扇已经拉满后来干脆换了750W ATX3.0电源。如果你用的是老电源一定要看12V输出和CPU供电线是否够长。显卡长度也要提前量。3090非公版普遍是三风扇大卡很多长度超过310mm。我的机箱是老款中塔量了一下刚好能塞进去但电源仓和显卡风扇距离太近满载时显卡热风直接灌给电源。这块后面通过更换机箱风扇方向解决了一部分。另外如果你是ITX机箱或者紧凑型MATX买之前务必看显卡长度和厚度以及供电接口方向。不少3090是3个8pin或者12pin转接插线空间不够会非常痛苦。换卡步骤本身不复杂断电、开侧板、按卡扣拔旧卡、插新卡、接供电、开机进BIOS确认识别、装驱动。重点是别在通电状态下碰显卡以及装好后先别盖侧板点亮确认风扇转、系统有输出后再收尾。我见过有人因为没插紧供电开机直接黑屏还以为是卡坏了。2.2 驱动清理与安装DDU是标配事件ID 153也不是玄学我原来用的是RTX 4060换成RTX 3090后按习惯用DDUDisplay Driver Uninstaller在安全模式下把旧驱动彻底清干净再装新版驱动。为什么要这么做因为NVIDIA驱动在更换不同核心的显卡时残留的驱动状态有时会导致异常尤其是电源管理、显存频率策略和CUDA组件。DDU可以清理注册表残留然后再装干净驱动。装驱动后我遇到一个很典型的NVIDIA问题系统事件查看器里反复出现“无法找到来自源 nvlddmkm 的事件 ID 153 的描述”而且只要切分辨率或者显示器休眠唤醒屏幕偶尔黑屏几秒。这个事件ID 153是NVIDIA显示驱动相关的常见错误来源是内核模式驱动nvlddmkm.sys。直接搜“事件ID 153”你会发现一堆人都有但原因各不相同。我这次排查后发现问题出在老卡的驱动版本残留和显示器DP线握手不稳定。处理办法是用DDU彻底卸载驱动在安全模式下执行卸载后先不联网装旧卡驱动换另外一根DP线或者改接HDMI口测试更新主板BIOS和芯片组驱动特别是CPU内置核显的机器在NVIDIA控制面板里把电源管理模式改成“最高性能优先”关闭显示器节能里的某些选项。如果你的问题不是换卡后才出现而是开机就黑屏那还要考虑显卡供电、PCIe插槽接触问题。黑屏不是由某一个原因必然导致的需要按顺序排查。我的情况最后是换了根带屏蔽层的DP线事件153就很少出现了。如果你的卡在重装驱动后依然高频报错建议用Mats先检测显存万一是显存颗粒有问题跑大模型时会表现成随机计算错误而不是花屏。2.3 WDDM还是TCC跑大模型前先搞清这两个模式如果你用的是NVIDIA计算卡比如V100、A100、L20驱动模式会有TCCTesla Compute Cluster和WDDM之分。TCC模式下卡的图形输出被禁用专门用于计算任务可以减少图形驱动开销WDDM就是我们普通游戏卡在Windows下的默认模式支持显示输出和图形加速。RTX 3090属于GeForce卡官方驱动其实不完全开放TCC模式一般只有Quadro/Tesla卡才能直接在驱动里切换TCC。很多人在Windows下跑大模型不需要纠结这个。但如果你用的是专业卡或者魔改驱动就要注意WDDM模式适合日常显示和CUDA混合任务TCC模式适合纯训练、纯推理、多卡并行显存分配更直接不掉驱动。社区里“大模型选择tcc还是wddm”的问题结论很简单有显示需求就WDDM纯服务器无头跑就TCC。至于GeForce卡我建议老老实实用WDDM跑没必要为了那点性能损失去折腾TCC。你用4090跑大模型性能照样很好。Windows下跑大模型最好用的办法不是原生编译CUDA程序而是通过Ollama、LM Studio、llama.cpp这类封装好的工具。这些工具底层用的是CUDA加速驱动装好就能直接用。装完驱动后可以在命令行里跑一下nvidia-smi确认驱动版本、CUDA版本和显存占用都正常再开始部署。3. 同一批模型换卡前后的实测数据对比3.1 测试环境与模型清单为了让自己心里有数我保留了一套固定的测试流程在换卡前后用同样的模型、同样的参数、同样的提示词做对比。测试环境如下旧平台i5-12400F、16GB内存、RTX 4060 8GB、Windows 11、驱动版本561.09新平台i5-12400F、32GB内存顺手加了、RTX 3090 24GB、Windows 11、驱动版本561.09推理工具Ollama 0.5.x LM Studio统一用相同的上下文长度和生成参数测试模型Qwen2.5-7B-Instruct4bit和FP16、Qwen2.5-14B-Instruct4bit、DeepSeek-R1-Distill-Qwen-7B这里有个细节内存也从16G升到32G。很多人忽略内存对本地大模型的影响。虽然显存放得下权重但加载模型、缓存、样本处理都在内存里内存太小会导致换页拖慢速度。实测中16G内存加载14B量化模型后多开对话时系统占用90%以上明显卡顿。内存升级后系统整体响应改善很多所以如果你加显卡预算已经很紧至少保证双通道32G内存。另外说明一下我没有专门去做非常严谨的跑分而是用日常场景的“真实生成速度”来对比因为这才是你实际使用时的感受。但每项测试我都固定生成种子和参数保证可比性。3.2 推理速度生成速度到底快了多少我最常跑的任务是让模型写一段200字的商品文案温度设0.7上下文设4096。旧卡RTX 4060 8GB上Qwen2.5-7B-Instruct的4bit量化版大概能跑每秒12~15个token换成RTX 3090后同一模型跑到每秒38~42个token。速度提升约2.8倍。这个提升主要来自显存带宽4060显存带宽只有272GB/s3090是936GB/s带宽大了3.4倍但因为小模型计算密度低速度提升没有完全复刻带宽倍数。更关键的是14B模型。旧卡8GB根本跑不动Qwen2.5-14B-Instruct的FP16只能跑4bit量化都费劲上下文一长就OOM。新卡24GB可以轻松加载14B的Qwen2.5-Instruct FP16速度约为每秒25~30 token甚至可以跑32B的4bit量化速度大概每秒10~15 token。这才是我换卡后最真实的变化不是“快了一点点”而是“能跑的模型彻底变了一个档次”。之前只能挑7B小模型现在可以跑14B、32B体感上模型回答的深度和条理性明显提升。如果你只追求速度把模型换成量化版本24G显存跑7B 4bit可以到每秒50~60 token已经接近人眼阅读速度。而且这是在CPU很一般i5-12400F的情况下GPU算力还没完全发挥因为单次批处理太小。如果开大batchAmpere架构的吞吐还能进一步释放。3.3 微调场景QLoRA训练提升更夸张我平时也会做一点大模型微调实战比如给客服模型用LoRA注入产品知识。换卡前用RTX 4060 8GB跑Qwen2.5-7B的QLoRA微调batch size只能设1gradient accumulation设8训练一个5000条样本的小数据集要十多个小时而且经常显存溢出发警告。换到RTX 3090 24GB后同样的7B模型用4bit量化做QLoRAbatch size可以设2~4训练时间缩短到4小时左右还能直接加载14B模型做微调。这一点对于想要自己微调模型的人来说比日常推理提升更明显。微调吃显存的核心变量是模型权重、LoRA适配器、优化器状态、梯度、激活值。即使是QLoRA7B模型也至少需要10~12GB可用显存才比较舒服14B则需要20GB以上。24G显存基本可以做到“7B随便微调14B紧巴巴也能上”。如果你用FP16全参微调就算3090 24G也很吃力所以绝大多数人做微调还是走QLoRA/LoRA路线。显存之外还要注意微调时的CPU内存和磁盘空间。训练过程中要保存临时检查点磁盘空间不够也会中途中断。我用的是2TB NVMe SSD训练时预留了200GB以上空间。内存方面加载模型和数据集时最好保证物理内存大于模型文件体积的2倍32G内存比较稳。4. 部署实战Ollama、LM Studio、Dify本地跑起来4.1 Ollama部署DeepSeek等模型参数怎么给换卡后我主力使用的工具是Ollama。它不是功能最丰富的但胜在简单稳定一条命令就能启动服务而且自带OpenAI兼容API方便接入各种前端项目。安装完成后先从模型仓库拉模型比如ollama pull deepseek-r1:7b然后就可以直接跑。很多初次接触的人不知道如何在Ollama里配置并发和上下文这里给出一套我实测比较合理的环境变量设置# Ollama的默认并发数量根据显存调整24G可以开到4 OLLAMA_NUM_PARALLEL4 # 最大并发请求数 OLLAMA_MAX_LOADED_MODELS2 # KV cache量化减少显存占用 OLLAMA_KV_CACHE_TYPEq8_0在命令行里可以用这种方式启动服务先设置环境变量再执行ollama serve。如果你用的是Windows可以通过系统环境变量设置保存后重启Ollama服务生效。不过提醒一句并行开得越多单个请求速度会变慢要找到自己的平衡点。24G卡上同时跑4个7B量化对话没问题但14B模型并发超过2就开始明显互相拖慢。调用API时我习惯用OpenAI兼容接口例如curl http://localhost:11434/v1/chat/completions \ -H Content-Type: application/json \ -d {model: qwen2.5:7b, messages: [{role: user, content: 介绍一下本地部署大模型的基本流程}], stream: true}这个接口可以被Dify、ChatGPT Next Web、Claude Code这类工具直接使用。关键是把base_url指向http://localhost:11434/v1模型名填你已经pull下来的模型tag。如果调用时报模型不存在先确认ollama list里显示的tag和请求参数是否一致。4.2 LM Studio适合图形界面和模型试玩LM Studio是我用来快速试模型和看日志的备用工具。它的优势是图形界面友好能直接下载模型、调整GPU层数、查看显存占用。很多本地模型玩家从一开始就用这个软件因为不需要记命令。LM Studio启动本地服务后同样提供OpenAI兼容接口。你可以把它理解成“看得见摸得着的Ollama”。我发现LM Studio在加载GGUF量化模型时对CPUGPU混合推理的调度做得比较直观可以在“GPU Offload”滑块里指定把多少层扔给显卡。对24G显存14B模型基本可以全部offload到GPU速度拉满。如果模型太大比如32B 4bit约20GB也能接近全量放显存剩下一点放CPU性能还算够用。还有一个细节LM Studio和Ollama最好不要同时开着同一个模型服务否则两个进程都在加载模型显存会互相挤占。我自己是先确定用哪个工具另一个完全退出。4.3 Dify本地部署把本地模型接进Agent工作流如果你想玩Agent、知识库、API集成Dify是目前比较主流的开源平台。Dify本地部署一般用Docker Compose起一整套服务再把模型供应商配置成Ollama或LM Studio的API地址。具体步骤大致如下准备好Docker和Docker Compose环境。克隆Dify的docker-compose相关文件修改.env里的端口和密钥。启动服务后在后台“模型供应商”里选择Ollama填入http://host.docker.internal:11434/v1作为API地址。模型列表里选择本地已有的模型名称保存后就能在Agent和知识库应用里使用。这一步里有个容易踩坑的点Dify是跑在Docker容器里的如果你直接把API地址写localhost:11434容器内访问不到宿主机。Windows和macOS要用host.docker.internalLinux则要加--add-hosthost.docker.internal:host-gateway参数才能解析。我当时因为这个问题卡了半小时一直提示连接失败换成host.docker.internal后立刻通了。Dify还支持通过“强制覆盖本地代码”的方式修改一些前端和后端逻辑如果你只是普通使用不建议动源码。但如果要做二次开发比如给自己的Agent加一个本地工具函数可以在后端源码里写一个自定义Python工具然后重新构建容器。注意覆盖本地代码前先备份否则升级Dify时改动会被覆盖。这是实际开发中很常见的需求很多人问我在这里提一句。5. 跑大模型过程中的典型问题和排查方法5.1 事件ID 153、切分辨率黑屏这些驱动问题的通用解法前面提到了nvlddmkm事件ID 153。这个事件虽然不影响模型计算但很烦人。我整理一个速查表方便你按图索骥现象可能原因排查方向事件查看器出现nvlddmkm 153驱动残留/线材握手/供电不稳DDU重装驱动换线检查供电切分辨率黑屏几秒后恢复显示器握手或驱动策略关闭显示器节能换DP/HDMI口更新驱动开机完全无输出显卡未插紧/供电没接/PCIe槽问题重新插卡单独接供电最小系统测试运行大模型时黑屏重启电源功率不足或显存发热换电源降功耗墙用Mats测显存训练中途报CUDA error显存过热或驱动问题检查散热降低OC频率重装驱动这里特别强调一下别一看到事件153就以为显卡坏了。很多人是被事件查看器吓到其实有时候就是显卡空闲时进入了过深的省电状态唤醒时驱动握手失败。你可以先在NVIDIA控制面板里把“电源管理模式”设为“最高性能优先”试试看事件频率是否降低。还不行再按上表逐项排查。如果你用的是混合显卡笔记本比如机器上同时有Intel UHD Graphics和NVIDIA RTX 4060 Laptop GPU事件153经常和独显直连状态有关。这种情况下可以在BIOS里开启独显直连如果有或者在NVIDIA控制面板里为具体应用指定用独显运行。笔记本GPU的功耗墙很小跑大模型时还要注意散热建议用支架垫高或加散热底座否则温度一高就降频速度断崖式下跌。5.2 用Mats显卡检测命令给旧卡做“体检”如果你和我一样买的是二手显卡强烈建议到手先做一次显存健康检测。NVIDIA官方检测工具叫MatsModular Automated Test System社区里也有适配显卡的版本网上常搜索到“mats显卡检测命令大全”。由于Mats需要在Linux下通过特定方式启动普通用户可以借助一些封装工具来运行。我这里简单说一个思路准备一个U盘或移动硬盘做成可启动的Linux环境下载与你的显卡核心版本匹配的Mats工具包在Mats命令行里执行类似mats -e 1之类的命令测试显存错误如果有error会输出对应错误码如果全是pass说明显存大概率没问题。注意Mats测试对显卡是加压测试测试时风扇可能狂转画面会花屏这是正常的。还有不同核心和显存颗粒使用的Mats命令参数不同比如针对GDDR6X的3090和针对GDDR6的3060就不一样。下载前先查清楚自己GPU核心代号GA102/GA104等再找对应版本。你如果不会跑命令行也可以通过连续跑大模型任务来间接检测比如用Ollama加载一个大模型跑多轮长上下文如果频繁出现乱码、计算错误、CUDA error就要怀疑显存问题。二手卡买回来主动测一遍能省后面很多麻烦。5.3 显存不够用了怎么办量化、层卸载、交换的取舍就算换了24G卡也总会有模型大到爆显存的时候。这里分享我自己的三层降级思路。优先换量化格式比如从FP16换成4bit GGUF显存占用直接降一半以上速度损失可控。但量化精度会影响模型智商敏感任务要实测。其次用GPU层卸载llama.cpp系工具可以设置GPU层数让模型一部分放显存、一部分放内存。CPU计算慢但模型太大时至少能跑。最后考虑上下文长度减少num_ctx可以明显降低KV Cache占用。4096上下文和8192上下文占用差距很大不是所有任务都需要超长上下文。如果你做完这三步还OOM那就真的到了硬件天花板。这时可以考虑把模型切分成更小的版本或者多卡并行。多卡方面双卡3090跑70B量化是可行的但需要主板支持PCIe拆分且Windows下多卡推理配置比Linux麻烦一些建议想搞双卡的人直接用Ubuntu。这也是为什么很多本地大模型发烧友爱折腾Linux的原因。如果让我给一个更实在的建议本地大模型入门不需要一步到位买旗舰先根据你想跑的模型定显存容量。绝大多数人的目标是7B~14B量化模型一张16G或24G卡已经能玩很久。再往上追求70B量级就不只是换显卡的问题了而是整个平台都要跟着升级投入会大很多。到这里我把自己花4400换显卡跑大模型的前前后后都讲完了。如果让我再总结一句体会换卡后最明显的提升不是数字上的速度翻倍而是“我终于不再被显存逼着做妥协”。原来跑模型要纠结量化、要清进程、要关浏览器现在我可以同时开好几个模型服务桌面上照常看网页、写代码这种感觉只有被8G显存折磨过的人才懂。至于下一步我大概率会把内存再升到64G然后把手上的14B模型微调流程彻底跑熟但那就是另一个故事了。
返回列表