当前位置:   article > 正文

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

qwen官网部署文档
  • 引言

  • 下载待部署模型

  • 安装minconda

  • 安装tvm和mlc-llm

  • 安装 JDK

  • 安装 Android SDK

  • 下载mlc-llm仓库

  • 设置环境变量

  • 安装Rust

1. 引言

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

小伙伴们好,我是公众号《小窗幽记机器学习》的小编:卖青团的小女孩,紧接前文:

LLM端侧部署系列 | 如何将阿里千问大模型Qwen部署到手机上?实战演示(下篇)

今天这篇小作文主要介绍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

创建虚拟环境:

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

4. 安装tvm和mlc-llm

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

  1. mlc_ai_nightly_cu122-0.15.dev228
  2. mlc_llm_nightly_cu122-0.1.dev1072

具体下载链接:

  1. 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
  2. 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

安装命令:

  1. 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
  2. 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中执行以下命令:

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

6. 安装 Android SDK

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

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

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

查看可下载的sdk版本:

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

按需下载sdk版本:

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

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

  1. drwxr-xr-x 13 root root 4.0K Mar 29 12:35 21.3.6528147
  2. 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

以上,已经配置了:

  1. export ANDROID_NDK=...  # Android NDK toolchain
  2. export TVM_NDK_CC=...   # Android NDK clang
  3. 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仓库:

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

8. 设置环境变量

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

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

9. 安装Rust

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

下载&安装:

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

打印信息如下:

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

配置:

source ~/.bashrc

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

  1. /home/your_user_name/.cargo/bin/rustc
  2. /home/your_user_name/.cargo/bin/cargo
  3. /home/your_user_name/.cargo/bin/rustup

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

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/908437
推荐阅读
相关标签
  

闽ICP备14008679号