想在 Mac 上跑本地大模型,最容易踩的坑是只看参数好看、买回来加载不动,或者内存买太大、钱花在跑不满的地方。这篇不讲虚的,给你一套从任务倒推内存、再倒推芯片的选法,附验机清单和买错后的补救顺序。价格和当前型号到站内页面核对,别拿旧数字下单。
想在 Mac 上跑本地大模型,最常见的翻车不是芯片不够快,而是买回来加载不动,或者内存买太大、钱花在根本跑不满的地方。所以这篇不讲参数漂亮的机型,讲一套从任务倒推内存、再从内存倒推芯片的选法。
核心逻辑只有一句:内存是硬门槛,芯片是快慢问题。内存不够,模型直接加载失败或者跑到一半被系统杀掉,调参救不回来;芯片弱一点,无非是等久一点。把这两件事分清楚,选型就不会乱。价格和当前在售型号别拿旧数字下单,到 /models/deploy 和 /compute 核对当时的行情。
先想清楚你要跑什么,再谈买哪台
选机器之前,先把自己的用途落到一个具体档位上。三类任务对内存和带宽的压力差得挺远:日常问答与写作压力最小;长文档阅读、知识库检索这类要吃长上下文,内存消耗明显上一个台阶;批量处理或者多路并发最狠,既是内存问题也是带宽问题。
- 日常问答与写作
- 短提示、中短输出,内存压力主要来自模型本体,芯片弱一点只影响首字等待。
- 长文档与知识库检索
- 上下文拉长后 KV 缓存持续吃内存,是很多人翻车的真正原因。
- 批量处理与多路并发
- 要同时喂多份请求,内存和带宽双吃,Mac 在这类任务上余量本来就紧。
- 问自己每天真正跑多久:是偶尔试一下,还是一整天边跑边开编辑器和浏览器,日常负载比单次跑分有参考价值得多。
- 确认你要跑的是现成量化包,还是要自己转权重、自己调格式,后者要多留一截余量。
- 把「必须能跑通」和「跑得舒服」分开写,前者决定内存下限,后者决定芯片档位。
- 拿不准模型体量时,先去 /models 的模型库看参数和量化版本,再到 /models/deploy 做一遍测算。
内存是硬门槛,芯片是快慢问题
Mac 是统一内存,系统和显存共用一块。加载权重只是下限,之后的 KV 缓存、上下文长度、并发路数都会继续吃这块内存。判断顺序是先确定目标模型在目标量化下的占用,再加系统与工具链的常驻开销,最后给长上下文留一块。
| 现象 | 大概率原因 | 怎么处理 |
|---|---|---|
| 模型加载直接失败 | 内存不够 | 换更低量化或更小模型,没有别的路 |
| 能加载,开长上下文就崩 | KV 缓存吃满 | 缩短上下文或降量化 |
| 跑一会儿被系统杀掉 | 后台应用挤占内存 | 关后台、降并发,或换更大内存机型 |
| 只是出字慢、不崩 | 芯片算力或带宽限制 | 可接受就忍,不可接受才换机 |
按你自己机器的实际情况量一遍最靠谱。名词对不齐可以先看 /ai-dict/category/hardware,把统一内存、带宽、量化这些概念理清楚,再去 /models/deploy 填参数算,
- 先把系统本身和常用后台应用的常驻占用大致留出来,别按空机器算。
- 再算模型本体在目标量化下的占用,注意同一个模型不同量化包体积差得不少。
- 最后给上下文和并发留一块,这块没留够,前面算得再准也会崩。
- 算完的结论要写成「至少多大内存」,而不是「某台机器够不够」,方便横向比机型。
芯片怎么分档:不是越新越好,是越新越省时间
同一内存容量下,不同代际芯片的差别主要落在预填充和长上下文处理上,也就是「处理一大堆输入要等多久」。短问答这种一边生成一边等体感的场景,代际差没那么明显。所以芯片档位决定的是省不省时间,不是能不能跑。
- 高端芯片的马力要靠并发或大批量任务才吃得满,单人流式对话通常先撞内存墙,而不是先撞算力墙。
- 低配芯片跑大模型不是不行,是要把量化压得更狠、上下文开得更小,并且接受更长的等待。
- 如果日常就是长文档总结、批量跑任务,芯片档位带来的时间差会明显放大,值得往上加。
- 如果只是偶尔问答写作,把钱加到内存上比加到芯片档位上更划算。
很多人关心「跑多大模型、要多少算力」,这套测算思路和选显卡是相通的,可以对照 /compute/sizing 看,Mac 只是把独立显卡换成了统一内存。至于各代芯片的实际差别,别背旧结论,到 /compute 看当时的资料更稳。
量化档位:先能跑起来,再谈质量
量化是内存不够时最有效的调节手段,也是质量损失最直接的一刀。正确的顺序是从高精度往低精度逐档试,直到能稳定加载、并且上下文能开到你需要的长度为止,不要一上来就压到最狠。
| 任务类型 | 量化选择倾向 | 理由 |
|---|---|---|
| 写作、翻译、代码辅助 | 留高档位 | 对输出质量敏感,宁可砍上下文 |
| 长文档总结、检索问答 | 可适度降档 | 换上下文空间更实用 |
| 批量清洗、分类打标 | 可压到低档 | 量大、容错高,速度优先 |
| 实验性尝试 | 从低档起步 | 先确认能跑通,再往上升 |
同一模型的不同量化包,实际占用会差不少,选包之前先确认文件大小和你机器剩余内存,别只认名字。量化格式和精度的取舍可以看 /ai-dict/category/tech,注意不同格式不是同一档,不能直接比。
- 先确定「能加载」的量化上限,再往下调一档留余量,别贴着红线跑。
- 质量敏感任务用高档位加短上下文,长文档任务用中低档位加长上下文。
- 换量化包之后重新量一遍内存占用,不同来源的包体积不一定一致。
- 把最终选定的一套配置记下来,包括量化、上下文、并发,方便之后复现。
上下文长度和并发,才是内存的隐形消耗项
上下文翻倍,KV 缓存跟着涨。很多人的翻车现场是:模型能加载,一开长上下文就崩,然后以为是模型太大,其实是上下文开太满。把上下文长度当成一个可调参数,而不是默认值,按任务需要开。
并发这块,Mac 本来就不是强项。两路以上就要在测算里提前把余量留出来,或者干脆串行排队跑,用时间换稳定。想搞清楚 Token 和上下文到底在消耗什么,可以对照 /ai-dict/category/basics 里的条目。
| 调节项 | 调小能省什么 | 代价是什么 |
|---|---|---|
| 上下文长度 | KV 缓存内存 | 长文档要分块处理,效果可能打折 |
| 并发路数 | 每路额外内存 | 任务要排队,总时长变长 |
| 量化精度 | 模型本体占用 | 输出质量下降 |
| 输出长度上限 | 解码过程的内存增长 | 回答可能被截断 |
- 把上下文开到任务真正需要的长度,够用就停,不要图省事全开满。
- 并发优先串行,确实需要并行再逐步加,一次加一路观察稳定性。
- 分块处理长文档时,注意块与块之间的信息衔接,别把总结做碎了。
- 每次调完一项,单独测一轮,别同时改多个参数,否则出问题说不清是哪个。
软件侧选型会影响你对硬件的判断
同一台机器换一个推理框架,加载成功率和速度感受都可能变。所以顺序应该是先定框架、再定机器,而不是买完机器再回来折腾软件。有没有针对苹果芯片优化的推理路径,往往比芯片差一档更影响日常体感。
- 先选一个社区活跃、文档清楚的框架起步,别一上来就试冷门方案。
- 框架定下来之后,用同一个模型和同一段提示词跑几轮,记录加载时间和输出手感。
- 模型拉取方式和模型目录的管理,可以先用 /tools 里的工具试一遍。
- 如果换了框架体感明显变好,说明之前的瓶颈在软件侧,不一定要换机。
还有个常用的做法:装好之后先用一个中等量化的模型加常用框架跑一轮「最小可用组合」,确认能加载、能稳定输出,再往下加压。这套流程比看参数表有用得多。
验机与到手后的排查顺序
- 跑最小可用组合一个中等量化模型加常用框架,确认能加载、能稳定输出,这是底线,过不了就说明配置错了,不用再往下测。
- 逐步加压先拉长上下文,再加一路并发,同时后台开着常用应用,观察哪一步开始掉速或被系统杀掉,那个点就是你的真实上限。
- 保留回退配置准备一套更低量化、更短上下文的配置,出问题先回退,确认是资源问题还是软件问题,再决定要不要调。
- 量接口延迟基线把常用任务的延迟大致记下来,以后变慢时能判断是机器吃紧了还是服务侧的问题,具体测法可以用 /tools/speed-test。
买之前和买之后的几个判断点
预算固定的时候,优先加内存而不是加芯片档位,除非你已经明确知道瓶颈在生成速度上。这条规则在大多数单人本地使用的场景里都成立,因为撞内存墙的体验是「直接不能用」,撞算力墙只是「等得久」。
已经在用旧机的人,先按前面的排查顺序走一遍,确认到底是内存不足还是框架没配好。很多所谓「机器不够用」,换个框架或者降点量化就能继续用,不急着一换。
- 换机之前先量清楚旧机的真实上限在哪一项:内存、上下文还是并发。
- 确定是内存问题再换机,否则换了也不一定变快。
- 换机后迁移模型文件和配置时,注意路径和环境变量的差异,先小规模验证再全量迁。
- 价格和当前在售型号别用旧行情做决定,到 /compute 看当时的配置与价格资料。
常见问题
16G 内存的 MacBook 能跑本地大模型吗?
能跑,但要把模型和量化档位压得比较小,上下文也开不长。适合试水和轻量问答,不适合长文档或并发。判断方法是先按目标模型的最小量化版算占用,再留出系统和常用应用的开销,跑不顺就说明这台机器对你这个用途偏紧。
内存和芯片哪个更该加钱?
先加内存。内存不够是直接加载失败或进程被杀,属于能不能用的问题;芯片档位低只是慢,属于体验问题。只有当你确认内存充足、但生成速度跟不上日常节奏时,加芯片档位才有意义。
同一台机器为什么有时候快有时候慢?
常见原因是上下文长度变了、后台程序抢内存、或者换了推理框架和量化格式。先固定提示词和上下文长度跑几轮做对比,再排查后台占用。要区分机器问题和服务端问题,可以用 /tools/speed-test 量一遍延迟基线。
买回来发现跑不动想要的模型怎么办?
按顺序降级:先换更低量化档位,再缩短上下文,然后减少并发,最后换更小的模型。这几步都不行,说明是内存硬门槛,只能换机或改成调用远程接口。回退配置建议提前写好,出问题直接切。
跑本地大模型需要联网吗?
模型下载和首次拉取需要联网,之后推理本身可以离线。但如果你用的是带联网能力的工具链或知识库方案,那就取决于那套工具自己的配置,和 Mac 的硬件选型无关。