Ollama 默認會根據硬件自動分配計算資源(CPU/GPU),若需強制指定僅使用 CPU 計算(禁用 GPU),或調整 CPU 核心數、線程數等參數,可通過以下方式配置,覆蓋不同操作系統(Windows/macOS/Linux)和使用場景:
一、核心原理
Ollama 啓動時會讀取環境變量或配置文件中的參數,通過指定 OLLAMA_NUM_GPUS=0 可強制禁用 GPU,讓模型完全跑在 CPU 上;同時可通過 OLLAMA_CPU_THREADS 調整 CPU 線程數,優化計算效率。
二、分場景配置方法
場景1:臨時生效(單次啓動 Ollama)
適用於僅臨時測試 CPU 計算,重啓後配置失效。
1. Windows(命令提示符/PowerShell)
- 命令提示符(cmd):
set OLLAMA_NUM_GPUS=0 && ollama serve
- PowerShell:
$env:OLLAMA_NUM_GPUS=0; ollama serve
- 啓動後,再新開終端執行
ollama run <模型名>(如ollama run llama3),模型會僅使用 CPU 運行。
2. macOS/Linux(終端)
# 臨時設置環境變量,啓動 Ollama 服務
OLLAMA_NUM_GPUS=0 ollama serve
或先導出變量再啓動:
export OLLAMA_NUM_GPUS=0
ollama serve
場景2:永久生效(全局配置,重啓後仍有效)
適用於長期使用 CPU 計算,無需每次啓動都手動指定參數。
1. Windows 永久配置
- 步驟1:打開「系統屬性」→「高級」→「環境變量」;
- 步驟2:在「系統變量」中點擊「新建」,添加:
- 變量名:
OLLAMA_NUM_GPUS - 變量值:
0(禁用 GPU)
- (可選)若需調整 CPU 線程數,新增變量:
- 變量名:
OLLAMA_CPU_THREADS - 變量值:
8(示例:指定8線程,建議設為 CPU 核心數,如4/8/16)
- 步驟3:保存後,重啓 Ollama 服務(可通過任務管理器結束
ollama.exe後重新啓動)。
2. macOS/Linux 永久配置
- 編輯環境變量配置文件(根據終端類型選擇,bash 用
.bashrc,zsh 用.zshrc):
# macOS/Linux 通用(bash)
nano ~/.bashrc
# 若為 zsh 終端,執行:nano ~/.zshrc
- 在文件末尾添加:
# 禁用 GPU,強制 CPU 計算
export OLLAMA_NUM_GPUS=0
# (可選)指定 CPU 線程數(示例:8線程,根據自身CPU核心數調整)
export OLLAMA_CPU_THREADS=8
- 保存並生效配置:
# bash 終端
source ~/.bashrc
# zsh 終端
source ~/.zshrc
- 重啓 Ollama 服務:
# 停止現有服務(若運行中)
pkill ollama
# 重新啓動
ollama serve
3. Docker 運行 Ollama(強制 CPU)
若通過 Docker 部署 Ollama,需在啓動容器時傳入環境變量:
docker run -d \
--name ollama \
-e OLLAMA_NUM_GPUS=0 \ # 禁用 GPU
-e OLLAMA_CPU_THREADS=8 \ # 可選:指定 CPU 線程數
-v ollama:/root/.ollama \
-p 11434:11434 \
ollama/ollama
場景3:僅針對單個模型生效(不影響全局)
若需讓某一個模型用 CPU 運行,其他模型仍用 GPU,可通過 modelfile 自定義模型配置:
- 導出現有模型的 Modelfile:
ollama show --modelfile llama3 > ~/llama3-cpu.Modelfile
- 編輯 Modelfile,在末尾添加
ENV指令指定 CPU 配置:
# 禁用該模型的 GPU 計算
ENV OLLAMA_NUM_GPUS 0
# 可選:指定該模型的 CPU 線程數
ENV OLLAMA_CPU_THREADS 8
- 基於修改後的 Modelfile 創建新模型(命名為
llama3-cpu):
ollama create llama3-cpu -f ~/llama3-cpu.Modelfile
- 運行該模型(僅使用 CPU):
ollama run llama3-cpu
三、驗證是否生效
啓動模型後,可通過以下方式確認是否僅使用 CPU:
- 查看系統資源監控:
- Windows:任務管理器 → 性能 → CPU 使用率飆升(GPU 無變化);
- macOS:活動監視器 → CPU 標籤頁,
ollama進程佔用高; - Linux:
top或htop命令,查看ollama進程的 CPU 佔用率。
- 查看 Ollama 日誌: 啓動時日誌會顯示
num_gpus: 0,説明 GPU 已禁用:
2024/10/01 10:00:00 INFO num_gpus: 0
2024/10/01 10:00:00 INFO cpu_threads: 8
四、優化 CPU 計算性能
- 調整線程數:
OLLAMA_CPU_THREADS建議設為 CPU 物理核心數(如 4核8線程 CPU 設為 4),避免超線程導致性能下降; - 選擇輕量模型:CPU 算力有限,優先選擇 7B 及以下參數的模型(如 llama3:7b、qwen:7b),或量化版本(如 q4_0、q5_1);
- 關閉其他進程:運行模型時關閉無關程序,釋放 CPU 資源。
五、常見問題
- 配置後仍用 GPU?
- 檢查環境變量是否生效:Windows 執行
echo %OLLAMA_NUM_GPUS%,Linux/macOS 執行echo $OLLAMA_NUM_GPUS,確認輸出為0; - 重啓 Ollama 服務(包括終端/容器),確保配置加載。
- CPU 佔用過高、卡頓?
- 降低
OLLAMA_CPU_THREADS數值; - 切換更低量化的模型(如從 q5_1 改為 q4_0)。
通過以上配置,可完全控制 Ollama 僅使用 CPU 進行模型推理,適配無 GPU 或需避免 GPU 佔用的場景。