LLM大模型教程:LLM大模型推理加速: mlc-llm 教程,将qwen-7b 部署到手机上

MLC-LLM 是一种高性能通用部署解决方案,允许使用具有编译器加速功能的本机 API 来本机部署任何大型语言模型。该项目的使命是让每个人都能利用机器学习编译技术在每个人的设备上本地开发、优化和部署人工智能模型。

AMD GPUNVIDIA GPUApple GPUIntel GPU
Linux / Win✅ Vulkan, ROCm✅ Vulkan, CUDAN/A✅ Vulkan
macOS✅ Metal (dGPU)N/A✅ Metal✅ Metal (iGPU)
Web Browser✅ WebGPU and WASM
iOS / iPadOS✅ Metal on Apple A-series GPU
Android✅ OpenCL on Adreno GPU✅ OpenCL on Mali GPU

环境安装

conda create --name mlc python=3.11
conda activate mlc
​
python3 -m pip install --pre -U -f https://mlc.ai/wheels mlc-chat-nightly-cu121 mlc-ai-nightly-cu121
python -c "import mlc_chat; print(mlc_chat)"

模型转换

模型转换分为两步:

  1. 转换模型权重
  2. 生成mlc chat 的配置

下面以qwen模型为例,暂时不支持qwen2

转换模型权重
mlc_chat convert_weight /home/chuan/models/qwen/Qwen-7B-Chat \
    --quantization q4f16_1 \
    -o /home/chuan/models/qwen/Qwen-7B-Chat/mlc

参数列表

–CONFIG

It can be one of the following:

  1. Path to a HuggingFace model directory that contains a config.json or
  2. Path to config.json in HuggingFace format, or
  3. The name of a pre-defined model architecture.

–quantization QUANTIZATION_MODE

可选项 q0f16, q0f32, q3f16_1, q4f16_1, q4f32_1, and q4f16_awq.推荐使用q4f16_1

–model-type MODEL_TYPE

Model architecture such as “llama”. If not set, it is inferred from config.json

–device DEVICE

The device used to do quantization such as “cuda” or “cuda:0”. Will detect from local available GPUs if not specified.

–source SOURCE

The path to original model weight, infer from config if missing.

–source-format SOURCE_FORMAT

The format of source model weight, infer from config if missing.

–output OUTPUT

The output directory to save the quantized model weight. Will create params_shard_*.bin and ndarray-cache.json in this directory.

生成mlc chat 的配置
mlc_chat gen_config /home/chuan/models/qwen/Qwen-7B-Chat \
    --quantization q4f16_1 --conv-template chatml \
    -o /home/chuan/models/qwen/Qwen-7B-Chat/mlc

注意conv-template的值参照github.com/mlc-ai/mlc-…

如果不包含你的模型也可以自定义,但是要从源代码重新编译mlc

gen_config的参数列表

–CONFIG

It can be one of the following:

  1. Path to a HuggingFace model directory that contains a config.json or
  2. Path to config.json in HuggingFace format, or
  3. The name of a pre-defined model architecture.

–quantization QUANTIZATION_MODE

–model-type MODEL_TYPE

–conv-template CONV_TEMPLATE

–context-window-size CONTEXT_WINDOW_SIZE

最大句子长度

–output OUTPUT

其他不重要的参数没有列出来

运行mlc

from mlc_chat import ChatModule
​
cm = ChatModule(model="/home/chuan/models/qwen/Qwen1___5-7B-Chat/mlc")
print(cm.generate("hello"))

把qwen模型编译成android app

我已经编译好了一个版本的app, 欢迎下载试用,需要科学上网

github.com/night-is-yo…

  1. 首先安装android studio,下载ndk、cmake,如图所示:

2024-02-20_22-54.png

  1. 设置环境变量
export ANDROID_NDK=/home/chuan/Android/Sdk/ndk/26.2.11394342
export TVM_NDK_CC=/home/chuan/Android/Sdk/ndk/26.2.11394342/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android34-clang
export TVM_HOME=/home/chuan/github/mlc-llm/3rdparty/tvm
export JAVA_HOME=/home/chuan/tools/jdk-17.0.10

  1. 下载mlc ,并编译模型
git clone --recursive https://github.com/mlc-ai/mlc-llm/
cd ./mlc-llm/
MODEL_NAME=/home/chuan/models/qwen/Qwen-7B-Chat
QUANTIZATION=q4f16_1
​
mlc_chat convert_weight $MODEL_NAME --quantization $QUANTIZATION -o $MODEL_NAME/mlc
mlc_chat gen_config $MODEL_NAME --quantization $QUANTIZATION \
  --conv-template chatml --context-window-size 768 -o $MODEL_NAME/mlc
mlc_chat compile $MODEL_NAME/mlc/mlc-chat-config.json \
    --device android -o $MODEL_NAME/mlc/Qwen-7B-Chat-${QUANTIZATION}-android.tar

  1. 将模型上传到huggingface
