嵌入式AI部署常用硬件平台

部署运行你感兴趣的模型镜像

前言:

CUDA与NPU都是并行计算模块,可加速模型推理速度。 FLOPS (floating point operations per second)指硬件设备每秒浮点运算次 数,用于衡量硬件计算性能。

算力常用单位: 

FLOPS: FLOPS是每秒浮点数运算次数,一般见于GPU;

TOPS: 通常是指八位定点数运算的次数,一般见于FPGA和ASIC;

 1TFLOPS与1TOPS,前者代表是每秒执行1万亿次浮点运算次数,后者代表每秒执行1万亿次运算次数,区别FL即float浮点,大多数NPU都是定点运算,故通TOPS来标称算力。

五个因素影响深度学习模型推理效率:

①数据吞吐量,指运算设备在单位时间内传输的数据量。

②功耗,单位功率内数据吞吐量,数据的计算需要在给定功耗限制下完成。

③时延,指硬件启动后到执行推理的时间,降低延迟对推理加速至关重要。

④推理准确性,在边缘设备的推理结果要与训练时一致。

⑤内存,神经网络推理所需内存主要由算法本身决定,在实际应用时,一个平台可能会部署多个算法,而设备内存大小有限,减小内存对算法应用至关重要。

1、Jetson TX2

NVIDIA 官方 TX2 底板+核心板 

