昇思+⾹橙派:软硬结合玩转DeepSeek开发实战

此次体验的⾹橙派是20T版本,外壳有改动,ssd增加了开孔。

⾹橙派介绍页面

此次体验的源码如下:
https://github.com/mindspore-courses/orange-pi-mindspore/tree/master/Online/training/01-DeepSeek-R1-Distill-Qwen-1.5B

此次采用的镜像为openEuler镜像



通过usb连接uart口可以通过com口直接连接香橙派
香橙派默认用户名密码如下。
HwHiAiUser
Mind@123

sudo nmcli dev wifi

sudo nmcli dev wifi connect wifi_name password wifi_pass

查看镜像安装的cann版本

需要更换版本CANN8.0.0.beta1

image
先更新toolkit


再更新kernel
image

Swap已启用 但是只有2g
执行如下命令修改为16g
sudo swapoff /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=16384 conv=notrunc
sudo mkswap /swapfile
sudo swapon /swapfile


问题:连接网络后无法下载,报No route to host
解决办法:删除多余路由表 192.168.0.0 usb0 的两个


**问题:安装Cann后运行mindspore check报错
解决办法:新安装的cann位置为/home/HwHiAiUser/Ascend/ascend-toolkit 需要删除
/usr/local/Ascend/ascend-toolkit

删除后正常

MindSpore NLP安装

openMind Hub Client安装

export MAX_COMPILE_CORE_NUMBER=1
export TE_PARALLEL_COMPILER=1

安装cgroup 欧拉包管理使用的是yum而不是apt-get,安装的包libcgroup

image

1.微调:
代码在https://github.com/mindspore-courses/orange-pi-mindspore/tree/master/Online/training/01-DeepSeek-R1-Distill-Qwen-1.5B

python deepseek-r1-distill-qwen-1.5b-lora.py
问题: 运行报错:
.local/lib/python3.9/site-packages/mindnlp/transformers/models/graphormer/algos_graphormer.pyx:88:28: undeclared name not builtin: long

解决方法:修改代码两处 long → int

问题:运行报错:struct.error: unpack requires a buffer of 44 bytes

解决方法:修改/etc/timezone 文件,写入 Asia/Shanghai

/usr/local/lib/python3.9/site-packages/babel/localtime/_unix.py +96

/etc/localtime 内容为空

/etc/timezone用于提供系统时区的名称的,如果使用Shanghai时区的话,这里需要配置成如下内容:
$ echo ‘Asia/Shanghai’ >/etc/timezone
date命令在配置时间的时候,会参考/etc/localtime文件的时区配置,从而将系统时间配置正确。
$ date -s "2021-04-07 20:00:00

改完就可以了

清理缓存

2.模型推理

export INFERENCE_TIME_RECORD=True
python deepseek-r1-distill-qwen-1.5b-gradio.py

问题:服务器地址http://127.0.0.1:7860,只能香橙派本身访问

用无线网络的ip是无法访问的

解决方法:launch增加参数,launch(server_name=‘0.0.0.0’,server_port=7860)

禁⽤多线程
代码加入
from mindspore._c_expression import disable_multi_thread disable_multi_thread()

性能有优化,从0.93到0.76

3.推理JIT优化
Python deepseek-r1-distill-qwen-1.5b-jit.py


jit优化内容如下:
设置 jit_level 优化等级为 O2 。
使⽤ model.jit() 将全图静态图化。
使⽤ @mindspore.jit 装饰器封装模型推理函数 get_decode_one_tokens_logits ,设置PSJit选项解析python的ast以构建静态图。该函数⽤于逐个token进⾏推理。
去掉上面的优化,测试未优化的情况



以下就是去掉优化的结果。

此次体验到此结束。