这是下篇,来看看内存占用速查表、质量优先的选型心法,以及把 Qwen3-32B 跑通的全流程实操。

上篇我们把名字和原理讲透了——模型名怎么拆、量化是什么、为什么 Mac 适合跑大模型。这篇直接上硬货,回答三个最实际的问题:能跑多大、该选哪个、怎么跑通。

下面所有结论,我都以一台 MacBook Pro M4 Pro、24GB 统一内存、273GB/s 带宽为例。你可以按自己机器的内存和带宽对号入座。


一、你这台 Mac 到底能跑多大?

先解决一个默认的坑

macOS 默认只允许大约 16GB 内存分给 GPU(Metal),哪怕你有 24GB。所以很多人第一反应“我 24GB 怎么连个 27B 都加载失败”,原因就在这。

解决办法是手动抬高上限(具体命令放在第三部分实操里)。抬高之后,在“机器专用、关掉浏览器和其他重应用”的状态下,真正能用于“权重 + KV cache + 运行时开销”的预算大约 20~21GB

24GB 统一内存并不是全部都能给模型用
24GB 统一内存并不是全部都能给模型用

内存占用速查表

公式还是上篇那个:权重 ≈ 参数量 × bpw ÷ 8。下表是各规模、各量化档位下,仅权重的占用(GB)。KV cache 和运行时开销要另外再加约 1.5~3GB(取决于上下文长度)。

规模IQ4_XSQ4_K_MQ5_K_MQ6_KQ8_0
9B4.8 🟢5.5 🟢6.4 🟢7.4 🟢9.6 🟢
14B7.5 🟢8.5 🟢10.0 🟢11.6 🟡14.9 🟡
27B14.5 🟡16.4 🟡19.2 🔴22.3 🔴28.7 🔴
32B17.2 🟡19.4 🔴22.8 🔴26.4 🔴34.0 🔴
35B18.8 🔴21.2 🔴24.9 🔴28.9 🔴37.2 🔴
40B21.5 🔴24.2 🔴28.5 🔴33.0 🔴42.5 🔴

🟢 舒适(含长上下文也够) 🟡 临界(需抬内存上限、机器专用、上下文别拉满) 🔴 不现实

MLX 版同档位比 GGUF 略省 5~10%,且 Apple Silicon 上带宽利用更好,这台机器优先选 MLX。

三句话结论

  • 9B~14B 才是 24GB 的真正舒适区,还能留出 6~8GB 给 KV cache 跑长上下文。
  • 27B / 32B 只在 4bit 一档勉强能跑,属于“机器专用”状态,上下文一长就容易爆。
  • 35B / 40B 在 24GB 上基本没戏——光权重就吃满,留不下 KV 和系统。它们是留给更大内存机型(比如 64GB 的 Mac Studio)的。

二、以输出质量为优先,到底该选哪个?

假设你和我一样,主要做文本总结、prompt 处理这类任务,又希望输出质量尽量高、机器可以专用。该怎么选?

与其直接甩答案,我更想给你四条可复用的心法——换个任务、换台机器也照样用得上。

心法一:参数量 > 量化精度

上篇那条地基结论,这里直接落地:别把小模型拉到 Q8,要在内存装得下的前提下塞进尽可能大的 dense 模型,量化停在 4bit。

一个 32B 的 4bit,质量明显高于一个 14B 的 Q8——尽管后者文件可能还更大。

心法二:质量优先,选 dense,别选 MoE

上篇讲过 MoE(如 30B-A3B)的特点:内存吃得多、但速度快、单 token 质量天花板偏低。

所以——追求速度选 MoE,追求质量选 dense(密集)模型。 你既然不在乎速度、只要质量,就该选真正的 32B dense,而不是 30B-A3B 这种。

心法三:任务决定选型

不是模型越大越好,而是任务决定选型
不是模型越大越好,而是任务决定选型

这点最容易被忽略。不同任务的瓶颈不一样:

  • 总结 / prompt 处理:瓶颈是“指令遵循能力 + 能吃下多长的上下文”,不是推理深度。所以“14B 高量化 + 留足 KV cache”常常比“27B 低量化挤爆内存”更实用。也因此,这类任务不需要 Thinking 推理模型——那一大段思维链只会拖慢、啰嗦。
  • 复杂推理 / 数学 / 代码:才真正吃参数量和推理能力,值得上更大的模型或 Thinking 版。

先想清楚你要干什么,再去挑模型。

心法四:KV cache 设 Q8,等于白嫖内存

这是个几乎无损的省内存技巧。在 LM Studio 里把 KV cache 量化设成 Q8,KV 占用直接砍半。省出来的内存,你可以拿去升一档权重量化,或者把上下文拉得更长。质量优先场景,强烈建议开。

落到具体答案

如果你就是要一个“24GB MacBook、质量优先做总结”的明确答案:

  • 质量上限:Qwen3-32B 的 IQ4_XS / MLX 4bit,搭配 Q8 KV cache。这是这台机器能压榨出的质量天花板。
  • 更稳的次选:Gemma 3 27B(Q4_K_M)Qwen3-27B 档。27B 比 32B 留更多余量,长文档时不容易爆。
  • 追求舒适与速度:Qwen3-14B(MLX 6bit / GGUF Q5_K_M)。这是性价比和稳妥度最高的总结主力,留得出 8GB 给上下文。

