我见过太多这样的案例:兴冲冲在 Mac 上装了 Ollama,跑通一个 7B 模型觉得挺快,然后换 14B、32B,内存一爆,速度掉到每秒几个 token,就开始怀疑是 Mac 不行还是模型不行。其实两者都不是,问题几乎都出在“没有把 Ollama 的运行机制和 Mac 的硬件特性对齐”上。这篇文章不会只告诉你装个软件敲几行命令,而是从选型、安装、模型下载、内存匹配、响应速度优化,到接上 Web 界面和 Dify、把模型库搬到外置 SSD 这套完整链路,按从零实操的顺序全部走一遍。适合的对象很明确:想把本地大模型真正用起来、不满足于“能跑通”而想让它“跑得舒服”的 Mac 用户。过程中我会把一些踩坑的细节和排查思路一起写出来,这些东西网上很少被讲明白。
1. 为什么 Mac 上跑本地大模型首选 Ollama 而不是其他方案
1.1 本地大模型落地需要解决的三件事
本地部署大模型这件事,抽象来看其实只有三步:把模型权重加载进内存、用推理引擎调用 GPU 或 CPU 做矩阵运算、对外提供可用的接口或界面。很多人第一反应是自己写 Python 脚本调 transformers,结果光装依赖就能折腾一晚上,更别说处理量化格式、KV Cache、并发请求这些工程问题。Ollama 的价值在于把这三件事打包成了一个完整运行时,默认就能利用 Apple Silicon 的 Metal GPU 加速,还内置了模型下载、版本管理、OpenAI 兼容 API,等于给你一个开箱即用的“模型管家”。
Ollama 的模型仓库用的是 GGUF 格式,这是 llama.cpp 生态留下的标准。GGUF 的好处是它把 tokenizer、模型结构、量化参数全都封装在一个文件里,Ollama 拿到文件后可以直接解析运行,不需要你做任何格式转换。你要做的只是指定模型名,剩下的加载、分片、显存调度都由 Ollama 处理。
1.2 Ollama、LM Studio、llama.cpp 怎么选
很多人会问:LM Studio 不是更简单吗?llama.cpp 不是更底层更可控吗?我的建议是看你的使用场景。如果你只是想聊聊天、体验一下本地模型,LM Studio 确实挺舒服,图形界面点一点就行;但如果你想做一个能被其他应用调用的本地模型服务,或者想把模型管理纳入命令行工作流,Ollama 的 API 和 CLI 设计就明显更顺手。
| 方案 | 上手难度 | API/服务能力 | 模型管理 | Mac Metal 支持 | 适合场景 |
|---|---|---|---|---|---|
| Ollama | 低 | 原生 OpenAI 兼容 API | 命令行 + Modelfile 定制 | 好 | 快速部署、被外部应用调用、脚本化管理 |
| LM Studio | 低 | 需要额外开启 Server | 图形化管理 | 好 | 纯聊天体验、不想碰命令行的用户 |
| llama.cpp | 高 | 自己写服务/编译 | 无统一管理 | 好 | 深度定制、研究推理底层细节 |
从长期维护的角度看,Ollama 的更新节奏很快,对新模型架构的支持速度通常领先其他图形化工具。而且它的模型文件名、标签体系很清晰,比如qwen2.5:14b-q4_K_M这种写法,一看就知道是什么模型、什么量化等级。这种清晰度在模型一多的时候特别重要。
1.3 统一内存架构是 Mac 跑大模型的隐藏优势
搞清楚 Mac 为什么适合跑本地模型之前,得先理解 Apple Silicon 的统一内存架构(UMA)。简单说,CPU 和 GPU 共享同一块物理内存,不像传统 PC 那样有独立显存。这意味着 32GB 内存的 Mac,GPU 能直接访问的内存上限远远高于同价位 Windows 笔记本常见的 8GB 显存。你在网上看到“16G 显存 + 32G 内存能跑什么模型”这类问题,放在 Mac 上要换一个思路:统一内存池越大,模型权重、KV Cache、系统开销就能共用同一块空间。
但硬币有另一面。因为内存是共享的,macOS 本身、你开着的浏览器、IDE 都会占用内存,Ollama 并不能把 32GB 全部吃干抹净。你实际可用的内存要扣除系统占用和其他应用,通常要预留 2-4GB 给系统才不容易触发内存压力。后面第四章我会详细算这笔账,这里先记住一个结论:不要拿“我的 Mac 是 16GB 内存”去类比“我的显卡有 16GB 显存”,虽然数值一样,但 Mac 的 16GB 要同时承担系统、CPU、GPU 三份工作。
2. 安装前的机器体检:芯片、系统、磁盘和 Homebrew 报错
2.1 先确认你的芯片和系统版本
Ollama 虽然同时支持 Intel 和 Apple Silicon Mac,但两者的体验差距非常大。M 系列芯片可以直接走 Metal GPU 加速,Intel 芯片基本只能靠 CPU 硬算,13B 模型跑起来能出字但速度感人。正式动手之前先花一分钟确认硬件:
uname -m sysctl -n machdep.cpu.brand_string system_profiler SPHardwareDataType | grep "Memory"uname -m输出arm64表示 Apple Silicon,x86_64就是 Intel。内存大小直接看 System Profiler 的结果。macOS 版本方面,Ollama 官方要求 macOS 12.3 以上,太老的系统即使能装上,Metal 支持也可能不完整,后续跑模型容易出莫名其妙的问题。
磁盘空间是另一个容易被忽略的坑。Ollama 的模型文件全部存放在本地,一个 7B 模型的 Q4 量化文件大约 4-5GB,14B 大约 9GB,32B 直接到 20GB 以上。先看一眼系统盘剩余空间:
df -h /如果剩余空间低于 30GB,要么只下小模型,要么提前准备外置 SSD 并在安装前规划好存储路径。不要等到系统盘被模型塞满再想办法,macOS 清理起来很麻烦,而且模型文件不像普通缓存那样能被系统自动识别清理。
2.2 两种安装方式:官方安装包和 Homebrew cask
Ollama 在 Mac 上有两条安装路径。官方推荐的是从 ollama.com 下载 macOS 安装包,解压后把 Ollama.app 拖进 Applications 目录,首次启动后菜单栏会出现一个羊驼图标。这种方式最省心,不依赖任何包管理器,适合大多数用户。
如果你喜欢用 Homebrew 管理软件,也可以执行:
brew install ollamaHomebrew 安装的好处是后续brew upgrade ollama一行命令就能升级,坏处是它依赖完整的 Homebrew 环境和 Command Line Tools,而这两样在 Mac 上恰恰是报错高发区。很多人在这一层就被劝退了,其实大可不必,下面这几个报错基本覆盖了 80% 的情况。
2.3 Homebrew 常见报错与解决思路
第一个高频报错是安装 Homebrew 时网络中断,常见提示是curl: (7) Failed to connect to raw.githubusercontent.com port 443。这属于下载源不稳定,最简单的处理方式是换一个网络环境重试,或者错峰安装。国内也有很多开源镜像站提供 Homebrew 安装包,用正规镜像地址重跑安装脚本即可,不要用 sudo 强行装,后续权限会很乱。
第二个常见问题是Error: /Library/Developer/CommandLineTools does not exist,这说明 Mac 上还没有安装 Xcode Command Line Tools。执行一下:
xcode-select --install装完再继续 brew 操作。第三个问题是Running Homebrew as root is extremely dangerous,这通常是用了sudo brew install导致。Homebrew 明确禁止用 root 运行,检查一下目录权限,把 Homebrew 目录所有权还给当前用户:
sudo chown -R $(whoami):admin /opt/homebrew说实话,如果你的目标只是用 Ollama,我不建议在这一步死磕 Homebrew。官方安装包五分钟就能搞定,Homebrew 的价值主要体现在版本升级的便利性上。先跑通核心功能,以后想换再换也不迟。
3. 模型下载慢与 GGUF 手动导入:从卡进度到备份式安装
3.1 官方拉取模型为什么会卡住
安装完 Ollama 之后,第一件事通常是拉一个模型。比如:
ollama pull qwen2.5:14b这一步对很多人来说是一道坎。Ollama 默认从官方模型库下载模型文件,网络波动大的情况下进度条很容易长期停在 0% 或者中途中断。你要判断是“下载慢”还是“假死”,看两点:进度百分比有没有变化、网络流量有没有波动。如果半小时纹丝不动,基本可以断定当前网络跟官方源之间的链路很差,这时候重试一百次意义也不大。
这个问题的最终解不是去找各种来路不明的“镜像加速”,而是切换到一条完全可控的下载路径:从大模型社区下载 GGUF 文件,本地导入 Ollama。哪怕以后官方源恢复正常,这套能力也值得掌握,因为它让你彻底摆脱了“只能通过 ollama pull 下模型”的束缚。
3.2 手动导入 GGUF 的完整流程
第一步,确定你想要的模型和量化版本。以 Qwen2.5 14B 为例,去 ModelScope 或 HuggingFace 找到对应的 GGUF 文件,优先选名字里带q4_K_M的版本,这是质量和体积最平衡的选择。下载工具我推荐支持断点续传的下载器,或者直接用带-C -参数的 curl,中断之后能接着下:
curl -C - -L -o qwen2.5-14b-instruct-q4_k_m.gguf "https://modelscope.cn/models/.../resolve/master/qwen2.5-14b-instruct-q4_k_m.gguf"下载完成后建议先做一次完整性校验。GGUF 文件很大,网络传输中偶尔会损坏,不校验直接导入,可能要到运行阶段才报错:
shasum -a 256 qwen2.5-14b-instruct-q4_k_m.gguf把算出来的哈希值和下载页面的 SHA256 比对一下。
第二步,写一个 Modelfile,相当于本地模型的“配方文件”。在 GGUF 文件同一个目录下创建文本文件,命名为 Modelfile:
FROM ./qwen2.5-14b-instruct-q4_k_m.gguf SYSTEM """你是一个严谨的中文技术助手,回答问题尽量简洁、准确。""" PARAMETER temperature 0.7 PARAMETER top_p 0.9系统提示词和采样参数可以根据实际需求调整,这一步就是给模型“注入人设”。
第三步,导入并运行:
ollama create qwen2.5-14b-chinese -f Modelfile ollama run qwen2.5-14b-chineseollama create会把 GGUF 文件纳入 Ollama 的模型管理体系中,之后ollama list里就会出现这个模型。源 GGUF 文件在导入成功之后可以删掉,模型已经被记住,不用重复占用磁盘。
3.3 导入过程中的细节经验和坑
这里有三点经验值得记下来。
第一,Modelfile 里的FROM路径如果是./xxx.gguf,意思是相对当前目录,所以执行ollama create时最好就在 GGUF 文件所在的目录下操作,否则路径要对齐。
第二,不是所有 GGUF 文件都能直接导入。Ollama 对模型结构的支持有版本差异,过旧的 Ollama 可能无法识别新版模型架构。遇到unknown model architecture之类的报错,先升级 Ollama 再重试。
第三,如果你从 ModelScope 下载的 GGUF 文件本身就带 chat template,导入后 Ollama 通常能自动识别。但有些定制版 GGUF 没有内嵌模板,你需要在 Modelfile 里手动指定对话模板,否则对话会变成一次性补全而不是聊天,上下文完全接不上。
这套手动导入流程还有一个额外好处:它天然支持“私有模型”部署。你可以把公司内部微调过的 GGUF 权重文件导入随意命名,数据不出本地,也不需要经过公共模型仓库。对于有数据安全需求的人来说,这个能力比单纯的ollama pull值钱得多。
4. 内存、量化等级与模型选择:16G/32G/64G 分别能跑什么
4.1 量化等级决定体积和质量的平衡点
模型下载下来之后,决定它能不能在你机器上跑起来的核心因素有两个:参数规模和量化等级。大模型权重默认是 FP16 格式,一个 14B 模型光是权重就接近 28GB,放在 Mac 上几乎没法跑。量化就是把权重从 16 位压缩到更低的位宽,代价是精度略微下降,收益是体积和内存占用成倍减少。
| 量化格式 | 每 10 亿参数占用 | 体积参考(14B 模型) | 质量表现 |
|---|---|---|---|
| Q2_K | 约 0.4GB | 约 5.6GB | 下降明显,只适合应急 |
| Q4_K_M | 约 0.65GB | 约 9GB | 日常首选,质量和体积平衡 |
| Q5_K_M | 约 0.8GB | 约 11GB | 质量更好,体积略增 |
| Q8_0 | 约 1.1GB | 约 15GB | 接近原始精度,占用偏高 |
实践下来,Q4_K_M 是绝大多数本地部署场景的首选。Q8 的生成质量提升在普通对话任务里几乎觉察不到,但内存占用和加载时间却实打实地增加。Q2 则谨慎使用,很多模型在 Q2 下会出现明显的幻觉和语句破碎问题。
4.2 各内存档位的模型清单
基于 Apple Silicon Mac 的实际表现,我整理了一份“稳妥选择”和“极限选择”的对照清单。注意这里的“内存”指机器总内存,不是独立显存。
| 机器内存 | 稳妥选择 | 极限尝试 | 注意事项 |
|---|---|---|---|
| 8GB | 3B/4B 模型 Q4 | 7B/8B Q4 + 短上下文 | 必须关闭其他大型应用 |
| 16GB | 7B/8B Q5/Q8、13B/14B Q4 | 14B Q4 + 4K 上下文 | 跑完一个模型再切另一个 |
| 24GB | 14B Q8、22B/24B Q4 | 32B Q4 不太稳 | 上下文长度要控制 |
| 32GB | 14B Q8、32B Q4 | 32B Q5/Q6 | 可同时驻留两个中小模型 |
| 64GB | 32B Q8、70B Q4 | 70B Q5 | 大上下文也能消化 |
所以回到那个常见问题:“16G 显存 + 32G 内存能本地部署什么大模型?”如果你是 32GB 内存的 Mac,流畅路线是 32B 模型的 Q4 量化,或者 14B 模型的 Q8 量化;如果你想玩 70B 级别,那需要 64GB 以上内存,而且上下文还得控制得比较保守。
4.3 上下文长度才是隐藏的内存怪兽
很多人只看模型体积,忽略了一个关键因素:上下文长度(context length)。推理的时候,模型要把当前对话的所有历史 token 都放进 KV Cache 里,这个缓存会随着上下文长度增长而线性增加。实测下来,一个 14B 模型在 4K 上下文下 KV Cache 可能只占 0.8GB 左右,但拉到 32K 上下文,缓存占用能冲到 5-6GB。
这就是为什么“16GB 内存跑 32B 模型”看起来好像放得下权重,实际一用就卡顿。权重文件 20GB,再加上 KV Cache 和系统开销,轻轻松松超 32GB。我建议用这个经验公式做预算:
推荐可用内存 ≥ 模型文件体积 × 1.3 + 系统保留 2GB
举个例子,14B Q4 权重约 9GB,9×1.3+2 = 13.7GB,所以 16GB 内存跑 14B Q4 是可行的;但如果你把上下文拉到 32K,预算就得再往上加。保守的做法是在 Ollama 里显式设置上下文长度,后面第五章我会讲具体配置。
5. 把响应速度提起来:Ollama 运行参数、环境变量与实测调优
5.1 响应慢的三个来源
Mac 上跑 Ollama 感觉“慢”,大多数时候不是生成速度本身慢,而是被三件事拖累:模型冷启动加载、上下文处理开销、并发请求互相抢内存。
冷启动是最常见的。默认情况下 Ollama 在模型闲置 5 分钟后会把它从内存里卸载,下次对话又要重新加载权重文件。一个 14B 模型的加载时间可能长达十几秒,这段时间里用户的感受就是“卡死”。生成速度本身反而没那么大差距,M 系列芯片跑 14B Q4 通常能到 20-40 tokens/s,7B 模型能到 50 以上,日常对话完全够用。
5.2 KEEP_ALIVE:让模型常驻内存
解决冷启动最直接的手段是调整OLLAMA_KEEP_ALIVE,单位是秒。把它设为-1,模型加载后会一直驻留内存,直到你手动卸载或重启 Ollama:
launchctl setenv OLLAMA_KEEP_ALIVE -1设置完必须重启 Ollama 才生效。重启后先跑一次模型,再执行:
ollama ps看到模型信息里显示时间和进程常驻,就说明设置成功了。这里要提醒一句:常驻内存不等于不好,但如果你的内存只有 8GB 或 16GB,常驻一个 14B 模型会让其他应用变得很紧张,这种情况下不如把OLLAMA_KEEP_ALIVE设成一个合理值,比如 1800(半小时),兼顾响应速度和内存释放。
5.3 MAX_LOADED_MODELS 和 NUM_PARALLEL:别让并发拖垮内存
Ollama 默认允许多个模型同时驻留,也支持单个模型并发处理多个请求。这两个能力在 API 服务场景下很有用,但在本地 Mac 上往往是内存超载的元凶。我建议普通用户显式限制:
launchctl setenv OLLAMA_MAX_LOADED_MODELS 1 launchctl setenv OLLAMA_NUM_PARALLEL 1MAX_LOADED_MODELS=1意味着同一时间只保留一个模型在内存里,切换模型时会先卸载旧的再加载新的。NUM_PARALLEL=1意味着同一时间只处理一个请求。如果你只是自己对话、偶尔调 API,这两个值足够了。只有在明确需要并发处理多个请求时,再逐步调大,每次增加都要观察内存压力的变化。
5.4 CONTEXT_LENGTH:把上下文长度调到你真正需要的档位
上下文长度是速度和内存之间的杠杆。Ollama 默认的上下文长度是 2048,对日常短对话够用,但处理长文档、复杂代码时容易截断。比较新的 Ollama 版本支持全局环境变量:
launchctl setenv OLLAMA_CONTEXT_LENGTH 8192这里强烈建议不要盲目追求 32K 甚至 128K。上下文拉长之后,首 token 延迟会明显上升,因为模型要处理的输入变多了;KV Cache 的内存占用也会指数级增长。我的习惯是:日常对话 8K,需要总结长文本的时候临时调高。单个模型也可以单独覆盖,在ollama run里输入:
/set parameter num_ctx 8192或者写进 Modelfile:
PARAMETER num_ctx 81925.5 Flash Attention 和版本相关的实验参数
Ollama 从某个版本开始引入了 Flash Attention 实验支持,通过环境变量开启:
launchctl setenv OLLAMA_FLASH_ATTENTION 1这套机制能减少长上下文场景下的内存占用,实测在某些模型上首 token 延迟也能下降。但这个参数不是万能的,部分旧模型开启后可能出现输出异常,比如重复话、格式错乱。我遇到过 Qwen 系模型正常、某些内部微调模型开启后胡说八道的情况。所以我的建议是:内存吃紧且上下文拉长的时候开启试试,如果效果不对就立刻关掉,不需要纠结。
5.6 环境变量持久化:别让配置重启就丢
launchctl setenv有个缺点:系统重启后设置会消失。如果你不想每次开机都重设一遍,可以在~/Library/LaunchAgents目录下建一个 plist 文件,比如com.user.ollama.env.plist:
<?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.user.ollama.env</string> <key>ProgramArguments</key> <array> <string>/bin/launchctl</string> <string>setenv</string> <string>OLLAMA_KEEP_ALIVE</string> <string>-1</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>然后加载:
launchctl load ~/Library/LaunchAgents/com.user.ollama.env.plist要注意,这种方式适合少量环境变量,如果变量太多可以写一个 shell 脚本,在登录时执行。整体思路是:让 Ollama 的环境变量在登录后自动配置好,省得每次手动敲命令。
6. 把本地模型接到前端:Open WebUI、Dify 与局域网共享
6.1 验证 OpenAI 兼容接口
Ollama 启动后默认监听127.0.0.1:11434,并且提供 OpenAI 风格的/v1/chat/completions接口。这意味着很多现成的 AI 应用可以直接把模型地址指向 Ollama,不需要额外开发。先验证接口通不通:
curl http://127.0.0.1:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model":"qwen2.5-14b-chinese","messages":[{"role":"user","content":"你好"}]}'能正常返回 JSON 里的 content 字段,就说明本地模型服务已经可以作为后端被其他应用调用了。
6.2 用 Docker 跑 Open WebUI
很多 Mac 用户需要一个图形化聊天界面,而算力再强也架不住命令行聊天的不直观。Open WebUI 是目前最流行的方案之一,直接用 Docker 跑:
docker run -d -p 3000:8080 \ -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \ -v open-webui:/app/backend/data \ --name open-webui --restart always \ ghcr.io/open-webui/open-webui:main这里最大的坑在于:容器里的环境不能直接用127.0.0.1访问宿主机,因为容器有自己独立的网络空间。Docker Desktop 在 Mac 上提供了一个特殊域名host.docker.internal指向宿主机,所以OLLAMA_BASE_URL必须写成http://host.docker.internal:11434,而不是http://127.0.0.1:11434。我第一次配的时候就栽在这里,界面一直报连不上模型。
启动完成后浏览器访问http://localhost:3000,注册一个管理员账号,就能在界面上看到本地的 Ollama 模型列表了。
6.3 Dify 接入 Ollama 的地址问题和配置流程
Dify 也是很多人想接的平台上位者,毕竟它的工作流编排能力比 Open WebUI 强太多。在 Dify 后台选择“设置 → 模型供应商 → Ollama”,需要填几个关键项:API Endpoint、模型名称、上下文长度、温度参数等。
如果 Dify 也是通过 Docker 方式运行的,那 API Endpoint 同样要用http://host.docker.internal:11434;如果 Dify 是本地源码直接跑的,才可以直接填http://127.0.0.1:11434。模型名称必须和ollama list里的名字完全一致,比如qwen2.5-14b-chinese。填完之后点一下“测试连接”,通常就能看到连通成功。
这里额外提醒一点:Dify 里如果设置了较大的上下文长度,而 Ollama 侧没有对应放开num_ctx,Dify 发过去的长对话可能会被 Ollama 截断。稳妥的做法是两边都设置成同一个值,比如 8192。
6.4 局域网共享:让手机和其他电脑都能访问
Ollama 默认只监听本机回环地址,如果你想让局域网里的手机、平板或者另一台电脑也能访问,需要把监听地址改成0.0.0.0:
launchctl setenv OLLAMA_HOST 0.0.0.0:11434重启 Ollama 后,其他设备就能通过http://你的Mac局域网IP:11434访问模型服务。在 Mac 的“系统设置-网络”里可以看到当前 IP,手机浏览器直接访问 API 地址会看到 Ollama 的版本信息。这个方法在调试 Open WebUI 时也很方便,Docker 容器里如果host.docker.internal不好使,直接填宿主机 IP 也是一种备选方案。
需要留个心眼:让 Ollama 监听局域网等于把模型接口暴露在内网里,任何能连到你内网的设备都能调用,如果公司或公共 Wi-Fi 环境比较乱,尽量不要开这个功能,或者只在受信网络里短暂使用。不要为了省事把端口转发到公网,Ollama 没有内置完善的鉴权,直接暴露公网风险很高。
7. 模型库存盘与日常维护:迁往外置 SSD 和常见故障排除
7.1 模型仓库到底占了多少空间
跑了一段时间之后,你会发现~/.ollama这个目录越来越大。Ollama 的模型文件都存在~/.ollama/models里,结构主要分两大部分:blobs和manifests。blobs里是真正的权重文件,体积巨大;manifests保存的是标签指向关系。先看看占了多少:
du -sh ~/.ollama/models如果你下载过多个未使用的模型,这部分空间很快就能吃掉几十 GB。很多 Mac 用户抱怨“系统数据”占用高,其实有一大半就是这类模型仓库导致的。
7.2 清理和迁移:还给系统盘一个清爽
先清理无用的模型:
ollama list ollama rm 模型名:标签ollama rm会连同对应的标签和 blob 文件一起删除,释放空间。这个操作不能撤销,删之前想清楚。
如果你系统盘确实紧张,但模型又必须保留,那就是时候把模型库迁到外置 SSD 了。关闭 Ollama(菜单栏退出或者执行osascript -e 'quit app "Ollama"'),然后执行:
mv ~/.ollama/models /Volumes/OLLAMA_SSD/models ln -s /Volumes/OLLAMA_SSD/models ~/.ollama/models重新打开 Ollama,执行ollama list,你会发现所有模型都还在,仿佛什么都没变过。原理就是软链接:系统以为模型还在原来的~/.ollama/models,实际文件已经搬到了外置盘。这样系统盘一下子多出几十 GB 空间,模型加载速度取决于外置盘的读写性能,雷电接口的 SSD 基本感觉不到差别。
7.3 常见故障排查顺序和我的维护习惯
迁移之后最容易遇到的假象是:模型列表变空了。大多数情况不是因为迁移失败,而是外置 SSD 没有正常挂载。Ollama 启动时会按软链接找目录,如果外置盘没接上或者还在睡眠唤醒阶段,它可能会在原来的位置新建一个空目录,让你以为模型丢了。排查顺序我建议先执行:
ls /Volumes/ ls -la ~/.ollama/确认外置盘已挂载、软链接指向正确,再把 Ollama 重启。如果 Ollama 抢在挂载完成之前启动,可能需要先退出、等盘挂好、再重新启动。
还有一类问题跟权限有关。偶尔会出现 Ollama 因为~/.ollama目录权限异常而拒绝写缓存,典型表现是模型加载到一半报错。这时候检查一下目录权限:
ls -la ~/.ollama chmod 700 ~/.ollama把所有权和权限摆正,多数权限类问题都能解决。
我现在的基本维护流程是:每个月底用ollama list过一遍模型,不用的立刻ollama rm;常驻的外置 SSD 写上自动挂载脚本,确保开机后模型库不会因为盘没挂好而“消失”;调优参数全部写进 LaunchAgent plist,重启也不怕丢。这套流程跑了大半年,最大的感受是:本地大模型在 Mac 上能不能用得好,七分靠配置,三分靠硬件。只要把内存预算、上下文长度、模型驻留策略这几件事搞明白,16GB 内存的机器也能跑出很舒服的体验。