Jetson TX2 主要搭载有两个 CPU,具有 256 个 CUDA 核心的 GPU,8G 的 RAM(运行内存),32G 的 flash,工作在最大性能时功耗不超过15瓦;Jetson TX2 GPU 是由 NVIDIA Pascal、256 颗 CUDA 核心构成;含有 8G 128 位 LPDDR4 内存;2 个 DSL 接口、2 个 DP 1.2 HDMI 2.0 接口;6 个摄像头(2 通道 CSI2 D­PHY 1.2(每 个通道 2.5 Gbps);连接 1 千兆以太网、802.11ac WLAN、蓝牙等。为了能使主板硬件功能充分发挥效果,TX2 支持 Linux 开发环境、NVIDIA Jetpack SDK,包括 BSP、深度学习库、计算机视觉、GPU 计算、多媒体处理等众多功能。Jetson TX2 的核心硬件资源:

2、Jetson Xavier NX

 可在 10W 功率下提供 14TOPS, 在 15 W 功率下可提供 21TOPS。

开发套件 

 Jetson Xavier NX硬件资源

 3、RK3399 Pro

神经网络处理单元(NeuralNetworks Process Units,NPU)是神经网络模型在 RK3399 Pro 嵌入式开发板上最主要的推理运算单元。整型部分通过 NPU 并行处理,浮点部分则交给 RK3399 的 ARM Cortex-A72 核心,这样的架构在嵌入式人 工智能领域可以发挥最大的性价比。NPU 可以协助 CPU 进行神经网络加速计算,采用 MPE 与 APiM 独特 AI 架构,典型算力为 2.8Tops,拥有 9.3Tops/W 超高效能,能高效的帮 CPU 分担大量推理运算的任务,从而节省不少功耗。

 选用 RK3399 Pro 嵌入式开发板,可配备外置鼠标、键盘、显示屏、摄像头。

4、Jetson Nano

设备 CPU 为四核 64 位 ARM、128 核集成 GPU 组成拥有着较强的图像处理能力,其 GPU 的浮点计算量可达 472GFLOPS 可适用大部分的 AI 算法, Jetson Nano 设备的功耗较低,采用电源供给的 5V 直流电输入设备时可使设备性能达到峰值而其功耗仅为15W

 Jetson Nano可以执行调用 TensorRT 加速 计算轻量化 YOLOV5 目标检测算法。比如设备可完全检测蛋鸡实时的四类行为,四类行为识别准确 度较高其检测的 FPS 值为 7.6,对蛋鸡的四类行为实时检测效果较差。使用 TensorRT 进 行推理加速其检测准确度未发现明显降低,其检测 FPS 值提升为 20.4。相比于未使用加 速的检测结果,提升系统对蛋鸡行为的检测速度近三倍,可实现较为流畅的蛋鸡行为实时检测。实验结果说明本文提出的轻量化 YOLOV5 算法可在构建的蛋鸡行为检测系统中稳定运行,可准确实现蛋鸡各类行为的识别且其检测速度较高,基本可实现蛋鸡行为 的实时检测。

5、迅为iTop4412 开发平台

三星公司基于 ARM 架构开发的四核处理器 Exynos 4412,Exynos 4412是一款基于 Coretex-A9 的 32 位四核微处理器处理器在 CPU 中集成了 32 k 的一级缓冲和 1M 的二级缓存,使用 64位/128 位内部总线体系结构和 多种功能强大的硬件加速器来执行不同的任务。同时有着用于移动应用的高级电源管理,有着 8 位 ITU 601/656 摄像机接口支持,缩放分辨率最大可达 4224 像素,非缩 放分辨率最大位 8192 像素,有着可扩展多核 GPU 的 3D 图形加速和 2D 图形加速支持。为增强总体功能,处理器还包括了丰富的硬件外设支持,具体包括三个 24 位 I2S 接口支持、八个 I2C 接口支持、三个 SPI 接口、四个 UART 支持、三个用于蓝牙 2.0 的 Mbps 端口、四个 SD / SDIO /HS-MMC 接口支持和和 117 个 GPIO 端口等等。

6、RV1126

RV1126人工智能芯片的CPU采用了四核ARM 32位Cortex A7处理器,主频高达1.5GHz。同时芯片上还集成了独立的 NPU,具备高性能、低功耗等优势,适合 AI 应用的开发部署。利用 NPU 进行模型的推理加速,NPU 具有如下特点: (1)低功耗:功耗不及所需 GPU 的 10%; (2)丰富的框架支持:TensorFlow、PyTorch、Caffe、ONNX 等;(3)低成本:相比所需 GPU,成本低廉。

由于嵌入式平台资源有限,特别是没有 GPU 的嵌入式硬件无法使用常规的前向推理框架,国内外也有一些针对嵌入式平台的神经网络前向推理框架,常见的有:TensorFlow Lite, Tengine,NCNN 等。这几种嵌入式神经网络推理框架适用于大多数嵌入式硬件设备,但是针对具有 NPU 的嵌入式设备并没有完全支持。部署模型时采用的是瑞芯微公司自研的神经网络推理框架,嵌入式平台的 NPU 支持大部分的卷积神经网络中常用到的算子,如卷积 算子、全连接算子、池化算子、激活算子等,便于模型的移植,可以支持大部分模型的部署推理。人脸检测、人脸识别模型的训练均在 PC 端进行,训练得到的模型要进行转换,才能在嵌入式平台的 NPU 上实现模型推理加速。 

7、NVIDIA Jeston Xavier NX

是一款基于 Jeston NXTM 的计算平台,内置集成 NX 模块,加速了NVIDIA软件堆栈,性能相当于前代产品Jeston TX2的10倍以上。可在 10W 功率下提供 14TOPS, 在 15 W 功率下可提供 21 TOPS

后续更新TensorRT推理加速的具体实施。

您可能感兴趣的与本文相关的镜像

TensorRT-v8.6

TensorRT-v8.6

TensorRT

TensorRT 是NVIDIA 推出的用于深度学习推理加速的高性能推理引擎。它可以将深度学习模型优化并部署到NVIDIA GPU 上,实现低延迟、高吞吐量的推理过程。

嵌入式设备上部署AI模型时,由于硬件资源(如计算能力、内存、功耗限制)的约束,通常需要对原始模型进行压缩,以提升运行效率并减少存储与计算需求。常用的模型压缩方法包括以下几种: ### 剪枝(Pruning) 剪枝是一种通过移除对模型输出影响较小的神经元或权重来减少模型复杂度的技术。该方法可以显著降低计算量和模型大小,适用于对推理速度要求较高的嵌入式系统。然而,剪枝可能会影响模型的准确性,通常需要在剪枝后进行微调以恢复性能。 ### 量化(Quantization) 量化通过降低模型权重和激活值的精度来减少模型大小和计算复杂度。例如,将32位浮点数转换为8位整数(INT8)或更低的位数(如4位或2位),可以在保持较高精度的同时大幅提升推理速度并减少内存占用。该方法在嵌入式AI部署中应用广泛,尤其适合资源受限的设备[^2]。 ### 知识蒸馏(Knowledge Distillation) 知识蒸馏是一种模型压缩策略,通过使用一个大型、高性能的“教师模型”来训练一个更小的“学生模型”,使其在保持高效推理能力的同时,尽可能接近教师模型的精度。该方法在嵌入式设备上尤其适用于需要兼顾精度与效率的场景。由于需要额外的训练步骤,该方法在部署流程中增加了训练复杂度[^4]。 ### 权值共享(Weight Sharing) 权值共享技术通过让多个神经元共享相同的权重值,进一步减少模型参数数量。这种方法可以有效压缩模型大小,但会增加训练过程的复杂性,可能对优化带来一定挑战[^4]。 ### 精简网络结构(Lightweight Network Design) 设计轻量级神经网络结构是另一种有效的模型压缩方式,例如MobileNet、SqueezeNet、EfficientNet等。这些网络通过深度可分离卷积、通道剪枝等结构优化策略,显著减少了计算量和参数数量,同时保持了较高的模型精度。这类网络结构特别适合直接部署嵌入式设备上[^4]。 ### 低秩分解(Low-Rank Factorization) 低秩分解通过矩阵或张量分解的方式,将原始权重矩阵近似为低秩矩阵的乘积,从而减少冗余计算。该方法能有效降低模型的计算复杂度,但需要额外的分解计算步骤,可能影响部署效率[^4]。 以下是一个使用PyTorch实现8位量化模型的示例代码: ```python import torch from torch.quantization import get_default_qconfig from torch.quantization.quantize_fx import prepare_fx, convert_fx # 定义一个简单的模型 class SimpleModel(torch.nn.Module): def __init__(self): super(SimpleModel, self).__init__() self.linear = torch.nn.Linear(10, 1) def forward(self, x): return self.linear(x) # 实例化模型并设置为评估模式 model = SimpleModel() model.eval() # 配置量化器 qconfig = get_default_qconfig('fbgemm') prepared_model = prepare_fx(model, qconfig) # 模拟校准过程(使用少量数据进行量化参数估计) calibration_data = torch.randn(10, 10) with torch.no_grad(): for _ in range(10): prepared_model(calibration_data) # 转换为量化模型 quantized_model = convert_fx(prepared_model) # 查看量化后的模型结构 print(quantized_model) ``` 上述代码展示了如何使用PyTorch的FX量化工具对模型进行8位整型量化,适用于嵌入式设备部署
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值