Table of Contents

开篇

从 2019 年的 MacBook Pro (Intel 8GB) 迁移到 MacBook M5 Pro (48GB) 后,想在本地跑个大模型。这篇文章记录了从下载 Ollama、部署 Qwen3.6-27B-Q4_K_M 到接入 Cherry Studio 的完整过程,以及一路踩过的所有坑和解决方案。

适用环境:Apple Silicon(M 系列芯片)Mac,尤其是从 Intel Mac 迁移而来的系统。

一、前置准备

1. 确认 Python / pip 可用

从 Intel Mac 迁移过来后,/usr/local/bin/ 里常残留指向 Python 2.7 的旧 pip,已无法使用:

-bash: /usr/local/bin/pip: bad interpreter: No such file or directory

解决办法:以后一律使用 pip3(对应 Homebrew 的 Python 3)。可清理掉残留的旧文件:

rm /usr/local/bin/pip /usr/local/bin/pip2 /usr/local/bin/pip2.7 \
   /usr/local/bin/pip3.8 /usr/local/bin/pip3.10

如习惯打 pip,在 ~/.zshrc 里加一行别名:

alias pip=pip3

2. Python 3.12+ 安装包的注意事项

新版 Python 默认禁止直接 pip install 到系统环境,会报:

error: externally-managed-environment

推荐用 pipx 来安装命令行工具(自动管理虚拟环境):

brew install pipx
pipx ensurepath

二、下载模型(解决官方源慢的问题)

问题:Ollama 官方源极慢

直接 ollama run qwen3.6:27b-q4_K_M 时,从海外源拉取,速度可能只有几百 KB/s,17GB 要下 8 小时。

推荐方案:从 ModelScope(国内源)下载 GGUF 再手动导入

第 1 步:停掉当前下载

Ctrl + C

第 2 步:关闭 VPN / 代理

下载国内源时走直连更快(代理出口在海外反而拖慢)。

第 3 步:安装 ModelScope CLI

pipx install modelscope

第 4 步:下载 GGUF 文件

注意仓库名和文件名的大小写、点号要完全对应。Qwen3.6 的 GGUF 仓库是 unsloth/Qwen3.6-27B-GGUF

ModelScope 仓库地址:https://modelscope.cn/models/unsloth/Qwen3.6-27B-GGUF

