在Android手機跑Ollama服務,執行LLaMA、Gemini、Qwen這類開源的大型語言模型。
最後討論架設圖形聊天界面的方法。
Ollama這款開源軟體呢,簡化了跑大型語言模型的複雜度,將Lllama.cpp變成單一執行檔,使其能夠執行多款語言模型,並透過REST API提供給外部程式串接的能力。
Ollama的大型語言模型執行的時候完全是跑在本機運算的,資料不會回傳給第三方。
不過Ollama主要是設計給Linux、Windows、macOS電腦跑的,Android手機得透過Termux執行。
目前Ollama只支援CUDA和ROCm加速技術,Termux環境難以使用手機的GPU加速,所以這裡都是用CPU硬算的,語言模型生成回應的速度非常慢,可能只夠跑3B以下資料量的模型。
或者,你可以改將Ollama部署到自己的電腦,再用手機遠端存取WebUI,這是比較實際的作法。手機與網頁互動,將運算交給遠端伺服器,使用體驗較佳。
1. 系統需求#
- 10GB以上儲存空間,大型語言最小的3B起碼都4GB起跳
- 8GB以上RAM,大型語言模型執行非常吃RAM,這只是最低需求。
- SD 865以上處理器
2. 安裝Ollama#
雖然Ollama有ARM64的版本,但那是給樹莓派用的,Termux環境下需要手動編譯。且Termux沒有Systemd,故我們需要手動啟動服務。
安裝Termux
安裝Go語言的依賴套件
pkg install git cmake golang clang
- 參考官方文件,編譯Ollama
git clone https://github.com/ollama/ollama.git
cd ollama
go generate ./...
go build .
- 將Ollama安裝到
$PREFIX/bin
cp ollama $PREFIX/bin
cd
rm -r ollama
3. 終端機使用Ollama#
詳細使用方法參考Ollama教學
我以Mistral-7B為例子:
指示Ollama下載Mistral 7B,模型會儲存到~/.ollama/models
ollama serve &
ollama pull mistral:7b-instruct
試著在終端機跑跑看,能不能進入對話:
ollama run mistral:7b-instruct
我另外使用Ollama的Modelfile的功能,把聯發科的Breeze-7B-Instruct中文模型轉到手機上跑。
4. 使用圖形界面APP#
Open WebUI目前無法在Termux執行。
有很多Android APP相容Ollama API,例如JHubi1/ollama-app或者Mobile-Artificial-Intelligence/Maid當作前端。下面以Maid為例。
- 在Termux啟動Ollama服務
ollama serve &
下載Maid APK
點選Settings,輸入
http://127.0.0.1:114314
,連線到Ollama服務選取要使用的模型,就可以聊天了。