NEWS

NVIDIA开发者关系经理崔晓楠:英伟达EGX企业边缘加速平台在工业领域中的应用

2022-01-14 source:米文动力

大家好,很高兴今天借助米文动力的平台,跟大家分享英伟达EGX企业边缘加速计算平台在工业领域的应用。我是崔晓楠,在英伟达负责开发者关系和生态合作伙伴。

 

今天的内容分成两部分,第一部分分享英伟达EGX边缘加速计算平台的基本情况,第二部分分享EGX平台在工业检测领域的参考架构。

图片

提到制造业,提到边缘计算,英伟达在几年前就很清晰地看到这个市场未来巨大的潜力,尤其是在制造和工业领域里面,看到了非常多客户有降本增效的需求,同时AI算力正在从数据中心向边缘侧发展。未来大量的IoT设备,大量的分布式人工智能算力如何结合,如何更好地加速边缘应用的适配,都是未来我们要和合作伙伴、用户一起去探索和研究的方向。

图片

今天我们可以非常清晰地看到,加速计算正从云端向边缘侧快速地发展,英伟达也在积极地做相应的布局。在云端依旧采用集中算力的方式,用数据中心加速能力做云端计算加速,在边缘侧NVIDIA去年推出了边缘企业加速计算平台EGX,在这个平台上会赋能更多行业做算力的下放,尤其是在实时应用处理方面,会做应用加速能力的布局。


在端侧赋能自动驾驶、自主机器和机器人做相应计算能力的加速,可以很清晰地看到从云端到边缘端,遵从DGX/HGX、EGX、AGX的计算形态分布,同时会用底层的CUDA把这些平台横向打通,这样大家的应用可以非常容易地迁移,对整个投资和生态的保护都有帮助。

图片

今天想跟大家分享的是EGX平台,它是一个基于企业级的边缘加速计算平台,整个平台的架构分几个层面呈现,最下层是英伟达加速能力的硬件,这里跟以往不太一样的地方,是对所有的硬件会做NVIDIA的Certified认证。

 

现在异构加速计算的趋势非常明显,包括边缘计算服务器里面,CPU,GPU、DPU等计算单元都有应用加速的功能点,我们对相应加速计算单元均做了相关压力性、稳定性、可靠性的测试,保证用户未来在拿到EGX加速计算平台的时候,底层硬件不会存在潜在兼容及稳定的问题,用户可以把更多的精力放在上层应用的加速和开发。


中间层有非常厚的软件加速堆栈,支持裸金属、虚拟化,同时在上面我们会做云边协同管理平台的方案,可以帮用户快速衔接底层基础架构、硬件和前端应用,达到承上启下的作用。

通过云边协同管理平台,可以轻松地把各行各业在边缘侧应用加速的能力,部署到分布式计算的边边角角,同时也会通过集中化的管理方式,把所有应用做好管理和部署。

 

整个EGX平台从底层的硬件到中间的软件堆栈层,再到前端的应用加速层,是依次递进的平台架构。

图片

目前在虚拟化的平台上,可以做到非常好的集成,近期我们与VMware联合推出 NVIDIA AI Enterprise(NVAIE)企业解决方案,同时在纯Bare-metal环境里面,基于容器化的软件堆栈去部署和管理边缘侧的加速应用,也已经成为业界的事实标准。同时云边协同的管理软件Fleet Command, 可以起到云端和边缘侧管理桥梁的作用,作为一个良好的云边协同软件参考架构,在国内也会通过我们的生态和合作伙伴,积极布局基于本土化的Fleet Command软件。

图片

回到今天讨论的工业场景里面,基于NVIDIA EGX平台,我们提出了基于工业检测的参考架构,这里面有非常多的组件,包括NGC、Fleet Command、TAO、Deepstream、TensorRT、Triton 等。

 

我们希望用户有比较好的基于缺陷问题的定义和相应的数据,通过EGX平台的能力,把数据从训练到推理,到推理加速,甚至到边缘侧的部署,实现端到端的能力和流程,保证用户在真正业务端,只要把需要推理或需检测的图片、视频输入到平台里面,平台就会通过它的推理能力,完成检测、判断、分类、或者角色动作处理,里面看到的所有组件,都是相关工作和协同的过程。

 

在EGX平台上,端到端工业检测流程可以细分成四个部分。

图片

第一部分,对于客户来说,首先要定义清楚问题,做好数据采集、数据标注相关工作,在有了这些基本的数据以后,需要用相应的网络模型基础对模型进行训练,这里有个重要的网站NGC,网址是:http://ngc.nvidia.com,NVIDIA在这上面放了预训练模型、框架、算法加速脚本、应用程序Demo,以及很多其他的内容,这些内容基本都是免费供用户和合作伙伴下载使用,是非常友好的快速上手的入口。 

