NPU开发简介 前言 AIO-3399ProC 开发者需要注意: NPU推理阶段会与CPU进行数据通信,单次传输数据量少但频率高,但是与USB3.0 相比PCIE不适合小文件传输。所以导致使用 “PCIE连接的NPU” 会比使用 “USB3.0方式连接的NPU” 在实际推理速度上慢很多。为了解决这个问题,我们制作了相关 PCIE-NPU加速补丁 ,最终结果是推理速度追平“USB3.0方式连接的NPU”,具体使用方法和注意事项 请查看补丁注释。 注意:PCIE-NPU加速补丁默认没有启用,具体启用方法和注意事项请查看补丁注 释。 PCIE-NPU加速补丁 https://gitlab.com/firefly- linux/kernel/-/commit/892d398b3830c1e1b0560167f1896f38bd7e084a 确认是否启用了PCIE-NUP加速补丁 开发者可以通过以下4个测试项测试是否已经启动了PCIE-NUP加速补丁: 系统能正常启动 NPU驱动版本不小于1.7.1 dpkg -l |grep firefly-3399pronpu-driver 查看PCIE_RK1808_OPTIMIZATION的状态为okay cat /sys/firmware/devicetree/base/PCIE_RK1808_OPTIMIZATION/status NPU使用无报错 NPU特性 支持 8bit/16bit 运算,运算性能高达 3.0TOPS。 相较于 GPU 作为 AI 运算单元的大型芯片方案,功耗不到 GPU 所需要的 1%。 可直接加载 Caffe / Mxnet / TensorFlow 模型。 提供 AI 开发工具:支持模型快速转换、支持开发板端侧转换 API、支持 TensorFlow / TF Lite / Caffe / ONNX / Darknet 等模型 。 提供 AI 应用开发接口:支持 Android NN API、提供 RKNN 跨平台 API、Linux 支持 TensorFlow 开发。 开发流程 NPU开发完整的流程如下图所示: 1. 模型训练 在模型训练阶段,用户根据需求和实际情况选择合适的框架(如Caffe、 TensorFlow等)进行训练得到符合需求的模型。也可直接使用已经训练好的模型 。 2. 模型转换 此阶段为通过RKNN Toolkit把模型训练中得到的模型转换为NPU可用的模型。 3. 程序开发 最后阶段为基于RKNN API或RKNN Tookit的Python API开发程序实现业务逻辑。 此文档主要介绍模型转换和基于RKNN程序开发,不涉及模型训练的内容。