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 上
- 首先我們可以查看官方網站,提供了一個快速地安裝方式。
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
設定模型下載路徑
- 可以在.bashrc 最底下新增下面這行,並且透過 source 來重新載入環境變數。
export OLLAMA_MODELS=/path/to/your/custom/models
- 重啟 Ollama 服務,讓他載入路徑。
sudo systemctl daemon-reload
sudo systemctl restart ollama
設定模型在 GPU 下執行
- 首先創立一個 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
- 讓 script 可以執行並且使用 sudo 取執行他。
chmod +x ollama_gpu_selector.sh
sudo ./ollama_gpu_selector.sh
- 運行 script 之後可以用逗號隔開多個 GPU 編號。
Enter CUDA_VISIBLE_DEVICES values (0-4, comma-separated): 0,1,2
- 查看環境變數是 不是已經更新了,如果有的話會多
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 絕對是一個值得探索的選擇!