這篇文章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更好。
- 我們要將Ollama容器化,若你已經用指令稿安裝過Ollama了,請將服務關閉,例如Ubuntu的指令就是:
sudo systemctl disable --now ollama
Ollama預設只用CPU跑,要更快的生成速度建議使用Nvidia GPU加速。要在Docker裡面跑CUDA,請安裝 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.gpu.yaml -f docker-compose.api.yaml up -d
2. 下載語言模型#
用瀏覽器開啟
http://Linux電腦IP:3000
,進入網頁,註冊一個帳號(資料皆是存在本機,不會傳輸給第三方),登入Open WebUI點選左下角的帳號大頭貼 → 設定 → 管理員設定 → 連線,點選Ollama旁邊的扳手圖示,輸入模型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網頁#
點左上角選取要使用的模型,即可開始對話!如果有設定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操作,建立知識庫強化語言模型能力