遥遥领先!手把手带你用国产香橙派部署清华AI语言模型,比肩GPT,树莓派做得到吗?

news2024/11/25 5:40:51

感谢 @顾子韵 ,Tass及其他朋友的帮助,缺少他们的帮助无法完成该教程。感兴趣的朋友私聊我或他进群一起学习。

省流中文版本

b站手把手教程,小伙伴们可以直接对着视频进行实践:

1.cd /root 来到root目录
2.apt update && apt upgrade -y && apt install cmake -y更新软件包,并安装cmake
3.export ALL_PROXY=socks5://<hostname>:<port> 设置代理(自行准备代理)
4.wget -e https_proxy=<hostname>:<port> https://github.com/conda-forge/miniforge/releases/download/23.3.1-1/Miniforge3-Linux-aarch64.sh 下载miniforge
5.sudo bash Miniforge3-Linux-aarch64.sh
6.安装miniconda步骤,不停按空格。(具体可以在网上搜索conda安装步骤,步骤差不太多)
7.source ~/.bashrc 激活一下conda的python环境
8.wget -e https_proxy=<hostname>:<port> https://github.com/llvm/llvm-project/releases/download/llvmorg-17.0.2/clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz 下载llvm
9.sudo tar -xvf clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz
10.git clone --recursive https://github.com/mlc-ai/relax.git tvm_unity && cd tvm_unity/
11.mkdir -p build && cd build
12.cp ../cmake/config.cmake .
13.使用vim在config.cmake文件中修改下面几项:
set(CMAKE_BUILD_TYPE RelWithDebInfo) #这一项在文件中没有,需要添加
set(USE_OPENCL ON) #这一项在文件中可以找到,需要修改
set(HIDE_PRIVATE_SYMBOLS ON) #这一项在文件中没有,需要添加
set(USE_LLVM /root/clang+llvm-17.0.2-aarch64-linux-gnu/bin/llvm-config) #这一项在文件中可以找到,需要修改
14.cmake ..
15.make -j8 开始编译tvm
16.cd ../python
17.pip3 install --user .
18.使用vim在/root/.bashrc文件最下面添加环境变量:export PATH="$PATH:/root/.local/bin"
19.source ~/.bashrc 激活环境变量
20.tvmc 测试tvm是否正常安装成功
21.git clone --recursive https://github.com/mlc-ai/mlc-llm.git && cd mlc-llm
22.pip3 install --user .
23.python3 -m mlc_llm.build –help
24.mkdir -p dist/models && cd dist/models
25.git lfs install && git clone https://huggingface.co/THUDM/chatglm2-6b-32k
26.vim chatglm2-6b-32k/config.json
27.添加这一项"vocab_size": 65024
28.cd ../..
接下来需要先按照https://llm.mlc.ai/docs/install/gpu.html#orange-pi-5-rk3588-based-sbc内的步骤安装OpenCL驱动,然后接着下面的步骤。
29.python3 -m mlc_llm.build --model chatglm2-6b-32k --target opencl --max-seq-len 32768 --quantization q8f16_1 该步骤需要在/root/mlc-llm目录下进行
30.curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 安装rust
31.设置rust环境变量,即在/root/.bashrc文件最下面添加:export PATH="$PATH:/root/.cargo/bin"
32.mkdir -p build && cd build 该命令需要在/root/mlc-llm目录下运行
33.python3 ../cmake/gen_cmake_config.py
34.cmake .. && cmake --build . --parallel $(nproc) && cd ..
35.ls -l ./build/
36../build/mlc_chat_cli –help
37../build/mlc_chat_cli --model chatglm2-6b-32k-q8f16_1 --device opencl 这里的命令在/root/mlc-llm中运行,注意前面的"."是一个!

Prepare

  1. RK3588 device (OrangePi 5 Plus 16GB, Radxa Rock 5B 16GB, Nanopc T6 16GB)
  2. LLVM
  3. TVM
  4. OpenCL
  5. MLC-LLM
  6. Python 3.10 or higher (with pip)
  7. Models you want to compile
  8. Skills to access Github and Huggingface

You can follow this instruction to install OpenCL.

TVM

Install minimal pre-requisites.

sudo apt-get update
sudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev

LLVM