git clone https://huggingface.co/chuan-niy/qwen_q4f16_1
git config user.name chuan-niy
git config user.email 1500546481@qq.com
​
cd qwen_q4f16_1
cp /home/chuan/models/qwen/Qwen-7B-Chat/mlc/* ./
git add . && git commit -m "Add qwen model weights for android"
git push origin main

  1. 编译android 库
cd ./android/library
vim ./src/main/assets/app-config.json

{
  "model_list": [
    {
      "model_url": "https://huggingface.co/chuan-niy/qwen_q4f16_1",
      "model_lib": "qwen_q4f16_1",
      "estimated_vram_bytes": 4348727787,
      "model_id": "Qwen-7B-Chat-hf-q4f16_1"
    }
  ],
  "model_lib_path_for_prepare_libs": {
    "Qwen-7B-Chat-hf-q4f16_1": "/home/chuan/models/qwen/Qwen-7B-Chat/mlc/Qwen-7B-Chat-q4f16_1-android.tar"
  }
}


在CMakeLists.txt中添加以下信息

vi CMakeLists.txt

set(JAVA_AWT_LIBRARY "/home/chuan/tools/jdk-17.0.10/include/linux")
set(JAVA_JVM_LIBRARY "/home/chuan/tools/jdk-17.0.10/include/linux")
set(JAVA_INCLUDE_PATH "/home/chuan/tools/jdk-17.0.10/include")
set(JAVA_INCLUDE_PATH2 "/home/chuan/tools/jdk-17.0.10/include/linux")
set(JAVA_AWT_INCLUDE_PATH "/home/chuan/tools/jdk-17.0.10/include")


需要修改#ifdef TVM4J_ANDROID代码的地方

vi mlc-llm/3rdparty/tvm/jvm/native/src/main/native/org_apache_tvm_native_c_api.cc

#ifdef TVM4J_ANDROID
    _jvm->AttachCurrentThread(reinterpret_cast<void**>(&env), nullptr);
#else
    _jvm->AttachCurrentThread(reinterpret_cast<void**>(&env), nullptr);


最后运行编译

./prepare_libs.sh


  1. 接着需要用android studio 打开android项目,连接手机调试,然后运行

android studio run.png

在手机上运行结果如下:

app.jpeg
在这里插入图片描述

大模型&AI产品经理如何学习

求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。

1.学习路线图

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

在这里插入图片描述

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方图片前往获取

3.技术文档和电子书

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
在这里插入图片描述

4.LLM面试题和面经合集

这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

### 如何在 Ubuntu 上使用或部署 LLM 大型语言模型 #### 准备工作 为了确保顺利部署,在开始之前需确认已安装必要的依赖项并配置好开发环境。对于Ubuntu系统而言,推荐采用最新的稳定版操作系统,并保持系统的更新。 #### 安装 GPU 加速组件 如果硬件条件允许,建议启用GPU加速以提升处理速度和效率。这通常涉及到NVIDIA驱动程序以及CUDA工具包的安装[^1]。通过利用图形处理器的强大计算能力,能够显著加快训练过程中的矩阵运算和其他密集型任务执行时间。 #### 设置 IDE 和编辑器 Visual Studio Code 是一个非常受欢迎的选择作为集成开发环境(IDE),它不仅限于Web应用开发,同样适用于机器学习项目。可以通过插件市场获取针对 Python 的增强功能,比如 IntelliSense 智能感知、调试支持等特性来辅助编写代码[^2]。适当调整 VSCode 用户界面布局和个人偏好设定也有助于提高工作效率。 #### 解决常见错误提示 遇到类似于 `opt_smooth_exporter.py` 文件找不到模块引用的问题时,可能是因为路径设置不正确或者是缺少某些必需库文件所致。按照官方GitHub仓库说明文档指示操作——即从指定位置下载所需资源并将它们放置到相应目录下即可解决此类问题[^3]。 #### 构建 Android 应用程序接口(API) 对于希望将本地运行的大规模预训练模型移植至移动设备上的开发者来说,mlc-llm 提供了一套完整的解决方案。遵循其提供的指南完成源码克隆之后,还需同步初始化子模块以便获得全部依赖关系;随后进入android工程文件夹继续后续编译流程[^4]。 #### 版本控制与兼容性考量 考虑到不同软件之间可能存在版本差异带来的潜在冲突风险,在实际部署前务必仔细核对所使用的各个组件的具体发行号。例如Ollama v0.4.7Qwen 2.5 已被验证可以在特定内核版本之上良好协作[^5]。此外,还应关注目标平台架构(如x86_64)及其对应的编译选项。 ```bash # 更新系统包列表并升级现有软件包 sudo apt-get update && sudo apt-get upgrade -y # 添加 NVIDIA PPA 并安装 CUDA Toolkit 及 cuDNN SDK distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ && curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/7fa2af80.pub | sudo gpg --dearmor -o /usr/share/keyrings/nvidia.gpg \ && echo "deb [signed-by=/usr/share/keyrings/nvidia.gpg] https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64 /" | sudo tee /etc/apt/sources.list.d/cuda.list \ && sudo apt-get update && sudo apt-get install cuda-drivers cuda-toolkit -y # 安装 Anaconda 或 Miniconda 来管理 Python 虚拟环境 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh \ && bash ~/miniconda.sh -b -p $HOME/miniconda \ && rm -rf ~/miniconda.sh \ && source "$HOME/miniconda/etc/profile.d/conda.sh" # 创建新的 conda 环境用于加载 LLMs conda create --name llms python=3.9 -y \ && conda activate llms \ && pip install torch torchvision torchaudio cudatoolkit=11.3 -f https://download.pytorch.org/whl/torch_stable.html ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值