本地部署 LLM:Ollama + Open WebUI 實戰

在自己的電腦運行 Llama、Mistral 等開源模型,兼顧隱私與成本,附效能優化技巧。

AI Academy 編輯部2025年11月19日

本地部署 LLM:Ollama + Open WebUI 實戰

為什麼要本地部署?

考量雲端 API本地部署
隱私資料上傳到第三方資料不離開電腦
成本按 Token 計費一次性硬體成本
延遲網路延遲極低延遲
離線需要網路可離線使用
客製有限可微調模型

Ollama 簡介

Ollama 是一個讓你輕鬆在本地運行 LLM 的工具,支援 macOS、Linux、Windows。

特點

  • 一行指令安裝模型
  • 自動管理模型檔案
  • 相容 OpenAI API 格式
  • 支援 GPU 加速

快速開始

1. 安裝 Ollama

macOS / Linux:

curl -fsSL https://ollama.com/install.sh | sh

macOS(Homebrew):

brew install ollama

Windows:ollama.com 下載安裝檔。

2. 下載並運行模型

# 下載並運行 Llama 3.2(3B 參數)
ollama run llama3.2

# 下載並運行 Mistral(7B 參數)
ollama run mistral

# 下載並運行程式碼專用模型
ollama run codellama

第一次運行會自動下載模型,之後直接啟動。

3. 開始對話

>>> 你好,請用繁體中文回答

你好!我是一個 AI 助手,很高興為你服務。有什麼我可以幫助你的嗎?

>>> 解釋什麼是機器學習

機器學習是人工智慧的一個分支,它讓電腦能夠從數據中學習...

輸入 /bye 離開對話。

常用指令

# 列出已安裝的模型
ollama list

# 下載模型(不啟動)
ollama pull llama3.2

# 刪除模型
ollama rm llama3.2

# 查看模型資訊
ollama show llama3.2

# 啟動 API 服務
ollama serve

推薦模型

依用途選擇

用途推薦模型大小最低記憶體
一般對話llama3.22GB8GB RAM
程式開發codellama4GB8GB RAM
中文優化qwen2.54.4GB8GB RAM
高品質llama3.1:8b4.7GB16GB RAM
極速回應phi3:mini2.2GB4GB RAM

依硬體選擇

4GB RAM  → phi3:mini, tinyllama
8GB RAM  → llama3.2, mistral, codellama:7b
16GB RAM → llama3.1:8b, mixtral
32GB+ RAM → llama3.1:70b(需要強力 GPU)

透過 API 使用

Ollama 提供與 OpenAI 相容的 API。

啟動服務

# Ollama 安裝後會自動在背景運行
# 預設在 http://localhost:11434

Python 呼叫

import requests

def chat(message):
    response = requests.post(
        "http://localhost:11434/api/chat",
        json={
            "model": "llama3.2",
            "messages": [{"role": "user", "content": message}],
            "stream": False
        }
    )
    return response.json()["message"]["content"]

print(chat("解釋 Python 的 list comprehension"))

使用 OpenAI SDK

from openai import OpenAI

# 指向本地 Ollama
client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama"  # 任意值即可
)

response = client.chat.completions.create(
    model="llama3.2",
    messages=[{"role": "user", "content": "Hello!"}]
)

print(response.choices[0].message.content)

使用 LangChain

from langchain_community.llms import Ollama
from langchain_core.prompts import ChatPromptTemplate

# 建立 LLM
llm = Ollama(model="llama3.2")

# 建立 Chain
prompt = ChatPromptTemplate.from_template("用一句話解釋:{topic}")
chain = prompt | llm

# 執行
result = chain.invoke({"topic": "量子計算"})
print(result)

安裝 Open WebUI

Open WebUI 提供類似 ChatGPT 的網頁介面。

Docker 安裝(推薦)

docker run -d -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui \
  ghcr.io/open-webui/open-webui:main

存取介面

打開瀏覽器訪問 http://localhost:3000,建立帳號後即可使用。

功能亮點

  • 多模型切換
  • 對話歷史記錄
  • Markdown 渲染
  • 程式碼高亮
  • 多人協作

效能優化

1. 使用 GPU 加速

確認 GPU 支援:

# macOS(M1/M2/M3 自動支援 Metal)
# 無需額外設定

# Linux(NVIDIA GPU)
nvidia-smi  # 確認驅動安裝

# 查看 Ollama GPU 狀態
ollama ps

2. 調整上下文長度

# 預設 2048,可增加到 4096 或更高
ollama run llama3.2 --num-ctx 4096

3. 選擇量化版本

# Q4 量化(較小,較快)
ollama run llama3.2:q4_0

# Q8 量化(較大,品質較好)
ollama run llama3.2:q8_0

4. 系統資源分配

# 設定最大記憶體使用
export OLLAMA_MAX_LOADED_MODELS=1  # 同時載入的模型數
export OLLAMA_NUM_PARALLEL=2       # 平行請求數

建立自訂模型

Modelfile 範例

# Modelfile
FROM llama3.2

# 設定系統提示
SYSTEM """
你是 AI Academy 的助教,專門協助學員學習 AI 和程式開發。
請使用繁體中文回答,保持友善專業的態度。
"""

# 調整參數
PARAMETER temperature 0.7
PARAMETER num_ctx 4096

建立並使用

# 建立自訂模型
ollama create my-assistant -f Modelfile

# 使用自訂模型
ollama run my-assistant

常見問題

Q: 模型下載很慢?

使用鏡像或設定代理:

export OLLAMA_HOST=0.0.0.0
export https_proxy=http://your-proxy:port

Q: 記憶體不足?

  1. 選擇更小的模型(如 phi3:mini)
  2. 使用更高量化的版本(Q4)
  3. 減少上下文長度

Q: 中文回答品質不好?

嘗試專門優化中文的模型:

ollama run qwen2.5
# 或
ollama run yi

Q: 如何讓區網其他電腦存取?

# 設定監聽所有介面
export OLLAMA_HOST=0.0.0.0
ollama serve

其他電腦使用 http://your-ip:11434 連接。

與雲端服務比較

使用場景建議

場景建議
開發測試本地 Ollama
隱私敏感資料本地 Ollama
生產環境雲端 API
高品質需求雲端 GPT-4 / Claude
控制成本本地 Ollama

效能對比(參考)

指標本地 Llama 3.2GPT-4o-mini
延遲~50ms~500ms
品質良好優秀
成本免費$0.15/1M tokens
中文普通優秀

總結

本地部署 LLM 的優勢:

  1. 隱私保護:資料不離開電腦
  2. 零 API 成本:無使用量限制
  3. 低延遲:即時回應
  4. 離線可用:不需網路

下一步行動

  1. 安裝 Ollama 並試用 llama3.2
  2. 安裝 Open WebUI 獲得更好體驗
  3. 嘗試不同模型找到適合的
  4. 建立自訂 Modelfile

相關文章

參考資源