图片

在这里您可以快速了解NVIDIA目前在做什么,已经做了什么,可以拿这些去做跟您应用场景相关的二次开发和匹配,并且每一个场景和模型均提供了非常详细的解释和操作说明。

 

在NGC里面总共有三个大的方向,第一个是基于视觉的方向,第二个是基于语音的方向,第三个是基于自然语言理解的方向,里面有大量的预训练模型可以用。拿到预训练的模型以后,再基于自己标注的数据去做增量训练、迁移学习,可以快速得到一个精度和准确度都比较好的模型来解决您的实际问题。


所以NGC网站非常推荐开发者注册并浏览,更新的内容也会通过容器的方式放在NGC网站上面,此外,NVIDIA性能的测试,底层的基础运行环境也都是基于NGC去实现和复现的。

图片

如果预训练模型不太能满足您目前场景想要解决的问题,这里也有网络架构开放的选择,您可以从NGC网站直接下载到基于分类、目标检测、分割等类型的网络组合,拿到这些网络以后,用相关数据集做迁移学习和训练,也可以很快得到一个您行业里面想解决问题的网络模型,这两种方法我们都是非常推荐的。

图片

通用网络架构模型,在通用数据集里训练的结果是非常好的,可以达到SOTA这样的结果,所以建议用户和合作伙伴从预训练模型或通用模型中选择一个入口,来开始您的模型训练。

图片

第二部分,选择好初始的网络模型框架以后,接下来就是用标注好的数据集做模型训练,这里我们提供了一个工具TAO,全称是Train, Adapt, and Optimization ,之前的版本叫TLT( Transfer Learning Toolkit),就是迁移学习工具。

 

在TAO里面可以做三个事情,也就是TAO首字母的来源,第一个是训练Training,第二个是配合调整Adapt,第三个是优化Optimization。

图片

TAO是一个软件框架,它有两个Input,一个是NGC网络模型,一个是用户的数据集,它提供了Jupyter Notebook接口,可以在里面直接完成模型训练和交互过程,未来会出一个图形UI的版本,这样用起来会更加友好,也便于开发者快速开发相应的应用程序和模型。


输出结果是SOTA的模型,或是您要求的推理模型,它实现的效果就是这样,用一个选好的模型和大概的方向,加上您的数据集作为整个平台的Input,输出就是可以Work,可以上线的推理模型。

图片

上图是TAO内部的工作流程,在拿到客户数据部分,有数据增容手段做数据的丰富和增容,在NGC上拿到初始的网络模型,可以对它做迁移学习训练。


在整个过程中可以做Pruning的动作,对模型做压缩和裁剪,目前在推理侧非常流行,针对推理速度快的场景,可以用更低的精度做推理。譬如用INT8,原来的做法是在拿到模型以后再去做模型的校准和量化,现在是在训练的过程中采用QAT的方式,把量化训练的模式穿插到训练过程中,训练完成后就可以生成校准文件,为未来量化推理做准备,最后在模型导出的部分,结合像TensorRT软件做模型更多网络层的融合加速,使得网络更加适配硬件环境的加速,保证在模型导出的时候,是一个性能准确度和推理速度都非常好的模型,这是TAO大概的工作流程,大家可以拿Jupyter Notebook或者上NGC网站看一下,上面有详细的操作步骤。

图片

第三部分,当您拿到准确度和速度都比较好的推理模型的时候,就需要开始做集成,如果您有应用系统或应用软件,需要把整个模型集成到您现有的应用系统里面去,可以在部署、集成的时候,参考英伟达提供的像DeepStream、Triton这样的推理服务框架,可以非常快速地加速模型部署的过程,提高部署效率。


现在整个推理过程变得越来越复杂,原因可能是框架种类众多、边缘侧计算平台算力的捉襟见肘,也可能是硬件架构的异构计算复杂度、应用系统的业务逻辑复杂度等,这些都会对推理的部署和编排提出非常大的挑战。

图片

关于这方面有两个方式解决,首先是TensorRT,因为TensorRT是英伟达优先会建议您考虑的推理加速工具,您的业务系统如果没有使用到TensorRT,大概率来讲,您系统的整个性能都会遇到很大的挑战。

图片

其次是Triton,Triton是标准的开源推理框架,对外提供非常友好和多样性的接口,如C、Python、RPC、HTTP和Result等,便于您的应用和Triton的推理服务去做集成,内部也有比较好的Batch管理机制,包括Model 编排的机制,可以达到更高效的推理服务能力,同时异构计算、CPU、 GPU都可以得到非常好的支持。


另外,Triton的框架是开源的,这对用户和开发者来讲是有比较大的自由度。

图片

