Ollama 本地部署

在選擇本地部署 LLM 框架之前,我們先來認識幾個主要的選項。每個框架都有其獨特的優勢和特點,適合不同的使用場景。

Ollama 本地部署教學封面

一、本地部署框架簡介

LM Studio

特色

  • 圖形化界面:提供友善的 GUI,不需要接觸命令列
  • 模型管理:內建模型下載和管理功能
  • 快速啟動:開箱即用,適合入門使用者
  • API 支持:提供 API 端點進行程式整合

適用場景

  • 初學者想要快速體驗 LLM
  • 需要 GUI 介面操作的用戶
  • 簡單的對話和文本生成任務

缺點

  • 功能相對簡單,客製化選項較少
  • 社群支援不如其他框架活躍
  • 模型選擇相對有限

GPT4All

特色

  • 高度優化:專門針對 CPU 優化,在低端設備上表現良好
  • 輕量級:體積小,安裝和運行消耗資源少
  • 跨平台:支援 Windows、macOS、Linux
  • 內建聊天介面:開箱即有對話功能

適用場景

  • CPU 型設備(無 GPU)的用戶
  • 資源受限的環境(筆記本、邊緣設備)
  • 快速原型開發和測試

缺點

  • 模型性能受限於 CPU 推理速度
  • API 支援不如 Ollama 完整
  • 高級功能配置較少

Text Generation Web UI

特色

  • 功能豐富:提供最多的自定義選項和高級功能
  • 靈活配置:支援各種量化方式和推理參數調整
  • 詳細監控:提供性能監控和 Token 統計
  • 擴展性強:支援多種插件和擴展功能

適用場景

  • 需要精細控制推理參數的進階用戶
  • 進行模型評估和性能測試
  • 複雜的文本生成任務
  • 研究和開發環境

缺點

  • 學習曲線陡峭,配置複雜
  • 系統要求相對較高
  • 部署和維護需要更多技術知識

LocalAI

特色

  • 模型格式支援廣:支援多種模型格式(GGUF、PyTorch 等)
  • 多功能:不只支援文本,還支援圖像、音頻等
  • REST API 完整:提供與 OpenAI 相容的 API
  • 容器化部署:提供 Docker 支援,易於部署

適用場景

  • 需要多模態功能的應用
  • 使用容器化部署的環境
  • 需要 OpenAI API 相容性的系統遷移
  • 企業級部署

缺點

  • 文件相對不完整
  • 社群規模較小
  • 某些功能仍在開發中

框架對比表

特性 LM Studio GPT4All Text Gen UI LocalAI
易用性 5/5 4/5 2/5 3/5
功能完整性 3/5 3/5 5/5 4/5
CPU 效率 3/5 5/5 3/5 3/5
GPU 支援 4/5 2/5 5/5 4/5
API 完整性 3/5 2/5 4/5 5/5
社群活躍度 3/5 4/5 5/5 3/5

選擇建議

我建議選擇 Ollama 的原因:

  1. 平衡性最佳:易用性和功能的完美結合
  2. 性能優秀:CPU 和 GPU 支援都很好
  3. API 設計清晰:便於開發者整合
  4. 文件完善:官方文件和社群資源豐富
  5. 更新活躍:持續維護和改進
  6. 輕量高效:啟動快、佔用資源少
  7. 模型支援廣:相容大多數流行模型

在本課程中,我們將重點學習如何使用 Ollama 進行本地 LLM 部署和應用開發。

二、為什麼選擇 Ollama?

Ollama 是一個專門設計用來在本地運行大型語言模型的工具。它將複雜的技術細節隱藏起來,讓使用者可以輕鬆地部署和使用各種開源模型。

Ollama 的系統架構

Ollama 採用簡潔的模組化設計。其核心包括:

(1)服務層(Server)

負責模型載入、推理引擎、內存管理和 API 服務。啟動 Ollama 時,它會自動在後台運行一個服務進程。

(2)命令列介面(CLI)

提供與服務層互動的命令列工具,例如 ollama runollama pull 等。

(3)REST API

為應用程式開發者提供統一的 API 介面,支援文本生成、圖片分析、嵌入等功能。

(4)模型管理

自動處理模型檔案下載、快取管理、版本控制等。

這個簡潔的架構使得 Ollama 相比其他框架更易於部署和維護。

透過 Modelfile 自定義模型

Modelfile 是一個用來定義和自定義 LLM 模型的配置文件,類似於 Docker 的 Dockerfile。透過 Modelfile,用戶可以:

  1. 指定基礎模型:選擇一個已有的模型作為起點。
  2. 設定系統提示詞:定義模型的行為和性格。
  3. 調整超參數:控制溫度、Top-P、重複懲罰等生成參數。
  4. 添加自訂參數:根據特定場景調整模型表現。

例如,可以創建一個專門用於程式碼生成的版本,或者針對特定領域(如法律、醫療)優化的版本。

擁有 REST API 的強大整合能力

