ElfBoard技术实战|ELF 2开发板本地部署DeepSeek大模型的完整指南
DeepSeek作为国产大数据驱动的AI模型代表,凭借其卓越的推理能力和高效的文本生成技术,在全球人工智能领域引发广泛关注。
RK3588作为瑞芯微推出的旗舰级芯片,凭借多核异构计算能力以及强大的CPU、GPU和NPU性能,成为嵌入式AI应用的理想平台。
DeepSeek与基于RK3588设计的ELF 2开发板的深度融合,标志着国产AI大模型从云端向边缘端的延伸。这种“先进算法+定制化芯片”的协同模式,不仅解决了边缘侧实时性、隐私保护等关键需求,更构建起从技术研发到产业赋能的完整价值链条。接下来,让我们深入探讨这一过程是如何具体实现的。
环境搭建
1.1 Anaconda安装及使用
1.1.1 Anaconda介绍
Anaconda是一个流行的开源软件包管理和环境管理系统,用于科学计算、数据分析和大数据处理,特别是在Python环境中。它包含了许多常用的科学计算和数据分析的软件包,并提供了一个方便的方式来管理这些软件包的安装、更新和环境配置。
以下是 Anaconda的一些主要特点和用途:
1、软件包管理
Anaconda提供了一个名为conda的包管理工具,可以轻松安装、更新和删除软件包。它支持数千个科学计算和数据分析相关的软件包,如NumPy、Pandas、Matplotlib等。
2、环境管理
Anaconda允许用户创建和管理多个独立的Python环境。每个环境可以有不同版本的Python和不同的软件包集合,这样可以避免版本冲突和环境污染。
3、跨平台
Anaconda可以在Windows、macOS和Linux上运行,使其成为开发人员和研究人员之间共享和复制数据分析项目的理想工具。
4、集成开发环境(IDE)
Anaconda还包含了Jupyter Notebook等强大的交互式开发工具,使用户能够在浏览器中创建和分享文档,结合代码、公式、可视化和解释性文本。
5、大数据支持
Anaconda 不仅适用于单机环境,还支持分布式计算平台,如Apache Spark,从而能够处理大规模数据和复杂的计算任务。
总之,Anaconda提供了一个全面的解决方案,使得科学计算和数据分析的开发和部署变得更加简单和高效。
1.1.2 Anaconda安装
我们提供的虚拟机系统内已预装了Python 3.10及RKNN-Toolkit 2.1.0,专为模型转换与量化打造。若使用其他版本Python或相关工具的需求,推荐在虚拟机中另行安装Anaconda,以此避免环境冲突实现环境的完全隔离。
虚拟机系统使用的是“ELF 2开发板资料包”中提供的开发环境(路径:ELF 2开发板资料包\08-开发环境)您可以选择从网络上下载Linux版本的Miniconda,推荐访问清华大学的镜像库进行下载。
具体网址为:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
另外,您也可以在“ELF 2开发板资料包”的“06-常用工具\06-2 环境搭建工具\AI安装脚本”路径下找到名为“Miniconda3-4.7.12.1-Linux-x86_64.sh”的执行脚本。您只需将该脚本上传至虚拟机中,并执行它即可完成Miniconda的安装。
首先对执行脚本赋予执行权限并执行脚本:
elf@ubuntu:~$ chmod +x Miniconda3-4.7.12.1-Linux-x86_64.sh elf@ubuntu:~$ ./Miniconda3-4.7.12.1-Linux-x86_64.sh
按enter按键,之后输入yes,然后再设置安装路径,进行安装。
安装完之后如下图所示:
重新打开终端。命令行之前出现(base)代表安装成功。
1.1.3 Anaconda基本使用
以下是关于conda操作指令的跨平台说明及在虚拟机上的示范:conda的操作指令是跨平台的,这意味着它们既可以在Linux系统上运行,也可以在Windows系统上执行。接下来将在虚拟机环境中进行示范。
1、查看虚拟环境列表:
conda env list
2、创建新的虚拟环境:
conda create --name <虚拟环境名称> python=<版本号>
例如:conda create --name myenv python=3.9
说明:此命令会创建一个名为<虚拟环境名称>的新虚拟环境,并安装指定版本的Python。如果不指定Python版本,则会安装Anaconda发行版中附带的Python版本。
3、激活虚拟环境:
conda activate <虚拟环境名称>
例如:conda activate myenv
说明:激活虚拟环境后,在该环境下安装的包将仅在该环境中可用,从而避免了不同项目之间的依赖冲突。
4、退出虚拟环境:
conda deactivate
说明:此命令用于退出当前激活的虚拟环境,返回到基础环境(base环境),如再次执行命令。
5、给虚拟环境安装库:
pip install <包名>conda install <包名>
例如:conda install numpy 或 pip install numpy
说明:通常推荐使用conda安装库,因为它会自动处理依赖关系。但在某些情况下,如果conda中没有可用的包版本,也可以使用pip进行安装。
6、 删除虚拟环境:
conda env remove --name <虚拟环境名称>
例如:conda env remove --name myenv
说明:此命令会删除指定的虚拟环境及其下安装的所有包。
1.1.4 创建用于部署的虚拟环境
查看虚拟环境列表:
elf@ubuntu:~$ conda env list
创建新的虚拟环境:
elf@ubuntu:~$ conda create --name RKLLM-Toolkit-pyth3.10 python=3.10
conda create --name <虚拟环境名称> python=<版本号>
说明:此命令会创建一个名为<虚拟环境名称>的新虚拟环境,并安装指定版本的Python。如果不指定Python版本,则会安装Anaconda发行版中附带的Python版本。
激活虚拟环境:
elf@ubuntu:~$ conda activate RKLLM-Toolkit-pyth3.10
conda activate <虚拟环境名称>
说明:激活虚拟环境后,在该环境下安装的包将仅在该环境中可用,从而避免了不同项目之间的依赖冲突。
1.2 RKLLM-Toolkit安装及使用
1.2.1 RKLLM-Toolkit介绍
RKLLM-Toolkit 提供模型的转换、量化功能。作为RKLLM-Toolkit的核心功能之一,它允许用户将Hugging Face或GGUF格式的大语言模型转换为RKLLM模型,从而将RKLLM模型在Rockchip NPU上加载运行。
1.2.1 RKLLM-Toolkit 安装
在虚拟环境安装RKLLM-Toolkit,以便将DeepSeek R1 大语言模型转换为RKLLM模型格式和编译板端推理的可执行程序。在发布的RKLLM工具链压缩文件中,包含了 RKLLM-Toolkit的whl安装包。
链接:GitHub - airockchip/rknn-llm
也可以在ELF 2开发板资料包\03-例程源码\03-4 AI例程源码\路径下找到rknn-llm-main.zip。
将下载成功的rknn-llm-main.zip 压缩包放到/home/elf/work/deepseek目录下,并解压。
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/deepseek$ unzip rknn-llm-main.zip
进入到rknn-llm-main/rkllm-toolkit/目录下,进行安装RKLLM-Toolkit工具
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/deepseek$ cd rknn-llm-main/rkllm-toolkit/(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/deepseek/rknn-llm-main/rkllm-toolkit$ pip install rkllm_toolkit-1.1.4-cp310-cp310-linux_x86_64.whl -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package
注意:如果出现库版本冲突问题,再次执行pip install rkllm_toolkit-1.1.4-cp310-cp310-linux_x86_64.whl-i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package 命令重新安装RKLLM工具会解决库版本冲突的报错问题。
安装完成如下图所示:
1.3 交叉编译工具安装
推荐使用交叉编译工具 gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu;交叉编译工具往往向下兼容而无法向上兼容,因此不要使用 10.2 以下的版本。
链接:Downloads | 10.2-2020.11 – Arm Developer。
也可以在ELF 2开发板资料包\03-例程源码\03-4 AI例程源码\路径下找到gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz。
移植过程
2.1 模型转换
1、下载DeepSeek-R1源码
在ubuntu虚拟机上从DeepSeek-R1官网地址下载DeepSeek-R1-Distill-Qwen-1.5B权重文件。
链接:deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B at main (huggingface.co)
也可以在ELF 2开发板资料包\03-例程源码\03-4 AI例程源码\路径下找到DeepSeek-R1-Distill-Qwen-1.5B.zip。
2、模型转换
使用RKLLM-Toolkit对模型进行转换,RKLLM-Toolkit提供模型的转换、量化功能。作为RKLLM-Toolkit的核心功能之一,它允许用户将Hugging Face或GGUF格式的大语言模型转换为RKLLM模型,从而将RKLLM模型在Rockchip NPU 上加载运行。
进入到rknn-llm-main/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/export目录下,生成data_quant.json,data_quant.json文件以对rkllm模型进行量化处理,我们将fp16模型生成结果用作量化校准数据。目录下默认已存在data_quant.json文件。
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/deepseek$ cd rknn-llm-main/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/export(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/deepseek/rknn-llm-main/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/export$ python generate_data_quant.py -m /home/elf/work/deepseek/DeepSeek-R1-Distill-Qwen-1.5B
/home/elf/work/deepseek/DeepSeek-R1-Distill-Qwen-1.5B为权重文件所在的路径。
在export_rkllm.py中指定权重文件所在路径:
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/deepseek/rknn-llm-main/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/export$ vi export_rkllm.py
导出RKLLM模型:
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/deepseek/rknn-llm-main/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/export$ python export_rkllm.py
转换成功的模型:rknn-llm-main/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/export/DeepSeek-R1-Distill-Qwen-1.5B_W8A8_RK3588.rkllm。
2.2 交叉编译
进入到rknn-llm-main/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/deploy目录下,在build-linux.sh文件指定交叉编译工具。
注意:改为实际安装的路径
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/deepseek/rknn-llm-main/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/deploy$ vi build-linux.sh
修改完成,进行编译:
(RKLLM-Toolkit-pyth3.10) elf@ubuntu:~/work/deepseek/rknn-llm-main/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/deploy$ ./build-linux.sh
编译生成的库文件:rknn-llm-main/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/deploy/install/demo_Linux_aarch64/lib/librkllmrt.so。
可执行文件:rknn-llm-main/examples/DeepSeek-R1-Distill-Qwen-1.5B_Demo/deploy/install/demo_Linux_aarch64/llm_demo。
2.3 模型本地部署
将编译好的rkllm模型、可执行文件以及库文件上传至板端即可执行,这样我们在本地就可和DeepSeek-R1对话了,而且无需联网。
elf@elf2-desktop:~$ ./llm_demo DeepSeek-R1-Distill-Qwen-1.5B_W8A8_RK3588.rkllm 10000 10000
执行应用后效果如下图所示:
注意:本次测试使用的desktop系统NPU驱动为0.9.6,更新驱动请参考《Rockchip_RKLLM_SDK_CN_1.1.4.pdf》文件。
通过上述标准化部署流程,即可在ELF 2开发板上实现DeepSeek大数据模型的高效本地化运行。期待本文所分享的技术实践,能为从事嵌入式AI开发的工程师与高校师生提供有价值的参考,助力各位在边缘计算与人工智能交叉领域的技术探索与项目落地。