wget https://github.com/llvm/llvm-project/releases/download/llvmorg-16.0.4/clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz

tar xvf clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz

TVM

There are 2 TVM. Please do not use the one from:
https://tvm.apache.org/ OR https://github.com/apache/tvm/
Because with this repository, we can’t import tvm.relax in Python. You should download it from mlc-ai/relax.git

Download tvm from Github.

# clone from GitHub
git clone --recursive https://github.com/mlc-ai/relax.git tvm_unity && cd tvm_unity/
# create build directory
mkdir -p build && cd build
# generate build configuration
cp ../cmake/config.cmake .

Use vim or whatever you want to edit build/config.cmake, append these arguments to this file.

set(CMAKE_BUILD_TYPE RelWithDebInfo)
set(USE_OPENCL ON)
set(HIDE_PRIVATE_SYMBOLS ON)

# You must replace <LLVM_PATH> to your llvm location.
set(USE_LLVM <LLVM_PATH>/clang+llvm-16.0.4-aarch64-linux-gnu/bin/llvm-config)

Then compile it. It takes about 20 minutes.

cmake ..
make -j4

After all. Install tvm Python Package.

cd ../python
pip3 install --user .

If you want to move tvm to anywhere, you must reinstall this python package.

Verify Installation, you will see help message if you successfully install this package.

tvmc

MLC-LLM

Install Rust enviroment.

sudo apt-get update
sudo apt-get install -y rustc cargo

Return to top folder, and download mlc-llm from Github, then install the Python package.

# clone mlc-llm from GitHub
git clone --recursive https://github.com/mlc-ai/mlc-llm.git && cd mlc-llm
cd mlc-llm
pip3 install --user .

Verify Installation, you will see help message if you successfully install this package.

python3 -m mlc_llm.build --help

Compile Model

I use ChatGLM2-6B here for example. In mlc-llm folder, download the model.

mkdir -p dist/models && cd dist/models

# 11GB space used.
git lfs install
git clone https://huggingface.co/THUDM/chatglm2-6b

Add the vocab_size arguments to model config.json

vim chatglm2-6b/config.json
{
   ...,
  "vocab_size": 65024
}

Then compile it inmlc-llm folder.

cd ../..
python3 -m mlc_llm.build --model chatglm2-6b --target opencl --max-seq-len 8192 --quantization q4f16_1

After about 5 minutes, you will see dist/chatglm2-6b-q4f16_1 folder. In this folder, you will see 3 files:

chatglm2-6b-q4f16_1-opencl.so  mod_cache_before_build.pkl  params

chatglm2-6b-q4f16_1-opencl.so is the final product.

Attention
  1. You can change quantization to different option such as: autogptq_llama_q4f16_0, autogptq_llama_q4f16_1, q0f16, q0f32, q3f16_0, q3f16_1, q4f16_0, q4f16_1, q4f16_2, q4f16_ft, q4f32_0, q4f32_1, q8f16_ft, q8f16_1.

  2. q6f16_1 takes about 5GB memory, q8f16_1 takes about 8GB memory. Make sure your device have enough memory, 16GB memory is necessary in most cases.

Use model

Compile mlc_chat_cli

You should compile mlc_chat_cli command or mlc_chat Python package.

Return to mlc-llm folder.

# create build directory
mkdir -p build && cd build
# generate build configuration
python3 ../cmake/gen_cmake_config.py
# build `mlc_chat_cli`
cmake .. && cmake --build . --parallel $(nproc) && cd ..
Verify validation
# expected to see `mlc_chat_cli`, `libmlc_llm.so` and `libtvm_runtime.so`
ls -l ./build/
# expected to see help message
./build/mlc_chat_cli --help
Use mlc_chat_cli

We use mlc_chat_cli for this case:

./build/mlc_chat_cli --model <model_name> --device <device_name>

In the previous chapter, we got chatglm2-6b-q4f16_1-opencl.so, so you can just replace <model_name> with chatglm2-6b-q4f16_1, and <device_name> with opencl:

./build/mlc_chat_cli --model chatglm2-6b-q4f16_1 --device opencl

在这里插入图片描述

最终成品

References

https://tvm.apache.org/docs/install/from_source.html#build-the-shared-library

