电子产业一站式赋能平台

PCB联盟网

搜索
查看: 319|回复: 0
收起左侧

嵌入式AI入坑第三步,在开发板上部署DeepSeek-R1大模型

[复制链接]

568

主题

568

帖子

4221

积分

四级会员

Rank: 4

积分
4221
发表于 2025-3-10 17:50:00 | 显示全部楼层 |阅读模式
星标+置顶,掌握嵌入式AIoT前沿技术资讯, l  F; M  ?3 n& m
点赞+关注,一起变得更加优秀!4 g0 t5 ]) \& {- |, u$ R

) Z' \3 p& U$ S/ L4 T# D开发环境的软硬件设备描述. T+ u( @- n7 T. g& ^0 W; ?) o: i
: H% p& v+ r* b5 z3 {/ v' y
$ V# L5 ~+ b% t, Z3 }! L
PC主机:Windows11(32GB内存,1TB 固态硬盘)3 ]" W/ R/ m4 j
虚拟机:Ubuntu22.04(分配16GB内存,512GB硬盘)
& J; e* g: k8 b开发板:ELF2(RK3588 4G+32G),运行Ubuntu22.04 Desktop系统$ K$ e$ C% Z7 n9 M$ c1 R$ z
  k% x7 s" t2 V  f
DeepSeek火遍朋友圈之后,工程师们都知道DeepSeek具有部署门槛低的优点,很多科技爱好者都尝试在本地设备部署DeepSeek,并且对其离线使用。3 H! `! [9 Z. h0 _3 |0 |( J% Q# `3 v

) [, L2 j4 Y6 u  m. X$ NELF2开发板搭载的是瑞芯微RK3588高性能处理器,该处理器包含四核ARM Cortex-A76和四核ARM Cortex-A55,4GB内存和32GB EMMC,. \) j! H' N0 E$ N" A