Ollama 提供標準的 REST API,使其可以輕鬆與任何應用程式整合:

  1. 標準化介面:API 設計遵循行業標準,類似於 OpenAI API 的結構。
  2. 多語言支援:支援 Python、JavaScript、Go、Java 等主流編程語言。
  3. 完整功能:支援單回合對話、多輪對話、流式傳輸、嵌入等。
  4. 跨應用整合:可用於網頁應用、桌面應用、行動應用等。

三、從零開始安裝 Ollama

安裝 Ollama 是使用本工具的第一步。幸運的是,安裝過程非常簡單。

安裝 Ollama

  1. 訪問官方網站:前往官方網站下載適合您作業系統的安裝程式。
  2. 可用版本:支援 Windows、macOS(包括 M1/M2/M3 晶片)、Linux。
  3. 執行安裝程式:按照提示完成安裝過程。在大多數情況下,只需要點擊「下一步」即可。
  4. 驗證安裝:安裝完成後,打開命令列並輸入 ollama --version,應該會看到版本號。
  5. 自動啟動:在 Windows 和 macOS 上,Ollama 會在安裝後自動作為服務啟動。

關閉 Ollama

  1. Windows:在工作列系統匣中找到 Ollama 圖示,右鍵選擇「退出」。或透過服務管理員停止服務。
  2. macOS:在選單列中點擊 Ollama 圖示,選擇「Quit Ollama」。
  3. Linux:使用命令 systemctl stop ollama 停止服務(如果已安裝為服務)。
  4. 驗證停止:檢查命令列是否回應任何 Ollama 命令。

更新 Ollama

  1. 檢查新版本:訪問官方網站或使用 ollama --version 查看當前版本。
  2. 自動更新:某些版本的 Ollama 會自動檢查更新。
  3. 手動更新:下載最新的安裝程式,再次執行安裝會自動覆蓋舊版本。
  4. 更新不會影響已下載的模型:您之前下載的所有模型將保持不變。

四、Ollama 的對話介面

安裝 Ollama 後,您可以立即開始與 AI 模型進行對話。

下載第一個模型並開始交談

  1. 選擇模型:Ollama 官方模型庫中有許多選擇。對於初學者,推薦從較小的模型開始,例如 Mistral 或 Neural Chat。
  2. 下載模型:在命令列中輸入 ollama pull mistral,Ollama 會自動下載模型。首次下載可能需要幾分鐘到幾十分鐘,取決於網速和模型大小。
  3. 啟動對話:下載完成後,輸入 ollama run mistral 開啟互動式對話。
  4. 與模型對話:在命令列提示符下輸入任何問題或指令,模型會生成回應。
  5. 退出對話:輸入 /exitCtrl+C 退出對話介面。
  6. 後台運行:Ollama 會在後台持續運行服務。您可以關閉對話而服務仍在運行。

介面說明

以上命令列介面包含以下主要元素:

1

模型選擇與顯示

顯示當前正在運行的模型名稱(例如 mistral)。

2

使用者輸入區域

命令列提示符(通常為 >),供使用者輸入問題或指令。

3

模型回應區域

模型生成的回應內容會在此展示,包括完整的文本輸出。

4

動態資訊顯示

底部狀態欄顯示模型推理時的進度、Token 計數、處理速度(例如 tokens/s)等即時資訊。

下載模型

上圖展示了使用 ollama pull 命令下載模型時的進度畫面:

  1. 下載進度視覺化:進度條或百分比顯示表示模型檔案的下載進度。大多數模型下載涉及多個檔案部分。
  2. 檔案分層下載:Ollama 會逐層下載模型的各個部分(layer by layer),每個部分的進度會單獨顯示。例如,一個 7B 模型可能分為多個 GB 大小的檔案。
  3. 下載統計資訊:顯示已下載的資料量、總資料量、下載速度(MB/s)、預計剩餘時間等資訊。
  4. 模型驗證:下載完成後,系統會驗證檔案完整性和正確性,確保模型可以正確載入。
  5. 下載管理:如果下載被中斷,重新執行 ollama pull 命令時會從中斷位置繼續下載,而非重新開始。

模型列表

上圖展示了執行 ollama list 命令後,系統列出的所有已下載模型的清單:

  1. 模型名稱與標籤:每一行展示一個模型的完整名稱,包括模型版本標籤(例如 mistral:latest、neural-chat:latest)。
  2. 模型 ID:每個模型都有一個唯一的 ID(通常是哈希值),用於內部識別和版本管理。
  3. 模型大小:顯示每個模型佔用的磁盤空間,通常以 GB 為單位。這幫助使用者了解儲存需求。
  4. 最後修改時間:記錄每個模型的最後更新或使用時間,便於追蹤模型的使用狀況。
  5. 多版本管理:同一個模型名稱可能有多個版本,例如 mistral:7b、mistral:13b 等,使用者可以根據需要下載不同的版本。
  6. 即時狀態:列表會即時更新,反映當前系統中所有可用的本地模型。

您可以使用任何列出的模型名稱搭配 ollama run 命令來啟動對話,例如 ollama run mistralollama run neural-chat