1. 鲁班猫板卡介绍

随着AI技术在各个行业快速发展,在云端部署到实际应用场景中存在隐私保护、通讯延时、成本等问题,将AI技术和嵌入式系统结合, 构建边缘计算成为当前技术热点之一。

但很多流行AI算法需要很多的算力和存储,对于嵌入式设备的算力、功耗有较高的要求, 随着AI处理器芯片研发,实现复杂的AI算法有很多方式成为可能。目前在嵌入式实现AI方式有:基于嵌入式处理器,基于GPU多处理器 或者基于专门的运算加速单元等等,这些方式有各自的优缺点,根据实际应用领域选择。

鲁班猫RK系列板卡是基于瑞芯微处理设计的一款低功耗、高性能单板电脑,保留了完善的硬件资源, 充分考虑了用户的使用需求,在成本优化的同时,引出了尽可能多的外设功能,该系列板卡可以应用于不同场景。 其中lubancat-zero系列和LubanCat-1/2系列板卡上是使用瑞芯微rk356X处理器(rk3566/rk3568), LubanCat-4/5板卡使用瑞芯微rk3588系列处理器,具体的硬件请参考下对应板卡的 产品规格书

rk356X/rk3588处理器搭载了神经网络处理单元(NPU),具备强大的算力,支持主流的深度学习框架,拥有功能丰富的开发工具和开发案例, 同时硬件方面集成了GPU、VPU、RGA等单元,接下来将简单介绍下这些硬件运算单元, 详细的信息请查看 网盘资料 中的芯片手册。

1.1. CPU

lubancat-zero系列和LubanCat-1/2系列板卡上使用瑞芯微rk356X处理器(rk3566/rk3568),该处理器:

  • 四核Cortex-A55处理器,22nm先进制程,主频高达1.8Ghz

  • ARM Neon高级SIMD(单指令、多数据)支持加速媒体和信号处理计算

  • 包括支持单精度和双精度操作的VFP硬件

  • 支持加密扩展

  • 支持Trustzone技术等等

LubanCat-4/5使用瑞芯微rk3588系列处理器,该系列处理器的特点:

  • 8核64位处理器,集成4核Cortex-A76和4核Cortex-A55大小核架构,以及单独的NEON协处理器

  • 大核支持最高2.4Ghz,小核最高支持1.8Ghz

  • 完整实现ARM架构v8-A指令集,ARM Neon Advanced SIMD(单指令、多数据)支持加速媒体和信号处理

  • 支持Trustzone技术等等

1.2. GPU

lubancat-zero系列和LubanCat-1/2系列板卡上使用瑞芯微rk356X处理器(rk3566/rk3568), 该处理器的GPU型号为Mali-G52:

  • 支持OpenGL ES 1.1、2.0、3.2

  • 支持OpenCL 2.0, Vulkan 1.0 、1.1

  • 支持2D图形、3D图形以及GPU上的通用计算(GPGPU)等等。

LubanCat-4/5系列板卡使用瑞芯微rk3588系列处理器,该处理器的GPU型号为Mali-G610:

  • 支持OpenGL ES 1.1、1.2、3.2

  • 支持OpenCL 2.2, Vulkan 1.2

  • 支持2D图形、3D图形以及GPU上的通用计算(GPGPU)等等。

使用OpenGLES和Opencl开发,需要从Khronos官网下载相应的头文件,以及板卡安装的mali库文件。 鲁班猫板卡的系统(debian11、ubuntu20.04等)默认添加了mali库,通过apt命令安装opencl、OpenGL头文件,就可以进行开发。

1.3. 神经网络处理单元(NPU)

rk356X和rk3588都内置独立的NPU,分别高达1TOPS和6TOPS,支持整数8、整数16卷积运算,支持深度学习框架:TensorFlow、TF-lite、Pytorch、Caffe、ONNX等等。

NPU是专门用于神经网络的处理单元,它旨在加速人工智能领域的神经网络算法,如机器视觉和自然语言处理。随着人工智能的应用范围正在扩大,目前 提供各种领域的功能,包括面部跟踪、手势和身体跟踪、图像分类、视频监控、自动语音识别(ASR)以及高级驾驶员辅助系统(ADAS)等。

使用RKNPU,瑞芯微官方提供了RKNN组件,包括 RKNPU2RKNN Toolkit2RKLLM-ToolkitRKNPU驱动 等。

RKNPU2 开发套件有一个运行库(librknnrt.so等),提供c/c++编程接口,用来部署推理RKNN模型,接口适用于Linux或者Android系统。

RKNN Toolkit2 开发套件(Python接口)提供了在PC,Rockchip NPU平台上进行模型转换、量化功能、模型推理、性能和内存评估、量化精度分析、模型加密等功能。 该套件中还有一个 RKNN Toolkit Lite2 ,它提供了一个Python编程接口,可以在板端部署RKNN模型。

其中 RKNN模型 是瑞芯微为了加速模型推理而基于自身NPU硬件架构定义的一套模型格式,使用该格式定义的模型在Rockchip NPU上可以获得更高的性能。

RKLLM-Toolkit 是为用户提供在计算机上进行大语言模型(Large Language Model, LLM)的量化、转换的开发套件,支持将Hugging Face格式的大语言模型转换为 RKLLM模型。

RKNPU驱动 提供了NPU硬件接口程序,板卡系统固件都已经适配好。

另外,还有 RKNN Model Zoo 模型仓库,是基于RKNN工具链开发, 提供了目前主流算法的部署例程(包括Python API和C API例程)。

1.4. 视频处理单元

rk356X和rk3588系列芯片具备有强大的视频编解码能力,下面列举一些特征, 详情请参考 网盘资料 中的芯片手册。

rk356X系列:

  • H.265/H264/VP99解码器支持4K

  • H.264/H.265编码器支持1080p@60fps

  • JPEG编解码器等

rk3588系列:

  • 支持8K@60fps H.265/H264/VP9/AV1/AVS2视频解码

  • 支持8K@30fps h265/H264视频编码

  • 高质量的JPEG编解码器等等

瑞芯微提供 MPP 调用硬件编解码模块, 也有支持mpp的gsteamer, ffmpeg 等。 鲁班猫板卡系统(debian11、ubuntu20.04等)默认安装了mpp相关库,可以直接使用,也可以自行编译源码安装。

1.5. RGA

RGA (Raster Graphic Acceleration Unit)是一个独立的2D硬件加速器,可用于加速点/线绘制,执行图像缩放、旋转、bitBlt、alpha混合等常见的2D图形操作。

rk356X和rk3588详细的支持情况,请查看下 Rockchip_Developer_Guide_RGA_CN.md

使用RGA,瑞芯微官方提供了 librga 库,该库实现了RGA用户空间驱动,并提供了一系列2D图形操作API。