8 y3 y/ X1 U! @2 O1 @% J还带有一个6TOPS算力的神经网络处理器,其性能配置是可以满足DeepSeek-R1-1.5B模型运行的。5 E% B+ x. i6 B* s+ X, ~5 I
( {& _/ Y. K4 }6 G: _
以下是DeepSeek-R1-1.5B在 ELF2 开发板上部署的详细过程。
/ [6 p0 t8 n# S( [3 ~0 I! E" E, Y4 P2 y/ J/ A; `+ {
创建Anaconda虚拟环境
1 G9 k3 ]$ R: l( s8 m/ f8 v* d3 q9 ^. d! i

/ ^4 \; M; I$ b1 o4 P" M1 `1、按照前面开发环境搭建的章节内容,先在虚拟机Ubuntu22.04上搭建好Anaconda,并且创建一个名为“py3.10-rkllm-1.1.4”的conda虚拟环境,这个开发环境专门用来部署DeepSeek大语言模型。
9 d" V7 l$ q* h& l# J  m
+ D' N! n3 {* H" N执行以下命令创建python3.10的conda虚拟环境:
  @/ N6 l2 ?" B+ {6 l! `  `( C
  • conda create -n py3.10-rkllm-1.1.4 python=3.10
    % _8 n. K/ W$ u$ [

    usuo0op0tuc6403250720.png

    usuo0op0tuc6403250720.png

      I! M5 K: ?1 ]) Z# O9 g- Y; T& k  p% Q% P8 C# l! ?
    2、在虚拟机Ubuntu22.04上面,安装rkllm_toolkit工具,rknn-llm-release-v1.1.4工具包可以直接在以下链接进行下载,下载完成后上传到虚拟机,并且进行解压。; v- [5 E! T% s" ?2 W4 s
  • 下载链接:https://github.com/airockchip/rknn-llm/tree/release-v1.1.4, @4 D3 H0 k( q8 L, {; N- p
    安装rkllm_toolkit工具
    9 A8 u- h2 Q; q* I  o* r
    + j$ [, t5 `. n' l3、虚拟机Ubuntu22.04进入conda虚拟环境,执行以下命令安装rkllm_toolkit-1.1.4相关的Python依赖包,完成conda虚拟环境的搭建。
    / E# I% U- d8 M, T- s( m6 w
  • conda activate py3.10-rkllmcd rknn-llm-release-v1.1.4/rkllm-toolkit/packages/pip3 install rkllm_toolkit-1.1.4-cp310-cp310-linux_x86_64.whl" s. t* _3 @/ o* J7 E
    4、可以执行以下命令,进入Python3,然后导入rkllm的API接口,如果命令没有报错,则表示虚拟机Ubuntu22.04的rkllm_toolkit环境搭建成功。" A7 x4 P: e2 ]3 C  U9 F

    - x' ]) K% l9 E* q  v# V

    k3osj5ive526403250820.png

    k3osj5ive526403250820.png
    4 l6 _; I5 e: e% `) F( z0 a

    2 `/ q/ Y& Q% b/ J0 o# a; J下载DeepSeek-R1-1.5B模型
      [2 c  T  B, N8 E- z
    + x9 S, C4 ?2 o, N  r4 x* k

    0 [- @4 P* J9 T) I  R5、先安装huggingface-cli工具,这是一个huggingface大模型下载的客户端工具,在conda虚拟环境中执行以下命令:
      y% K; P) R: f) s
  • pip3 install huggingface-cli -i https://mirrors.huaweicloud.com/repository/pypi/simple4 o  o, ?; f. b( Y( v, [
    6、在rknn-llm-release-v1.1.4/rkllm-toolkit/examples/目录下新建一个huggingface文件夹,然后把DeepSeek-R1-1.5B的模型下载到此目录下,执行以下命令。+ R5 ?& @% a0 [
  • mkdir rknn-llm-release-v1.1.4/rkllm-toolkit/examples/huggingface -pcd rknn-llm-release-v1.1.4/rkllm-toolkit/examples/huggingfaceexport HF_ENDPOINT=https://hf-mirror.comhuggingface-cli download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B --local-dir . --local-dir-use-symlinks False# p% W8 |& Y5 S+ @0 D
    7、上一步配置的HF_ENDPOINT环境变量,会使用国内的加速节点进行下载,但有时候也会下载失败,有时候直接在官网点击下载链接会更快,也可以搜索一下网上的网盘,也有该模型提供,模型下载完成后,如下图所示。$ O4 B8 Q9 z9 U$ M7 E, \0 l
      V' o2 d1 g0 Z, x1 z1 B

    wm0fihnehb56403250920.png

    wm0fihnehb56403250920.png

    . U6 J& C% `2 r$ H: D9 X* E' c+ z8 C' F6 b6 U+ C3 T: @
    转换DeepSeek-R1-1.5B模型' V& j8 ?! ^9 f5 _5 U8 W4 u8 ?
    . l& c8 N7 t: {
    " [) {% c5 |  P" [" I
    8、创建一个Python脚本,名为“export_deepseek_1.5b_rkllm.py”,并且把该脚本放在rkllm-toolkit/examples/目录下,脚本的内容如下。
    2 }( v/ V  K" {# J( t' m
  • from rkllm.api import RKLLMimport os#os.environ['CUDA_VISIBLE_DEVICES']='0'modelpath = './huggingface/deepseek-r1-1.5b'llm = RKLLM()# Load model# Use 'export CUDA_VISIBLE_DEVICES=0' to specify GPU device# options ['cpu', 'cuda']ret = llm.load_huggingface(model=modelpath, model_lora = None, device='cpu')if ret != 0:    print('Load model failed!')    exit(ret)# Build modeldataset = "./data_quant.json"qparams = Noneret = llm.build(do_quantization=True, optimization_level=1, quantized_dtype='w8a8',                quantized_algorithm='normal', target_platform='rk3588', num_npu_core=3,                extra_qparams=qparams,dataset=dataset)if ret != 0:    print('Build model failed!')    exit(ret)# Export rkllm modelret = llm.export_rkllm(f"./deepseek-1.5b-w8a8-rk3588.rkllm")if ret != 0:    print('Export model failed!')    exit(ret)
    6 I" I- c& Y% R
    3 l0 _* v* c) Y. |/ p, t) o* J9、在rkllm-toolkit/examples/目录下还需要一个data_quant.json文件,这个文件在网上可以搜索到,关于export_deepseek_1.5b_rkllm.py文件和data_quant.json文件,也可以联系我这边获取。" b6 H5 s* C5 V3 \& O' o/ q- `
    ' b( i" G: F( K7 q5 @6 N/ c& c$ a8 Y
    10、在conda虚拟环境下,执行以下命令,开始把DeepSeek-R1-1.5B模型转换为rkllm格式的模型,& b* f" K: ?" ?; q. o1 G
  • python3 export_deepseek_1.5b_rkllm.py
    - m/ G" i' h! ~( d/ j模型转换成功后,如下图所示。
    4 T& X5 v# b' q2 r4 o
    : n6 }& p7 P! |  |4 [

    whkfbuqjhup6403251020.png

    whkfbuqjhup6403251020.png
    ; d( U7 }4 t: x8 H9 ^3 o: n5 J; E
    7 [& ~! t& n3 B4 M
    11、需要注意的是,虚拟机Ubuntu22.04在转换huggingface模型的时候,需要先为电脑创建swap分区,使用一部分硬盘空间用作运行内存,防止出现无法转换而出现转换进程挂掉的情况,关于虚拟机Ubuntu22.04创建交换分区的方法,请查阅网络资料。
    ( K, K6 ?$ H# c7 Y2 r* B& q( w  w# `% j* v" g+ K0 }- J
    编译和部署DeepSeek应用程序" x+ Z; b' H: A3 N9 z1 N

    7 t5 i% `# E, Q+ {/ v
    $ d4 \# |: x4 W0 B) m* Y
    12、创建一个例程elf2_deepseek_demo,这个例程在开发板的Ubuntu22.04上运行,把上一步转换成功的.rkllm模型,复制到例程的rkllm_model文件夹里面,然后执行./build-linux.sh脚本进行编译。
    4 s& G* B9 ?) y' k
    ' B( S8 G9 A) v0 n% D7 q7 s注意:编译前要确保已经搭建好ELF2的交叉编译环境。% l$ B! \" {- n& ]4 I
    5 k# S2 u6 _8 N! h9 t/ i/ M3 l& [

    0fbgtarmmll6403251120.png

    0fbgtarmmll6403251120.png
    3 r2 o9 v. o3 e; i9 J
    (应用程序源码请后台联系作者获取)
    5 G9 v7 H( _( r+ P- {& l/ X: ?" F7 m: }* M8 q: r8 q- E
    13、编译成功后,可执行文件存放在install/elf2_deepseek_rkllm_demo目录下,把elf2_deepseek_rkllm_demo文件夹上传到ELF2开发板,此外,还需要把一些动态库上传到开发板的usr/lib目录。
    4 p2 |+ S& @( ?. K' ]/ y
  • adb push elf2_deepseek_demo/lib/libgomp/libgomp.so  /usr/lib/libgomp.so.1adb push elf2_deepseek_demo/lib/librkllm_api/librkllmrt.so /usr/lib
      U7 i0 Z9 _. `+ H8 w$ r运行测试
    4 a. _& w2 j/ H4 Y, y$ T& ]! p0 `3 o* ~7 q- b

    1 B1 X9 Y4 W9 M7 U14、在开发板的elf2_deepseek_rkllm_demo目录下,执行以下命令启动DeepSeek应用程序,等待加载完毕后,就可以在终端输入界面进行提问交互,并且是完全离线运行,如下图所示。
    $ t" e5 W/ R7 s+ Q" Y. Q% |( e3 p) d6 {3 G5 m; Q% S0 \

    3e5vxnkcud56403251221.png

    3e5vxnkcud56403251221.png

    % C; a  h# v3 R4 p, ^
    6 T! E2 l' c, k* I0 c: {感谢阅读!
    ( V1 V5 y0 M; j( g. v* `0 R" p$ U. Z
    -END-
    8 i2 C. v. b& B7 S0 E往期推荐:点击图片即可跳转阅读
    ' F/ }2 \/ H& B1 _

    xvvnxzry53c6403251321.jpg

    xvvnxzry53c6403251321.jpg

    , v! Y$ ^8 m; L- C; {! H( r嵌入式AI入坑第二步,模型转换与部署!
    % y: i/ s+ y% F0 I

    bdhtxqk0vte6403251421.jpg

    bdhtxqk0vte6403251421.jpg

    ; y* M' c+ z" b& V9 ~7 A嵌入式AI入坑第一步,先把开发环境搭建起来!
    - n0 |! ^4 h4 ~8 T* _: Q. c0 K

    vcn3ptmufaj6403251521.jpg

    vcn3ptmufaj6403251521.jpg
    ( l* `8 X. q3 L4 Y. a; q. K' Z
    好玩的嵌入式 AI ,机器视觉和音视频处理
    & ~- F$ p, N' F: P星标+置顶,掌握嵌入式AIoT前沿技术资讯  p8 v* H- d' q4 q; l$ G0 R+ `
    点赞+关注,一起变得更加优秀!
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表