跳至主要内容

Ollama - Introduction

什麼是 Ollama?

Ollama 是一個專注於本地部署的大型語言模型(LLM)框架,它提供了一種簡單的方式讓使用者能夠在本地設備上運行強大的 AI 模型,而不需要依賴雲端運算資源。Ollama 透過輕量級的架構,使得即使是一般的筆記型電腦或個人伺服器,也能夠順暢運行 AI 模型,為開發者和企業提供了一個高效、私密且靈活的解決方案。


Ollama 的技術架構

Ollama 的技術架構由多個關鍵組件組成,確保其能夠高效且穩定地運行在本地設備上。

核心運行引擎

  • Ollama 採用高度優化的推理引擎,整合 GGUF(GGML Unified Format),這是一種專門為 LLM 設計的高效格式,讓模型能夠高效地在 CPU 和 GPU 上運行。
  • 支援 INT4、INT8、FP16 等不同精度的模型推理,讓使用者根據設備效能選擇適合的模式。

跨平台支援

  • 作業系統支援:Ollama 可在 macOS、Windows 和 Linux 上運行。
  • 硬體架構支援:支援 Apple Silicon(M1/M2)、x86(Intel/AMD CPU)、NVIDIA CUDA(GPU)、AMD ROCm(GPU)。

內建模型管理系統

  • 提供簡單易用的 CLI 工具,讓使用者可以方便地下載、更新、管理 LLM。
  • 支援 .modelfile 自訂模型運行方式,如:
    FROM llama2
    PARAMETER temperature 0.7
    這讓開發者可以快速微調模型參數。

增強的記憶與上下文管理

  • Ollama 允許更長的上下文窗口,適合需要記住大量歷史對話的應用。
  • 透過「分塊記憶管理」提升多輪對話的推理效果。

Ollama 的核心特點

本地部署與隱私保護

  • 所有運算皆在本地進行,無需將數據傳輸至雲端。
  • 適合需要高度隱私保護的場景,如 醫療、金融、企業內部系統

高效能運行與硬體友好

  • 針對 低功耗 CPU、GPU 及高效能伺服器 進行優化。
  • 支援 低資源設備運行,如 Raspberry Pi、迷你 PC

易於使用的 CLI 介面

  • 只需一行指令即可運行 LLM,如:
    ollama run llama2
  • 可輕鬆下載、運行、更新模型。

支援多種開源 LLM

  • 支援 Llama 2、Mistral、Gemma、Phi-2 等多種熱門 LLM。
  • 允許開發者自訂與調整 LLM 設定。

輕量級模型管理

  • 提供簡單的模型安裝與版本控制。
  • 允許使用者根據需求管理不同 LLM 版本。

Ollama 安裝在 Ubuntu 上

  1. 首先我們可以查看官方網站,提供了一個快速地安裝方式。
curl -fsSL https://ollama.com/install.sh | sh

Ollama 常用命令

終端輸入 ollama,會輸出如下內容:

Usage:
ollama [flags]
ollama [command]

Available Commands:
serve Start ollama
create Create a model from a Modelfile
show Show information for a model
run Run a model
stop Stop a running model
pull Pull a model from a registry
push Push a model to a registry
list List models
ps List running models
cp Copy a model
rm Remove a model
help Help about any command

Flags:
-h, --help help for ollama
-v, --version Show version information

命令總結

命令描述
ollama serve啟動 Ollama
ollama create從 Modelfile 創建模型
ollama show顯示模型資訊
ollama run運行模型
ollama stop停止正在運行的模型
ollama pull從註冊表中拉取模型
ollama push將模型推送到註冊表
ollama list列出所有模型
ollama ps列出正在運行的模型
ollama cp複製模型
ollama rm刪除模型
ollama help顯示命令的幫助資訊

終止 Ollama 運行

Ollama 進程會一直運行,若要終止 Ollama 模型推理服務,可以使用:

/bye

如果需要終止所有與 Ollama 相關的進程,可在 Windows PowerShell 使用:

