Android上實(shí)現(xiàn)MNN框架的加載離線語(yǔ)言模型LLM

下載MNN開(kāi)源框架

  • git clone https://github.com/alibaba/MNN.git
    -下載下來(lái)以后進(jìn)入project/android項(xiàng)目。新建一個(gè)build的文件夾。
  • 編譯MNN需要自己配置好NDK環(huán)境和cmake環(huán)境變量。
 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主要用到這兩個(gè)產(chǎn)物。

然后下載MNN-LLM框架

  • https://github.com/wangzhaode/mnn-llm.git
  • 然后把MNN框架的兩個(gè)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打開(kāi)MNN-llm 下面的android工程,把libMNN_Express.so和libMNN.so/拷貝到v8下面。
-下載qwen-1.8b模型文件,在adored工程目錄下面創(chuàng)建assert文件,把模型文件拷貝進(jìn)去。
運(yùn)行到手機(jī)上去。


image.png

其他類(lèi)型的模型文件變換成移動(dòng)端框架可以加載MNN文件可以使用llm-export項(xiàng)目進(jìn)行分層到處,在加載的時(shí)候很會(huì)速度快一下。LLM-Export可以參考,./MNNConvert

由于android端關(guān)于LLM信息和生態(tài)很少,需要摸索去研究。可以一起溝通交流。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容