1. NPU使用
RK3588 内置 NPU 模块, 处理性能最高可达6TOPS(即每秒处理6万亿次操作)。这款NPU不仅拥有强大的计算能力,支持TensorFlow、Caffe、Tflite、Pytorch、Onnx NN、Android NN 等常见框架。使用该NPU需要下载RKNN SDK,RKNN SDK 为带有 NPU 的 RK3588S/RK3588 芯片平台提供编程接口,能够帮助用户部署使用 RKNN-Toolkit2 导出的 RKNN 模型,加速 AI 应用的落地。
1.1. RKNN 模型
RKNN 是 Rockchip NPU 平台使用的模型类型,以.rknn
后缀结尾的模型文件。用户可以通过RKNN SDK提供的工具将自主研发的算法模型转换成 RKNN 模型。
RKNN 模型可以直接运行在 RK3588 平台上,在rknpu2/examples
中有例子,根据README.md
编译生成 Android 或 Linux Demo(需要交叉编译环境)。也可以直接下载编译好的 Demo。
1.2. 非 RKNN 模型
对于 Caffe、TensorFlow 等其他模型,想要在 RK3588 平台运行,需要先进行模型转换。可以使用 RKNN-Toolkit2 工具将模型转换成 RKNN 格式。
1.3. RKNN-Toolkit2工具
1.3.1. 工具介绍
RKNN-Toolkit2 是为用户提供在 PC、Rockchip NPU 平台上进行模型转换、推理和性能评估的开发套件,用户通过该工具提供的 Python 接口可以便捷地完成各种操作。
工具的全部功能简单介绍如下:
-
模型转换: 支持
Caffe
、TensorFlow
、TensorFlow Lite
、ONNX
、DarkNet
、PyTorch
等模型转为 RKNN 模型,并支持 RKNN 模型导入导出,RKNN 模型能够在 Rockchip NPU 平台上加载使用 -
量化功能: 支持将浮点模型量化为定点模型,目前支持的量化方法为非对称量化 ( asymmetric_quantized-8 及 asymmetric_quantized-16 ),并支持混合量化功能 。 asymmetric_quantized-16 目前版本暂不支持
-
模型推理: 能够在 PC 上模拟 Rockchip NPU 运行 RKNN 模型并获取推理结果; 或将 RKNN 模型分发到指定的 NPU 设备上进行推理并获取推理结果
-
性能评估: 将 RKNN 模型分发到指定 NPU 设备上运行,以评估模型在实际设备上运行时的性能
-
内存评估: 评估模型运行时的内存的占用情况。使用该功能时,必须将 RKNN 模型分发到 NPU 设备中运行,并调用相关接口获取内存使用信息
-
量化精度分析: 该功能将给出模型量化前后每一层推理结果与浮点模型推理结果的余弦距离,以便于分析量化误差是如何出现的,为提高量化模型的精度提供思路
1.3.2. 环境依赖
-
系统依赖:RKNN-Toolkit2 目前版本适用系统
Ubuntu18.04(x64)
及以上,工具只能安装在 PC 上,暂不支持 Windows、MacOS、Debian 等操作系统 -
Python版本:3.6/3.8
-
Python依赖库:
#Python3.6 cat doc/requirements_cp36-1.3.0.txt numpy==1.16.6 onnx==1.7.0 onnxoptimizer==0.1.0 onnxruntime==1.6.0 tensorflow==1.14.0 tensorboard==1.14.0 protobuf==3.12.0 torch==1.6.0 torchvision==0.7.0 psutil==5.6.2 ruamel.yaml==0.15.81 scipy==1.2.1 tqdm==4.27.0 requests==2.21.0 opencv-python==4.4.0.46 PuLP==2.4 scikit_image==0.17.2 # if install bfloat16 failed, please install numpy manually first. "pip install numpy==1.16.6" bfloat16==1.1 flatbuffers==1.12#Python3.8 cat doc/requirements_cp38-1.3.0.txt numpy==1.17.3 onnx==1.7.0 onnxoptimizer==0.1.0 onnxruntime==1.6.0 tensorflow==2.2.0 tensorboard==2.2.2 protobuf==3.12.0 torch==1.6.0 torchvision==0.7.0 psutil==5.6.2 ruamel.yaml==0.15.81 scipy==1.4.1 tqdm==4.27.0 requests==2.21.0 opencv-python==4.4.0.46 PuLP==2.4 scikit_image==0.17.2 # if install bfloat16 failed, please install numpy manually first. "pip install numpy==1.17.3" bfloat16==1.1