llama.cpp
llama.cpp
在 Android 设备上运行大型语言模型的优势
在深入技术细节之前,让我们先探讨一下在 Android 设备上本地运行 AI 模型的原因。
首先,这可以让你完全掌控你的数据。当你与基于云的 AI 助手互动时,你的对话、查询甚至个人信息都会被发送到远程服务器,你对齐如何使用甚至出售给第三方公司几乎没有任何可见性和控制权。
llama.cpp
但好处还不止于此。通过运行本地人工智能,你还可以对其进行自定义。你可以亲自挑选适合你的特定需求和兴趣的人工智能模型,而不是局限于大型科技公司提供的预构建模型。或者,如果你拥有合适的硬件并且对 AI 模型经验丰富,你甚至可以自己微调模型以创建真正个性化的 AI 体验。
llama.cpp
llama.cpp
前提条件
在开始之前,请确保你的 Android 设备满足以下要求:
Android 8.0或更高版本
至少 6-8GB 内存以获得最佳性能
至少 4 核的现代骁龙或联发科 CPU
足够的存储空间用于应用程序和语言模型文件通常为 (1-8GB)
第1步:安装 F-Droid 和 Termux首先,你需要在 Android 设备上安装 F-Droid 应用程序存储库。F-Droid 是开源软件的重要来源,我们将在这里获得 Termux 终端模拟器。
前往F-Droid 网站https://f-droid.org/并按照说明安装该应用。完成后,打开 F-Droid 并搜索 Termux 并安装最新版本。
请不要使用 Google Play 商店安装 Termux,因为那里的版本已经过时了。
设置Termux 存储库(可选)如果你将 termux 存储库服务器更改为你所在的国家/地区的服务器,则在安装软件包时可以获得更快的下载速度:
termux-change-repo
如果你需要帮助,请查看Termux Wiki站点。
llama.cppllama.cppllama.cpp
pkg i clang wget git cmake
llama.cpp
git clone https://github.com/ggerganov/llama.cpp.git
但是由于github 目前不支持用户名密码下载,所以我换了一种方式,通过电脑把文件下载下来后,放入手机端
先查看一下路径:
pwd
// 把文件拷贝到手机内存 /storage/emulated/0/
cd /storage/emulated/0/
// ls 找到 llama.cpp 文件夹
// Termux 的路径 /data/data/com.termux/files/home/
// 将llama.cpp 文件拷贝到 Termux 里面
mv llama.cpp /data/data/com.termux/files/home
llama.cpp
// 把文件拷贝到手机内存 /storage/emulated/0/
cd /storage/emulated/0/
// ls 找到 android-ndk-r26b-aarch64.zip 文件夹
// Termux 的路径 /data/data/com.termux/files/home/
// 将android-ndk-r26b-aarch64.zip 文件拷贝到 Termux 里面
mv android-ndk-r26b-aarch64.zip /data/data/com.termux/files/home
unzip android-ndk-r26b-aarch64.zip
export NDK=~/android-ndk-r26b
llama.cpp
llama.cpp
cmake -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-26 -DCMAKE_C_FLAGS=-march=native ..
make
llama.cpp
llama.cpp
llama.cpp
下载必要的软件包:
apt install ocl-icd opencl-headers opencl-clhpp clinfo libopenblas
下载 CLBlast,编译并将clblast.h复制到llama.cpp文件夹:
git clone https://github.com/CNugteren/CLBlast.git
cd CLBlast
cmake .
cmake --build . --config Release
mkdir install
cmake --install . --prefix ~/CLBlast/install
cp libclblast.so* $PREFIX/lib
cp ./include/clblast.h ../llama.cpp
这里面 github 没办法下载,还得和之前 ndk 和 llama.cpp 文件下载导入手机的方式一致
llama.cpp
cp /data/data/com.termux/files/usr/include/openblas/cblas.h .
cp /data/data/com.termux/files/usr/include/openblas/openblas_config.h .
将CLBlast 构建llama.cpp:
cd ~/llama.cpp
mkdir build
cd build
cmake -DLLAMA_CLBLAST=ON -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-24 -DCMAKE_C_FLAGS=-march=native -DCLBlast_DIR=~/CLBlast/install/lib/cmake/CLBlast ..
cd ..
make
~/.bashrc
echo "export LD_LIBRARY_PATH=/vendor/lib64:$LD_LIBRARY_PATH:$PREFIX" >> ~/.bashrc
检查 GPU 是否可用于 OpenCL:
clinfo -l
如果一切正常,例如对于高通骁龙 Soc,他将显示:
Platform #0: QUALCOMM Snapdragon(TM)
`-- Device #0: QUALCOMM Adreno(TM)
第4步:下载并复制语言模型
~/llama.cpp/models
https://huggingface.co/
并搜索适合您设备可用 RAM 的 GGUF 格式模型。我建议从TinyLlama-1.1B https://huggingface.co/TheBloke/TinyLlama-1.1B-Chat-v0.3-GGUF/resolve/main/tinyllama-1.1b-chat-v0.3.Q4_K_M.gguf?download=true
开始。
下载模型文件后,使用
termux-setup-storage
llama.cpp
mv ~/storage/downloads/model_name.gguf ~/llama.cpp/models
第5步:运行llama.cpp
llama.cppllama.cpp Web
cd llama.cpp
./server -m models/[YourModelName].gguf -t [#threads]
#threads
http://localhost:8080
llama.cpp
./main -m models/[YourModelName].gguf --color -inst
结论
llama.cpp
关注我获取更多知识或者投稿