Get-Process | Where-Object {$_.ProcessName -like '*ollama*'} | Stop-Process

設定模型下載路徑

  1. 可以在.bashrc 最底下新增下面這行,並且透過 source 來重新載入環境變數。
export OLLAMA_MODELS=/path/to/your/custom/models
  1. 重啟 Ollama 服務,讓他載入路徑。
sudo systemctl daemon-reload
sudo systemctl restart ollama

設定模型在 GPU 下執行

  1. 首先創立一個 ollama_gpu_selector.sh,內容如下。
ollama_gpu_selector.sh
#!/bin/bash

# Validate input
validate_input() {
if [[ ! $1 =~ ^[0-4](,[0-4])*$ ]]; then
echo "Error: Invalid input. Please enter numbers between 0 and 4, separated by commas."
exit 1
fi
}

# Update the service file with CUDA_VISIBLE_DEVICES values
update_service() {
# Check if CUDA_VISIBLE_DEVICES environment variable exists in the service file
if grep -q '^Environment="CUDA_VISIBLE_DEVICES=' /etc/systemd/system/ollama.service; then
# Update the existing CUDA_VISIBLE_DEVICES values
sudo sed -i 's/^Environment="CUDA_VISIBLE_DEVICES=.*/Environment="CUDA_VISIBLE_DEVICES='"$1"'"/' /etc/systemd/system/ollama.service
else
# Add a new CUDA_VISIBLE_DEVICES environment variable
sudo sed -i '/\[Service\]/a Environment="CUDA_VISIBLE_DEVICES='"$1"'"' /etc/systemd/system/ollama.service
fi

# Reload and restart the systemd service
sudo systemctl daemon-reload
sudo systemctl restart ollama.service

echo "Service updated and restarted with CUDA_VISIBLE_DEVICES=$1"
}

# Check if arguments are passed
if [ "$#" -eq 0 ]; then
# Prompt user for CUDA_VISIBLE_DEVICES values if no arguments are passed
read -p "Enter CUDA_VISIBLE_DEVICES values (0-4, comma-separated): " cuda_values
validate_input "$cuda_values"
update_service "$cuda_values"
else
# Use arguments as CUDA_VISIBLE_DEVICES values
cuda_values="$1"
validate_input "$cuda_values"
update_service "$cuda_values"
fi
  1. 讓 script 可以執行並且使用 sudo 取執行他。
chmod +x ollama_gpu_selector.sh
sudo ./ollama_gpu_selector.sh
  1. 運行 script 之後可以用逗號隔開多個 GPU 編號。
Enter CUDA_VISIBLE_DEVICES values (0-4, comma-separated): 0,1,2
  1. 查看環境變數是不是已經更新了,如果有的話會多Environment="CUDA_VISIBLE_DEVICES=0"這行。
cat /etc/systemd/system/ollama.service

應用場景

離線 AI 助手

  • 適合開發 寫作輔助、程式碼補全、問答系統

企業內部 AI

  • 企業可內部部署 Ollama,確保機密數據安全。
  • 可應用於 智能客服、文件分析、企業知識庫建構

開發者環境 AI 助手

  • 可與 VS Code、Jupyter Notebook、CLI 環境 整合。
  • 幫助開發者撰寫程式碼、除錯及優化程式。

邊緣設備 AI

  • 適合部署於 IoT 設備、工業自動化、智慧家庭
  • 提供即時推理能力,減少對雲端依賴。

結論

Ollama 是一個強大且靈活的開源 LLM 框架,特別適合那些需要本地部署、數據隱私及高效能 AI 運算的場景。對於開發者而言,它提供了簡單易用的工具,讓 AI 模型的運行變得更加直覺且高效。此外,Ollama 持續更新,並支援更多開源 LLM,使其成為 AI 領域的重要技術之一。

如果你正在尋找一個能夠完全掌控的 AI 解決方案,Ollama 絕對是一個值得探索的選擇!