我的建议:把 32B-4bit 和 27B 都下下来,拿同一段你常用的文本做对照,看哪个的中文输出更对胃口——大体上 Qwen3 偏精准凝练,Gemma 偏流畅自然。


三、实战:把 Qwen3-32B 在 24GB 的 MacBook 上跑通

理论说完,来真的。以质量上限 Qwen3-32B 为例,走一遍完整流程。

第一步:抬高 GPU 内存上限

终端执行(这一步重启后会失效):

1
sudo sysctl iogpu.wired_limit_mb=21504   # 放开到 21GB,留约 3GB 给系统

验证:

1
2
sysctl iogpu.wired_limit_mb
# 输出 iogpu.wired_limit_mb: 21504 就对了

想让它开机自动生效,建一个系统级 LaunchDaemon:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
sudo tee /Library/LaunchDaemons/com.local.gpulimit.plist > /dev/null << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.local.gpulimit</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/sysctl</string>
        <string>iogpu.wired_limit_mb=21504</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>
EOF

sudo launchctl load /Library/LaunchDaemons/com.local.gpulimit.plist

第二步:下载——23 个结果里怎么挑?

这是最容易翻车的一步。在 LM Studio 里搜 Qwen3-32B,往往蹦出来一长串同名结果。挑选记住两条:

✅ 认准这些 publisher: lmstudio-communitymlx-community、模型官方(如 Qwen 本家)。优先选下载量大的——经过最多人验证,出问题概率最低。

❌ 避开这些:

看到这个词为什么避开
VL / Vision多模态版,你只做文本,白占体积还可能稀释文本能力
Thinking / Reasoning推理模型,会先吐一大段思维链,总结任务用不上、还拖慢
abliterated / uncensored去掉安全护栏的社区改版,日常用不需要
个人小号 publisher + 下载量个位数来源不明、未经验证,跳过

补充:偶尔会看到 -DWQ 后缀,那是一种更新的量化方法,同 4bit 下质量通常更好一点点。属于进阶可选项,新手先不折腾,认准前面说的稳妥版本即可。

下载时认准体积大概 17~18GB(4bit 的 32B 正常就这么大)。

第三步:加载参数怎么设

下完别用默认设置直接加载,点开参数面板调这几项:

  • Context Length(上下文长度):32B 在 21GB 预算下是临界状态,别拉满。先设 8192,跑通了再视情况往上试 16384。总结单篇长文通常 8K~16K 够用。
  • GPU Offload / GPU Layers:拉到最大(全部层都上 GPU)。统一内存架构下没必要留层在 CPU。
  • KV Cache Quantization:设成 Q8——就是心法四说的省内存关键。GGUF 版找 K Cache / V Cache 量化选项,两个都设 Q8_0。
  • Flash Attention:GGUF 版若有这个开关,打开(开了 KV 量化更稳更省)。

第四步:验证没爆内存

加载并开始对话后,另开终端看:

1
sudo memory_pressure       # 看内存压力,别进 critical

或者直接看活动监视器的「已用内存」和「交换(swap)」。

最关键的一条判断:有没有用到 swap。 一旦开始大量 swap,速度会断崖式下跌。没 swap、内存压力正常,就是稳的。

排错速查表

现象原因处理
加载失败 / 报内存不足预算不够确认第一步生效;Context 降到 4096 再试
加载成功但巨慢、风扇狂转用上 swap 了降 Context、确认 KV 设了 Q8、关掉其他 App
MLX 版找不到 KV 量化选项版本 / 引擎限制改用 GGUF IQ4_XS + K/V Cache Q8_0
输出质量没预期好采样参数Temperature 调到 0.3~0.6,总结任务低温更稳

选型决策速查

根据任务选择合适的本地模型
根据任务选择合适的本地模型

最后用一张表收口,下次选模型直接照着走:

你要做什么选多大量化格式
总结 / prompt(质量优先、机器专用)32B dense4bit / IQ4_XS + Q8 KVMLX 优先
总结 / prompt(求稳、留余量)27B denseQ4_K_MMLX / GGUF
日常通用、要长上下文或并发9B~14BQ5_K_M / 6bitMLX 优先
复杂推理 / 数学 / 代码尽可能大4bit可选 Thinking 版

写在最后

两篇下来,从看懂一个模型名,到能亲手把 32B 跑通,应该就通了。

如果只让我留一句心法,是这句:

本地大模型选型,不是挑最强的,是挑你这台机器装得下、又最适合你任务的那一个。

24GB 的 MacBook,质量天花板就停在 32B-4bit 这里。真要更高精度的 32B Q8、或者 35B/40B,那是更大内存机型该干的活——比如一台 64GB 的 Mac Studio 当作家里的 LAN 推理服务器。这个话题,留到以后再聊。


本文是「本地大模型选型」系列下篇。上篇讲了命名规则、量化原理和 Mac 的架构优势,没看的可以翻回去补。觉得有用,欢迎转发收藏。