RKNN 安装
本文档旨在演示如何安装 RKNN SDK,更多资料请查看 RKNN Toolkit2 源码库 的 doc 目录。
RKNN 简介
Rockchip RK3566/RK3568 系列, RK3588 系列, RK3562 系列, RK3576系列, RV1103/RV1106 系列芯片搭载神经网络处理器 NPU, 利用 RKNN 可以帮助用户快速部署 AI 模型到 Rockchip 芯片上使用 NPU 硬件加速模型推理。 为了使用 RKNPU,用户首先需要在 x86 计算机上使用 RKNN-Toolkit2 工具,将训练好的模型转换为 RKNN 格式的模型,然后在开发板上使用 RKNN C API 或 Python API进行推断。
所需工具:
- RKNN-Toolkit2 是一个软件开发工具包,供用户在 PC 和 Rockchip NPU 平台上执行模型转换、推断和性能评估。
- RKNN-Toolkit-Lite2 为 Rockchip NPU 平台提供了 Python 编程接口,帮助用户部署 RKNN 模型并加速实施 AI 应用。
- RKNN Runtime 为 Rockchip NPU 平台提供了 C/C++ 编程接口,帮助用户部署 RKNN 模型并加速实施 AI 应用。
- RKNPU 内核驱动负责与 NPU 硬件交互。
整体框架如下:
环境准备
连接开发板
下面以 RK3568 为例说明如何将开发板连至计算机:
- 准备一台操作系统为 Ubuntu18.04 / Ubuntu20.04 / Ubuntu22.04 的计算机。
- 找到下图中电源接口的位置,连接开发板电源适配器。
- 使用数据线连接开发板(OTG口)与计算机。
- 打开电源开关,等待开发板系统启动完成。
- 查看开发板是否连接至计算机
在计算机的终端窗口(命令行界面)中,执行以下命令:
adb devices
如果开发板连接成功,则会出现开发板的设备信息,如下所示:
$ adb devices
List of devices attached
TOYBRICK device
配置 RKNN 环境
配置 RKNN 环境分为四个部分:
- 下载 RKNN 相关仓库
- 安装 RKNN-Toolkit2 环境
- 安装板端 RKNPU2 环境
下载 RKNN 相关仓库
建议新建一个目录用来存放 RKNN 仓库,例如新建一个名称为 Projects 的文件夹,并将 RKNN-Toolkit2 和 RKNN Model Zoo 仓库存放至该目录下,参考命令如下:
# 新建 Projects 文件夹
mkdir Projects
# 进入该目录
cd Projects
# 下载 RKNN-Toolkit2 仓库
git clone https://github.com/airockchip/rknn-toolkit2.git --depth 1
# 下载 RKNN Model Zoo 仓库
git clone https://github.com/airockchip/rknn_model_zoo.git --depth 1
- 参数 --depth 1 表示只克隆最近一次 commit
- 如果遇到 git clone 失败的情况,也可以直接在 github 中下载压缩包到本地,然后解压至该目录
整体目录结构如下:
Projects
├── rknn-toolkit2
│ ├── doc
│ ├── rknn-toolkit2
│ │ ├── packages
│ │ ├── docker
│ │ └── ...
│ ├── rknpu2
│ │ ├── runtime
│ │ └── ...
│ └── ...
└── rknn_model_zoo
├── datasets
├── examples
└── ...
安装 RKNN-Toolkit2 环境
安装 Python
如果系统中没有安装 Python 3.8(建议版本),或者同时有多个版本的 Python 环境,建议使用Miniforge Conda 创建新的 Python 3.8 环境。
安装 Miniforge Conda
在计算机的终端窗口中执行以下命令,检查是否安装Miniforge Conda,若已安装则可省略此节步骤。
conda --version
# 参考输出信息:conda 23.3.1 ,表示 Miniforge conda 版本为 23.3.1
# 如果提示 conda: command not found,则表示未安装 Miniforge
如果没有安装 Miniforge Conda,可以通过下面的链接下载 Miniforge Conda 安装包:
wget -c https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
下载完成后,执行以下命令安装 Miniforge Conda:
chmod 777 Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh
- 安装 Miniforge Conda 时,会提示是否将 Miniforge Conda 添加到 PATH 环境变量中,选择 yes 即可
- 安装完成后,会提示是否初始化 Miniforge Conda,选择 no 即可
使用 Miniforge Conda 创建 Python 环境,在计算机的终端窗口中,执行以下命令进入 Conda base 环境:
source ~/miniforge3/bin/activate # Miniforge 安装的目录
# 成功后,命令行提示符会变成以下形式:
# (base) xxx@xxx:~$
通过以下命令创建名称为 toolkit2 的 Python 3.8 环境:
conda create -n toolkit2 python=3.8
激活 toolkit2 环境,后续将在此环境中安装 RKNN-Toolkit2:
conda activate toolkit2
# 成功后,命令行提示符会变成以下形式:
# (toolkit2) xxx@xxx:~$
当不用toolkit2环境或者更换别的python环境时,运行如下命令,实现环境切换或者退出:
conda deactivate
安装 RKNN-Toolkit2
激活 toolkit2 环境后,可通过 pip 源或者本地 wheel 包这两种方式安装 RKNN-Toolkit2:
- pip 源
- 本地 wheel 包
pip install rknn-toolkit2 -i https://pypi.org/simple
如果已安装 RKNN-Toolkit2,可通过以下命令升级 RKNN-Toolkit2
pip install rknn-toolkit2 -i https://pypi.org/simple --upgrade
进入 rknn-toolkit2 目录,根据不同的 python 版本及处理器架构,选择不同的 requirements 文件
# python3.8 x86_64 对应 requirements_cp38.txt
# python3.8 ARM64 对应 arm64_requirements_cp38.txt
pip install -r packages/requirements_cp38-2.3.0.txt
根据不同的 python 版本及处理器架构,选择不同的 wheel 安装包文件,安装 RKNN-Toolkit2
pip install packages/rknn_toolkit2-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
验证是否安装成功
执行以下命令,若没有报错,则代表 RKNN-Toolkit2 环境安装成功。
python
>>> from rknn.api import RKNN
安装板端 RKNPU2 环境
可以在板端执行以下命令查询 RKNPU2 驱动版本:
dmesg | grep -i rknpu
如下图所示,当前 RKNPU2 驱动版本为 0.9.3,默认固件已经安装RKNPU2驱动,如版本过低,可以重新编译kernel后更新
检查 RKNPU2 环境是否安装
RKNN-Toolkit2 的连板调试功能要求板端已安装 RKNPU2 环境,并且启动 rknn_server 服务,以下是 RKNPU2 环境中的两个基本概念:
- RKNN Server:一个运行在开发板上的后台代理服务。该服务的主要功能是调用板端 Runtime 对应的接口处理计算机通过USB传输过来的数据,并将处理结果返回给计算机。
- RKNPU2 Runtime 库(librknnrt.so):主要职责是负责在系统中加载 RKNN 模型,并通过调用专用的神经处理单元(NPU)执行 RKNN 模型的推理操作。 如果开发板板端没有安装 RKNN Server 和 Runtime 库,或者 RKNN Server 和 Runtime 库的版本不一致,都需要重新安 装 RKNPU2 环境。
- 若使用动态维度输入的 RKNN 模型,则要求 RKNN Server 和 Runtime 库版本 >= 1.5.0
- 要保证 RKNN Server 、Runtime 库的版本、RKNN-Toolkit2 的版本是一致的,建议都安装最新的版本。
通过下面命令确认开发板的 RKNPU2 环境版本是否一致:
# 进入板端
adb shell
# 启动 rknn_server
restart_rknn.sh
# 如果出现以下输出信息,则代表启动rknn_server服务成功,且能确认rknn_server版本
# start rknn server, version: x.x.x
# 查询librknnrt.so库版本
strings /usr/lib/librknnrt.so | grep -i "librknnrt version"
RKNN-Toolkit-Lite2
RKNN Toolkit Lite2为带有Rockchip NPU平台提供 Python 编程接口,帮助用户部署使用RKNN-Toolkit2导出的RKNN模型。 RKNN Toolkit Lite2开发文档位于external/rknn/rknn-toolkit2/rknn-toolkit-lite2/doc目录下
edge/external/rknn/rknn-toolkit2/rknn-toolkit-lite2/doc$ tree -L 1
.
├── change_log.txt
├── Rockchip_User_Guide_RKNN_Toolkit_Lite2_V1.2.0_CN.pdf
└── Rockchip_User_Guide_RKNN_Toolkit_Lite2_V1.2.0_EN.pdf
在Toybrick Debian11系统中已经预装了 RKNN Toolkit Lite2
的whl包。
普通用户 toybrick
执行如下命令升级到最新版本:
pip3 install --user --upgrade rknn-toolkit-lite2
(可选) 板端安装 RKNN Model Zoo
# 下载 RKNN Model Zoo 仓库
git clone https://github.com/airockchip/rknn_model_zoo.git