https://llm.mlc.ai/docs/compilation/compile_models.html

https://blog.mlc.ai/2023/08/09/GPU-Accelerated-LLM-on-Orange-Pi

https://zhuanlan.zhihu.com/p/650110025

https://llm.mlc.ai/docs/install

作者:A Chang
文章来源:知乎

推荐阅读

  • GiantPandaCVARM Neon Intrinsics 学习指北:从入门、进阶到学个通透
  • DPRNN
  • DeepSpeech理论与实战

更多芯擎AI开发板干货请关注芯擎AI开发板专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2228754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

-XSS-

链接 https://github.com/do0dl3/xss-labs 搭建过程非常容易的 搭建好之后&#xff0c;就可以点击图片开始闯关了 第一关--JS弹窗函数alert() 显示payload的长度是4 level1.php?nametest level1.php?nametest1 发现只要改变name的值就显示什么在页面上 没有什么过滤的 …

忘记密码如何解除PPT的限制编辑?推荐两种方法!

当PPT文件设置了带密码的“只读方式”&#xff0c;文件的编辑权限就会受到限制。如果没有密码&#xff0c;就只能查看&#xff0c;而无法编辑修改PPT了。 那在忘记密码的情况下如何解除PPT的限制编辑呢&#xff1f;本文将介绍两种解除方法&#xff0c;帮助小伙伴们轻松编辑PPT…

R向量运算数组矩阵

向量的运算 向量的加减乘除可以直接进运行&#xff0c;不用循环 向量之间的运算&#xff1a;分别对应计算&#xff0c;不用循环 两个运算的向量可以不是长度相等&#xff0c;但是一定长度要成整数倍。 每种运算都可以返回逻辑值T或F 取整函数 保留小数位用round&#xff1a; …

微软官宣 GitHub Spark: 编程进入自然语言时代

今年的生活是那样悬而未决 悬置在好与烂之间&#xff0c;更偏烂一点 我没追求什么意义 我只是无所事事的来 这个世界度过了我的全部时间 我们都知道 AI 的发展可谓是一日千里&#xff0c;远超之前互联网的发展速度。在国际 AI 领域&#xff0c;微软&#xff0c;谷歌基本上已…

【成都新篇】龙信科技电子取证实验室,引领科技取证新时代

文章关键词&#xff1a;电子数据取证实验室、手机取证、介质取证、云取证、现场勘查、电子物证 在科技创新的浪潮中&#xff0c;龙信科技成都实验室以其卓越的电子数据取证服务&#xff0c;成为了中西部地区一颗璀璨的明珠。随着新址的搬迁&#xff0c;我们不仅扩大了业务范围…

.NET内网实战:通过白名单文件反序列化漏洞绕过UAC

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏&#xff0c;主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧&#xff0c;对内网和后渗透感兴趣的朋友们可以订阅该电子报刊&#xff0c;解锁更多的报刊内容。 02基本介绍 03原理分析 在渗透测试和红…

算法日记 13 day 二叉树

今天继续二叉树啊&#xff01;&#xff01;&#xff01; 题目&#xff1a;平衡二叉树 110. 平衡二叉树 - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 题目分析&#xff1a; 平衡二叉树指的是一个二叉树每个节点 的左右两个子树…

「C/C++」C/C++ 之 动态内存分配

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

人工智能_神经网络103_感知机_感知机工作原理_感知机具备学习能力_在学习过程中自我调整权重_优化效果_多元线性回归_逻辑回归---人工智能工作笔记0228

由于之前一直对神经网络不是特别清楚,尤其是对神经网络中的一些具体的概念,包括循环,神经网络卷积神经网络以及他们具体的作用,都是应用于什么方向不是特别清楚,所以现在我们来做教程来具体明确一下。 当然在机器学习之后还有深度学习,然后在深度学习中对各种神经网络的…

idea使用Translation插件实现翻译

1.打开idea&#xff0c;settings&#xff0c;选择plugins&#xff0c;搜索插件Translation&#xff0c;安装 2.选择翻译引擎 3.配置引擎&#xff0c;以有道词典为例 3.1 获取应用ID&#xff0c;应用秘钥 3.1.1 创建应用 点击进入有道智云控制台 3.1.2 复制ID和秘钥 3.2 idea设…

