AI 文摘

LLM端侧部署系列如何将阿里千问大模型Qwen部署到手机上?环境安装及其配置(上篇)





作者: AINLP 来源: AINLP

  • 引言

  • 下载待部署模型

  • 安装minconda

  • 安装tvm和mlc-llm

  • 安装 JDK

  • 安装 Android SDK

  • 下载mlc-llm仓库

  • 设置环境变量

  • 安装Rust

1. 引言

梨花风起正清明,游子寻春半出城。

今天这篇小作文主要介绍LLM端侧部署系列 | 如何将阿里千问大模型Qwen部署到手机上?实战演示(下篇)前置工作 ,即Qwen部署到手机上的环境配置细节。

如需与小编进一步交流,可以在公众号上添加小编微信好友。

2.下载待部署模型

https://huggingface.co/Qwen/Qwen1.5-1.8B-Chat 下载到本地:

/share/model_zoo/LLM/Qwen/Qwen1.5-1.8B-Chat  

3. 安装minconda

在下载好minconda的安装脚本之后,使用以下命令进行无交互安装:

bash Miniconda3-latest-Linux-x86_64.sh -b -p /home/your_user_name/opt/miniconda  

将 bin 目录添加到PATH,

/home/your_user_name/opt/miniconda/bin  

为实现长期可以使用conda命令具体实现,在/etc/profile 文件末尾添加:

export PATH="/home/your_user_name/opt/miniconda/bin:$PATH"  

在终端运行:source /etc/profile 。

创建虚拟环境:

conda env remove -n mlc-chat-env-py311  
  
conda create -n mlc-chat-env-py311 -c conda-forge "llvmdev>=15" "cmake>=3.24" git python=3.11  
  
# enter the build environment  
conda deactivate  
conda activate mlc-chat-env-py311  

4. 安装tvm和mlc-llm

前往 https://mlc.ai/wheels 下载安装预构建的安装文件, 本文实验采用的版本分别是:

mlc_ai_nightly_cu122-0.15.dev228  
mlc_llm_nightly_cu122-0.1.dev1072  

具体下载链接:

https://github.com/mlc-ai/package/releases/download/v0.9.dev0/mlc_ai_nightly_cu122-0.15.dev228-cp311-cp311-manylinux_2_28_x86_64.whl  
  
https://github.com/mlc-ai/package/releases/download/v0.9.dev0/mlc_llm_nightly_cu122-0.1.dev1072-cp311-cp311-manylinux_2_28_x86_64.whl  

安装命令:

pip3 install mlc_ai_nightly_cu122-0.15.dev228-cp311-cp311-manylinux_2_28_x86_64.whl -i https://mirrors.cloud.tencent.com/pypi/simple  
  
pip3 install mlc_llm_nightly_cu122-0.1.dev1072-cp311-cp311-manylinux_2_28_x86_64.whl -i https://mirrors.cloud.tencent.com/pypi/simple  

5. 安装 JDK

在目录/share_tools 中执行以下命令:

# 下载 JDK   
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz  
tar -zxvf jdk-17_linux-x64_bin.tar.gz  
export JAVA_HOME=/share_tools/jdk-17.0.10/  

6. 安装 Android SDK

先安装 Android SDK,直接在借助 Android SDK 安装 NDK。下载 Android SDK 命令行版,在目录/share_tools 执行以下命令:

wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip  
unzip -d android-sdk commandlinetools-linux-11076708_latest.zip  

此时,Android SDK即可为/share_tools/android-sdk/cmdline-tools 。

查看可下载的sdk版本:

cd android-sdk/cmdline-tools/bin  
./sdkmanager --sdk_root=/share_tools/android-sdk/ --list  

按需下载sdk版本:

./sdkmanager --sdk_root=/share_tools/android-sdk/ "platforms;android-28"  
./sdkmanager --sdk_root=/share_tools/android-sdk/ "platform-tools"  
./sdkmanager --sdk_root=/share_tools/android-sdk/ "build-tools;28.0.3"  
./sdkmanager --sdk_root=/share_tools/android-sdk/ "ndk;25.2.9519653"  

查看安装之后的结果:ls -lrth /share_tools/android-sdk/ndk

