Ollama 將模型取得、本機推論、命令列介面、桌面應用程式與 HTTP API 整合至單一工具。若要下載開放權重模型並在開發者工作站上執行, Ollama 是最容易採用的方式之一,無須先行組裝 Python 環境、推論引擎、 Tokenizer、提示詞範本與 GPU 執行環境。
最簡單的工作階段如下:
ollama pull qwen3:8b
ollama run qwen3:8bOllama 會選擇適當的本機執行器、儲存模型、在需要時啟動模型,並套用模型的 對話範本。因為具備上述便利性,Ollama 適合個人電腦、應用程式開發、展示, 以及小型內部服務。然而,Ollama 不會自動將筆記型電腦轉變成高吞吐量或 高可用性的正式環境推論叢集。
Ollama 可以做什麼 #
Ollama 可以:
- 下載、列出、檢查、執行、複製及刪除模型;
- 提供互動式文字對話與文字生成;
- 執行受支援的視覺語言、嵌入、工具呼叫及推理模型;
- 將受支援模型的輸出限制為結構化 JSON;
- 匯入受支援的模型權重或 GGUF 檔案,並透過
Modelfile自訂模型行為; - 透過原生 REST API 提供本機模型服務;
- 提供與 OpenAI API 的部分相容性;
- 在 RAM 或 VRAM 足夠的前提下,讓一或多個模型常駐記憶體並處理並行請求; 以及
- 選擇性地使用 Ollama 託管的雲端模型,而非本機硬體。
上述項目是執行環境功能,而非每個模型都具備的能力。純文字模型不會因為請求 採用視覺端點格式就能理解圖片;未針對工具使用進行訓練的模型,也可能產生品質 不佳的工具呼叫。以模型建置應用程式前,請先在 Ollama 模型庫中確認模型卡、授權條款、 上下文限制與標籤。
本機伺服器一般會監聽 http://127.0.0.1:11434。CLI、桌面應用程式、
API 用戶端、編輯器擴充功能,以及第三方對話介面,都是該服務的用戶端:
Ollama 不是什麼 #
Ollama 不是:
- LLM,也不會自行提供模型權重;
- 模型訓練或完整微調框架;
- 模型準確、安全、無偏見,或取得特定用途授權的保證;
- 檢索增強生成系統、向量資料庫、代理程式框架或工具沙箱;
- 所有 OpenAI API 端點與選項的完整實作;
- 本機 API 的驗證、授權、配額或計費閘道;
- 具備自動容錯移轉功能的多節點排程器;也不是
- 容量規劃、監控、備份與受控升級的替代方案。
Ollama 可以是 RAG 或代理程式應用程式內的一個元件,但應用程式仍須負責文件 擷取、檢索、對話狀態、工具執行、存取控制與錯誤處理。工具呼叫尤其重要: 模型只會提出呼叫,而受信任的應用程式程式碼必須驗證並執行該呼叫。
在本機執行模型也不代表所有操作都離線進行。提取模型需要網路連線,而雲端模型
或網頁搜尋功能會將請求傳送至遠端服務。若作業必須限於本機,請設定
OLLAMA_NO_CLOUD=1,或在 ~/.ollama/server.json 中設定
disable_ollama_cloud。
Ollama 與 vLLM 的比較 #
vLLM 同樣是推論引擎與伺服器,但最佳化重點不同。 PagedAttention、持續批次處理、前綴快取、平行處理與分散式服務等功能, 著重於有效率地提供多人共用服務。Ollama 則著重於縮短從未安裝執行環境, 到在單一機器上執行模型的流程。
| 考量 | Ollama | vLLM |
|---|---|---|
| 主要用途 | 本機與單一主機推論 | 高吞吐量共用推論 |
| 初始設定 | 規模小;應用程式、CLI 或單一容器 | 需要更多基礎架構與加速器知識 |
| 個人 macOS 用途 | 對 Apple Silicon 提供一級原生支援 | 並非一般部署目標 |
| Linux GPU 伺服器 | 支援,包括容器 | 主要部署環境 |
| 對一般使用者友善的模型管理 | 內建提取、列出、執行與刪除工作流程 | 一般由部署工具管理 |
| 量化本機模型 | 核心工作流程 | 支援的格式取決於模型與平台 |
| 請求排程 | 佇列與可依模型設定的平行處理 | 為吞吐量設計的持續批次處理 |
| 多 GPU 用途 | 可將模型分散到單一主機的多張 GPU | 完整的張量、管線、資料與專家平行處理 |
| 多節點服務 | 並非叢集協調器 | 分散式執行與橫向擴充整合 |
| API | 原生 API 與部分 OpenAI 相容性 | OpenAI 相容 API 與其他服務協定 |
| 維運 | 日誌與基本執行環境檢查 | 面向正式環境的指標與服務控制 |
| 使用者介面 | 原生應用程式;第三方 Web UI | 主要是伺服器與 Python 程式庫 |
兩者並非單純的「開發環境與正式環境」之分。若 Ollama 服務在一台機器上處理 範圍明確的內部工作負載,且周邊系統提供驗證、TLS、監控與復原能力,便可適用 於正式環境。同理,vLLM 也能在單一開發伺服器上執行。工作負載才是決定因素:
- 若用途是個人助理、私有實驗、本機應用程式開發、可離線工作流程、課堂教學, 或少量共用的單一主機服務,請選擇 Ollama。
- 若並行使用者數、每個加速器的每秒 Token 數、可預測的佇列行為、 Prometheus 指標、分散式 GPU 或 Kubernetes 擴充值得承擔額外維運複雜度, 請選擇 vLLM。
- 若預定服務介於兩者之間,請對兩者進行效能評測。測量第一個 Token 的產生 時間、每秒輸出 Token 數、尾端延遲、記憶體用量,以及預期並行量與 上下文長度下的行為。
Ollama 的優勢在於維運阻力低,且廣泛支援工作站;缺點則是捨棄專用叢集服務 引擎所具備的許多控制與最佳化。vLLM 的優勢是加速器使用率與服務規模; 缺點包括設定門檻較高、對硬體較敏感,且缺少消費級桌面體驗。
部署 #
選擇部署方式 #
最精簡且可靠的準則如下:
Ollama 的成功之處,在於讓本機推論成為一般操作:安裝一個應用程式、提取一個 模型,然後從對話視窗、終端機、編輯器或程式使用相同執行環境。簡單性是其主要 特色,但仍須明確區分責任邊界。Ollama 負責執行模型;可靠的產品仍須提供模型 周邊的安全性、狀態、評估、可觀測性與維運控制。
使用 Docker 安裝於 Linux 主機 #
Docker 是 Linux 推論主機上的合理部署方式,因為容器可存取 Linux GPU 裝置介面。請先在主機上安裝可正常運作的 GPU 驅動程式。若使用 NVIDIA GPU, 另請安裝並設定 NVIDIA Container Toolkit:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker使用持久化模型磁碟區啟動 Ollama。將發布的連接埠繫結至 Loopback,可避免 意外公開未經驗證的 API:
docker run --detach \
--name ollama \
--restart unless-stopped \
--gpus all \
--publish 127.0.0.1:11434:11434 \
--volume ollama:/root/.ollama \
ollama/ollama提取模型並確認推論正常運作:
docker exec ollama ollama pull qwen3:8b
docker exec -it ollama ollama run qwen3:8b
curl http://127.0.0.1:11434/api/version
docker exec ollama ollama psollama ps 會回報已載入的模型是在 CPU、GPU,還是分散於兩者上執行。
即使系統具有 GPU,也不能直接假設模型正在使用 GPU。
若僅使用 CPU 進行推論,請省略 --gpus all。此模式適用於小型模型、
功能測試,以及沒有受支援加速器的機器:
docker run --detach \
--name ollama \
--restart unless-stopped \
--publish 127.0.0.1:11434:11434 \
--volume ollama:/root/.ollama \
ollama/ollama若使用受支援的 AMD GPU,請採用 ROCm 映像檔並傳入 GPU 裝置:
docker run --detach \
--name ollama \
--restart unless-stopped \
--device /dev/kfd \
--device /dev/dri \
--publish 127.0.0.1:11434:11434 \
--volume ollama:/root/.ollama \
ollama/ollama:rocm選擇主機前,請查閱 Ollama 最新的
Docker 與
GPU 相容性頁面。GPU 系列、驅動程式、
容器執行環境與映像檔必須彼此相容。若要進行受控部署,請固定經過測試的
Ollama 發行版本標籤或映像檔 Digest,而不要隨 latest 隱含升級。
若其他機器必須存取服務,不要只將發布位址改成 0.0.0.0 並開放防火牆。
請將 Ollama 置於具備驗證功能的反向 Proxy 或 API Gateway 後方,由後者提供
TLS、請求大小限制、逾時、速率限制與稽核日誌。
在 macOS 上進行原生安裝 #
Mac 應採用原生安裝:
- 從官方 macOS 安裝頁面下載
ollama.dmg。 - 將 Ollama 拖曳至
Applications並啟動。 - 出現提示時,允許應用程式將
ollamaCLI 連結放置於/usr/local/bin。 - 提取並執行模型:
ollama pull qwen3:8b
ollama run qwen3:8b目前版本需要 macOS Sonoma 14 或更新版本。Apple M 系列系統可透過原生
執行環境同時使用 CPU 與 GPU;Intel Mac 則使用 CPU 推論。模型與設定儲存
於 ~/.ollama,而模型可能占用數十至數百 GB。
背景伺服器一般由桌面應用程式管理。若偏好以前景服務執行,可在終端機中使用
ollama serve 明確啟動伺服器。
為何 macOS 不應搭配 Docker #
Docker Desktop for macOS 上的 Linux 容器不會直接在 macOS 核心上執行, 而是在 Linux 虛擬機器內執行:
Apple 的 Metal GPU 介面可供原生 macOS 應用程式使用,但 Docker Desktop 不會將該 GPU 傳遞至 Ollama 容器,也不會將其模擬成受支援的 Linux 加速器。 因此,Ollama 無法在 macOS 的 Docker Desktop 中使用 GPU 加速。
容器在技術上可僅使用 CPU 執行,因此「Ollama 無法在 Mac 的 Docker 中執行」 一說並不精確。實務上的問題是 Linux 虛擬機器會增加額外負擔,卻捨棄 Mac 主要的推論優勢:GPU 與統一記憶體。原生 Ollama 可使用 Metal,檔案系統與 網路路徑較簡單,並提供桌面應用程式。請在 macOS 上使用原生 Ollama 進行 推論,並將 Linux 容器保留給 Linux 主機。個別 Web UI 仍可在容器中執行, 並呼叫原生 Ollama 伺服器。
Ollama 管理 CLI #
管理 CLI 負責管理 Ollama 伺服器、模型與帳號工作階段。伺服器一般由桌面
應用程式或系統服務啟動;只有在手動執行時才使用 ollama serve。
# Show available commands and global options.
ollama --help
# Show the installed Ollama version.
ollama --version
# Show options for a particular command.
ollama run --help
# Start the Ollama server in the foreground.
ollama serve
# Download a model, or update the local copy of an existing tag.
ollama pull qwen3:8b
# List models stored on this machine.
ollama list
# Use the shorter alias for `ollama list`.
ollama ls
# Show a model's metadata, parameters, template, and capabilities.
ollama show qwen3:8b
# List models currently loaded into memory and their CPU/GPU placement.
ollama ps
# Unload a model and release its memory.
ollama stop qwen3:8b
# Create a custom model from a Modelfile.
ollama create my-model --file ./Modelfile
# Copy a model to another local name or tag.
ollama cp qwen3:8b qwen3:project
# Delete a local model.
ollama rm qwen3:project
# Publish a namespaced model after authenticating with ollama.com.
ollama push account/my-model
# Sign in to ollama.com for cloud models and model publishing.
ollama signin
# End the ollama.com session.
ollama signout使用者介面 #
基礎 CLI 對話 #
# Start an interactive chat session.
ollama run qwen3:8b
# Run a single prompt without entering an interactive session.
ollama run qwen3:8b "Explain copy-on-write in one paragraph."
# Send the contents of a text file through standard input.
cat notes.txt | ollama run qwen3:8b
# Send multiline text through standard input.
cat <<'EOF' | ollama run qwen3:8b
Compare optimistic and pessimistic locking.
Include one practical example of each.
EOF
# Ask a vision-capable model about an image.
ollama run gemma4 ./diagram.png "Explain this diagram."
# Send WAV audio to an audio-capable model.
ollama run AUDIO_MODEL ./recording.wav "Transcribe this recording."
# Generate an embedding vector from an argument.
ollama run embeddinggemma "Hello world"
# Generate an embedding vector from standard input.
echo "Hello world" | ollama run nomic-embed-text
# Interactively select and configure a supported external integration.
ollama launch
# Launch a specific integration.
ollama launch claude
# Launch an integration with a particular Ollama model.
ollama launch claude --model qwen3.5
# Configure a supported integration without launching it.
ollama launch droid --config
# Start an interactive chat through a Dockerized Ollama server.
docker exec -it ollama ollama run qwen3:8b
# At the `>>>` prompt, triple quotes delimit multiline interactive input:
# """Explain this program:
# int main(void) { return 0; }
# """執行 ollama <command> --help 可查看命令專屬選項。模型名稱包含標籤:
qwen3:8b 與 qwen3:14b 是不同成品;省略標籤時一般會解析為 latest。
圖片與 WAV 輸入需要具備相應多模態能力的模型。CLI 不會直接擷取影片、PDF
或辦公文件;請先轉錄、擷取或轉換內容,再傳送給相容模型。
Web/GUI 前端 #
多種獨立前端都可連線至已執行的 Ollama 服務。前端不會取代 Ollama 的模型 執行環境,而是增加對話儲存、文件工作流程、使用者帳號或桌面介面。
| 前端 | 形式 | 適用用途 | Ollama 連線方式 |
|---|---|---|---|
| Open WebUI | 自行託管的 Web 應用程式 | 一般對話、多使用者、模型管理與知識庫 | 設定 Ollama 基底 URL;例如 UI 容器存取主機上的 Ollama 時,使用 http://host.docker.internal:11434 |
| LibreChat | 自行託管的 Web 應用程式 | 多供應商對話、使用者帳號、代理程式與共用部署 | 在 librechat.yaml 中定義 Ollama 端點;其 OpenAI 相容基底 URL 以 /v1/ 結尾 |
| AnythingLLM | 桌面或自行託管的 Web 應用程式 | 文件工作區與以 RAG 為主的對話 | 選擇 Ollama 作為 LLM 供應商並設定其基底 URL;在容器外一般為 http://127.0.0.1:11434 |
| LobeChat | 桌面或自行託管的 Web 應用程式 | 多供應商對話、助理與外掛程式 | 啟用 Ollama 供應商並設定其服務或 Proxy URL |
| Chatbox | 跨平台桌面應用程式 | 無須維運另一項 Web 服務的單一使用者對話 | 選擇 Ollama 作為供應商,並設定 API 主機;一般為 http://localhost:11434 |
請根據應用程式邊界選擇:
- 單一使用者採用 Chatbox 所需的額外基礎架構最少。
- Open WebUI 提供以本機模型為核心的直接共用瀏覽器介面。
- 必須整合 Ollama 與多個模型供應商的部署適合採用 LibreChat 或 LobeChat。
- AnythingLLM 的介面以文件集合與檢索為核心。
容器網路會改變 localhost 的意義:在前端容器內,它指向該容器,而非
Ollama 主機。請視情況使用 Docker 主機別名、Compose 服務名稱或私有伺服器
位址。若瀏覽器直接連線至 Ollama,請透過 OLLAMA_ORIGINS 只設定必要的
Origin;避免使用 *,因為該值會允許所有 Web Origin。
每個前端都會獨立於 Ollama 儲存額外狀態。請備份其對話資料庫與上傳的文件、 設定驗證,並確認選用的雲端功能是否會將提示詞或檔案傳送至遠端服務。不要為了 讓前端可供存取而公開 Ollama 未經驗證的連接埠;請公開具備驗證功能的前端, 並讓 Ollama 留在內部網路。
使用原生 API #
原生 API 位於 http://localhost:11434/api。非串流對話請求如下:
curl http://localhost:11434/api/chat \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3:8b",
"messages": [
{"role": "user", "content": "Explain copy-on-write in two paragraphs."}
],
"stream": false
}'生成與對話預設會啟用串流,並在產生 Token 時傳回一連串以換行符號分隔的 JSON 物件。應用程式應以增量方式解析串流、處理連線中斷與非 2xx 回應, 並自行設定期限。
重要的端點群組包括:
| 操作 | 端點 |
|---|---|
| 從提示詞生成內容 | POST /api/generate |
| 使用訊息進行對話 | POST /api/chat |
| 建立嵌入 | POST /api/embed |
| 列出本機模型 | GET /api/tags |
| 檢查模型 | POST /api/show |
| 提取模型 | POST /api/pull |
| 刪除模型 | DELETE /api/delete |
| 檢查已載入的模型 | GET /api/ps |
| 檢查伺服器版本 | GET /api/version |
Ollama 維護官方 Python 與 JavaScript 程式庫。Python 用戶端 採用相同的基本資料模型:
from ollama import chat
response = chat(
model="qwen3:8b",
messages=[
{"role": "user", "content": "Why does context length use memory?"}
],
)
print(response.message.content)使用 OpenAI 相容 API #
已採用 OpenAI 用戶端編寫的應用程式,可將受支援的操作指向
http://localhost:11434/v1/:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1/",
api_key="ollama",
)
response = client.chat.completions.create(
model="qwen3:8b",
messages=[
{"role": "user", "content": "Give me three names for a backup tool."}
],
)
print(response.choices[0].message.content)本機伺服器會忽略 API 金鑰,但 OpenAI SDK 要求提供非空值。受支援的相容端點 包括 Chat Completions 與 Responses,但此相容性刻意不涵蓋全部功能。請求 格式獲得接受,不代表每個參數、事件、用量欄位、模型行為或未來 OpenAI 功能 都受支援。請測試應用程式實際使用的操作;需要 Ollama 專屬控制時,優先使用 Ollama 原生 API。
上下文管理 #
上下文管理橫跨用戶端與伺服器,因為 Ollama 不負責持久化對話資料庫。CLI、 GUI 或應用程式會組合各項請求;Ollama 則轉譯請求,並強制執行模型的上下文 限制。
| 層級 | 上下文責任 |
|---|---|
| 用戶端或前端 | 保存對話、選取訊息、摘要歷程、檢索文件,以及建構每項請求 |
| Ollama 伺服器 | 套用模型的對話範本、將請求 Tokenize、強制執行 num_ctx,以及執行推論 |
| 模型 | 關注 Ollama 提供的最終 Token 序列 |
因此,即使使用相同模型與 Ollama 伺服器,不同前端仍可能產生不同結果,因為 各自的請求可能包含不同的系統提示詞、歷程選擇、摘要、檢索文件與生成參數。
互動式 ollama run
#
ollama run MODEL 會維護兩種不同的歷程:
- 提示詞輸入歷程讓使用者透過方向鍵取回先前輸入。
/set history與/set nohistory控制此 Readline 功能。提示詞輸入歷程並非提供給模型的 對話,因為它只包含使用者輸入,而非完整的使用者與助理對話回合。 - 對話歷程是由執行中的 CLI 程序所保存,依序包含
system、user與assistant訊息的陣列。每次回應後,CLI 會附加助理訊息;下一回合則 將累積的訊息陣列傳送至 Chat API。
因此,對話歷程會在同一個 ollama run 程序的多次提示詞之間保留,但程序
結束後不會自動還原。/clear 會移除目前的對話上下文,但保留作用中的系統
訊息。
/save <model-name> 會建立新的 Ollama 模型以明確持久化狀態;該模型定義
包含目前的訊息、參數與系統訊息。之後使用 /load <model-name> 可載入該
已儲存模型及其初始訊息歷程。儲存的成品是衍生模型定義,而非可搜尋的對話
逐字稿資料庫。請勿儲存機密,因為嵌入的訊息會成為模型成品的一部分,且可供
檢查或複製。
每個回合都會傳送至模型嗎? #
CLI 會在每次出現新提示詞時,傳送完整的累積訊息陣列。接著,推論伺服器會
轉譯對話範本,並讓結果符合設定的上下文視窗。轉譯後的歷程超出 num_ctx
時,伺服器會從前端移除較舊的訊息,同時保留系統訊息與最新的使用者訊息。
因此:
- API 請求可包含 CLI 保留的每個回合;
- 模型只會看見可容納的系統訊息與最新後綴;
- 舊有事實可能從有效上下文消失,卻仍留在 CLI 的記憶體內陣列中;以及
- 增加
num_ctx可保留更多歷程,但會增加 KV Cache 的記憶體用量,且可能 降低並行處理能力。
請使用下列命令設定及檢查工作階段上下文:
# Change the context window for the current interactive session.
/set parameter num_ctx 16384
# Clear accumulated conversation messages.
/clear
# Persist the conversation as a derived model.
/save project-session
# Load a saved session or another model.
/load project-session上述行為屬於截斷,而非持久化記憶或語意回想。CLI 不會在丟棄回合前摘要舊有 對話。需要持久化對話狀態的應用程式應自行儲存訊息、套用明確的摘要原則, 並透過 Chat API 傳送選取的歷程。
前端與 API 用戶端策略 #
Ollama 的 Chat API 會處理目前請求中的 messages 陣列,而不會依據對話 ID
擷取先前對話。API 用戶端必須儲存完成的回合,並重新傳送維持連續性所需的
歷程。
前端可實作比 ollama run 更進階的原則:
- 在自己的資料庫中保留完整逐字稿;
- 在請求接近上下文限制前傳送每則訊息;
- 保留第一則系統訊息與最近的回合;
- 以生成的摘要取代較舊回合;
- 分別維護使用者偏好、決策或工具狀態的摘要;
- 依嵌入相似度檢索相關的先前訊息;或
- 插入由 RAG 管線選取的文件區塊。
前端設定也可透過傳送 num_ctx,變更 Ollama 的有效上下文長度。較大的值
不會強制前端傳送更多歷程,只會讓組合後的請求有更多空間。反之,前端可能在
Ollama 達到該限制前,就先行丟棄或摘要歷程。
若精確行為會影響結果,請檢查前端文件或傳出請求。GUI 中顯示對話歷程, 不代表每則可見訊息都已傳送至模型。Open WebUI、LibreChat、AnythingLLM、 LobeChat 與 Chatbox 的對話及檢索原則各自獨立於 Ollama,且這些原則可能在 不同版本間變更。
背景文件與 RAG #
Ollama 伺服器不包含文件集合、分塊器、向量索引或檢索原則,因此不提供完整的 RAG 系統。可採用下列幾種整合層級:
- **直接上下文:**將文件文字貼入提示詞,或將擷取出的文字透過管線傳送至
ollama run。模型只能在文字留於上下文視窗期間使用該內容。圖片與音訊 路徑需要具備相應多模態能力的模型;PDF 與辦公文件必須先轉換為文字或 圖片。 - **靜態模型上下文:**將簡短、穩定的指示或事實放入
Modelfile的SYSTEM或MESSAGE項目。這些項目會包含於提示詞中,而非建立索引; 因此會占用上下文,且無法擴充至文件語料庫。 - **由應用程式管理的 RAG:**使用 Ollama 的嵌入 API 將文件區塊轉換成 Embedding、將向量與來源中繼資料儲存於向量資料庫、針對每個問題檢索相關 區塊,並將這些區塊加入對話請求。Ollama 提供嵌入與生成模型;應用程式 程式碼則負責擷取、檢索、引用、存取控制與對話持久化。
- **第三方介面:**使用 Open WebUI 等實作知識庫或 RAG 工作流程的用戶端, 並連線至 Ollama 作為模型執行環境。介面的檢索行為、儲存空間、權限與 備份均獨立於 Ollama。
最精簡的 RAG 請求路徑如下:
直接貼上完整語料庫屬於提示詞填塞,而非 RAG,因為沒有檢索步驟負責選取相關 證據。正確的 RAG 還會在區塊旁保留來源識別碼,讓應用程式可顯示引用,並在 內容送達模型前強制執行文件層級授權。
選擇模型與估算機器規格 #
模型選擇對使用體驗的影響大於 Ollama 安裝方式。請考量:
- **任務:**一般對話、程式碼、嵌入、視覺、工具或領域專屬工作;
- **授權:**商業使用、再散布與生成輸出的許可;
- **參數數量與量化:**較小或量化程度較高的模型使用較少記憶體,但品質可能 降低;
- **上下文長度:**較長的提示詞與 KV Cache 會使用更多記憶體;
- **語言涵蓋範圍:**針對使用者所需的語言與術語進行效能評測;以及
- **提示詞範本與能力:**使用正確的 Ollama 模型標籤,不要假設兩個變體可 互換。
模型的磁碟大小不足以作為記憶體需求估算。推論還需要執行環境緩衝區,以及會 隨上下文長度、並行量、模型架構與精確度成長的 KV Cache。在 Apple Silicon 上,CPU 與 GPU 共用統一記憶體,但 macOS 與其他應用程式仍需要使用部分 記憶體。在獨立 GPU 主機上,溢出到系統 RAM 的權重一般會讓執行速度大幅降低。
Ollama 的預設上下文原則曾在不同版本之間變更,且可能取決於可用 VRAM。請
明確設定所需上下文,再使用 ollama ps 確認配置的上下文與 CPU/GPU
執行位置:
OLLAMA_CONTEXT_LENGTH=16384 ollama serve
ollama ps較大的值不一定較好。它會增加記憶體壓力,並可能降低並行處理能力或導致 CPU 卸載。也請測試品質:模型公布的最大上下文,不保證整個視窗範圍內都能維持同等 良好的注意力。
正式環境與安全性檢查清單 #
將 Ollama 作為共用服務前:
- **保護 API。**本機 API 不具備驗證機制。請限制於 Loopback 或私有網路, 或在前方設定具備驗證功能的 TLS Proxy。切勿依賴虛設的 OpenAI API 金鑰 提供安全性。
- **固定執行環境與模型。**記錄 Ollama 版本、確切的模型標籤或 Digest、
Modelfile、提示詞範本、上下文與生成參數。可變標籤或執行環境升級可能 改變輸出。 - **規劃儲存空間。**容器替換時保留模型磁碟區。模型資料應位於其他磁碟時,
請使用
OLLAMA_MODELS。備份自訂Modelfile與設定;大型 Registry 模型一般可重新提取。 - 設定容量限制。
OLLAMA_NUM_PARALLEL、OLLAMA_MAX_LOADED_MODELS、OLLAMA_MAX_QUEUE、上下文長度與keep_alive都會影響記憶體與延遲。 過載的伺服器可能以 HTTP 503 拒絕請求。 - **預熱重要模型。**第一項請求可能包含模型載入延遲。空白的生成或對話請求
可預先載入模型,而
keep_alive控制其常駐時間。 - **觀測服務。**收集容器或服務日誌、請求延遲、佇列失敗、磁碟用量、 記憶體、加速器使用率與應用程式錯誤率。Ollama 的基本檢查命令並非完整的 監控系統。
- **限制請求與輸出。**套用主體大小限制、期限、輸出限制、並行限制與取消 機制。將生成文字與模型提出的工具引數視為不受信任的輸入。
- **測試失敗與復原。**確認記憶體不足錯誤、磁碟損毀或已滿、模型提取中斷、 程序重新啟動與用戶端中斷連線後的行為。若無法接受停機,便需要第二台主機 或備援服務。
- **控制傳出流量。**決定是否允許模型提取、雲端模型、網頁搜尋、Proxy 與第三方 UI。只有整條請求路徑都保留在本機時,本機推論才能保護提示詞。
- **檢查兩份授權條款。**Ollama 授權與模型授權彼此獨立。部署執行環境 不會授予模型庫中每個模型的使用權。
評論
在 GitHub 上閱讀或評論(發表評論需要登入)