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组件,包括 RKNPU2、 RKNN Toolkit2 、 RKLLM-Toolkit 和 RKNPU驱动 等。
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。