drwxr-xr-x 13 root root 4.0K Mar 29 12:35 21.3.6528147  
drwxr-xr-x 11 root root 4.0K Apr  1 01:58 25.2.9519653  

后续使用25.2.9519653 这个版本,所以将其添加到系统环境变量中:export ANDROID_NDK=/share_tools/android-sdk/ndk/25.2.9519653 。

此外,还需要设置NDK的clang compilerexport TVM_NDK_CC=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang

以上,已经配置了:

export ANDROID_NDK=...  # Android NDK toolchain  
export TVM_NDK_CC=...   # Android NDK clang  
export JAVA_HOME=...    # Java  

那么还需要配置TVM_HOME 。由于TVM Unity runtime 置于MLC LLM项目中的 3rdparty/tvm。因此,可以不用额外安装,设置以下环境变量:

export TVM_HOME=/home/your_user_name/Repository/LLM/mlc-llm/3rdparty/tvm/  

设置TVM_HOME 之后,可以通过$TVM_HOME/include/tvm/runtime 访问headers。

7. 下载mlc-llm仓库

执行以下命令下载mlc-llm仓库:

git clone --recursive https://github.com/mlc-ai/mlc-llm.git  

上述命令会同时clone该目标仓库内的子模块,如果出现网络原因导致git clone 目标仓库报错,则可以在系统层面将https://github.com/ 统一改成GitHub的镜像网站。以下假设https://github-proxy.com/ 是其镜像网站,具体实现如下:

git config --global url."https://github-proxy.com/".insteadOf "https://github.com/"  

然后在目录/home/Repository/LLM/ 下载mlc-llm仓库:

git clone --recursive https://github.com/mlc-ai/mlc-llm/  
  
cd ./mlc-llm/  

8. 设置环境变量

在配置文件/etc/profile 中新增以下:

export JAVA_HOME=/share_tools/jdk-17.0.10/  
  
# 设置 Android SDK 路径  
export ANDROID_HOME=/share_tools/android-sdk  
  
export ANDROID_NDK=/share_tools/android-sdk/ndk/25.2.9519653/  
  
export TVM_NDK_CC=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang  
  
export TVM_HOME=/home/Repository/LLM/mlc-llm/3rdparty/tvm/  
  
export PATH="$JAVA_HOME/bin:$PATH"  

9. 安装Rust

在Android上交叉编译HuggingFace tokenizers需要安装Rust,并确保$PATH 中有rustc、 cargo和 rustup`。

下载&安装:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh  

打印信息如下:

info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'  
  
  stable-x86_64-unknown-linux-gnu installed - rustc 1.75.0 (82e1608df 2023-12-21)  
  
  
Rust is installed now. Great!  
  
To get started you may need to restart your current shell.  
This would reload your PATH environment variable to include  
Cargo's bin directory ($HOME/.cargo/bin).  
  
To configure your current shell, run:  
source "$HOME/.cargo/env"  

配置:

source ~/.bashrc  

至此,完成rustc 、cargo 、和rustup 命令安装:

/home/your_user_name/.cargo/bin/rustc  
/home/your_user_name/.cargo/bin/cargo  
/home/your_user_name/.cargo/bin/rustup  

支持,完成 LLM端侧部署系列 | 如何将阿里千问大模型Qwen部署到手机上?实战演示(下篇) 所需环境配置,进入 mlc-llm 目录,跟着实战篇中的步骤一步步操作即可。

进技术交流群请添加AINLP小助手微信(id: ainlp2)

请备注具体方向+所用到的相关技术点

![](https://api.allorigins.win/raw?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSJADkmZ2IX6Z23znAibuEevotDMq9iaMxiapK7jfMibiauGFkycicAJEs6x5U9SGyDJZ0S1tRed9TPNUUDQ/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp)

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括LLM、预训练模型、自动生成、文本摘要、智能问答、聊天机器人、机器翻译、知识图谱、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP小助手微信(id:ainlp2),备注工作/研究方向+加群目的。

  


![](https://api.allorigins.win/raw?url=https://mmbiz.qpic.cn/mmbiz_jpg/nW2ZPfuYqSKABHCqVVQkVYPrM4XY1vsd0iaeuXzyJnoFc8cibd5mYb4wdA3WMQtiaPVmr0XLZHMuVibqWncibpnTSnQ/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp)

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具