xiaomi-14-llm.png
huawei-p20-llm.png

安装 Termux, 手机输命令太麻烦了所以我建议用 adb shell 打开 Termux:

# adb shell
run-as com.termux /data/data/com.termux/files/usr/bin/bash \
    -lic 'export PATH=/data/data/com.termux/files/usr/bin:$PATH; \
    export LD_PRELOAD=/data/data/com.termux/files/usr/lib/libtermux-exec.so; \
    export PREFIX=/data/data/com.termux/files/usr; \
    export HOME=/data/data/com.termux/files/home; bash'

安装环境:

# bash
apt install --no-install-recommends tur-repo x11-repo
apt install --no-install-recommends \
    build-essential cmake ndk-multilib ndk-sysroot \
    git libc++ libandroid-spawn libandroid-shmem

# for vulkan
apt install --no-install-recommends \
    vkmark mesa-utils vulkan-tools vulkan-loader-generic shaderc \
    libvulkan1 libvulkan-dev libassimp-dev libdrm libdrm-dev

# for Adreno GPU
apt install --no-install-recommends mesa-vulkan-icd-freedreno

# for Mali GPU
dpkg -i mesa-vulkan-icd-wrapper_24.3.1-3_aarch64.deb

# other gpus / llvmpipe
apt install --no-install-recommends mesa-vulkan-drivers

# system original driver
apt install --no-install-recommends vulkan-loader-android

mesa-vulkan-icd-wrapper_24.3.1-3_aarch64.deb

若需要 vulkan 加速, GPU 需要支持 16 位存储缓冲, 且计算共享内存不小于 32768:

# vulkaninfo 2>/dev/null | grep "maxComputeSharedMemorySize\|storageBuffer16BitAccess"
        maxComputeSharedMemorySize         = 32768
        storageBuffer16BitAccess           = true

编译 llama.cpp, 使用版本 b7936:

git clone -b b7936 --depth=1 https://github.com/ggml-org/llama.cpp.git
# for vulkan
git clone --depth=1 https://github.com/KhronosGroup/Vulkan-Headers.git

export PREFIX=/data/data/com.termux/files/usr
export LIBRARY_PATH=/data/data/com.termux/files/usr/opt/ndk-multilib/aarch64-linux-android/lib
cd llama.cpp

cmake -B build \
# for vulkan
#   -DGGML_VULKAN=ON -DVulkan_LIBRARY=/system/lib64/libvulkan.so \
#   -DVulkan_INCLUDE_DIR="../Vulkan-Headers/include" \
#   -DGGML_CUDA_FA_ALL_QUANTS=ON -DGGML_CUDA_ENABLE_UNIFIED_MEMORY=ON \
    -DLLAMA_CURL=OFF -DBUILD_SHARED_LIBS=OFF

cmake --build build --config Release -j $(nproc) \
    --target llama-server llama-cli llama-mtmd-cli llama-bench

也可以使用我编译好的: llama.cpp-b7936-vulkan-android.tar.xz

添加新评论