LLaMA是什麼?它是 Meta釋出的大型語言模型,Alpaca則是史丹佛大學微調後的版本。這二個模型因為資源耗用較小,且有人製作了純CPU運算的版本,不用依賴顯示卡,因此除了在個人電腦跑,也可以跑在Android手機上。
本文採用的是 antimatter15/alpaca.cpp,fork自 ggerganov/llama.cpp。
請先安裝 Termux,並解除signal 9問題。
Alpaca最少需要4GB RAM。手機RAM大於等於8GB可以直接編譯,或者用Proot跑,不過Proot會比較慢。
8GB RAM以下的手機跑Alpaca.cpp,Termux高機率閃退,因為Android常常有背景程序吃掉RAM,沒有8GB RAM是不夠跑的。
RAM小於8GB,並且有root權限的話,可以考慮用chroot掛SAWP file強行增大RAM跑Alpaca.cpp。
1. 裝置#
- 裝置:小米Pocophone F1
- Android版本:13
- 處理器:高通s845
- RAM: 6GB
2. 編譯執行alpaca.cpp#
從以下方法三擇一。
2.1. 直接在Termux跑#
- 安裝以下套件
pkg install clang wget git cmake
- 設定Android NDK
wget https://github.com/lzhiyong/termux-ndk/releases/download/ndk-r23/android-ndk-r23c-aarch64.zip
unzip android-ndk-r23c-aarch64.zip
export NDK=~/android-ndk-r23c-aarch64
- 編譯,下載模型
git clone https://github.com/rupeshs/alpaca.cpp.git
cd alpaca.cpp
mkdir build-android
cd build-android
cmake -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-23 -DCMAKE_C_FLAGS=-march=armv8.4a+dotprod ..
make -j8
wget https://huggingface.co/Sosaka/Alpaca-native-4bit-ggml/resolve/main/ggml-alpaca-7b-q4.bin
- 執行主程式
./chat
2.2. Chroot#
安裝 Chroot Ubuntu並登入
新增SWAP file,給手機增加8GB的RAM
dd if=/dev/zero of=/swapfile bs=1M count=8192 status=progress
chmod 0600 /swapfile
mkswap /swapfile
swapon /swapfile
- 安裝依賴套件,編譯,下載模型。
apt install build-essential wget
git clone https://github.com/antimatter15/alpaca.cpp
cd alpaca.cpp
make chat
wget https://huggingface.co/Sosaka/Alpaca-native-4bit-ggml/resolve/main/ggml-alpaca-7b-q4.bin
- 執行
./chat
2.3. Proot#
- 安裝 Proot Debian並登入
proot-distro login debian --shared-tmp
- 安裝依賴套件,編譯,下載模型。
apt install build-essential wget
git clone https://github.com/antimatter15/alpaca.cpp
cd alpaca.cpp
make chat
wget https://huggingface.co/Sosaka/Alpaca-native-4bit-ggml/resolve/main/ggml-alpaca-7b-q4.bin
- 執行
./chat
3. 開始對話#
執行後便是對話框,可以開始對答了。
Alpaca的用法請參考 這篇文章。譬如,我問「你可以用Termux做什麼?」對話的時候CPU會將近100%,要注意散熱。
Alpaca的回答跟Termux官網介紹的差不多呢。
用手機CPU算實在太慢了,電腦CPU大約10秒就會開始回答問題,而手機要等30秒才會開始回答,並且速度很慢。