Ollama讓你透過幾行指令,即可將大型語言模型部署到Linux、macOS、Windows,並於本機離線執行。
Ollama不是LLM,而是協助你快速安裝各種大型語言模型的一個開源軟體。
1. 爲什麼要用Ollama?#
本節Ivon介紹Ollama的優點。
自從 離線大型語言模型LLaMA問世以來,便有很多前端程式出現,例如Text Generation WebUI、Serge、Dalai、LangChain,讓使用者在自己的電腦離線跑LLM,保障隱私權。
不過隨着開源模型的多樣化,大型語言模型部署變得越來越複雜,例如Text Generation WebUI就要調一堆參數,辨別它是用GPU運算還是llama.cpp的模型,用起來不直覺。
Ivon認為,要簡化部署難度就用Ollama吧,這是用Go語言寫成的程式,將執行大型語言模型所需的東西封裝成單一執行檔,只要一行指令就能讓大型語言模型在你的電腦跑起來,用指令與AI互動。
我覺得Ollama是很智慧的軟體,它會自動偵測系統可用的VRAM分配給語言模型,讓CPU和GPU協同工作,即使是4GB VRAM的顯示卡也能夠順暢跑語言模型。
嫌Ollama指令操作很麻煩?你可以裝圖形界面!Ollama可以搭配「Open WebUI」操作,界面設計十分類似ChatGPT。
你可以用Open WebUI聊天、跑AI繪圖、辨識圖片、執行RAG檢索增強生成、讓它整理PDF檔案內容、搜尋網頁等。
Ollama設計的理念是預設模式很簡單,要折騰也行的那種。使用者可以用類似Dockerfile的方式自訂Ollama的模型參數,快速建立自訂模型。
此外,Ollama不只是設計成一個傻瓜式的大型語言模型軟體而已!
Ollama是開放原始碼的軟體,它提供REST API,讓開發者可以在其他程式輕鬆整合Ollama,作為其他AI軟體的後端服務。比如 ShellGPT背後就用了Ollama,在終端機處理本機檔案,並按照你的系統情況給出建議。
功能更複雜的「LangChain」軟體亦可以 搭配Ollama使用。
2. 安裝Ollama主程式#
Ollama支援Linux、macOS、Windows、Raspberry Pi OS系統。
建議電腦至少CPU Intel i5 4核心,RAM 8GB以上再使用Ollama。因為Ollama使用llama.cpp
技術,跑的是經過量化縮減的語言模型,所以不需要Nvidia GPU也能跑。不過有Nvidia GPU更好,可以將一些模型層offload給GPU加速運算。
注意: 本文部屬的是命令行版的Ollama,如果需要圖形界面請看 用docker-compose部署Open WebUI + Ollama
- 按照 Github指示安裝,例如我的系統為Ubuntu,使用作者提供的指令稿安裝。它應該會自動偵測架構(x86_64或ARM64),並設定好Systemd服務。
curl -fsSL https://ollama.com/install.sh | sh
Ollama的模型預設是用CPU算的。如果要使用Nvidia GPU加速,請記得 安裝Nvidia閉源驅動和CUDA。Ollama啟動後會自動偵測並切換到GPU。
確認Ollama服務執行狀況
sudo systemctl status ollama
3. 安裝大型語言模型#
現在網路有很多開源的大型語言模型,參見 著名開源大型語言模型列表,有的需要轉檔才能用。
Ollama預設是從自家的 官網Library下載模型,開發者已經幫我們整理好了一票熱門模型,大部分都是GGUF格式的。
如果你要使用HuggingFace的模型,那麼你得撰寫Modelfile匯入。
下載Ollama官網提供的模型#
我們這裡就用最近在Reddit r/LocalLLaMA板評價還不錯的英文模型Mistral 7B吧。
- 使用
ollama pull
指令下載語言模型,模型檔案會儲存到~/.ollama/models
ollama pull mistral:7b-instruct
- 確認Ollama服務執行狀況
sudo systemctl status ollama
ollama ps
- 如果你要設定Ollama的環境變數,調整模型的參數等等,作者建議你直接改Systemd Unit檔案
sudo vim /etc/systemd/system/ollama.service
sudo systemctl daemon-reload
使用Modelfile匯入其他語言模型#
Ollama提供類似Dockerfile的方式,讓你輕鬆自訂模型內容。
參考 Ollama匯入說明,Modelfile支援匯入.gguf格式的模型,而.safetensors格式必須先用llama.cpp轉檔成.gguf才能匯入到Ollama。
- 下載模型檔,必須為gguf格式。
ollama pull mistral:7b-instruct
- 建立新的Modelfile
vim Modelfile
- 填入以下內容,自訂模型參數。所有指令請看 Github說明。
# 要使用的基礎模型
FROM mistral:7b-instruct
# 或者指定檔案名稱
FROM ./mistral-7b-instruct-v0.1.Q4_0.gguf
# 設定內容上下文長度
PARAMETER num_ctx 4096
# 設定最多使用的CPU執行緒
PARAMETER num_thread 4
# 將一部分模型層offload給GPU運算
PARAMETER num_gpu 10
# 使用Mistral格式範本,其餘範本可在Ollama官網Library查詢
TEMPLATE "[INST] {{ .Prompt }} [/INST]"
# 設定語言模型角色
SYSTEM """
I want you to act as an English translator, spelling corrector and improver.
"""
- 建立名為MyTranslator的新模型
ollama create "MyTranslator" -f ./Modelfile
4. Ollama命令行操作#
- 輸入
ollama run
指令,後面加上模型名稱。加上--verbose
的話可以測試模型回覆的速度。
ollama run mistral:7b-instruct
等待載入完成,開始跟語言模型對話吧。
如果要輸入多行指令,使用
""" """
把提示詞框起來。你也可以傳圖檔給它辨識(需使用LLaVA模型):
What is in this image? "/home/user/Downloads/smile.png"
- Ollama設計的對話程式可以用指令
/save
保留工作階段(session),也就是讓AI記住之前的聊天內容。
# 保存目前的聊天內容
/save session1
# 載入上次的聊天內容
/load session1
- 你還可以調整目前模型的參數,例如修改token、將一部分offload給GPU加快運算、Temperature、Repetition penalty等。
/set parameter num_ctx 4096
/set parameter num_gpu 10
5. Ollama啟用GPU加速#
Ollama預設是純用CPU跑,跑7B以上的模型可能會有點喘。
若電腦有Nvidia GPU,Ollama會看你的GPU VRAM自動分配資源,將一部分運算offload給GPU,這種情況下模型運算速度會比較快。
執行ollama ps
指令查看Ollama是在用CPU還是GPU跑。
若要強制指定GPU offload的多寡,請使用前文提及的Modelfile自訂模型。
6. 使用圖形界面與Ollama聊天#
Open WebUI(舊稱Ollama WebUI)是專為各種語言模型服務設計的網頁界面,同樣高度模組化,可以搭配Ollama或ChatGPT使用。它能把Ollama的一些指令操作圖形化,例如管理模型、提示詞、要處理的文件等等。
推薦使用Docker部署,過程請參考 用docker-compose部署Open WebUI + Ollama