2026/10/3 15:46:50

8GB显存跑35B大模型:本地部署GLM-5.3-35B全实录

8GB显存跑35B大模型:本地部署GLM-5.3-35B全实录 消费级显卡、本地大模型、8GB显存、35B参数——这四个词摆在一起第一眼看起来像“标题党”。但在我真把GLM-5.3-35B这个MoE模型完整跑起来之后我确认这条路径是通的而且不是靠奇迹是靠一套明确的量化、显存分配和推理参数组合。这篇实录就是把我从选模型到部署、调参、接入Dify/OpenWebUI的全过程摊开来讲适合那些手头只有一块8GB显卡、不想租云服务器、又想把大模型真正跑在本机的朋友。我不会只给你一堆命令而是把每一步背后的“为什么”说清楚为什么35B能塞进8GB显存为什么有些人能跑起来有些人一跑就OOM为什么同一个模型在不同配置下速度能差出十倍这些都是我在反复试错中花真金白银换来的经验。1. 35B为什么敢上8GB显卡量化、MoE和CPU offload的组合拳1.1 先算一笔账35B模型到底有多大35B参数的意思就是模型里有350亿个参数。如果全部用FP16半精度每个参数占2字节保存光权重就是70GB这还没算KV cache和推理时的中间激活值。用FP324字节更夸张直接140GB起步。所以“8GB显存跑35B”的第一步不是想办法把70GB硬塞进8GB而是先把模型体积降下来。业界最成熟的手段就是量化把每个参数从16位压缩到8位、6位、4位甚至更低。量化之后模型体积大概是量化等级单参数位宽35B模型体积约显存占用预期FP1616bit70GB不可能直接加载Q8_08bit35GB8GB显存不够Q6_K6bit26GB显存不够Q4_K_M4bit21GB仍需CPU辅助Q3_K_S3bit16GB仍超8GBQ2_K2bit12GB勉强但质量损失大从这张表能看出来哪怕是压缩到Q4_K_M模型文件也有21GB上下依然远超8GB显存。所以光靠量化还不够得再加上另外两个关键机制。1.2 MoE架构35B是“总员工数”不是“单次干活人数”现在的模型圈有一个概念特别容易被忽略总参数35B不代表每次推理都要把350亿个参数全部算一遍。GLM-5.3-35B这类模型用的就是MoEMixture of Experts混合专家架构。打个比方一家公司有35000名员工总参数35B但接一个项目只需要其中几千名对口员工干活激活参数其余人待命。每次生成一个token模型只激活其中一小部分专家网络。这意味着35B MoE模型的实际计算量可能只相当于一个6B-8B的稠密模型。8GB显存虽然装不下全部权重但配合CPU内存做offload推理时被激活的计算部分并不夸张——这就是它能跑起来的第二根支柱。1.3 选型思路为什么我盯上GLM-5.3我做这张实测选型时重点关注三个点必须是GGUF格式。GGUF是llama.cpp社区推动的模型格式支持分层层级量化、CPU/GPU混合推理、KV cache大小可调是8GB显卡环境下的首选。还没转成GGUF的权重我先不考虑。优先MoE架构。同等参数规模下MoE模型推理时显存压力比Dense模型小速度表现更接近小模型。中文能力强、社区热度高。这样出了问题能搜到解决方案也方便后面接企业应用场景。GLM-5.3-35B-Instruct的Q4_K_M量化版就是在这个筛选逻辑下最终选定的测试对象。后面所有数据都以它为准。如果你想用千问32B、Yi-34B或者其他同类模型思路完全一样只是文件大小和速度略有差异。2. 部署链路对比Ollama上手快llama.cpp能排错2.1 Windows 11下用Ollama实现“三分钟启动”部署工具我第一个试的是Ollama原因很简单它把模型管理、显存调度、API暴露都封装好了Windows用户不需要跟编译器和依赖库较劲。安装完Ollama之后两步就能拉起模型# 拉取量化模型这一步会下载约21GB文件注意磁盘空间 ollama pull glm5.3:35b-instruct-q4_K_M # 运行模型 ollama run glm5.3:35b-instruct-q4_K_M第一次运行Ollama会自动检测显卡显存和系统内存然后决定把多少层放在GPU上、多少层放在CPU上。它会默认给GPU尽量多分但要记住一点Ollama的“尽量多分”倾向于“能加载进去就行”不一定会主动避开OOM风险。我建议拉模型之前先做两个操作把默认模型目录改到大容量磁盘。默认路径在C盘21GB模型加临时文件会把系统盘塞爆。设置环境变量OLLAMA_MODELSD:\ollama_models再重启Ollama服务。查看当前Ollama日志输出。设置环境变量OLLAMA_DEBUG1可以看到它打印的层分配信息和显存使用情况。这是快速启动链路适合“先跑起来再说”。但它的缺点是黑盒——你不太清楚它到底把多少层放在了GPU上遇到OOM也只能干瞪眼。2.2 用llama.cpp拿到“显微镜级”控制权Ollama跑通之后我意识到要做精细调参还得回到llama.cpp本身。llama.cpp的Windows版本可以直接在GitHub Releases下载也可以用CMake自己编译。我直接下载了官方release版本命令行参数比Ollama透明得多llama-cli.exe -m glm5.3-35b-instruct-q4_K_M.gguf ^ -ngl 24 ^ -c 8192 ^ -t 8 ^ -b 512 ^ -p 用Python写一个快速排序关键参数先说清楚-ngl 24把模型前24层加载到GPU。GLM-5.3-35B总共60多层这层数大致对应8GB显存的边界。-c 8192上下文窗口长度。窗口越长KV cache占用越大8GB显存下别贪。-t 8CPU线程数。offload到CPU的部分靠它跑太少了CPU算得慢太多了反而互相抢资源。-b 512batch size影响GPU的批处理效率。llama.cpp的价值不在于日常使用而在于调参时可观察性极强。CPU和GPU的任务分配、各层耗时、显存占用全都打印在日志里。遇到OMM或速度异常用llama.cpp跑一次就知道瓶颈在哪再回去调Ollama参数就心里有数了。2.3 实测验证offload确实生效很多人跑完第一步“能出字了”就认为部署成功。我的建议是至少要验证两个数据第一用任务管理器或nvidia-smi看一眼显存占用。跑35B量化模型时显存占用应该在7GB上下不可能只占几百MB——如果显存占用极低说明模型全在CPU上跑你实际上在做纯CPU推理速度会非常感人。第二看Ollama日志里的offload信息。如果出现“offloaded 24/63 layers to GPU”这类字样说明GPU确实接管了一部分层。如果显示“0 layers”说明环境变量或显卡驱动有问题模型根本没吃到GPU红利。这一步值得花时间。我第一次在这卡了两天一直以为是Ollama自动调度就好结果发现是显卡驱动版本太旧导致推理走了CPU。Windows 11通常会强制走WDDM驱动不会给你静默降级但还是排查一下比较稳。3. 显存、内存与CPU的三方博弈最终调优方案3.1 8GB显存下的资源分配逻辑跑35B量化模型本质上是“显存不够内存来凑”。整个系统需要同时管理三种资源GPU显存、CPU内存、CPU算力。它们的优先级关系是显存首先保证KV cache和工作buffers。这部分不能省否则推理根本跑不动。模型权重尽量往GPU堆。每多放一层在GPU上推理速度就快一截因为你不需要把这一层的计算结果搬到CPU。剩下的层放内存由CPU计算。这里是速度瓶颈CPU性能直接决定整体体验。所以调参就是一个资源跷跷板。比如我把-ngl提高4层GPU显存可能就要多掏1GB多但同时CPU负担减轻整体生成速度提升5%——但如果显存爆了直接换来的就是OOM崩溃或者极其严重的换页卡顿。3.2 最终稳定运行的参数组合经过反复调试我在“速度、稳定性、质量”三者之间找到了自己认为最平衡的一组配置配置项推荐值说明量化等级Q4_K_M速度和质量的均衡点GPU层数24层显存占用约7.2GB安全余量充足上下文窗口8192长文本够用又不至于挤爆显存CPU线程数8物理核减2避免系统卡死Batch size512与GPU算力匹配虚拟内存32GB以上Windows下CPU offload的“隐形保障”这套配置跑下来的显存峰值在7.3GB左右剩余大约0.7GB给系统和桌面应用稳定性最好。如果你追求更快可以把ngl加到30但只要同时打开浏览器或IDE大概率在某一次生成时直接OOM。3.3 Windows 11特有的两个隐藏坑Windows 11在我的实测中多踩了两个坑在这提醒一下第一个是虚拟内存不可见地背锅。CPU offload其实不是“把权重加载到内存就完事”而是CPU要把这部分权重读进内存并即时计算。如果系统物理内存只有16GB或更少Windows会疯狂使用页面文件SSD被拖下水生成速度直接从“慢”跌到“几乎不动”。我的建议是系统盘留出80GB以上的空闲空间开启自动管理虚拟内存或者手动设置初始大小32GB以上。第二个是后台进程抢显存。Windows桌面合成器、浏览器硬件加速、甚至部分输入法都可能占用几百MB显存。在跑大模型之前把浏览器关掉把显卡全局设置里的“默认GPU”指定到独显确保8GB显存只有Ollama一个住客。这一步操作简单但对减少OOM概率帮助极大。调参到这里模型已经能稳定用了。接下来的问题才是关键它的实际表现到底行不行。4. 逐项实测代码生成、长文本处理与对话质量4.1 三个典型任务的完整测试我不想只给一个“感觉还行”的结论所以选了三类典型任务做实测任务一代码生成。提示词是“用Python写一个快速排序加中文注释”。35B模型生成了一段约480字的代码加注释总耗时86秒折算下来约5.2 token/s。代码逻辑正确注释清晰能直接跑。这个速度说实话不算流畅但作为“写代码的辅助”是能接受的因为你可以一边等一边审代码。任务二长文本摘要。给了一篇约8000字的中文技术报告要求提取核心观点。这个任务比较吃上下文8192窗口刚好覆盖。生成摘要约560字耗时113秒。关键信息基本覆盖到位没有跑偏但明显能感觉到后段的生成质量比前段略差属于MoE模型长上下文下的常见退化。任务三复杂数学推理。我出了一个包含多步计算的物理计算题模型给出了完整推导过程但最后一步计算结果出现错误。这个结果印证了一个共识量化到Q4之后模型的符号推理和多步计算能力会打折扣不能把它当计算器用。三个任务的表现汇总如下测试任务输出规模耗时生成速度质量评价代码生成约480字86s5.2 tok/s可用长文本摘要约560字113s4.8 tok/s整体可用数学推理约300字58s4.9 tok/s最后一步出错4.2 和“纯GPU推理”的直观对比很多人问8GB跑35B跟正常跑7B模型差多少。我拿同一个7B模型在8GB显卡上跑生成速度能做到40-60 tok/s而35B这套配置只有5 tok/s上下差了十倍。这“十倍”不是模型变笨了而是算力分配方式变了。7B模型可以全部放GPU每次推理不需要等CPU35B模型有近三分之二的层在CPU上算CPU的主频和内存带宽就成了天花板。实测中还有一个反直觉现象如果我把GPU层数从24降到12生成速度反而会掉到3.5 tok/s但显存占用能降到4GB。反过来如果升到30层速度能到6.5 tok/s但稳定性明显变差开两个应用就易崩。所以对于8GB显卡24层确实是一个“性价比”最高的甜点位置。4.3 哪些任务最好别指望跑通一套配置后最难的是认清它的边界。别指望32K长上下文对话。这配置的KV cache撑不住那么大的窗口。强行开长上下文要么OOM要么速度掉到1 tok/s以下。别指望应对多用户并发。单用户独占都只有5 tok/s如果两个人同时提问速度直接对半砍。企业生产环境至少需要两张专业卡或一台高内存服务器本地消费卡只适合个人使用。别指望特别复杂的联网搜索、代码执行等Agent任务。Agent应用要求多次快速推理5 tok/s的反应速度会让用户体验很痛苦。这些边界不是“技术不够”而是物理资源限制了并发度和反应速度。接受这个现实之后你会发现它在另一类场景里反而特别有价值。5. 把本地模型接进OpenWebUI和Dify从命令行到应用层5.1 OpenWebUI给命令行套一个好看的聊天界面模型在命令行能跑但日常使用不现实。我第一个接的是OpenWebUI它能直接识别Ollama的本地接口不需要写适配层。OpenWebUI推荐用Docker部署一条命令就行docker run -d -p 3000:8080 ^ -v open-webui:/app/backend/data ^ -e OLLAMA_BASE_URLhttp://host.docker.internal:11434 ^ --name open-webui ^ ghcr.io/open-webui/open-webui:main大多数Windows用户在这会踩一个坑Docker容器里的localhost指向的是容器自己不是宿主机。所以Ollama地址要写host.docker.internal这个地址在Docker Desktop下会自动映射到宿主机。启动后浏览器访问localhost:3000注册一个管理员账号在设置里选择模型为glm5.3:35b-instruct-q4_K_M就能聊了。OpenWebUI会自动显示模型加载状态和token生成速度比命令行直观很多。5.2 Dify接入本地大模型的完整配置OpenWebUI解决的是“聊天”问题而Dify解决的是“应用编排”问题。企业搭本地大模型或者做个人知识库Dify是绕不开的一环。Dify接入Ollama的步骤如下部署Dify。推荐用Docker Compose方式安装官方仓库有现成的docker-compose.yaml文件。添加模型供应商。左上角“设置” - “模型供应商” - 选择“Ollama”。填写关键参数Model Name填glm5.3:35b-instruct-q4_K_M必须是Ollama里已经拉下来的完整名称。Base URL如果Dify和Ollama在同一台机器填http://localhost:11434如果是Docker容器同样要注意用http://host.docker.internal:11434。Model Type选LLM。Context Window Size填8192跟之前设置的上下文窗口保持一致。测试连接。点击“测试”如果返回正常响应说明链路通。创建工作流。新建一个“聊天助手”应用在模型设置里选择刚才添加的模型就能开始对话调试。我实测下来Dify的Prompt编排很吃模型能力。35B模型本身推理能力够用但如果你在设计复杂的Agent工作流每步都要调用模型一次5 tok/s的生成速度会导致整个流程非常慢。建议优先做“单轮知识库问答”这类不需要多次模型调用的场景。5.3 局域网共享让手机也能用上本地大模型接好Web界面之后如果你想让手机或同事机器也访问还有最后一步网络开放。Ollama默认监听在127.0.0.1只允许本机访问。要开放到局域网需要设置环境变量OLLAMA_HOST0.0.0.0然后重启Ollama服务。这样局域网内其他设备就能通过http://本机IP:11434访问Ollama接口。OpenWebUI和Dify也可以把端口从localhost改为0.0.0.0监听手机浏览器直接访问http://本机IP:3000。这里有个安全提醒开放端口后同一局域网内的其他人也能调用你的模型甚至可能往Ollama里拉模型占满磁盘。家庭网络还好办公网络建议用防火墙只放行特定IP或者干脆用内网IP白名单别直接暴露到公网。6. 排错实录那些让我熬夜的崩溃瞬间6.1 OOM的完整排查链路第一次跑35B模型我盯着nfvidia-smi看显存从5GB一路涨到7.9GB然后呼吸机报警一样的声音响起——程序直接崩溃。报错信息很简单CUDA out of memory。但“显存不够”只是表象真正的问题可能有两个第一GPU层数设太高第二上下文窗口太长导致KV cache膨胀。我逐个调整验证先把-ngl降到24看是否不再OOM。再试把上下文从8192降到4096显存占用下降约600MB。最后把batch size从1024降到512又释放了一部分显存。三步走完问题彻底消失。所以OOM排查的优先级从来不是“关程序”而是先降ngl再降-c最后降-b。6.2 “慢到像卡死”的真相有一次模型越跑越慢最后完全没动静我以为死机了。检查任务管理器发现CPU占用100%但GPU占用只有30%模型几乎全在CPU上算。根因是我调整参数时把-ngl设成了0但Ollama没有报警而是默默地改成纯CPU推理。这种“静默降级”是本地部署最大的坑你眼看着模型在跑但速度从5 tok/s掉到0.8 tok/s人很容易误判为卡死。解决方法是随时盯两个指标GPU显存占用和GPU Compute占用。如果显存占用正常但Compute占用极低说明模型在等CPU喂数据如果两者都低可能就是进程卡住了。6.3 量化质量损失的反直觉发现Q4_K_M量化几乎是“速度和质量”的默认平衡点但它在处理代码时会出现一种反直觉现象中文注释质量还行一遇到符号密集的代码逻辑就容易崩。比如让它生成一段涉及指针操作的C代码偶尔会出现变量名乱掉的情况。这不是模型本身弱而是量化把所有参数的精度都砍到4bit高精度推理所需的细节被牺牲了。如果你对代码生成质量有硬要求建议把GLM-5.3换回Q6_K量化版体积只多6GB左右速度慢一点但代码错误率会明显下降。6.4 这套配置适合谁、不适合谁做了这么多测试我给这套“8GB跑35B”方案下一个最终定位适合个人学习大模型原理、离线环境测试业务场景、开发者做原型验证、企业做内部知识库问答。成本低、数据不出内网、可控性强这是它的核心价值。不适合高并发C端产品、低延迟实时对话、需要长时间稳定运行的在线服务。在这些场景里它会被一台16G显存的专业卡或云端API吊打硬撑只会带来无尽的运维工作。这里也回应一下热词里那个灵魂问题“如果本地花了二三十万买硬件部署本地大模型会有运维工作量吗”我的答案是一定会有。本地部署不只是“装好就完事”还需要监控显存、管理磁盘空间、处理驱动和库的兼容性、定期更新模型版本。8GB显卡这种低成本方案运维量相对小但也需要理解剂量、理解和排错能力。二三十万的高配服务器运维工作量反而更大因为业务方会对它抱有更高期待。我个人实测下来的体会是这套方案真正值钱的地方不在“跑得多快”而在“你可以不看任何人脸色地反复实验”。云上API调十次就想着账单本地模型随便你折腾调坏了重拉一个权重就行。最后再分享一个实用小技巧排错阶段永远先用7B小模型测试链路确认OpenWebUI、Dify、局域网访问全部通畅之后再切到35B大模型。小模型跑得飞快链路问题几分钟就能定位一上来就上35B光是等待生成就够你怀疑人生的。