一、 环境准备
1. 镜像烧录
镜像烧录可以在任何操作系统内执⾏,这⾥以在Windows系统为例,使用balenaEtcher⼯具,快速烧录镜像到Micro SD卡中。
本章节所需的软/硬件如下:
软件相关:balenaEtcher制卡⼯具、openEuler镜像
硬件相关:TF卡(64G存储卡)、读卡器
balenaEtcher制卡⼯具下载
点击链接进行下载安装balenaEtcher⼯具即可。
下载链接:https://etcher.balena.io/#download-etcher
openEuler镜像下载
点击链接下载openEuler镜像即可。
镜像烧录
将插入TF卡的读卡器与电脑连接,然后打开balenaEtcher⼯具,选择刚刚下载的镜像文件,然后选择TF卡进行烧录即可。
注意:下载下来的镜像文件是.xz格式的压缩包,要先解压出.img文件,选择.img文件进行烧录。
等待TF卡烧录完成拔出读卡器。
2. 连接开发板
将烧录好的TF卡插入香橙派中,连接电源启动即可。TF卡一直插在香橙派中,不拔出。
首次连接,我们需要使用HDMI线与显示屏相连,同时插入键盘鼠标才能完成配置操作。在联网后,记下香橙派的IP地址便可用Vscode、MobaXterm等远程连接的软件进行远程连接。
本章节所需的软/硬件如下:
软件:Vscode、MobaXterm(任选其一或多个皆可)
硬件:OrangePi AIpro-20t规格⾹橙派、电源线、HDMI线、显⽰器、⿏
标、键盘
首次配置
开发板开机成功后进行登录操作。
登录账号:HwHiAiUser,密码:Mind@123(root密码也是这个)
进入桌面后,点击相应WiFi输入密码进行连接。连接成功后,右键选择“Connection Information”记录下香橙派的IP地址用于同一局域网下远程连接。
MobaXterm连接
使用MobaXterm可以连接命令行也可以连接图形化界面。
首先我们进行命令行的连接。点击上方的“Session”后选择“SSH”,然后填入香橙派IP地址,指定登录用户(可选)后,点击“OK”则远程连接成功。连接端口为22。
连接远程桌面,我们也是点击上方的“Session”,但选择“VNC”,然后填入香橙派IP地址,连接端口为5901,点击“OK”则远程连接成功。
Vscode连接
下载好Vscode后安装以下插件备用。
点击“远程资源管理器”,点击SSH后的加号添加远程连接,输入“ssh HwHiAiUser@你的香橙派实际IP”后回车。然后选择刚刚添加的远程连接,点击箭头后输入密码即可连接成功。
连接成功后需要注意,远程的插件要重新安装一下。想要在Vscode远程编辑器中运行Python代码,安装Python扩展即可。
3. 软件环境升级
Toolkit升级(8.0.0_linux-aarch64)
打开终端,使用root⽤⼾,root⽤⼾密码:Mind@123。
su – root
删除镜像中已安装CANN包释放磁盘空间,防⽌安装新的CANN包时报错磁盘空间不⾜。
cd /usr/local/Ascend/ascend-toolkit
rm -rf *
下载链接:https://www.hiascend.com/developer/download/community/result?module=cann&cann=8.0.0.beta1
选择Ascend-cann-toolkit_8.0.0_linux-aarch64.run进行下载。此处我使用wget命令进行下载。下载完成后赋予其执行权限,然后运行安装。安装过程中需要手动输入一次Y。
chmod +x Ascend-cann-toolkit_8.0.0_linux-aarch64.run
./Ascend-cann-toolkit_8.0.0_linux-aarch64.run –install
出现Ascend-cann-toolkit_8.0.0_linux-aarch64 install success则安装成功。
将source /usr/local/Ascend/ascend-toolkit/set_env.sh加入到/etc/profile文件末尾并加载环境变量。
vi /etc/profile
source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /etc/profile
Kernels升级(310b_8.0.0_linux-aarch64)
打开终端,使用root⽤⼾,root⽤⼾密码:Mind@123。
su – root
执⾏如下命令,获取开发板NPU型号。
npu-smi info
下载链接:https://www.hiascend.com/developer/download/community/result?module=cann&cann=8.0.0.beta1
选择Ascend-cann-kernels-310b_8.0.0_linux-aarch64.run进行下载。此处我使用wget命令进行下载。下载完成后赋予其执行权限,然后运行安装。安装过程中需要手动输入一次Y。
chmod +x Ascend-cann-kernels-310b_8.0.0_linux-aarch64.run
./Ascend-cann-kernels-310b_8.0.0_linux-aarch64.run –install
出现Ascend-cann-kernels-310b_8.0.0_linux-aarch64 install success则安装成功。
MindSpore升级(MindSpore2.5.0)
打开终端,使用HwHiAiUser用户。运行以下命令进行安装。
pip install mindspore==2.5.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
运行以下命令进行检查是否安装成功。
python -c “import mindspore;mindspore.set_device(‘Ascend’);mindspore.run_check()”
出现successfully则为成功。
Swap检查与配置
打开终端,输⼊如下命令,检查Swap是否开启:
free -m
正确输出结果为:
如输出的结果中Swap部分为0,则可在终端中输入如下命令,配置Swap:
sudo fallocate -l 16G /swapfile
sudo chmod 600/swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo ‘/swapfile none swap sw 0 a’sudo tee -a /etc/fstab
完成配置后可再通过 free -m 检查配置是否生效。
Gradio安装
打开终端,输⼊如下命令,安装Gradio 4.44.0:
pip uninstall gradio -y
pip install gradio==4.44.0
Mindnlp安装
打开终端,输⼊如下命令,安装Mindnlp(如已有最好先卸载,重新安装):
pip install git+https://github.com/mindspore-lab/mindnlp.git@0.4
其他python依赖安装
在运行代码时,报错显示缺少什么包就使用pip安装什么包。
二、 运行代码
1. 下载代码
代码地址:https://github.com/mindspore-courses/orange-pi-mindspore.git
打开终端,使用HwHiAiUser用户。找一个你存放代码的位置运行如下命令:
git clone https://github.com/mindspore-courses/orange-pi-mindspore.git
下载代码后,进入Online/training/01-DeepSeek-R1-Distill-Qwen-1.5B目录,目录中的三个py文件便是我们要运行的代码。
2. 运行代码
可以使用Vscode远程连接开发环境,这样运行调试更为方便。连接步骤之前已经给出,连接成功后打开代码所在文件夹,打开相应代码点击右上角运行即可。
分别给出三个py文件运行成功的截图。
deepseek-r1-distill-qwen-1.5b-lora.py
deepseek-r1-distill-qwen-1.5b-gradio.py
deepseek-r1-distill-qwen-1.5b-jit.py
三、常见问题
1. 无法连接外部网络
在连接WiFi后,可以在局域网内连接香橙派,但是香橙派无法访问外部网络。
可以用以下方式解决:
1. 在运行命令`sudo ip route del default via 192.168.0.1 dev usb0`后问题解决,可以访问外部网络。(每次重启后要重新执行命令)
2. 右键点击图形界面右上角的`“网络->Edit Connections->选择相应的问题连接(usb0)删除”`即可。(永久生效)
2. 运行代码时出现权限相关问题
运行代码时出现“Permission denied”以及其他与当前登录用户相关的问题。
可以用以下方式解决:
从下载代码开始,全程使用HwHiAiUser用户,不要使用root用户。同时注意代码存放的位置,尽量放在HwHiAiUser用户目录下,避免引发文件权限的问题。
3. 运行代码时提示Ascend显存不足
运行代码时出现Ascend显存不足的相关提示信息,最后运行失败。有Free memory size is less than half of total memory size.Device 0 Device MOC total size:24823529472 Device MOC free size:9051504640 may be other processes occupying this card, check as: ps -ef|grep python提示的。
可以用以下方式解决:
首先使用`ps -ef | grep python`命令查看是否有其他 Python 进程正在占用 NPU 导致显存不足,有则`kill`相关进程。若无异常则使用`npu-smi info`命令查看显存占用,如果发现异常最方便的方法就是使用`reboot`命令重启设备。
4. 运行代码时有RuntimeError以及ValueError
每次代码运行到训练或推理的部分就会报错。
lora:`RuntimeError: aclnnGatherGetWorkspaceSize call failed, please check!`
gradio:`RuntimeError: aclnnCumsumGetWorkspaceSize call failed, please check!`
jit:`ValueError: Attention weights should be of size (1, 12, 6, 6), but is (1, 12, 6, 512)`
可以用以下方式解决:
检查版本问题,尤其是Mindnlp的版本。
“`
Toolkit版本:8.0.0_linux-aarch64
Kernels版本:310b_8.0.0_linux-aarch64
MindSpore版本:MindSpore 2.5.0
Mindnlp版本:mindnlp 0.4.1
“`
即使Mindnlp版本号对应,但仍然建议你先卸载Mindnlp,然后运行`pip install git+https://github.com/mindspore-lab/mindnlp.git@0.4`命令重新安装Mindnlp。
5. jit第二次对话报错
运行jit的时候,在第二次对话的时候会报`RuntimeError: Sync stream error!`错误。
可以用以下方式解决:
使用`reboot`命令重启设备。