8月13日,Microsoft Azure联合NVIDIA企业开发者社区,举办了“Microsoft Azure IoT&NVIDIA Jetson开发者”活动。
本人有幸参加,在这里对讲解的部分理论基础进行了记录(没有代码相关哦)。٩(๑>◡<๑)۶
Azure IoT
IoT
物联网(Internet of Things,IoT)是通过信息传感设备,按照约定的协议,把任何物品与互联网连接起来进行信息交换和通信,以实现智能化识别、定位、跟踪、监控和管理的过程与技术。
如下图所示(来自本活动PPT),IoT跨过了早期市场与主流市场间的鸿沟,相信随着关键技术的发展,未来IoT将在各界大放异彩。
Azure
据官网介绍,Microsoft Azure 是用于通过全球数据中心网络生成、部署和管理智能应用程序的云服务。Azure 云平台汇集了超过200种的产品和云服务,利用所选的工具和框架,可以在多个云中、本地以及在边缘生成、运行和管理应用程序,以实现对方案实现的支持。
Azure资源申请
-
学生或者教师,可以使用 edu 邮箱申请免费的 Azure 资源。
-
开发人员或创业者,可以通过本链接申请免费的 Azure 资源。
演示实例:IoT Plug & Play
构建物联网需要大量设备连接到云平台,但设备间由于生产厂家或功能等的不同,存在种种差异,需要深入了解设备细节才能实现设备的接入与管理,这些使得设备与IoT方案的集成困难重重。
那么要怎样才能实现一个方案的快速搭建呢?
答案便是IoT Plug & Play~
如上图所示,整个IoT Plug & Play大致由三个关键要素构成。
- Digital Twin Definition Language(DTDL)是用于描述设备的语言,可将设备能力进行建模。
- 设备的模型由遥测、属性和命令三种元素定义。
– 遥测是由设备发出的数据,包括常规读数流、偶发错误或信息消息。
– 属性包括只读或可写两种属性。举例来说,只读属性有设备序列号等;可写属性有水位报警阈值、报告环境状况的时间间隔等。
– 命令是对设备的操作和控制。例如关闭设备、控制设备进行灌溉等。 - 最后是IoT Hub&IoT Central。IoT Hub用于保证 IoT 应用程序和设备之间双向通信的安全性。IoT Central 能自动加载经过认证的设备模型,并实现对设备状况的监控、设备和其相关数据的管理以及规则的自定义。
如此,有了设备模型,只需要知道设备具有哪些能力,不再需要了解设备接口和底层的具体细节,从而能减少针对设备特异性所需的个性化定制。再结合IoT Hub&IoT Central就可以轻松地连接、监控和管理设备了。^_^
在本次演示实验中,微软的熊宇老师使用连接了传感器和LED的M5Stack Core2简单演示了IoT Plug & Play快速搭建方案的过程。
在UIFlow图形化IDE中拖拽模块再填写相应参数即可完成对业务逻辑的设计。比如这里实现了每隔5s发送传感器获取到的温湿度压力值以及加速度值,还可通过IoT Central发出的命令实现对LED点亮颜色的控制。
通过生成API Token,UIFlow就可与对应的IoT Central相连。再在UIFlow中创建template和device,然后将程序烧录到设备中。这样就可以在IoT Central中查看到我们刚刚设计好业务逻辑的设备啦!(连接好的状态是Provisioned)
现在就能实现对设备的监控和命令了。
这里能看到前面所要求的每隔5s发送的数据。
这里是将设备上的1号LED小灯的光设置为了红色并点亮。
可以看出整个过程的操作十分简单,也无需自己写代码(当然有特殊的需求需要自己写)。
对更多详细信息感兴趣的小伙伴还可以戳这里→链接: 官方IoT Plug & Play介绍
(注:本小节所用图来自本活动PPT或直播截图
NVIDIA Jetson
Jetson
Jetson是NVIDIA推出的一系列面向边缘AI的高性能低功耗平台,包括Jetson Nano和Jetson Xavier NX等。平台包括 Jetson 模组(外形小巧的高性能计算机)、用于加速软件的 NVIDIA JetPack SDK,以及包含传感器、SDK、服务和产品的生态系统,上述软硬件与生态的支持使得开发过程更为容易。
相关硬件(看不清可以去官网)与软件说明截图如下:
利用TAO Toolkit实现模型的训练、调整与优化
TAO这三个大写字母即是来自Train(训练)、Adapt(调整)、Optimize(优化)的首字母。
TAO Toolkit是一个基于 python 的工具包,它使开发人员能够使用 NVIDIA 预先训练好的模型,并让开发人员能够使用流行的网络架构适配自己的数据来训练、调整、修剪和导出以进行部署。它拥有简单的接口和抽象,提高了深度学习训练工作流程的效率。
使用的TAO Toolkit大致流程如下:
配置环境和路径→准备数据集和预训练模型→定义执行设置→训练模型→评估训练结果→(模型剪枝→重新训练剪枝后的模型→)模型导出。
利用TensorRT部署TAO训练的模型
TensorRT可在以下几个方面对模型的推理进行优化:
- 精度校准:在尽量保证准确率的情况下,使用如FP16或INT8的低精度数据类型能使模型的体积更小,从而加速推理并减少延迟。
- 动态显存:避免显存的重复申请以及浪费,如让使用完的显存及时释放。
- 多流执行:并行处理多个输入流。
- 网络层融合:纵向上可将结构和计算方式相同的层融合计算。横向上则可把卷积、偏置和激活层融合为一个CBR结构。这样能减少网络层数,优化对GPU显存和带宽的使用。
- 内核自调整:以当前模型在目前所在GPU平台上达到最优性能为目的,调整算法并设置内核。
如上图所示,整个使用流程大致如下:
将训练好的网络优化得到推理引擎,并序列化到磁盘得到Plan文件→需要使用时对上述文件进行反序列化,生成可执行的引擎。
需要注意:生成的Plan文件不能跨硬件平台或软件版本使用!
(注:本节所用图来自本活动PPT或直播截图文章来源:https://www.toymoban.com/news/detail-465374.html
总结
我们可以看到Azure丰富的资源以及其在IoT业务上的各种解决方案,Jetson软硬件与生态的支持也让边缘AI开发变得更为容易。
本次第二个动手实验也是首先使用Azure的资源获取训练数据,再使用Azure资源中的“自定义视觉”完成模型训练,最终导出模型上传至Jetson Nano实现了一个简单的口罩识别解决方案。
希望小伙伴们在这里可以找到自己感兴趣的东西(o´ω`o)ノ~文章来源地址https://www.toymoban.com/news/detail-465374.html
到了这里,关于Azure IoT&NVIDIA Jetson开发简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!