Mac下载 安装MIMIC-IV 3.0数据集

参考blog MIMIC IV 3.0数据库安装方法_mimic数据下载-CSDN博客 MIMIC IV数据库安装&#xff08;二&#xff09;_mimic数据库安装-CSDN博客 MIMIC-IV3.0安装_mimic iv 3.0-CSDN博客 MIMIC-IV-v2.0安装教程_mimic iv 安装教程-CSDN博客 MIMIC IV 3.0数据库安装方法或者思路&…

力扣——另一个的子树(C语言)

1.题目&#xff1a; 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree …

为什么说Tcp是面向字节流的以及(Tcp粘包问题、TCP/UDP对比、listen函数的backlog参数的意义)

为什么说Tcp是面向字节流的&#xff1a; Tcp通信的本质是创建一个tcp的socket&#xff0c;同时就会对应的创建一个发送缓冲区和接收缓冲区。 调用write时, 数据会先写入发送缓冲区中;如果发送的字节数太长, 会被拆分成多个TCP的数据包发出如果发送的字节数太短, 就会先在缓冲…

92.【C语言】数据结构之单向链表的查找,中间插入和删除,销毁

目录 1.链表的查找函数 2.链表的修改函数 3.链表的中间插入函数 1.在pos之前插入:SLTInsertBefore函数 1.借助头指针pphead 示意图 代码示例(写入SList.c) 头文件添加SLTInsertbefore的声明 main.c的部分代码改为 1.测试中间插入 2.测试头部插入 3.测试pos为NULL的…

无人机救援系统基本组成

无人机救援系统基本组成 1. 源由2. 组成2.1 无人机载具2.1.1 多旋翼2.1.2 垂起固定翼2.1.3 智能避障2.1.4 物资投递 2.2 智能吊舱2.2.1 云台2.2.2 高清摄像2.2.3 红外热成像2.2.4 激光测距2.2.5 目标跟踪 2.3 通讯链路2.3.1 超长距离通信2.3.2 长距离通信2.3.3 中等距离通信 2.…

普通高考预报名上传蓝底证件照手机自拍方法详解

普通高考预报名过程中&#xff0c;上传一张合规的蓝底证件照是必不可少的一步。本文将详细介绍如何使用手机自拍并使用工具来制作符合要求的蓝底证件照。注意&#xff0c;目前仅有广东等个别省份允许特定类型考生使用自拍照上传&#xff08;例如普高预报名阶段、学考报名&#…

linux 原子操作

首先是为什么要有 原子操作 网上的截图&#xff1a; 不能从C语言来看&#xff0c;要从汇编来看 但是实际的情况有可能是这样。 A进程没有得到想要的结果。 然后是 原子操作的 底层实现 最终会是这段代码&#xff0c;当然只是一个 加一的操作。 static inline void atomic_a…

ComfyUI新神器ComfyUI-Detail-Daemon:一键提升AI绘画细节,Flux模型画质再升级

近日&#xff0c;一款名为ComfyUI-Detail-Daemon的革命性插件正在AI绘画圈引起轰动。这款由Jonseed开发的工具&#xff0c;巧妙地将sd-webui-Detail-Daemon移植到ComfyUI平台&#xff0c;为创作者们带来了前所未有的细节优化体验。 这款插件最引人注目的特点是其强大的细节增强…

Qt/C++地图导航app/支持qml/手机运行/输入起点终点规划路径/模拟轨迹移动

一、前言说明 搞Qt地图开发这块&#xff0c;随着研究的深入&#xff0c;用户的需求变化&#xff0c;最近又需要在手机上运行&#xff0c;由于本地图组件依赖浏览器控件&#xff0c;而手机安卓上的Qt并没有带qwebengine控件&#xff0c;怎么办呢&#xff0c;不断的努力验证下&a…

优优嗨聚集团:正确了解个人债务过多的危害

在当今社会&#xff0c;随着消费观念的转变和金融产品的多样化&#xff0c;个人债务问题日益凸显。许多人为了追求更高的生活质量或应对突发情况&#xff0c;不自觉地陷入了债务的泥潭。然而&#xff0c;个人债务过多不仅会影响个人的财务状况&#xff0c;还可能对生活和心理产…