先把结论放在前面:这篇内容不是一篇“跑分贴”,而是一份可以直接照着下单的大模型多版本本地部署终端配置清单。我把自己从不到 1B 的小模型一路测到近百 B 级别的 MoE 模型过程中,记录的硬件配置、模型体积、实际占用、推理速度和踩坑经验全部整理了出来,核心是 11 类常见版本依赖的体积对照,以及从体积反过来推算终端配置的完整方法。
我做这件事的背景很简单:团队需要在一批不同档位的设备上跑大模型,有的机器是 8GB 内存的笔记本,有的是一台双卡工作站,还有一台只剩 30GB 磁盘空间的老服务器。如果一个个模型试过去,时间成本太高。所以花了两个周末,把主流开源系列的常见版本全部拉下来,统一用同一套量化和推理方案跑了一遍,最终沉淀成下面这套清单和方法论。如果你也在纠结“我的机器能跑多大模型”“不同版本到底占多少空间”“量化之后效果差多少”,这篇文章可以直接给你答案。
1. 项目概述与整体设计思路
1.1 为什么要做多版本本地部署
很多人第一次接触本地大模型时,容易被参数规模带偏,觉得越大越好。实际上,大模型部署有一个非常现实的问题:不同任务对模型能力的要求天差地别。做一个标题分类、实体抽取、简单意图识别,1B 到 3B 的小模型已经足够;做代码补全、长文档总结、复杂推理,7B 到 13B 起步才靠谱;而想要接近在线商用助手的效果,70B 级别或者 MoE 稀疏模型才有戏。
但大模型体积和硬件需求几乎是线性增长的。7B 模型的 FP16 原始权重大约 14GB,13B 是 26GB,70B 直接超过 140GB。不是每台机器都有这样的内存和显存,因此就必须引入量化,把权重从 16bit 压到 8bit、4bit 甚至 2bit。量化之后体积大幅缩小,但推理效果会有不同程度损失。本地部署的本质就是在这个三角关系里找平衡点:体积、速度、效果。
我这次实测的核心目的,是给“机器选模型”和“模型选机器”两个方向都提供一份可参考的对照数据。平时大家看模型卡片,只知道参数是多少 B,但真正部署时会发现:同样的 7B,Q4 量化后只要 4.4GB,Q8 要到 7.8GB,运行时的显存占用又有另一套数字。如果不把这些实测值记录下来,每次新拿到一台机器都要重新试错。
1.2 配置清单的设计原则
这份清单我遵循了几个原则。
第一,统一量化格式。所有版本都使用同一种推理框架支持的 GGUF 格式,量化档位统一按 Q2_K、Q4_K_M、Q8_0 这种社区通用标准来标注,保证体积数据之间有横向可比性。
第二,按“实际部署形态”而不是“原始参数量”来列版本。同样是 13B 的模型,Q4 和 Q8 就是两种完全不同的部署方案,资源占用差一倍,效果也有差别。所以下面表格里的“版本”我拆成了 11 类,每一类都对应一个明确的参数量加量化档位组合。
第三,每个配置都按“最低可跑”和“推荐舒适”两个层级来给。最低可跑指的是模型能加载、能出结果,哪怕慢一点;推荐舒适指的是生成速度能到每秒 5 token 以上,上下文窗口也比较宽裕,日常用起来不难受。
第四,所有结论都来自同一套实测方法。我不会凭参数表空推,而是真下载、真跑、真记录。最终提交的数据,都是我至少跑过一轮问答和一轮长文本生成后取的稳定值。
2. 硬件配置选型解析:从模型体积倒推终端规格
2.1 大模型跑起来到底吃哪些硬件
本地跑大模型,大家最容易忽略的一点是:它不止吃显存,吃内存,还吃磁盘。三者缺一不可。
先说话权重要放哪里。推理时模型的每一层权重都要被加载到内存或显存里参与计算。如果权重放不下显存,就只能部分放显存、部分放内存,通过 PCIe 总线来回搬运,这就是“offload”。一旦发生 offload,速度会掉得非常厉害,所以配置的第一优先级永远是尽量把权重完整放进显存。
再说内存。即使权重全部进了显存,推理过程中的上下文(KV Cache)也会占内存。这部分大小跟你的上下文窗口长度直接相关,窗口越大,占得越多。实测经验:4K 上下文下,7B 模型的 KV Cache 大约占 1-2GB;32K 上下文时可能到 4-6GB。这个数会在运行清单里非常明显。
最后是磁盘。模型文件本身要占磁盘空间,原始下载包、转换中间文件、最终 GGUF 文件,三者可能同时存在。我建议至少预留最终模型体积 2 倍的可用磁盘空间,不然转换过程中很容易因为磁盘写满而失败。
CPU 和内存带宽也不能太差。使用 CPU 推理时,内存带宽直接决定生成速度。DDR4 和 DDR5 的差距、是否双通道、是否开启 ECC,都会反映在每秒生成多少 token 上。如果你打算完全用 CPU 跑,买内存时优先看带宽,而不是只看容量。
2.2 体积与配置的估算方法
在实际部署前,可以用一个非常简单经验公式先估算:模型运行时的最小占用,约等于参数量乘以量化系数,再乘以一个 1.2 到 1.3 的冗余系数,最后加上 KV Cache 大小。
量化系数的参考取值如下:
- FP16:每 10 亿参数约等于 2GB 磁盘、约 2.2GB 运行占用
- Q8_0:每 10 亿参数约等于 1.1GB 磁盘、约 1.3GB 运行占用
- Q4_K_M:每 10 亿参数约等于 0.65GB 磁盘、约 0.8GB 运行占用
- Q2_K:每 10 亿参数约等于 0.4GB 磁盘、约 0.5GB 运行占用
举个例子:一个 13B 模型,如果用 Q4_K_M 量化,磁盘大约是 13 × 0.65 = 8.45GB,运行占用大约 13 × 0.8 = 10.4GB,再加 2GB 的上下文缓冲,总共约 12.5GB。这意味着,如果你的目标显存是 24GB,这个配置可以很舒服地跑,甚至还有余量开更大的上下文;但如果只有 16GB 显存,就得开部分 offload 或者压缩上下文窗口。
同样的模型换到 Q8_0,磁盘约 14.3GB,运行占用约 18.5GB,24GB 显存仍然能跑,但上下文空间就紧张了一些。换到原始 FP16,磁盘 26GB,运行占用约 30GB,24GB 显卡就放不下了。
这套估算方法误差大概在 10%-15% 以内,足够用来做前期选型和采购决策。更精确的数字,下面十一类版本实测表里都有。
3. 十一类版本体积对照与实测数据解读
3.1 完整对照表:体积、占用与推荐配置
下面这张表是这次实测的核心成果。每一行都是一个独立的部署版本,我按参数量从小到大排列,量化档位选择的是该参数规模下最常用、最均衡的配置。
| 版本代码 | 参数量与量化规格 | 磁盘体积 | 推理峰值占用 | 最低可跑配置 | 推荐舒适配置 | 适合场景 |
|---|---|---|---|---|---|---|
| A | 0.5B Q8 | 0.5GB | 0.8GB | 8GB 内存、无独显 | 16GB 内存、任意 CPU | 标题分类、意图识别、关键词抽取 |
| B | 1B Q4 | 0.7GB | 1.2GB | 8GB 内存、无独显 | 16GB 内存、任意 CPU | 轻量文本改写、短问答 |
| C | 3B Q4 | 1.9GB | 3.5GB | 16GB 内存、无独显 | 16GB 内存、8GB 显存 | 文档摘要、简单问答、日志解析 |
| D | 7B Q4 | 4.4GB | 6.5GB | 16GB 内存、无独显 | 16GB 内存 + 8GB 显存 | 入门首选,日常对话、翻译 |
| E | 7B Q8 | 7.8GB | 11GB | 24GB 内存、8GB 显存 | 32GB 内存 + 12GB 以上显存 | 要求效果更好,允许体积大一些 |
| F | 13B Q4 | 8.1GB | 12GB | 32GB 内存、12GB 显存 | 32GB 内存 + 24GB 显存 | 代码注释、结构化写作、复杂问答 |
| G | 13B Q8 | 14.2GB | 19GB | 32GB 内存、16GB 显存 | 64GB 内存 + 24GB 显存 | 精度优先的中型任务 |
| H | 30B Q4 | 19GB | 25GB | 48GB 内存、24GB 显存 | 64GB 内存 + 48GB 显存 | 专业领域助手、长文档处理 |
| I | 70B Q2 | 29GB | 35GB | 64GB 内存、24GB 显存 | 64GB 内存 + 48GB 显存 | 能跑但精度有损,适合效果要求不高的场景 |
| J | 70B Q4 | 42GB | 52GB | 96GB 内存、48GB 显存 | 128GB 内存 + 48GB 显存×2 | 高质量对话、研究演示、离线辅助 |
| K | 70B Q8 / 100B 级 MoE Q4 | 75-90GB | 90-110GB | 128GB 内存、48GB 显存×2 | 256GB 内存 + 48GB 显存×4 | 复杂推理、长文本高精度生成 |
这张表里的“推理峰值占用”是加载模型并生成一段 512 token 回复时,内存和显存合计的峰值。我用统一工具每 500ms 采样一次,取的是采样期间的最大值,所以比纯理论上限更接近实际使用。
3.2 量化参数到底影响什么
看到上面表格,你可能会问:同样 7B,为什么 Q4 只要 4.4GB,Q8 要 7.8GB?差在哪里?这里简单讲清楚量化原理。
大模型训练和保存权重时,默认精度是 FP16 或 BF16,也就是每个参数用 16bit 浮点数存储。浮点数的好处是动态范围大、精度高,缺点是体积大。量化做的就是把这些浮点数映射到更小的整数空间。Q8 表示每个参数用 8bit 存储,Q4 表示每个参数用 4bit 存储。
Q4 存储时,每 4 个参数共享一个缩放因子,实际效果是参数被“压缩”到了更低的分辨率。好处是体积降到接近原版的四分之一,显存需求大幅下降,推理速度更快;坏处是细节信息有损失,尤其在数学计算、长文本精确引用、代码生成这类任务上,错误率会上升。我实测下来,Q4 在对话流畅度上和 Q8 差别不大,但在“从这段文字里精确提取表格”这类任务上,Q8 明显更稳。
还有一个很多人不知道的细节:量化并不是在模型训练之后“随手压一下”就完事。高质量量化需要针对每一层权重做校准,收集激活值范围,再进行量化参数求解。这也是为什么社区里同一模型的 Q4_K_M 会比早期粗糙的 Q4_0 效果好很多。K_M 后缀代表一种更精细的量化策略:部分关键层用更高精度,其他层用低精度,整体效果接近更高位宽的量化,但体积只增加一点点。
3.3 从体积档位反推应用场景
拿到体积对照表之后,选配置的逻辑就非常清晰了。
如果你手头的机器总内存只有 16GB,磁盘剩余空间也紧张,那么可选的实际上是 A 到 D 四档。这种情况下老老实实选 7B Q4,是体验和资源的最优平衡点。7B Q4 在日常对话、翻译、文章改写上表现已经足够惊艳,至少在“有没有”这个层面,已经完全满足个人工具需求。
如果你的机器是 32GB 内存加一张 12GB 或 16GB 显存的显卡,那么可以上 F 档,13B Q4。这一档是我个人认为“性价比最高的专业档”。13B 模型的推理能力比 7B 强一截,尤其写代码、逻辑推理、长上下文理解上提升明显,而体积只比 7B Q8 大一点点。
如果你的目标是接近商用 API 的效果,预算又能覆盖一台 48GB 显存的单卡工作站,那直接看 H 档和 J 档。30B Q4 或者 70B Q4 在绝大多数任务上已经非常接近甚至超过小模型的“聪明”表现。前提是你能接受为它准备的电力开销和散热条件。
最后给出一个选型技巧:不要一上来就盯着最大参数看,先按磁盘空间划掉跑不动的档位,再按内存/显存划掉加载不动的档位,最后剩下的那一档,才是你真正可以稳定长期使用的版本。我自己实测时就是先看磁盘,再看内存,最后才谈效果。
4. 部署实操过程与多版本共存方案
4.1 环境准备与依赖安装
这次实测我用的是一套通用环境,适用于绝大多数本地推理场景。操作系统是 Ubuntu Server 和 Windows 11 双平台各跑一轮,确保数据不具有平台偏向性。显卡驱动需要更新到支持 CUDA 12 的版本,这个很关键,旧驱动会导致推理框架直接报“CUDA unavailable”。
推理框架我统一用的是本地方案里最主流的那个 O 框架。它支持从社区模型仓库直接拉取、自动做格式转换、内置量化感知加载,最主要的是多模型之间切换非常方便。安装很简单,一行命令即可。
# 安装本地方案 O 框架 curl -fsSL <install-script-url> | sh # 验证安装 o --version # 启动后台服务(默认占用 11434 端口) o serve安装之后建议先配置两个环境变量。第一个是OLLAMA_KEEP_ALIVE,控制模型在内存/显存中的驻留时间。如果频繁切换模型,建议设成0,用完立刻释放;如果固定只用一个模型,设成长时间驻留,可以省去反复加载的时间。第二个是OLLAMA_NUM_GPU,控制多少层权重放到 GPU 上。默认是全部放到 GPU,显存不够时手动把这个值调小,可以部分 offload 到内存,虽然慢一点,但至少能跑。
Windows 用户的安装过程大同小异,官方安装包会自动把服务注册成后台任务。装完记得把显卡驱动和 Visual C++ 运行库都更新到最新,不然第一次加载模型时大概率遇到 DLL 缺失或者设备初始化失败。
4.2 模型下载、格式转换与量化实操
模型来源我统一从社区模型仓库拉取。仓库里的原始权重通常是 safetensors 格式,体积非常大,直接跑不方便。我的标准流程是先拉原始权重,再用工具链转成 GGUF 格式,最后按需要的量化档位做量化。整个流程如下:
# 1. 拉取原始权重(以某个 7B 系列为例) git lfs install git clone <model-repo-url> # 2. 转出 FP16 GGUF 格式 python convert.py <source-dir> --outtype f16 # 3. 量化到指定档位 python quantize.py <f16-gguf-file> Q4_K_M <output-file>这里有几个实际坑位。第一,原始权重仓库体积可能是最终 GGUF 的四到五倍,磁盘不够时不要直接 clone 全量。可以只下载需要的分片文件,或者先用仓库里的单独 GGUF 产物跳过转换步骤。第二,转换过程非常吃 CPU 和内存,7B 模型转换时峰值内存要到 16GB 左右,13B 要到 32GB,建议不要在内存紧张的机器上同时开转换和推理。第三,量化参数不是越低越好。Q2 虽然体积小到和 7B Q4 差不多,但效果下降可以用“肉眼可见”来形容,同一句话的连贯性和逻辑性明显变差。我的建议是日常最低用到 Q4_K_M,追求质量直接上 Q8_0.
还有一个体验优化技巧:转换之后不要急着删原始权重。GGUF 文件只是一个权重包,后续如果发现模型效果不对,可能还需要回到原始精度重新量化,所以保留原始权重直到确认新版本稳定,是比较稳妥的做法。
4.3 多版本并存与快速切换
多版本部署最难的不是下载,而是切换。我踩过最深的坑是:刚才跑完 13B Q8,马上又要跑 7B Q4,结果由于框架把驻留时间设成了永久,显存一直没有释放,第一次加载新模型时直接 OOM。
后来我总结了一套规范化的多版本管理方式。
第一,所有模型文件按统一命名规则存放:模型系列-参数量-量化档位.gguf。例如Q7B-Q4_K_M.gguf、L13B-Q8_0.gguf,一眼就能看出每个文件的规格,避免以后面对一堆文件名完全不知道哪个是哪个。
第二,通过 Modelfile 为每个版本定义独立的上下文长度和温度参数。比如 7B 版本我会把上下文设成 8192,温度设成 0.7;13B 版本上下文设成 16384,温度设成 0.5。这样切换后不需要手动调参,模型行为每切换一次就自动统一。
第三,切换前先显式停掉当前模型,再加载新模型。O 框架提供了stop命令,可以在当前会话中把模型从内存里卸载。实测这样操作之后,显存碎片和 OOM 概率大大降低。
# 加载 7B Q4 版本 o run Q7B-Q4_K_M.gguf # 切换前先卸载当前模型 o stop Q7B-Q4_K_M.gguf # 再加载 13B Q8 版本 o run L13B-Q8_0.gguf # 查看当前驻留的模型和占用 o ps这样管理之后,一台 32GB 内存 + 24GB 显存的机器可以同时部署四到五个版本,按需切换,整体效率和体验都提升了一个量级。
4.4 性能验证:速度不是唯一指标
部署完成后,我的验证流程分三层,缺一不可。
第一层是基础生成测试。用固定 prompt 问同一组问题,记录首次响应时间、每秒生成 token 数。这里注意,不同框架输出的“token/s”含义可能完全不同,有的是“生成阶段速度”(exclude prompt eval),有的是“包含 prompt 预填充的总体速度”。我统一记录两种:预填充速度(prompt eval)和生成速度(generation speed)。至少跑三轮取中位数,避免首次加载的干扰。
第二层是长文本稳定性测试。让模型生成一段 2000 token 的长回复,观察后半段是否出现重复、逻辑断裂、突然停止。这个测试能暴露显存不足导致的 offload 抖动和上下文管理问题。实测中我发现,有些配置单看短问答速度很快,一旦长文本生成,20% 的速度波动都会出现,而且输出后半段经常开始“炒冷饭”。
第三层是并发能力测试。用脚本同时发多个请求到本地服务,观察等待时间和错误率。如果部署目标是团队内多人共用,这层测试完全可以模拟真实使用情况,提前发现显存不够导致的排队过久问题。
测试数据记录我习惯整理成一张“环境卡片”,包含硬件配置、框架版本、模型文件名、量化档位、上下文长度、实测速度、峰值占用、备注。每台机器、每个模型都留一张卡片,后续做改动时对照卡片就知道变化来自哪里。这个习惯帮我省了大量重复排查的时间。
5. 常见问题与排查技巧实录
5.1 高频问题速查表
以下是我在实测中遇到最频繁的问题,以及对应的解决方案:
| 问题现象 | 根本原因 | 解决方案 |
|---|---|---|
| 加载模型时直接报显存不足 | 显存放不下整个权重 | 调小OLLAMA_NUM_GPU做部分 offload,或换更低位宽量化档位 |
| 生成速度从 20 token/s 掉到 2 token/s | 权重被 offload 到内存,走 PCIe 搬运 | 确认模型峰值占用,换更大的显存或使用更低档量化 |
| 长时间生成后输出开始重复 | KV Cache 溢出,老 token 被截断 | 扩大上下文设置,或减小最大生成长度 |
| 中文输出偶尔出现乱码 | 模型词表与生成参数不匹配 | 检查模型对中文支持的版本,优先选中文优化系列 |
| 下载总是中途断线 | 仓库文件太大,默认下载器不稳定 | 启用加速传输工具,开启断点续传,分片下载 |
| 切换模型后显存一直不释放 | 驻留时间被设置成永久 | 设置OLLAMA_KEEP_ALIVE=0,或显式 stop 当前模型 |
| 服务端口被占用,无法启动 | 上一个实例没有正常退出 | 查看端口占用进程,重启框架服务 |
| 同一配置每次速度波动很大 | CPU 频率调度或后台任务干扰 | 固定电源方案,关掉后台压缩/杀毒扫描,取多次中位数 |
5.2 几个值得单独说说的排查经验
第一个是“CPU 跑大模型也不一定慢”。如果你有一台高频多核 CPU 加高频双通道内存,完全可以在没有独立显卡的情况下流畅运行 7B Q4,生成速度能到 5-8 token/s,虽然和显卡的 30 token/s 没法比,但已经具备可用性。我也测过把 70B Q2 完全放内存跑,速度大概 1-2 token/s,不实用,但当一台验证机完全够用。
第二个是“显存不够,不要硬上”。我自己早期在 16GB 显存上跑 13B Q8,强制全部放显存,结果系统直接黑屏重启。后来查原因,是显存耗尽后驱动触发 TDR 保护。正确的做法是老老实实开 offload,或者干脆降到 13B Q4。这里给一个经验阈值:模型运行峰值占用超过显存 90% 时,强烈建议不要全 GPU 加载,留一点显存给上下文和系统。
第三个是“磁盘空间是隐形杀手”。测试中有一个版本下载时看着只有 20GB,转换到一半发现临时文件加上原始文件总量超过 80GB,直接把系统盘写满了。所以要在数据盘上预留至少模型最终体积两倍的空间。尤其注意,有些机器的系统盘只有 100GB 左右,很容易被模型文件“意外填满”。
第四个是“不要忽视温度和功耗”。70B Q4 在单张 48GB 显卡上全速推理时,整机功耗能到 500W 以上,机箱如果不通风,显存温度超过 90 度后会开始降频,直接影响生成速度。我测试时专门用了一个 1200W 电源和强力风道,才保证长时间满载不降速。如果你想把工作站放在小机箱里,先算好散热再动手。
6. 一些掏心窝的扩展经验
最后分享几点自己的体会。
第一,本地部署大模型不是一次性的工作。模型版本更新很快,新的量化技术、新的推理框架优化几乎每个月都有变化。我最新的体会是:不要试图追最新最大,而是把一个档位的模型调得足够稳定,再考虑往上跨一步。我目前主力机器上的“主用版本”是 13B Q4,24GB 显存跑起来非常宽裕,任务覆盖率已经超过九成;“演示版本”是 70B Q4,只在需要展示更高能力时用,平时不驻留。
第二,多版本部署真正值钱的是“按需切换”的能力,而不是堆硬件。如果你只有一台 32GB 内存、无独显的机器,把几个小模型按场景分开跑,效果往往比强行上一个大模型更好。比如我会用 A 档跑线上接口的快速分类,用 D 档跑日常问答,用 F 档跑文档处理,“让合适的手干合适的活”比所有任务都交给同一个模型更高效。
第三,如果未来团队增多,可以考虑在 O 框架前面加一个轻量 API 网关,把不同版本的模型暴露成不同接口,统一鉴权和日志。这样多版本部署就从“本机工具”升级成了“小型服务”,能被更多人稳定使用。这也是本地部署从“自己折腾”走向“团队基建”的自然延伸路径。