在Android手機跑Ollama服務,執行LLaMA、Gemini、Mistral這類開源的大型語言模型。
最後討論架設圖形聊天界面的方法。
Ollama這款開源軟體呢簡化了跑大型語言模型的複雜度,將Lllama.cpp變成單一執行檔,使其能夠執行多款語言模型,並透過REST API提供給外部程式串接的能力。
Ollama的大型語言模型執行的時候完全是跑在本機運算的,資料不會回傳給第三方。
不過Ollama主要是設計給Linux、Windows、macOS電腦跑的,想當然爾,目前Termux環境難以使用手機的GPU,再加上Ollama只支援CUDA和ROCm加速技術,所以這裡都是用CPU硬算的,語言模型生成回應的速度非常慢。
未來llama.cpp加入Vulkan支援後,或許Termux就靠VirGL用Vulkan加速。
如果你想使用專為行動平台GPU優化的大型語言模型軟體的話,請使用MLC LLM或MediaPipe。
或者,你可以 將Ollama部署到你自己的電腦,再用手機遠端存取,這是比較實際的作法。
1. 系統需求#
- 10GB以上儲存空間(大型語言最小的7B起碼都4GB起跳)
- 8GB以上RAM(大型語言模型執行非常吃RAM,這只是最低需求)
- SD 865以上處理器
2. 安裝Ollama#
雖然Ollama有ARM64的建置,但那是給樹莓派用的,Termux環境下需要手動編譯。且Termux沒有Systemd,故我們需要手動啟動服務。
安裝 Termux
安裝依賴套件
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. 使用Maid APP做圖形界面#
有很多Android APP相容Ollama API,我們就用Maid (Mobile Artificial Intelligence Distribution) 當作前端吧。
Open WebUI目前跑不起來。
- 在Termux啟動Ollama服務
ollama serve &
下載 Maid APK
點選Settings,輸入
http://127.0.0.1:114314
,連線到Ollama服務選取要使用的模型,就可以聊天了。