我最近被人问得最多的一个问题,不是“哪个大模型最强”,而是“我这台电脑到底能跑多大模型”。尤其当大家开始把 Ollama 装进 Mac mini、迷你主机甚至两年前的笔记本之后,显存焦虑突然就上来了:32GB 内存的 Mac mini,能跑 70B 级别的模型吗?CPU 和 GPU 到底谁在干活?网上都在说 MoE 架构,它是不是非得把所有参数都塞进显存?这篇文章不堆跑分数据,也不列炫技参数,就纯粹从硬件资源的角度,把本地大模型的几条核心逻辑拆开讲清楚,顺便把我自己在 32GB Mac mini 上的调优过程完整复现一遍。
1. 跑本地大模型之前,先把“资源焦虑”算清楚
很多人一听“70B 模型”就觉得没戏,其实这里面的误会非常大。70B 指的是参数量,也就是模型里有多少个计算单元,但它不等于你必须要准备 70GB 显存。第一个需要搞清楚的概念是:模型在推理时占用的内存,主要由“权重文件体积 + KV Cache + 推理框架开销”三部分组成,而权重文件体积取决于“参数量 × 每个参数占用的字节数”。
1.1 量化:模型能塞进内存的头号功臣
现在绝大多数本地部署跑的都是量化版模型。拿 70B 模型来说:
| 精度 | 每参数字节数 | 70B 权重体积 | 感受 |
|---|---|---|---|
| FP16(半精度) | 2 字节 | 约 140GB | 消费级完全没戏 |
| INT8 | 1 字节 | 约 70GB | 服务器级别才压得进去 |
| INT4 / 4-bit 量化 | 0.5 字节左右 | 约 35GB | 高配个人电脑可以尝试 |
这就是量化存在的原因。默认 Ollama 拉下来的模型通常是 Q4_K_M,属于 4-bit 量化,精度损失在可接受范围内,换来的是体积直接砍掉四分之三。35GB 的权重体积听起来还是很大,但注意,这是 70B 级别的模型。如果你跑的是 7B、8B 模型,Q4 量化后只有 4~5GB,一台 16GB 内存的轻薄本都能轻松运行。所以先说结论:能不能跑,先看量化后权重体积能不能放得进内存,而不是先看“多少 B”这个听起来吓人的数字。
1.2 三分法:权重、KV Cache、框架开销各占多少
很多用户只盯着权重体积,结果一跑起来发现内存爆了,问题多半出在 KV Cache 上。KV Cache 是模型在生成过程中缓存的历史上下文计算结果的临时数据,它的大小由“上下文长度 × 层数 × 注意力头数 × 精度”决定。
一个大概的估算方式:在 4-bit 量化下,7B 模型的权重约 4.5GB,但如果你把上下文长度拉到 32K,KV Cache 可能会额外吃掉 4~6GB 内存。这就是为什么同一台机器,跑同一个模型,有人觉得流畅,有人卡死——很可能只是上下文长度设置不同。
我自己的经验算法是:实际内存占用 ≈ 权重体积 × 1.2 + 上下文长度对应的 Cache 开销,而且永远要给自己留出 20% 的余量,因为操作系统和推理框架本身也需要内存。比如 32GB 的统一内存,实际安全可用的大模型字节容量,我会控制在 22GB 左右,剩下的留给 macOS 系统、其他应用以及临时峰值。
2. MoE 不是魔法,但它的内存逻辑和你想得不一样
MoE(Mixture of Experts,混合专家)是现在很多大模型选择的结构,DeepSeek-V2、Qwen1.5-MoE、Miramba 之类的模型都用这种架构。市面上的讨论经常把它神化了,好像用了 MoE 就能让一个超大模型在你的小内存电脑上健步如飞。真相是什么?我来拆一下。
2.1 “总参数”和“激活参数”是完全不同的两个概念
MoE 模型把整个网络分成了若干个“专家”(Expert)模块,每个 token(一句话被切分的片段)进来后,通过一个路由网络(Router)选择其中一小部分专家干活,而不是让所有参数都参与计算。这里产生了两个关键参数:
- 总参数:模型文件里实际包含的所有权重,决定了磁盘和内存占用。
- 激活参数:每次处理一个 token 时真正参与计算的参数,决定了计算速度和延迟。
举几个典型例子:
| 模型 | 总参数 | 激活参数 | 说明 |
|---|---|---|---|
| Mixtral 8x7B | 约 46.7B | 约 12.9B | 8 个专家里选 2 个 |
| Qwen1.5-MoE-A2.7B | 约 14.3B | 约 2.7B | 极致的参数效率 |
| DeepSeek-V2 | 约 236B | 约 21B | 服务端大模型典型代表 |
2.2 所有权重要全部加载,但计算只挑一部分
这里必须泼一盆冷水:MoE 模型推理时,权重仍然需要完整加载到内存/显存里。不能像某些人想象的那样“只把被激活的专家加载进来,其他专家留在硬盘上随用随取”。原因有两点:
第一,路由网络选择专家是在推理过程中动态发生的,不同 token 可能会激活不同的专家组合。如果每次都要从硬盘加载权重,延迟会大到完全不可用——内存带宽不是用来做这种事儿的。
第二,虽然只有一部分专家在“算”,但模型的那层共享参数、Attention 部分的权重、以及路由判断本身,都需要常驻内存。
那 MoE 的优势到底在哪里?在于当参数总量上升时,MoE 可以只增加一小部分计算开销。一个 70B 的 Dense 模型,每次推理要算全部 70B 参数;一个总参数 100B 的 MoE 模型,如果激活参数只有 20B,那它的单次推理计算量还不到前者的一半。所以你才会看到,消费级硬件上大家更愿意尝试 MoE 模型——同样的内存占用上限里,总参数可以更大,模型的“知识面”更广,而算起来又不至于慢到不可用。
这里给我的实战启发是:选模型时,不要只看总参数,更要看激活参数和显存/内存需求。如果你的内存有限,优先选激活参数更小的 MoE 模型,而不是参数更大的 Dense 模型。反直觉的地方在于:“模型更大”和“你需要的内存更大”这两件事,在 MoE 身上并不是严格绑定的。
3. CPU、GPU、NPU 在同一台机器上会怎么配合
另一个常见的困惑是:本地部署时,到底是谁在干活?我在群里看过很多人贴出“我在纯 CPU 上跑大模型”的截图,也有人想尽办法让 Mac 上的 NPU 参与。这里头有三个不同的算力角色,分管不同的事情,搞清楚了,就不会被各种玄学说法带着走。
3.1 三种算力的长板和短板
| 计算单元 | 长板 | 短板 | 在大模型推理里主要干什么 |
|---|---|---|---|
| CPU | 内存容量大,逻辑调度灵活 | 矩阵运算效率低 | 数据调度、算子支持、小规模模型推理 |
| GPU | 大规模并行矩阵运算效率最高 | 显存容量受限 | Attention、前馈网络这类核心矩阵计算 |
| NPU | 能耗比极高,特定算子效率高 | 通用性差,生态适配慢 | 特定算子的硬件加速,目前还不能完全接管 LLM 推理 |
这里要特别说明一下 Apple Silicon 的情况。M 系列芯片用的是统一内存架构,CPU、GPU、NPU 共享同一块内存,这既是优势也是劣势:优势在于 GPU 可以访问全部 32GB,不像传统显卡那样被板载显存限制死;劣势在于这个“全部内存”也同时服务于系统和其他应用,不能像独显那样把一整块显存独占了。
我的实测感受是,在 Mac mini 上跑 Ollama,默认情况下大部分矩阵运算会交给 GPU,CPU 负责一些并行度不高的算子,NPU 暂时只起辅助作用。别指望 NPU 能扭转乾坤——目前的推理框架对 Apple NPU(ANE)的利用还停留在特定算子,路线不如 CUDA 那样成熟,真正决定体验的,是内存带宽和模型量化质量。
3.2 内存带宽才是 Apple Silicon 推理的真正瓶颈
这个点很关键。大模型推理本质上是一个“饿死”计算单元的过程——它在不停地从内存里读权重数据喂给计算单元。所以内存带宽越大,token 生成越快。对比一下:
| 设备 | 内存带宽 | 8B Q4 模型理论生成速度参考 |
|---|---|---|
| 入门级笔记本内存 | 50~80GB/s | 10~20 token/s |
| M 系列基础款 | 100~200GB/s | 20~40 token/s |
| M 系列 Pro/Max | 200~400GB/s | 40~80 token/s |
| 高端独显 | 600~1000GB/s | 80~150 token/s |
这就是为什么同样跑 8B 模型,有人觉得“秒出”,有人觉得“转圈半天”——说到底是在吃内存带宽的红利。如果你想买设备跑本地模型,先看内存带宽,再谈显存大小,顺序别反了。
4. 32GB Mac mini 的调优路线:从能跑到跑得舒服
我是 32GB 内存 Mac mini 的长期用户。坦白说,这个配置处在“能跑很多模型,但需要动脑子优化”的甜蜜区间。我的完整调优路径如下,每一步都踩过坑,直接给你们可复现的操作。
4.1 基础环境:Ollama 和模型怎么选
我选 Ollama 做部署工具,理由很简单:安装简单、命令行干净、模型管理方便。安装命令也没几步:
# 安装 Ollama curl -fsSL https://ollama.com/install.sh | sh # 查看本地已拉取的模型 ollama list # 拉取一个 8B 模型 ollama pull qwen3:8b # 拉取一个 MoE 模型 ollama pull qwen3:30b-a3b选模型时,我给自己定了一条线:权重体积不要超过 20GB(给系统留约 10GB,给 KV Cache 留约 2GB 以上),这样 32GB 内存才安全。按这条线,8B/14B 的 Q4 量化模型随便跑,30B 级别的 MoE 模型(激活参数约 3B)也能跑得很稳。
4.2 几个真正影响体验的调优参数
ollama 默认跑起来没问题,但想跑得舒服,一定要自己动手调几个参数:
第一是量化级别。默认 Q4_K_M 是精度和体积的平衡点。如果你内存有富余,可以试试 Q8_0,清晰度有可感知的提升;如果内存紧张,老老实实 Q4_K_M,别硬上高精度。
第二是上下文长度。这是最容易忽略的大坑。直接用命令行设置:
# 设置上下文长度为 8192,明显增加内存占用 OLLAMA_CONTEXT_LENGTH=8192 ollama run qwen3:8b # 如果只做日常问答,4096 就够用 OLLAMA_CONTEXT_LENGTH=4096 ollama run qwen3:8b实测下来,8B Q4 模型在 32GB 内存上,上下文从 4096 拉到 32K,内存占用会从大约 5GB 飙到 12GB 以上。如果没有长文档需求,别盲目追求大上下文。
第三是并发参数。个人使用通常不需要并发,但如果你在电脑上跑一个团队共享的模型服务:
# 允许同时处理 4 个请求,适合小团队内部使用 OLLAMA_NUM_PARALLEL=4 OLLAMA_MAX_LOADED_MODELS=1 ollama serve并发上去了,每个请求的速度会有所下降,但整体吞吐高了很多。给团队用的时候,这个参数要反复测试,找到“单请求可接受延迟”和“总吞吐量”的平衡点。
第四是保持模型常驻。模型从冷启动加载到内存大概需要十几秒甚至更久,如果因为内存压力被系统卸载了,下个请求又要重来。用 keep_alive 参数让模型在内存里待命:
# 保持模型加载 30 分钟 ollama run qwen3:8b --keepalive 30m调完这四个参数后,我的 32GB Mac mini 跑 8B 模型能达到体感“接近即时响应”,跑 30B 级 MoE 模型稳定在 20~30 token/s 左右,日常问答完全够用。
4.3 我踩过的两个坑,提前给你们排掉
第一个坑:外接硬盘跑模型的温度灾难。我一开始图省事,把 Ollama 的模型目录软链到外接 SSD 上,结果推理速度直接垮掉一大截。原因很简单,外接磁盘的 IO 延迟和带宽比内置 SSD 差,而且长时间满负载读写会让硬盘发热掉速。Mac mini 的内置 SSD 足够快,不用为了省内置空间把模型放到外接盘上,尤其是那种不带供电的小型便携盘。
第二个坑:把 RTX 4090 的预期带到了 Mac 上。我有几年用 N 卡跑 CUDA 的习惯,刚开始用 Mac 跑模型时总觉得“显卡不行”。后来才意识到,Mac mini 的优势不在于峰值算力,而在于统一内存能装下更大的模型。调优的思路应该是:在 32GB 总内存这个框里,选择内存占用可接受的模型,然后充分吃满内存带宽——而不是一味追求高算力换来的高 token/s。
5. 从个人到 200 人团队:预算和硬件的分水岭
很多人在搜这个问题:搭建一个 200 人用的本地大模型到底要多少钱?这个问题必须从“并发”两个字来拆解。
5.1 人数不是关键,同时在线请求量才是
200 人的团队,如果只是“200 个账号都能访问”,那本质和 20 个人的团队没有区别,因为真实场景下同时发起请求的可能只有几个到十几个。但如果要求 200 人同时流畅提问,那就完全是另一个量级了。在做预算前,先回答三个问题:
- 高峰期预计同时有多少个请求?
- 每个请求期望多快拿到结果?
- 模型规模和上下文要求是什么?
假设 200 人的团队,高峰期同时在线约 30~50 人,真实并发请求大约 5~10 个。这个量级,一台高性能单机其实就能扛下来。
5.2 三层方案和大致成本范围
| 方案等级 | 硬件配置 | 适合规模 | 参考预算范围 |
|---|---|---|---|
| 入门单机 | 64GB 内存的 Mac mini / 迷你工作站 | 内部工具,5~10 人并发 | 1~2 万元 |
| 进阶单机 | 128GB 内存 Mac Studio 或双卡工作站 | 20~30 人日常并发 | 3~5 万元 |
| 服务器级 | 2~4 张 A6000/A100 或 4090 节点集群 | 企业级大规模使用 | 10 万元以上 |
注意,这里报的是硬件成本,不含人力、机房和运维。用小团队起步的话,我建议从“进阶单机”开始,因为 128GB 统一内存能让你直接跑 70B 级别量化模型,同时保持 20 人左右的稳定并发,这对绝大多数内部提效场景都是足够的。如果团队只是做文档问答这类轻量任务,甚至 64GB 内存的单机方案就能跑得不错。
核心逻辑是一条曲线:个人用买的是一张舒适的椅子,团队用买的是一张能坐很多人的长桌。个人 32GB 就能玩得很开心;团队从零到一,选择“单机大内存”往往比“多机小显存”更省心。
6. 调优的本质:先跑起来,再花钱
回到标题那句话——本地大模型硬件真相。说白了,硬件只是门槛,不是天花板。我对这个领域最深的体会是:太多人把时间花在“纠结配置够不够”上,而不是“跑通一个”上。
以 32GB Mac mini 为参考,哪怕你的设备内存更小,也可以从不大于 7B 的量化模型开始,调低上下文长度,先把流程跑通,观察内存占用曲线,再逐步尝试更大规模的模型。如果你能忍受 CPU 推理的慢速,甚至 16GB 内存的老笔记本也能作为入门环境。关键是理解三件事:
- 内存决定你能跑什么模型,带宽决定跑得多快,算力决定模型输出多流畅。
- MoE 不等于“省内存”,它是“总参数换知识广度,激活参数换推理速度”的一种交易。
- 没有通用的最佳配置,只有最适合你场景的配置。
另外有一个我实操中养成的小习惯:每次换模型或调参之前,先在命令行清空当前统计,跑同一个 prompt 三次,记录 token/s 和内存峰值,再对比调整后的数据。这样每次改动是“有效优化”还是“自我感动”,一测便知。别凭感觉调,数据虽然枯燥,但它不会骗你。