在部署Triton服务的时候,有一些Sample做参考,上图是工业领域做检测的案例,可以看到产线上分布着非常多的计算节点,在这些上位机里面,可以根据要推理或者检测任务的复杂程度,采用不同的计算形态组合解决方案。

 

第一种是对延时性或对实时性要求非常高的业务场景,可能会要求做到1:1的加速,这种场景有几种解决方案,通过嵌入式的方案对产线做升级改造,或者对上位机做能力的改造,甚至还有一步到位的方案,把当前工控机的应用程序完全运行在Jetson里面,完成对上位机能力的替换。

 

第二种是有的应用场景对实时性的要求不太高,临界点是百毫秒或者秒级,对于这些需求可以批量后处理或者集中处理,推荐大家使用EGX把所有的数据收集并汇总,或是通过网络的方式发起推理服务EGX Inference Serving,再集中进行数据处理和推理,最后把结果反馈给前端业务系统。

 

这两种方式都比较推荐, Triton的Inference Serving可以很好的跑在这两个平台上,如果是维护大型的推理场景,只需要考虑Triton能力的培育或使用,对底层的硬件平台来说是比较透明的,免除开发者手动实现大量的Serving的代码工作量,并且可以得到具备生产能力的推理服务框架。

 

此外,您可以根据不同的业务场景选择不同硬件架构的落地方式,Triton的推理服务非常灵活非常简单,这是Github的链接:https://github.com/NVIDIA-AI-IOT/tao-triton-apps,大家有兴趣可以点进去看看。

图片

第四部分, 也是整个端到端最后的部分,当问题定义清楚了,数据准备好了,模型选择好了,模型训练好了,推理优化做好了,应用程序也写好了,那么下面要做的就是打包,通过协同的方式,把集中应用包下发到产线,或者下发到不同工厂的不同应用节点上去,这里会出现非常重要的云边协同的能力。

图片

NVIDIA有一款叫Fleet Command的SaaS软件平台,这款软件平台目前是云服务版本,可以实现应用的一键下发、一键部署、包括基于API的管理、基于各层交换过程中的加密、安全可靠的能力、另外对边缘侧 AI模型,分布式AI算力的监控和告警,也有统一的Dashboard、弹性扩展和可靠性的能力。

 

同时,云边协同想要做的事情会被Fleet Command平台包括,目前在国内有非常多的合作伙伴跟我们一起参考Fleet Command框架,做本地化的可私有化部署的软件,比如米文动力,后面他们的Topic里面也会有相应的介绍,大家可以关注一下。

图片

在NVIDIA EGX平台上用到的软件,在数据准备和模型准备阶段,NGC非常重要,这是一个NVIDIA资源汇聚点,建议您多多上去访问、查询。

 

在模型训练方面,我们提供给生态和开发者TAO这样的工具链,可以帮助用户快速训练、调整和优化模型,通过SDK (比如DeepStream)、Riva、Triton,以及Issac机器人仿真平台,这些SDK可以在应用开发、应用编排阶段提供支持,让用户更好的集成,让整个应用系统更加快速的落地。

 

最后,如何把做好的推理应用节点分发到工厂,如何提供Cloud Native能力,AIOPS未来如何迭代升级,部署下来的应用算力如何监控,这些都是云边协同软件需要去考虑的。

 

整个闭环转起来就是非常好的AIOPS流程,今天NVIDIA做了这样一个闭环的参考架构,您可以从NGC开始,如果您已经有了一些模型训练,有些框架也用得非常好,那您可以从第二个阶段入手,或者您在应用Pipeline层,推理服务上有想提高的地方,那么可以从中间SDK部分开始,又或者您的解决方案打磨的还不错了,涉及到从1个点到10个点,甚至100个点去扩展部署的时候,想从云边协同角度接入也是可以的,所以无论您处在哪个阶段,都可以随时加入进来,开启AIOPS流程。

图片

最后,这是一个基于分割检测的Pipeline,网址是:https://github.com/NVIDIA-AI-IOT/deepstream-segmentation-analytics,训练用的是TAO,模型是在NGC上,应用编排用的是Deepstream,大家有兴趣可以去看看,希望对大家有一些启发。

 

今天讲了关于工业检测的内容,但其实在工业领域里面,还有很多的场景可以做边缘加速,下面请大家一起来看下NVIDIA都做了哪些事情。

image.png

image.png

image.png

image.png


最后,一起来回顾一下EGX边缘企业加速计算平台,首先最底层有NVIDIA认证的非常可靠的底层硬件系统,具备非常好的云边协同的能力,中间软件堆栈有非常多的SDK和Pipeline工具,帮您快速开发和构建基于AI应用并在边缘侧高效的管理部署。

图片

ok,今天的内容就是这些,非常感谢大家的聆听!