快轉到主要內容

Ollama安裝教學,快捷部署AI大型語言模型到你的Linux電腦,離線執行

分類   開源AI應用 大型語言模型
標籤   Ollama Large Language Model Retrieval Augmented Generation
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

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

  1. 按照 Github指示安裝,例如我的系統為Ubuntu,使用作者提供的指令稿安裝。它應該會自動偵測架構(x86_64或ARM64),並設定好Systemd服務。
curl -fsSL https://ollama.com/install.sh | sh
  1. Ollama的模型預設是用CPU算的。如果要使用Nvidia GPU加速,請記得 安裝Nvidia閉源驅動和CUDA。Ollama啟動後會自動偵測並切換到GPU。

  2. 確認Ollama服務執行狀況

sudo systemctl status ollama

3. 安裝大型語言模型
#

現在網路有很多開源的大型語言模型,參見 著名開源大型語言模型列表,有的需要轉檔才能用。

Ollama預設是從自家的 官網Library下載模型,開發者已經幫我們整理好了一票熱門模型,大部分都是GGUF格式的。

如果你要使用HuggingFace的模型,那麼你得撰寫Modelfile匯入。

下載Ollama官網提供的模型
#

我們這裡就用最近在Reddit r/LocalLLaMA板評價還不錯的英文模型Mistral 7B吧。

  1. 使用ollama pull指令下載語言模型,模型檔案會儲存到~/.ollama/models
ollama pull mistral:7b-instruct
  1. 確認Ollama服務執行狀況
sudo systemctl status ollama

ollama ps
  1. 如果你要設定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。

  1. 下載模型檔,必須為gguf格式。
ollama pull mistral:7b-instruct
  1. 建立新的Modelfile
vim Modelfile
  1. 填入以下內容,自訂模型參數。所有指令請看 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.
"""
  1. 建立名為MyTranslator的新模型
ollama create "MyTranslator" -f ./Modelfile

4. Ollama命令行操作
#

  1. 輸入ollama run指令,後面加上模型名稱。加上--verbose的話可以測試模型回覆的速度。
ollama run mistral:7b-instruct
  1. 等待載入完成,開始跟語言模型對話吧。

  2. 如果要輸入多行指令,使用""" """把提示詞框起來。

  3. 你也可以傳圖檔給它辨識(需使用LLaVA模型):

What is in this image? "/home/user/Downloads/smile.png"
  1. Ollama設計的對話程式可以用指令/save 保留工作階段(session),也就是讓AI記住之前的聊天內容。
# 保存目前的聊天內容
/save session1

# 載入上次的聊天內容
/load session1
  1. 你還可以調整目前模型的參數,例如修改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

相關文章

Text Generation WebUI:如何下載大型語言模型(LLM)
分類   開源AI應用 大型語言模型
標籤   LLaMA AI Large Language Model
Text Generation WebUI安裝教學(Linux / Windows / macOS)
分類   開源AI應用 大型語言模型
標籤   LLaMA AI Large Language Model
oobabooga的Text Generation WebUI ~ 離線聊天AI介紹
分類   開源AI應用 大型語言模型
標籤   LLaMA AI Large Language Model

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。