快轉到主要內容

Android手機用Termux Ollama跑任意大型語言模型

開源AI人工智慧應用 大型語言模型 Large Language Model Android Termux
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

在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,故我們需要手動啟動服務。

  1. 安裝 Termux

  2. 安裝依賴套件

pkg install git cmake golang clang
  1. 參考 官方文件,編譯Ollama
git clone https://github.com/ollama/ollama.git

cd ollama

go generate ./...

go build .
  1. 將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目前跑不起來。

  1. 在Termux啟動Ollama服務
ollama serve &
  1. 下載 Maid APK

  2. 點選Settings,輸入http://127.0.0.1:114314,連線到Ollama服務

  3. 選取要使用的模型,就可以聊天了。

相關文章

Android手機Termux跑Alpaca.cpp (LLaMA) 大型語言模型
開源AI人工智慧應用 大型語言模型 LLaMA AI Large Language Model Termux
SillyTavern 設定大型語言模型服務
開源AI人工智慧應用 大型語言模型 Large Language Model LLaMA AI ChatGPT
離線版ChatGPT安裝方法!在個人電腦跑AI大型語言模型的開源軟體列表
開源AI人工智慧應用 大型語言模型 Self-hosting自架 Large Language Model ChatGPT LLaMA AI Free Software

留言板

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

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

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。