快轉到主要內容

Linux用docker-compose部署Open WebUI + Ollama語言模型網頁界面

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

這篇文章Ivon將要用Linux的Docker部署兩個服務,簡單在電腦跑起大型語言模型。

第一個是「Ollama」,開源的大型語言模型執行器,基於llama.cpp開發,能夠執行LLaMA、Mistral、Gemma等開源語言模型。Ollama主要使用CPU運算,必要時再用GPU加速。不過它只有純文字界面,打指令操作頗麻煩的,所以才要裝Open WebUI。

第二個「Open WebUI」是一款多功能的網頁前端,最早叫做Ollama WebUI,它能給Ollama裝上一個漂亮的界面。

Open WebUI很類似ChatGPT網頁版,界面簡潔功能又多,例如聊天紀錄、AI繪圖、圖片辨識、讀取PDF、RAG整理資料、Google搜尋、自訂AI角色等等,可以立即用於生產環境。

Linux安裝Ollama教學一文Ivon提過,Ollama作者提供的指令稿會幫你安裝Ollama二進位執行檔到Linux系統,並用Systemd管理服務。

現在我們要把Ollama給容器化,這樣能夠大幅簡化架服務的流程,同時方便將Ollama與Open WebUI服務串接在一起。

此外,用Docker部署Ollama還是能夠使用純文字指令下載模型的,Ollama的API伺服器能開放給Open WebUI以外的服務存取。

1. 撰寫Docker-compose
#

Open WebUI為前端,Ollama為後端。主要負責運算的部份是Ollama,它會在背後透過llama.cpp執行語言模型,建議準備Intel i5以上的四核心CPU、8GB RAM以上等級的電腦。如果有Nvidia GPU更好。

  1. 我們要將Ollama容器化,若你已經用指令稿安裝過Ollama了,請將服務關閉,例如Ubuntu的指令就是:
sudo systemctl disable --now ollama
  1. Linux安裝Docker

  2. Ollama預設只用CPU跑,要更快的生成速度建議使用Nvidia GPU加速。要在Docker裡面跑CUDA,請安裝 Nvidia Container Toolkit

  3. 複製Open WebUI儲存庫

git clone https://github.com/open-webui/open-webui.git

cd open-webui
  1. 複製.env環境變數
cp .env.example .env
  1. Open WebUI開發者已經幫我們寫好了docker-compose,可以直接用他們的範本跑服務。所有的服務都寫在docker-compose.yaml檔案裡面,裡面會啟動Ollama和Open WebUI兩個服務,並用Docker volume儲存資料。

  2. 使用該docker-compose啟動容器服務,預設是純CPU計算:

docker compose -f docker-compose.yaml up -d

若要使用Nvidia GPU加速,額外加上docker-compose.gpu.yaml這個檔案:

docker compose -f docker-compose.yaml -f docker-compose.gpu.yaml up -d

Ollama的API伺服器只有Open WebUI能存取,如果你有其他服務需要使用Ollama,請用這個指令,啟動額外的API伺服器:

docker compose -f docker-compose.yaml -f docker-compose.gpu.yaml -f docker-compose.api.yaml up -d

2. 下載語言模型
#

  1. 用瀏覽器開啟http://Linux電腦IP:3000,進入網頁,註冊一個帳號(資料皆是存在本機,不會傳輸給第三方),登入Open WebUI

  2. 點選左下角的帳號大頭貼 → 設定 → 管理員設定,輸入模型ID下載模型。所有模型ID請到 Ollama官網查找,例如我用台灣正體中文模型Llama-3-Taiwan-8B

  3. 你也可以使用ollama pull指令下載模型:

docker exec -it ollama ollama pull SimonPu/llama-3-taiwan-8b-instruct-dpo
  1. 所有下載的模型都會存在Ollama容器的Docker volume之中。

3. 存取Open WebUI網頁
#

點左上角選取要使用的模型,即可開始對話!如果有設定Nvidia GPU加速,那麼Ollama會自動分配一些資源給GPU,加速語言模型的回應速度。

如何從外部網路存取Open WebUI?設定 內網穿透軟體,即可用虛擬區域IP存取Open WebUI,界面會自動隨著螢幕大小變化。

值得注意的是:Open WebUI預設只有HTTP,部份功能需要HTTPS才能使用,例如存取裝置麥克風與相機,這個你得用自簽SSL憑證解決,參考 Github Nginx Proxy Manager的作法

4. 搭配ComfyUI生成AI繪圖
#

讓Ollama幫你寫提示詞,再讓ComfyUI回傳結果。

具體操作請見: Ollama Open WebUI連接ComfyUI操作方法

5. 使用Google搜尋並統整資料
#

具體操作請見: 自架AI搜尋引擎,給Open WebUI加入Google搜尋功能

6. 使用RAG整理資料
#

具體操作請見: Ollama Open WebUI的RAG操作,建立知識庫強化語言模型能力

參考資料
#

相關文章

Ollama安裝教學,快捷部署AI大型語言模型到你的Linux電腦,離線執行
分類   開源AI應用 大型語言模型
標籤   Ollama Large Language Model Retrieval Augmented Generation
Android手機用Termux Ollama跑任意大型語言模型
分類   開源AI應用 大型語言模型
標籤   Ollama Large Language Model Android Termux
離線版ChatGPT安裝方法!在個人電腦跑AI大型語言模型的開源軟體列表
分類   開源AI應用 大型語言模型 Self-hosting自架
標籤   Large Language Model ChatGPT LLaMA AI Free Software

留言板

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

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

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