把一個大型語言模型跑在自己的筆電上,過去要先搞定 CUDA、PyTorch、各種 Python 依賴,光環境就能耗掉一個下午。Ollama 把這整段流程收成一個安裝檔加一行指令:ollama run,模型就在本機跑起來,資料不出機器,也不用付 API 費用。
這篇談 Ollama 的安裝、常用指令、API 整合,以及最容易踩的兩個雷:API 回應解析和模型自訂檔的格式。
Ollama 是什麼
它是一個用 Go 寫的開源工具,把模型下載、權重管理、推論伺服器這幾件事包在一起。核心特點:
- 一個指令下載模型、開始對話,不用手動處理權重檔
- 內建一個跑在
localhost:11434的 HTTP 伺服器,提供 REST API - 同一份指令在 Windows、macOS、Linux 都通用
- 模型庫涵蓋 Llama、Gemma、Qwen、DeepSeek 等主流開源模型
要留意的是它走的是量化模型路線(預設多為 Q4 量化),換來的是更低的記憶體門檻,代價是輸出品質略低於原始全精度權重。對本機實驗、開發測試夠用;要追求極致品質得另尋方案。
安裝
系統需求
- 作業系統:Windows、macOS、Linux 皆可
- 記憶體:跑 7B 模型實測至少要 8GB RAM,13B 建議 16GB,再大就得看顯卡
- 硬碟:一個 7B 量化模型約 4GB,多下載幾個很快就破 10GB,預留空間別手軟
記憶體是真正的瓶頸。8GB 機器跑 7B 模型會吃緊,背景開著瀏覽器和編輯器時更明顯——這點後面排錯會再提。
Windows
到官網下載安裝檔,執行後它會在背景常駐並自動啟動服務。裝完開一個終端機確認:
1 | ollama --version |
macOS
官方主推的方式是到 ollama.com 下載 .dmg,拖進「應用程式」資料夾。這個版本附帶選單列圖示,會自動啟動服務、自動更新,對多數人最省事。
習慣用 Homebrew 管理套件的話也可以:
1 | brew install ollama |
差別在於 Homebrew 裝的是 CLI 與服務本體,沒有選單列 App,而且不會自動開機啟動,得自己 ollama serve 或設定服務。另外有個常見坑:用 .dmg 安裝的 App 不會讀 .zshrc,想設 OLLAMA_HOST 之類的環境變數對它無效;要調設定反而是 Homebrew 版比較直覺。
Linux
官方安裝腳本:
1 | curl -fsSL https://ollama.com/install.sh | sh |
照例,把腳本 pipe 進 shell 前最好先 curl 下來看一眼內容再執行。
基本使用
下載與運行模型
Ollama 把下載和運行合在一起——ollama run 若發現本機沒有該模型,會自動先 pull 再進對話。也可以分開做:
1 | # 先下載 Llama 2(7B 量化版約 3.8GB) |
llama2-uncensored 常被誤會成「精簡版」,其實它和 llama2 一樣是 7B 規模,差別在於移除了內容過濾,輸出更不設限——記憶體需求並不會比較低。真要找小一點的模型,看 gemma:2b 或 qwen2:1.5b 這類明確標小參數量的。
開始對話:
1 | ollama run llama2 |
進到互動模式後直接打字即可,輸入 /bye 離開。
常用管理指令
1 | # 列出已下載的模型 |
這裡要澄清一個網路上流傳的錯誤:Ollama 沒有 export 子指令。完整的子指令只有 serve、create、show、run、stop、pull、push、list、ps、cp、rm 這些,照抄 ollama export 只會得到 unknown command "export"。
想匯出或搬移一個模型(含你自訂過的),正確做法有兩條:
1 | # 方法一:把模型還原成 Modelfile,再在另一台機器用 create 重建 |
進階應用
用 REST API 整合
服務跑起來後,http://localhost:11434/api/generate 就能呼叫。這裡有個會讓很多人卡住的細節:**這個端點預設 stream=true**,回傳的不是一個完整 JSON,而是一串以換行分隔的 NDJSON(多個 JSON 物件逐行送出)。對這種回應直接呼叫 response.json() 會丟 json.JSONDecodeError,程式根本跑不起來。
兩種解法。第一種,明確關掉串流,拿到單一 JSON:
1 | import requests |
第二種,保留串流、逐行解析,做即時輸出的場景用這個:
1 | import json |
寫整合前先想清楚要哪種:一次拿完整結果用 stream=False,要打字機效果就逐行讀。混在一起就是 JSONDecodeError 的來源。
自訂模型行為
Ollama 用一個叫 Modelfile 的設定檔來自訂模型——注意是首字大寫、沒有副檔名的 Modelfile,而且它的語法不是 YAML,是 Ollama 自己一套以指令開頭的格式(每行 INSTRUCTION 參數)。網路上有些教學把它寫成 .yaml 或用 YAML 區塊標註,那是錯的,照著存檔 ollama create 不會按你的預期解析。
一個典型的 Modelfile:
1 | # Modelfile |
存成名為 Modelfile 的檔案後,用 create 建出你的客製模型:
1 | ollama create my-assistant -f Modelfile |
FROM、SYSTEM、PARAMETER 這些指令本身大小寫不敏感,但檔案慣例就叫 Modelfile,跟著慣例走,省得別人接手時找不到。
常見問題
記憶體不足(最常遇到):跑 7B 模型時系統卡住或 Ollama 直接被 OOM kill,通常就是 RAM 不夠。先用 ollama ps 確認沒有多個模型同時佔著記憶體,再考慮換更小的模型(如 gemma:2b)。Windows 上加大虛擬記憶體能救急,但會明顯變慢——這是拿硬碟換記憶體,能跑不代表好用。
模型下載失敗或中斷:多半是網路問題。Ollama 的 pull 支援斷點續傳,重跑同一條 ollama pull 指令通常就接著下載。公司網路擋外連的話,設 HTTPS_PROXY 環境變數走代理。
API 連不上:先確認服務在跑——ollama list 能正常回應就代表服務活著。預設只綁 127.0.0.1,要讓區網其他機器連進來,得設 OLLAMA_HOST=0.0.0.0 再重啟服務。
結語
Ollama 真正解決的是「把開源模型跑起來」這段門檻——下載、量化、推論伺服器全包好,省下的是環境配置的時間。它不會給你雲端 API 等級的輸出品質,量化和本機硬體都是現實限制;但對於想在自己機器上做實驗、跑離線推論、或把 LLM 接進自家小工具的人,這個成本與便利的折衷很划算。
裝好之後最值得先試的,是把那段 stream=False 的 API 範例跑通,再寫一個 Modelfile 客製一個自己的助手——這兩件事走過一遍,後面要怎麼把它接進專案就有底了。