modelscope download unsloth/Qwen3.6-27B-GGUF Qwen3.6-27B-Q4_K_M.gguf --local_dir ./

 _   .-')                _ .-') _     ('-.             .-')                              _ (`-.    ('-.
( '.( OO )_             ( (  OO) )  _(  OO)           ( OO ).                           ( (OO  ) _(  OO)
 ,--.   ,--.).-'),-----. \     .'_ (,------.,--.     (_)---\_)   .-----.  .-'),-----.  _.`     \(,------.
 |   `.'   |( OO'  .-.  ',`'--..._) |  .---'|  |.-') /    _ |   '  .--./ ( OO'  .-.  '(__...--'' |  .---'
 |         |/   |  | |  ||  |  \  ' |  |    |  | OO )\  :` `.   |  |('-. /   |  | |  | |  /  | | |  |
 |  |'.'|  |\_) |  |\|  ||  |   ' |(|  '--. |  |`-' | '..`''.) /_) |OO  )\_) |  |\|  | |  |_.' |(|  '--.
 |  |   |  |  \ |  | |  ||  |   / : |  .--'(|  '---.'.-._)   \ ||  |`-'|   \ |  | |  | |  .___.' |  .--'
 |  |   |  |   `'  '-'  '|  '--'  / |  `---.|      | \       /(_'  '--'\    `'  '-'  ' |  |      |  `---.
 `--'   `--'     `-----' `-------'  `------'`------'  `-----'    `-----'      `-----'  `--'      `------'

Downloading [Qwen3.6-27B-Q4_K_M.gguf]: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████| 15.7G/15.7G [06:36<00:00, 42.4MB/s]

Successfully Downloaded from model unsloth/Qwen3.6-27B-GGUF.
  • --local_dir ./:下载到当前目录,方便后续导入(不加则下到缓存目录 ~/.cache/modelscope/hub/)。

Q4 量化可选项对比:

文件名 大小 说明
Qwen3.6-27B-Q4_K_M.gguf 15.66 GB 最常用,质量/大小平衡最好
Qwen3.6-27B-Q4_K_S.gguf 14.77 GB 略小,质量稍低
Qwen3.6-27B-UD-Q4_K_XL.gguf 16.40 GB Unsloth dynamic 量化,质量更好
Qwen3.6-27B-IQ4_XS.gguf 14.38 GB 体积最小的 4bit

备选方案:HuggingFace 镜像站

如果 ModelScope 没有需要的量化版本,用 hf-mirror.com

export HF_ENDPOINT=https://hf-mirror.com
pipx install huggingface_hub
huggingface-cli download unsloth/Qwen3.6-27B-GGUF Qwen3.6-27B-Q4_K_M.gguf --local-dir ./

想先快速验证流程?

先跑个小模型(约 5GB):

ollama run qwen3:8b

三、导入模型到 Ollama

下载完成后,用 Modelfile 把 GGUF 导入 Ollama:

# 创建 Modelfile(FROM 后面是你实际下载的 .gguf 路径)
echo 'FROM ./Qwen3.6-27B-Q4_K_M.gguf' > Modelfile

# 创建模型
ollama create qwen3.6:27b-q4_K_M -f Modelfile

# 运行
ollama run qwen3.6:27b-q4_K_M
ollama run qwen3.6:27b-q4_K_M
>>> 你好 你是什么大模型?
Thinking...
Thinking Process:

1.  **Analyze the user's input**: The user asks "你好 你是什么大模型?" (Hello, what large model are you?). This is a direct question about my identity and origin.
2.  **Determine the response strategy**:
    *   Identity: I am Qwen (通义千问), developed by Alibaba Group's Tongyi Lab. I will introduce myself as such.
3.  **Draft the response (Internal Monologue/Draft)**:
    *   Hello! I am Qwen, a large language model independently developed by Alibaba Group's Tongyi Lab. How can I help you today?
4.  **Final Polish**: Keep it warm, polite, and concise.
    "你好!我是通义千问(Qwen),由阿里巴巴集团旗下通义实验室自主研发的大语言模型。有什么我可以帮你的吗?" (Hello! I am Tongyi Qianwen (Qwen), a large language model independently
developed by Alibaba Group's Tongyi Lab. How can I help you?)
5.  **Check constraints**: The user asked in Chinese, so I must reply in Chinese. I answered the core question directly. No version numbers were mentioned.

Let's output the response.
*(Self-Correction during drafting)*: Ensure exact alignment with "Qwen / 通义千问". Use natural language and a helpful tone.
Draft: "你好!我是 Qwen(通义千问),由阿里巴巴集团旗下通义实验室自主研发的大语言模型。请问有什么我可以帮你的吗?" -> Perfect.
Proceed to output.
*Wait*, the prompt says I am Qwen, developed by Alibaba. I will just say that simply and warmly.
"你好!我是通义千问(Qwen),是由阿里巴巴集团旗下通义实验室自主研发的大语言模型。请问今天有什么我可以帮你的吗?" (Hello! I am Tongyi Qianwen (Qwen), a large language model
independently developed by Alibaba Group's Tongyi Lab. Is there anything I can help you with today?)
This is accurate and friendly. Done.
Output matches the response.
...done thinking.

你好!我是通义千问(Qwen),是由阿里巴巴集团旗下通义实验室自主研发的大语言模型。请问今天有什么我可以帮你的吗?

四、启动与对话

启动后即可在终端直接对话。常用命令:

ollama list              # 查看已安装的模型
ollama ps                # 查看正在运行/已加载的模型
ollama run <模型名>       # 启动对话
ollama rm <模型名>        # 删除模型
ollama list
NAME                  ID              SIZE     MODIFIED
qwen3.6:27b-q4_K_M    7ea81a10e901    16 GB    16 hours ago

ollama ps
NAME                  ID              SIZE     PROCESSOR    CONTEXT    UNTIL
qwen3.6:27b-q4_K_M    7ea81a10e901    17 GB    100% GPU     32768      4 minutes from now

brew services stop ollama
Stopping `ollama`... (might take a while)

五、API 调用

Ollama 默认不需要 API 密钥。 它在本地启动 HTTP 服务,监听 http://localhost:11434,本机直接调用即可,无鉴权。

1. 原生 API(curl)

curl http://localhost:11434/api/chat -d '{
  "model": "qwen3.6:27b-q4_K_M",
  "messages": [{"role": "user", "content": "你好"}],
  "stream": false
}'

2. OpenAI 兼容接口(Python)

Ollama 同时提供 OpenAI 兼容接口 http://localhost:11434/v1。此时 api_key任意非空字符串即可(库要求非空,但不校验):

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama",   # 任意字符串,不校验
)

resp = client.chat.completions.create(
    model="qwen3.6:27b-q4_K_M",
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)

3. 各种”密钥相关”场景

场景 需要做什么
本机自己用 不需要任何密钥,直接调用
OpenAI SDK 调用 api_key 填任意字符串(库要求非空)
暴露到局域网/外网 Ollama 无内置鉴权,需前置 Nginx/Caddy 做 API key 校验
跨机器访问 export OLLAMA_HOST=0.0.0.0:11434 再重启 ollama serve

安全提示:把 OLLAMA_HOST 改成 0.0.0.0 后,任何能连到你 11434 端口的人都能用你的模型(无鉴权)。请用防火墙限制来源 IP,或前置反向代理做校验。

六、在 Cherry Studio 中接入

在 Cherry Studio 添加一个 OpenAI 兼容的自定义服务商:

字段 填写内容
API 密钥 随便填一个,如 ollama(留空有时会报错,填非空字符串最稳)
API 地址 http://localhost:11434/v1
模型 点「获取模型列表」自动拉取,或点「+」手动添加 qwen3.6:27b-q4_K_M

填好后:

  1. 确保 Ollama 服务在运行(ollama ps 能看到模型)。
  2. 点「检测」测试连通性。
  3. 在「模型」处点「获取模型列表」或手动「+」添加模型名(必须与 ollama list 里显示的完全一致)。

七、这个本地模型能做什么

Qwen3.6-27B-Q4_K_M 是阿里通义千问的 27B(270 亿参数)中量级模型,Q4_K_M 是 4bit 量化版(约 15.6GB),属于「通用对话 + 推理」型模型。在 M5 Pro 48GB 上能流畅本地运行,完全离线、不联网、不花钱、数据不出本机

擅长的事

场景 具体能做什么
日常问答 / 写作 写文章、改稿、起标题、写邮件、润色、扩写缩写、风格改写
翻译 中英互译及多语种翻译,长文翻译质量不错
代码 写函数、解释代码、debug、写正则、补全、简单重构、写 SQL/shell
总结提炼 长文/会议纪要/文档总结、提取要点、做表格
推理思考 数学题、逻辑推理、分步分析(思维链能力不错)
信息处理 分类、打标签、抽取结构化信息(如从文本提取 JSON)
角色扮演 / 头脑风暴 模拟对话、创意发散、起方案

本地跑的核心价值(相比云端)

  1. 隐私:内部资料、合同、代码、个人笔记,数据完全不上传。
  2. 免费无限用:不计 token、不限次数。
  3. 离线可用:没网照样用。
  4. 可接入工具:配合 Cherry Studio / Open WebUI,能搭知识库(RAG)、做翻译插件、接入自动化脚本。

能力边界(合理预期)

  • 复杂推理、长代码、精细写作上不如 GPT-5、Claude Opus 等云端旗舰。
  • 知识有截止时间,不知道最新发生的事(除非接联网/RAG)。
  • 纯文本模型,不能直接联网、看图、生成图。
  • 长上下文处理不如云端模型稳。

一句话:它是一个装在你电脑里的、免费且私密的 ChatGPT 平替,日常 80% 的写作、翻译、编程、总结需求都能做。但是稍微跑一些复杂的任务,GPU的使用率就会达到100%,笔记本发热明显。

八、查看 GPU 使用率(Apple Silicon)

Apple Silicon 的 GPU 占用,活动监视器默认看不到好用的数据。从简单到专业有几种办法:

方法一:活动监视器(最简单)

打开活动监视器 → 菜单栏「窗口」→「GPU 历史记录」(或按 ⌘ + 4),弹出实时曲线。只有一条总曲线,临时看一眼够用。

图1: GPU历史记录 图1: GPU历史记录

方法二:powermetrics(系统自带,最准)

sudo powermetrics --samplers gpu_power -i 1000
  • -i 1000:每 1 秒刷新一次。
  • 关注:GPU HW active residency(活跃占比 ≈ 使用率)、GPU Power(功耗)。
  • Ctrl + C 退出。

方法三:macmon(推荐,免 sudo,界面现代)

brew install macmon
macmon

实时显示 GPU 使用率、显存、功耗、温度,适合常驻观察。

方法四:asitop(终端图形面板)

pipx install asitop
sudo asitop

一个终端里同时看 CPU / GPU / 显存 / 功耗 / 温度(底层调 powermetrics,需 sudo)。

实测技巧:开一个终端跑 macmon,另一个终端跑 ollama run qwen3.6:27b-q4_K_M 问个问题,GPU 使用率会瞬间冲到 80%~100%,说明模型确实在用 GPU 推理。

需求 用哪个
临时瞄一眼 活动监视器 ⌘+4
看 Ollama 跑模型时 GPU 吃多少(精确) sudo powermetrics --samplers gpu_power
好看的常驻面板 macmon(免 sudo)或 asitop

九、常见问题排查

现象 原因 / 解决
下载速度极慢(几百 KB/s) 用 ModelScope 国内源 + 关代理;见第二节
Repo ... not exists 仓库名/文件名写错(注意 Qwen3.6 带点、unsloth/ 前缀、大小写)
externally-managed-environment pipx 安装,不要直接 pip install 到系统
pip: bad interpreter 旧 Python2.7 残留,改用 pip3
Cherry Studio 检测失败 确认 Ollama 在运行、地址带 /v1、模型名与 ollama list 一致
Cherry Studio获取模型列表为空 手动点「+」输入模型名;确认 ollama list 有该模型

延伸阅读

  1. unsloth/Qwen3.6-27B-GGUF