1.PaddleLite和PaddleSlim目前在深度学习领域分为两大派系。一种是学院派,研究强大而复杂的模型网络和实验方法,以追求更高的性能;作为一所工科学校,它的目标是在硬件平台上更稳定、更高效地实现算法,效率是它的目标。复杂的模型固然有更好的性能,但是高存储空间和计算资源消耗是导致其难??以在各种硬件平台上有效应用的重要原因。因此,卷积神经网络的深度和规模不断增加,给深度学习在移动设备上的部署带来了巨大的挑战。深度学习模型的压缩与加速已成为学术界和工业界关注的研究领域之一。1.设备端推理引擎的背景随着深度学习的快速发展,尤其是小网络模型的不断成熟,原本应用在云端的深度学习推理可以在终端上完成,比如手机、手表,摄像头,传感器,音频,也就是终端智能。此外,可用于深度学习计算的硬件也在井喷,从英特尔到英伟达、ARM、Mali、寒武纪等。与服务端智能相比,端侧智能具有低延迟、节省资源、保护数据隐私等优势。目前已广泛应用于AI相机、视效等场景。但在深度学习推理场景中,各种平台、不同芯片对推理库的能力提出了更高的要求。设备端模型的推理往往面临计算能力和内存的限制,加之日益异构的硬件平台和复杂的设备端使用条件,对设备端推理引擎的架构能力提出了相当大的挑战。端侧推理引擎是端侧智能应用的核心模块。它需要在有限计算能力和有限内存的约束下,高效地利用资源,快速完成推理。因此,Paddle期望为不同的业务算法场景、不同的训练框架、不同的部署环境提供一个简单、高效、安全的端到端推理引擎。2.Paddlelite的特点为了全面支持众多的硬件架构,实现各种人工智能应用在这些硬件上的性能优化,Paddle提供了端到端的推理引擎PaddleLite。截至目前,PaddleLite已广泛应用于搜索广告、手机百度、百度地图、全民小视频等多项重要业务。PaddleLite具有以下产品特点:1)面向移动端和嵌入式端的模型部署工具,可用于部署PaddlePaddle、TensorFlow、Caffe、ONNX等平台的主流模型格式,包括MobileNetV1、YoloV3、UNet、SqueezeNet和其他主流机型。2)多种语言的API接口:C++/Java/Python,方便嵌入各种业务程序。3)丰富的端到端模型:resnet、effcientnet、shufflenet、mobilenet、unet、facedetection、unet、ocr_attention等4)支持丰富的移动和嵌入式芯片:ARMCPU、MaliGPU、AdrenoGPU、Ascend&KirinNPU、MTKNeuroPilot、RKNPU、寒武纪NPU、X86CPU、NVIDIAGPU、FPGA等硬件平台。5)除了Lite自身提供的性能优化策略外,还可以结合PaddleSlim对模型进行压缩量化,从而获得更好的性能。3.架构设计如上图架构图所示,Paddle-Lite架构侧重于多硬件和高性能的支持。其主要设计思路如下:1)引入Type系统,加强多硬件混合调度能力、量化方式、数据布局。2)硬件细节隔离,任何支持的硬件都可以通过不同的编译开关自由插拔。3)引入MIR(MachineIR)的概念,加强对执行环境的优化支持。4)图优化模块和执行引擎实现了很好的解耦和拆分,保证了预测执行阶段的轻量化和高效率。二、对AIOps的思考1.背景AIOps最初定义为AlgorithmITOperations,是通过运维算法实现运维自动化,最终走向无人运维。随着技术的成熟,逐渐确定为IT运维的人工智能——智能运维,将人工智能应用到运维领域,基于现有的运维数据(日志、监控信息、应用信息等)。),通过机器学习的方式进一步解决自动化运维无法解决的问题。早期的运维工作大部分是由运维人员手工完成的。在互联网业务快速扩张、人工成本高昂的时代,人工运维难以维护。因此,自动化运维应运而生。主要利用可自动触发的脚本和预定义的规则来执行常见的、重复性的运维任务,从而降低人工成本,提高运维效率。总的来说,自动化运维可以认为是一个基于行业领域知识和运维场景领域知识的专家系统。随着整个互联网业务的快速扩张和服务类型的复杂多样,“基于人为指定规则”的专家系统逐渐不能为所欲为,自动化运维不足日益突出.DevOps的出现部分解决了上述问题。它强调价值交付的全球视角,而DevOps强调横向集成和连接。AIOps是DevOps在运维(技术运维)端的高层实现。两者并不冲突。AIOps不依赖于人为指定的规则,提倡机器学习算法从海量运维数据(包括事件本身和运维人员手动处理日志)中自动学习,不断提炼和总结规则。AIOps在自动化运维的基础上,增加了一个基于机器学习的大脑。指挥监控系统采集大脑决策所需的数据,进行分析决策,指挥自动化脚本执行大脑的决策,从而实现运维系统。总体的目标。下图展示了百度运维的发展历程:从2014年开始,从最初的行业领域知识加上运维专家的经验,到人工智能算法的加入,进化到AIOps,从数据构建和运维开始智能监控场景,逐步覆盖智能故障管理、变更管理、容量管理和服务咨询。综上所述,自动化运维水平是AIOps的重要基石,AIOps将以自动化运维为基础,将AI和运维很好地结合起来。这个过程需要三个方面的知识:1)行业、业务领域知识,以及积累与业务特性相关的知识和经验,熟悉生产实践中的疑难问题。2)运维领域的知识,如指标监控、异常检测、故障发现、故障止损、成本优化、容量规划和性能调优等3)算法和机器学习知识,将实际问题转化为算法问题。常用算法包括聚类、决策树、卷积神经网络等。百度的故障管理场景如图所示,主要包括故障发现、故障止损、故障诊断智能预警等。2、故障发现的黄金指标运维包括请求数(流入状态)、成功率(流出状态)、响应时间(用户对应的经验)、系统容量(系统并发负载)等。预测的难点在于基线预测算法遇到节假日等不规则情况时不准确。此外,在配置方面,忙闲时对机器的需求变化很大,容易造成资源浪费。2.1基线预测算法基线预测算法主要采用稳健回归与周期数据多模式挖掘相结合的方法。鲁棒回归算法的思想是假设小窗口符合线性趋势变化,即局部线性。多模型周期数据的思路是用多个基线模型来匹配不同的节假日、春节等特殊时期。3、故障自愈故障发生第一时间的原则是停止故障的损失,而不是查找原因甚至解决问题。先止损,再分析。传统的手动止损存在以下三个缺点:反应可能不够快,决策可能不够准确,操作可能会出错。AIOps中的故障止损称为故障自愈。相比于缺乏人工智能止损,7*24小时快速响应,全球一致的信息决策,程序自动精准运行。故障自愈场景及止损方法如下:4、故障诊断如下图所示,为系统运行流程图,此时G节点发生故障。人工故障定位的方法通常从两个方向入手。一是找出A上的故障与G节点之间的关系,二是追溯G节点异常的原因。这很大程度上依赖于人为的历史经验,不容易准确定位原因和迅速地。AIOps的智能故障诊断方法以黄金指标综合执行方法如下:5.智能预警一个非常重要的运维方法就是在故障发生之前进行预警,从而减少实际损失。人工预警方法通常基于经验,考虑的指标覆盖面小,阈值设置困难,容易出现误报和漏报。AIOps的智能预警可以覆盖上万个指标,通过机器学习自动学习到对应的阈值,无需人工干预。智能预警如下图所示:3.快手推荐系统Dragonfly架构启示1.背景以推荐系统为例,一个在线推荐系统通常包括三个模块:召回、排序和重排。召回是利用诸如ANN搜索、倒排搜索等算法,将候选数从千万减少到十万;排序是通过CTR、LTR等指标,将候选人数从十万减少到一千;最后的重排是利用分集打散、强插、洗牌等技术,将候选人数从几千人减少到十人。为了快速复用,采用了上图分离的系统架构,算法人员和架构人员的代码相互交织,那么业务代码和架构代码如何解耦呢?DavidWheeler说所有的计算机问题都可以通过增加一个抽象层来解决。2.实现方式快手架构的基本思路是构建一个DSL语言Dragonfly,让算法人员以类python的方式进行开发,无需关注底层实现,架构师专注于实现使用C++的底层架构。下图右侧的图片是一个算法实现的例子,纯python代码,易于实现,易于阅读。具体的解决方案是将算法细分为算子的粒度,如下图所示,所有的人工智能算法都是由各种算子组成的,架构师负责开发这些算子的实现。它是在封装的算子的基础上使用的。因此,算法人员不关注底层实现,而是专注于上层逻辑,编写DSL语言,然后提交配置;架构师不关注上层逻辑,只负责编写底层的算子。实现这个提升后,最大的好处就是新场景的接入成本从7人日降低到1人日。我们可以借鉴运算符和词的粒度解耦的思想。我们在开发算法的时候,很多代码交织在一起,提取不出来,造成很多重复性的工作。如果将这些算法逐级切分,分成非常小的算子粒度,那么就可以方便地解耦。是的,算法人员可以任意组合拼接算子实现业务算法。参考文献:[1]《架构设计》作者:吴建明https://www.cnblogs.com/wujianming-110117/p/14398502.html[2]《架构设计》Paddle-Litehttps://paddlepaddle.github.io/Paddle-Lite/v2.2.0/architecture/[3]《故障管理场景 AIOps 实践与探索》作者:陈云https://ppt.infoq.cn/slide/show?cid=83&pid=3355[4]《Dragonfly 快手通用策略 DSL 在推荐系统架构的应用和演进》作者:方建兵https://ppt.infoq.cn/slide/show?cid=83&pid=3355[4]《Dragonfly 快手通用策略 DSL 在推荐系统架构的应用和演进》ppt.infoq.cn/slide/show?cid=83&pid=3295[5]《百度飞浆轻量化推理引擎 Paddle Lite 的实现和应用》作者:颜春薇https://ppt.infoq.cn/slide/show?cid=83&pid=3273
