Android上实现MNN框架的加载离线语言模型LLM

下载MNN开源框架

  • git clone https://github.com/alibaba/MNN.git
    -下载下来以后进入project/android项目。新建一个build的文件夹。
  • 编译MNN需要自己配置好NDK环境和cmake环境变量。
 cmake ../../../
 -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake
 -DCMAKE_BUILD_TYPE=Release
-DANDROID_ABI="arm64-v8a"
-DANDROID_STL=c++_static
-DMNN_USE_LOGCAT=false
-DMNN_BUILD_BENCHMARK=ON
-DMNN_USE_SSE=OFF
-DMNN_SUPPORT_BF16=OFF
-DMNN_BUILD_TEST=ON
-DANDROID_NATIVE_API_LEVEL=android-21
-DMNN_BUILD_FOR_ANDROID_COMMAND=true
-DNATIVE_LIBRARY_OUTPUT=. -DNATIVE_INCLUDE_OUTPUT=. $1 $2 $3 $4 $5 $6 $7
make -j4

-编译完成以后得到


image.png
  • libMNN_Express.so和libMNN.so主要用到这两个产物。

然后下载MNN-LLM框架

  • https://github.com/wangzhaode/mnn-llm.git
  • 然后把MNN框架的两个so文件(libMNN_Express.so和libMNN.so)拷贝到libs文件夹下面下面去。
  • 把MNN框架下面的include/MNN文件加载拷贝到mnn-llm的include下面。


    image.png
  • 编译build MNN-llmandroid部分。
mkdir android_build
cd android_build
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
-DANDROID_STL=c++_static \
-DANDROID_ABI="arm64-v8a" \
-DANDROID_NATIVE_API_LEVEL=android-21  \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_FOR_ANDROID=ON
make -j4

-用Android studio打开MNN-llm 下面的android工程,把libMNN_Express.so和libMNN.so/拷贝到v8下面。
-下载qwen-1.8b模型文件,在adored工程目录下面创建assert文件,把模型文件拷贝进去。
运行到手机上去。


image.png

其他类型的模型文件变换成移动端框架可以加载MNN文件可以使用llm-export项目进行分层到处,在加载的时候很会速度快一下。LLM-Export可以参考,./MNNConvert

由于android端关于LLM信息和生态很少,需要摸索去研究。可以一起沟通交流。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容