這一關要打倒什麼?
Boss 是「環境變數迷宮守衛」,招式只有一招:反覆對你說 command not found。它的本體不是魔王,而是路徑(PATH)設定。
類比一下:PATH 像是醫院分機簿。你在電話上說「接放射科」,總機要知道去哪裡找這個分機;找不到,就回你「查無此分機」。Terminal 找不到指令,意思相同。
這一關要完成的事很單純:在你的電腦上,從零開始跑起一個本地模型,並跟它說上話。
版本資訊截至 2026-10:Ollama 穩定版 v0.35.1(2026-09-29,出處 github.com/ollama/ollama/releases);mlx-lm 0.32.0(PyPI,2026-10-01)。作者的實測環境為 M5 32GB、macOS 27.0.1,Ollama 0.35.1(Homebrew)。你的版本可能不同,指令也可能微調,請以官方文件為準。
先講為什麼:跑一個模型需要哪些零件?
一個本地 LLM 要說話,至少要三個零件:
- 權重:模型本身的大檔案(上一關算過大小)。
- 推論引擎(inference engine):把權重讀進記憶體、一個字一個字算出來的程式。
- 介面:聊天視窗、命令列,或是給別的程式呼叫的 API。
工具的差別,就是這三者怎麼打包。
工具介紹
Ollama
- 授權 MIT;macOS 版需要 macOS 14 以上(官方 macOS 文件)。
- 有小 App,也有 CLI(命令列)。
- 引擎部分:根據 release note,在 Apple Silicon 上,MLX runtime 支援的模型架構(清單含 gemma4、qwen3.5 等)會自動走 MLX,其他走 llama.cpp。所以舊說法「Ollama 底層 = llama.cpp」不再完整,要說「視模型而定」。
- 預設提供與 OpenAI 相容格式的本機 API,這點在 LV08 會用到。
LM Studio
- 桌面 App,GUI 最友善:搜尋、下載、聊天、啟動本機 server 都在同一個畫面。
- 同時有 MLX 與 llama.cpp 兩種引擎。
- 它是免費使用的專有軟體(不是開源),
lms命令列工具則是 MIT。 - 2026 年起官方品牌上同時有 Bionic 與 LM Studio,下載入口請務必確認是你要的那一個(作者的研究筆記標為「需確認」)。
mlx-lm
- Apple 的 MLX 生態系的命令列/Python 工具,只能在 Apple Silicon 使用。
- 主要指令:
mlx_lm.chat(互動聊天)、mlx_lm.generate(單次生成)、mlx_lm.server(本機 API)。後面訓練(LV13)也靠它。
不建議主推的
- GPT4All:依 GitHub 日期,最近一次發行是 2025-02、repo 約 16 個月沒有更新,實質停滯。
- Open WebUI:功能齊全,但授權是自訂版本,含品牌保護條款,不能寫成 MIT 或 Apache。只是自己用沒問題,教學上不當主線。
實作
🍎 Mac 路線 A:LM Studio(最不需要打指令)
- 到 LM Studio 官網下載並安裝(請確認下載頁是 LM Studio 本體)。
- 開啟後,在搜尋欄找 Gemma 4 E4B 或 Qwen3.5-4B 的 4-bit 版本,下載。16 GB Mac 建議從這個等級開始。
- 載入模型,在聊天框輸入:「用三句話向國中生說明什麼是血壓。」
- 觀察回覆速度(tok/s)與記憶體壓力。
- 開啟 Developer 頁籤的本機 server,記下它顯示的網址與連接埠。
🍎 Mac 路線 B:Ollama + curl
先安裝(以 Homebrew 為例;也可以下載官方 App):
brew install ollama
ollama --version
逐行解釋:
brew install ollama:用 Homebrew 套件管理器安裝 Ollama。ollama --version:確認安裝成功並顯示版本;若出現command not found,重開一個新的 Terminal 視窗再試。
接著下載並開始對話:
ollama run gemma4:e2b
ollama run:如果模型還沒下載就先下載,再進入互動聊天。gemma4:e2b:模型名稱與標籤。這個名稱只是示範格式,請到 Ollama 官方模型庫確認目前實際的標籤。- 離開聊天輸入
/bye。
作者的實測:Gemma 4 E2B 預設會輸出一段英文的思考過程(thinking),這在下一關會影響結果,先有印象即可。
再用 API 呼叫。先在另一個 Terminal 視窗確認服務有開,然後:
curl http://localhost:11434/api/generate -d '{
"model": "gemma4:e2b",
"prompt": "用一句話說明什麼是高血壓。",
"stream": false
}'
逐行解釋:
curl:命令列版的網路請求工具。http://localhost:11434:localhost代表你自己的電腦,11434是 Ollama 預設連接埠。請求沒有送出你的電腦。-d '{...}':要送出的資料,是 JSON 格式。"model":要用哪個模型,要和你下載的名稱一致。"prompt":你的問題。"stream": false:一次回傳完整答案,而不是一個字一個字送。
🍎 Mac 路線 C(進階):mlx-lm
python3 -m venv ~/llm-env
source ~/llm-env/bin/activate
pip install mlx-lm
mlx_lm.generate --model <你要用的 MLX 模型> --prompt "Hello" --max-tokens 50
- 第 1–2 行:建立並啟用虛擬環境(venv),把套件裝在獨立的資料夾,不會弄亂系統的 Python。
pip install mlx-lm:安裝套件。--model:填入 Hugging Face 上的 MLX 模型名稱(例如 mlx-community 底下的版本)或本機資料夾。這裡刻意不寫死,因為名稱常變。--max-tokens 50:限制最多產生 50 個 token,先確認流程通了。
☁️ Colab:Unsloth 載入同一模型並 generate
在新的 notebook 先切換到 GPU runtime(通常分到 T4,但官方不保證),然後依本站 Colab notebook(改寫自 Unsloth 官方 Gemma 4 notebook)的寫法:
from unsloth import FastModel
model, tokenizer = FastModel.from_pretrained(
model_name="unsloth/gemma-4-E2B-it",
max_seq_length=2048,
load_in_4bit=False, # T4 出現 CUDA out of memory 時改成 True
)
msgs = [{"role": "user", "content": "用一句話說明什麼是高血壓。"}]
inputs = tokenizer.apply_chat_template(
msgs, add_generation_prompt=True, return_tensors="pt",
tokenize=True, return_dict=True, enable_thinking=False,
).to("cuda")
out = model.generate(**inputs, max_new_tokens=60)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
逐行解釋:
FastModel.from_pretrained:載入模型與分詞器(tokenizer)。Gemma 4 是多模態模型,Unsloth 用FastModel載入;unsloth/gemma-4-E2B-it和 Mac 上gemma4:e2b是同一個基底模型。max_seq_length:最長可處理的 token 數。load_in_4bit=False:本站 notebook 的預設;若 T4 記憶體不足,改成True用 4-bit 量化載入。apply_chat_template:把問題包成 Gemma 4 的對話格式;enable_thinking=False關閉思考模式(理由見下一關)。.to("cuda"):把輸入送到 GPU。generate與decode:產生新 token,再只把新產生的部分轉回文字。
Unsloth 的 API 會更新,若執行出錯,請以官方 notebook 為準(見 unsloth.ai/docs)。
限制提醒:Colab 的運算在 Google 的伺服器上。這一章你輸入的是無害的衛教問題,沒有問題;但本站從 LV08 開始,處理病歷類文字一律使用合成資料。真實病歷即使在本機執行,也需要院方核准與倫理審查(IRB);本地不等於合法。
該選哪個工具?
三個問題幫你決定:
- 你想不想碰 Terminal? 不想:LM Studio。願意嘗試:Ollama。
- 你之後要不要自己訓練? 要:一定會用到 mlx-lm(Mac)或 Unsloth(Colab),建議至少試過一次命令列。
- 你要不要用程式呼叫模型? 要:Ollama 與 LM Studio 都有本機 API,用法相近,選順手的即可。
作者的建議是兩個都裝:LM Studio 用來快速試模型、看速度;Ollama 用來寫程式與後面的匯入。裝兩個不衝突,只是要留意各自會存一份模型,硬碟空間會被吃掉(單一模型常見數 GB 起跳)。
常見故障排除
command not found:重開 Terminal;確認安裝;必要時檢查 PATH。- 記憶體壓力變紅:換小一級的模型或量化,並關掉瀏覽器分頁。
- Ollama 與其他程序同時吃記憶體:作者曾在 32 GB Mac 上遇過 26B 模型加上另一個程序導致 Metal 記憶體不足(OOM),單獨跑才正常。
- 自己匯入的模型看不到:若 server 設了自訂的
OLLAMA_MODELS路徑,client 端ollama create寫入的位置可能不同。
本關重點
- 本地模型 = 權重 + 推論引擎 + 介面;各工具只是打包方式不同。
- Ollama 在 Apple Silicon 視模型架構自動走 MLX 或 llama.cpp(截至 2026-10);LM Studio 有雙引擎與 GUI;mlx-lm 是命令列與 Python 工具。
- 呼叫本機 API 的資料送到 localhost,沒有離開你的電腦;但下載模型要連網。
- Colab 的運算在 Google 伺服器,真實病歷不適合放;本站一律用合成資料,本地也不等於合法。
- 看到
command not found先想安裝與 PATH,不要先怪模型。