赞
踩
梨花风起正清明,游子寻春半出城。
小伙伴们好,我是公众号《小窗幽记机器学习》的小编:卖青团的小女孩,紧接前文:
LLM端侧部署系列 | 如何将阿里千问大模型Qwen部署到手机上?实战演示(下篇)
今天这篇小作文主要介绍LLM端侧部署系列 | 如何将阿里千问大模型Qwen部署到手机上?实战演示(下篇)的前置工作,即Qwen部署到手机上的环境配置细节。
如需与小编进一步交流,可以在公众号上添加小编微信好友。
将 https://huggingface.co/Qwen/Qwen1.5-1.8B-Chat 下载到本地:
/share/model_zoo/LLM/Qwen/Qwen1.5-1.8B-Chat
在下载好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
前往 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
在目录/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/
先安装 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。
执行以下命令下载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/
-
在配置文件/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"
在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 目录,跟着实战篇中的步骤一步步操作即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。