這篇文章Ivon將要用Linux的Docker部署兩個服務。
第一個是「Ollama」,開源的大型語言模型執行器,基於llama.cpp開發,能夠執行LLaMA、Mistral、Gemma等語言模型。主要使用CPU運算,必要時再用GPU加速。不過它只有純文字界面,打指令操作頗麻煩的。
第二個「Open WebUI」則是一款多功能的網頁前端,最早叫做Ollama WebUI,它能給Ollama裝上一個漂亮的界面。
除了聊天外還支援AI繪圖,以及RAG檢索生成,你可以叫它分析照片內容,或是讀取PDF、搜尋網頁整理資料等等。Open WebUI的網頁界面也能用電腦手機的瀏覽器隨時隨地存取。
在 Linux安裝Ollama教學一文Ivon提過,Ollama作者提供的指令稿為幫你安裝Ollama二進位執行檔到Linux系統,並用Systemd管理服務。
現在我們要把Ollama給Docker容器化,這樣能夠大幅簡化架服務的流程,同時也方便將Ollama與Open WebUI服務串接在一起。
此外,用Docker部署Ollama還是能夠使用純文字指令下載模型的,Ollama的API伺服器亦能開放給其他服務存取。
1. 撰寫Docker-compose#
Open WebUI為前端,Ollama為後端。主要負責運算的部份是Ollama,它會在背後執行語言模型,建議準備Intel i5以上的四核心CPU、8GB RAM以上等級的電腦。如果有Nvidia GPU更好。
- 我們要將Ollama容器化,若你已經用指令稿安裝過Ollama了,請將服務關閉,例如Ubuntu的指令就是:
sudo systemctl disable --now ollama
Ollama預設只用CPU跑。如果需要Nvidia GPU加速,請記得安裝 Nvidia Container Toolkit
複製Open WebUI儲存庫
git clone https://github.com/open-webui/open-webui.git
cd open-webui
- 複製.env設定
cp .env.example .env
Open WebUI開發者已經幫我們寫好了docker-compose,可以直接用他們的範本跑服務。所有的服務都寫在
docker-compose.yaml
檔案裡面,裡面會啟動Ollama和Open WebUI兩個服務,並用Docker volume儲存資料。使用該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.api.yaml up -d
2. 下載語言模型#
用瀏覽器開啟
http://Linux電腦IP:3000
,進入網頁,註冊一個帳號(資料皆是存在本機,不會傳輸給第三方),登入Open WebUI點選左下角的帳號大頭貼 → 設定 → 管理員設定,輸入模型ID下載模型。具體模型ID請到 Ollama官網查找,例如我用台灣正體中文模型
Llama-3-Taiwan-8B
:你也可以使用
ollama pull
指令下載模型:
docker exec -it ollama ollama pull SimonPu/llama-3-taiwan-8b-instruct-dpo
- 所有下載的模型都會存在Ollama容器的Docker volume之中。
3. 存取Open WebUI網頁#
點左上角選取要使用的模型,即可開始對話!
如何從外部網路存取Open WebUI?設定 內網穿透軟體,即可用虛擬區域IP存取Open WebUI。
值得注意的是:Open WebUI預設只有HTTP,部份功能需要HTTPS才能使用,例如存取裝置麥克風,這個你得用自簽SSL憑證解決,參考 Github上Nginx Proxy Manager的作法
4. 搭配ComfyUI生成AI繪圖#
讓Ollama幫你寫提示詞,再讓ComfyUI回傳結果。
具體操作請見: Ollama Open WebUI連接ComfyUI操作方法