边缘计算设备与部署方案

1. 边缘计算设备

边缘计算设备,是相对于云计算而言的。不同于云计算的中心式服务,边缘服务是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。其应用程序在边缘侧发起,为了产生更快的网络服务响应。满足行业在实时业务、应用智能、安全与隐私保护等方面的基本需求。由于数据处理和分析,是在传感器附近或设备产生数据的位置进行的,因此称之为边缘计算。

  1. 低延迟:计算能力部署在设备侧附近,设备请求实时响应;
  2. 低带宽运行:将工作迁移至更接近于用户,或是数据采集终端的能力,能够降低站点带宽限制所带来的影响;
  3. 隐私保护:数据本地采集,本地分析,本地处理,有效减少了数据暴露在公共网络的机会,保护了数据隐私;

某些场景下,直接使用GPU服务器做视频分析,存在几个问题:

  1. 许多场景下,数据源(摄像头) 是分布式的,可能分布在不同的子网内,甚至分布在不同的城市,使用GPU服务器集中处理延时大、带宽占用高、能耗高;
  2. 有的场景下使用GPU,会造成算力过剩、资源浪费;
  3. 相比较纯软件的产品,客户更倾向于为软硬件一体的产品买单。

2. 边缘计算设备的特点

(1) 算力有限:常常在几丁~几十T INT8 OPS之间。

(2) 功耗低:功耗在5-30W,可以通过太阳能供电,进行户外移动作业。

(3) 硬件接口丰富:便于与其他设备/系统对接。

(4))体积小,重量轻:安装简便灵活,便于分布式部署和扩展。

3. 几种边缘计算设备平台

(1) 训练平台:通常以英伟达Nvidia-GPU为主;

(2) 推理平台:云端和设备端, CPU(x86 arm), GPU, NPU, TPU, FPGA, ASIC;

4. 边缘计算设备的一般开发流程

(1)基础平台开发:深度学习分析引擎、业务中台、管理平台;

(2)模型转换、验证及优化:使用硬件平台厂商提供的模型转换工具套件将caffe、tensorflow、pytorch、 mxnet、darknet、onnx等模型转换为目标平台模型,必要时进行模型量化以及模型fnetune;对不支持的模型或层,自定义算子、插件实现;

(3)视频结构化引擎代码适配:主要是视频流及图片编解码、推理等模块,任务管理、流程控制、前后处理等其他代码通常都是跨平台的;

(4)交叉编译及测试:使用交叉编译工具链编译及调试代码,交叉编译工具工具链主要包括2部分内容,linaro gcc g++编译及调试器和包含了目标平台系统环境及软件库的所有代码文件;

(5)业务代码实现:针对不同场景的业务需求开发业务逻辑处理代码;

(6) 系统部署:通常使用docker部署,使用docker-compose编排多个docker容器或使用K8S管理多个分布式节点。

5. 常见部署方案

目前大多数深度学习算法模型要落地对算力要求比较高,如果在服务器上,可以使用GPU进行加速,但是在边缘端或者算力匮乏的开发板子上,不得不对模型进一步的压缩或者改进,也可以针对特定的场景使用市面上现有的推理优化加速框架进行推理。目前来说比较常见的几种部署方案为:

  • nvidia GPU: pytorch->onnx->TensorRT
  • intel CPU: pytorch->onnx->openvino
  • 移动端(手机、开发板等):pytorch->onnx->MNN、NCNN、TNN、TF-lite、Paddle-lite、RKNN#S

TensorRT的优化原理:

  1. 算子融合(网络层合并):通过融合一些计算op或者去掉一些多余op来减少数据流通次数以及显存的频繁使用来提速,融合之后的计算图的层次更少了,占用的CUDA核心数也少了,因此整个模型结构会更小,更快,更高效;
  2. 低精度量化:量化即IN8量化或者FP16以及TF32等不同于常规FP32精度的使用,这些精度可以显著提升模型执行速度并且不会保持原先模型的精度,更低的数据精度将会使得内存占用和延迟更低,模型体积更小;
  3. cuda核自动调整:根据不同的品卡构架、SM数量、内核频率等,选择不同的优化策略以及计算方式,寻找最合适当前构架的计算方式,不同的硬件TensorRT 都会做对应的优化,得到优化后的engine;
  4. 动态张量显存:在每个tensor的使用期间,TensorRT会为其指定显存,避免显存重复申请,减少内存占用和提高重复使用效率;
  5. 多流执行:使用CUDA中的stream技术,最大化实现井行操作。

算子op补充:

  • 算子即Operator,简称op。op是深度学习的基础操作,任意深度学习框架中都包含了数百个op,这些op用于各种类型的数值、tensor运算。在深度学习中,通过nn.Module这样搭积木的方式搭建网络,而op就是更基础的,用于制作积木的配方和原材料。
  • 譬如一个简单的网络由各种nn.Module如Linear、ReLU、Softmax搭建而成,但从本质上,这些nn.Module则是由一个个基础op拼接,从而完成功能的。这其中就包含了Matmul、Relu、Softmax等op。
### 边缘计算设备应用层架构设计 #### 应用层的功能定位 边缘计算中的应用层负责处理来自终端用户的各类请求和服务调用。这些服务涵盖了多个领域,如智能家居、智能交通和智能制造等[^1]。具体来说,在智能物业管理平台的设计中,通过融合边缘计算云计算的优势,可以实现更高效的资源配置、精确的数据分析以及迅速的服务响应[^2]。 #### 架构组件详解 针对特定应用场景——例如基于边缘计算的智能门禁系统——其应用层通常包含以下几个核心模块: - **访客注册模块**:允许外部人员预先提交访问申请,并经内部授权后录入数据库。 - **模型训练模块**:利用机器学习算法构建人脸识别或其他生物特征识别所需的预测模型;这部分工作可以在云端完成以获取更强算力支持,之后再下发至各节点执行推理任务。 - **端侧识别模块**:部署于前端硬件设施上(比如摄像头),能够独立完成图像采集及初步筛选过程,减少不必要的网络传输开销。 - **设备调度平台模块**:集中管控所有接入系统的物理装置状态,确保它们正常运作的同时也便于后续维护升级操作[^3]。 #### 技术选型建议 为了保障整个体系结构具备良好的扩展性和兼容性,推荐采用如下技术栈组合来进行实际编码实施: - 后台逻辑部分选用 Flask 或 SSM 框架搭建 RESTful API 接口; - 容器化方案考虑 Docker 来简化环境配置流程; - 物联网通信协议方面倾向于 MQTT ,因为它具有轻量级特性非常适合低带宽条件下频繁的消息交换活动。 ```python from flask import Flask, request import paho.mqtt.client as mqtt app = Flask(__name__) @app.route('/register', methods=['POST']) def register_visitor(): data = request.json # 处理访客注册逻辑... client = mqtt.Client() client.connect("mqtt.example.com", 1883) if __name__ == '__main__': app.run(debug=True) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值