当前位置: 首页 > 科技观察

度小满自动机器学习平台实践

时间:2023-03-15 09:19:17 科技观察

随着AI技术的发展,不同业务涉及的AI技术也越来越多样化。与此同时,AI模型参数数量逐年呈爆炸式增长。人工依赖性强、算法不稳定、实现周期长等问题已经成为困扰人工智能从业者的问题。“自动化机器学习平台”是解决AI落地压力的关键手段。今天和大家分享一下小曼搭建自动化机器学习平台ATLAS的实战经验。一、机器学习平台首先介绍一下度小漫机器学习平台的背景、发展历程和现状。一、业务场景度小漫是一家金融科技公司。公司内部业务场景主要分为三个方面:智能风控:涉及关系数据挖掘、文本数据挖掘、情感分析等NLP技术,人脸识别等CV技术。智能获客:涉及常见的广告获客技术,如个性化定价、个性化推荐、创意广告、用户画像等。智能管理:涉及图神经网络、因果推理、OCR等AI算法技术。由于业务涉及的AI技术种类繁多,给AI算法的落地带来了极大的挑战。2.AI算法落地难AI算法落地存在一个不可能三角:算法开发难以同时实现高效率、低成本、高质量。AI算法成本高:首先,AI算法开发的门槛很高。例如,应用于金融风控的OCR技术和人脸识别技术,进入门槛较高。并不是所有的企业都能掌握,只有少数企业能达到顶峰。其次,AI算法对硬件资源的消耗很大。比如训练一个人脸识别模型或者一个大规模的NLP模型,需要大量的计算资源,这是一个无形的门槛。AI算法效果不稳定:AI算法的效果取决于专家的经验,不同的人会得出不同的结果,所以存在不稳定因素。AI算法交付周期长:一个成熟的算法从开发到部署上线的开发周期往往长达数月以上,很多时候需要根据丰富的业务场景进行定制化开发,并且最终模型的输出与算法的实现之间存在差距。面对AI落地的这些问题,我认为唯一的解决办法就是使用机器学习平台。3.AI算法的产生过程下面我们从AI算法的产生过程来了解一下AI算法在实现过程中遇到的具体困难。AI算法的实现主要分为四个部分:数据管理、模型训练、算法优化、部署发布。模型训练和算法优化是一个迭代过程。在算法开发的每一步中,对这一步涉及的人员的技术要求差异很大:数据管理:要求技术人员懂业务、数据治理、大数据相关技术。模型训练和算法优化:要求了解算法模型的基本原理,有算法优化经验。部署发布:要求熟悉后端开发和Web服务器相关技术。从每个步骤所需的技术栈可以看出,一个或两个或三个技术人员很难完全掌握所有技术,而且每个步骤都涉及人工,是导致生产不稳定的生产瓶颈。使用机器学习平台可以同时解决这两个问题。4、机器学习平台ATLAS我们的机器学习平台ATLAS贯穿于AI生产的全过程,旨在替代人工参与AI算法的实现,实现高效输出,提升AI算法研发效率。ATLAS涉及以下四个平台:标注平台:负责产生可供训练的标注数据;数据平台:负责大规模数据治理;训练平台:负责模型训练优化;部署平台:提供高效、低成本、高可用的部署方案。这四个平台之间的关系也是迭代的。下面分别介绍这些平台的设计细节和运行过程。5.ATLAS:数据与训练数据与训练部分涵盖标注平台、数据平台和训练平台。(1)标注平台标注平台主要为AI算法的训练提供标注数据。自深度学习诞生以来,模型变得非常复杂。AI算法效果的瓶颈已经从模型设计转移到数据质量和数量上。因此,数据的高效生产是人工智能算法落地的关键环节。ATLAS数据标注平台主要有两大特点:多场景覆盖和智能标注。多场景覆盖:ALTAS标注平台覆盖了公司内部业务涉及的所有算法场景。包括OCR领域的文字检测、文字识别、人脸检测与人脸比对、CV领域的图像分类、NLP领域的实体关系数据标注、文本标签等任务。智能标注:为了提高数据标注的效率,ATLAS标注平台还提供了智能标注。包括智能预标注和智能纠错。智能预标注是指使用训练好的模型对数据进行预标注,然后人工review,提高标注效率。智能纠错是指参考预标注结果,对置信度低的标注结果启动重新标注过程。(2)数据平台数据平台主要实现大规模数据治理,在治理过程中可以兼顾灵活性和动态匹配样本。在保存亿级用户5000多个维度特征的基础上,实现在线实时查询。动态匹配样本可以满足不同场景下样本选择和数据选择的需求。(3)训练平台训练平台是一个非常重要的设施,分为五层:调度层:训练平台涉及硬件资源的管理,最底层的调度层负责这些资源的调度。控制层:调度层之上是控制层,通过将机器学习任务转化为一些工作流,实现异步、分布式的工作流控制。功能层:实现了机器学习平台的一些基本功能,包括AutoML、并行计算、图计算等。应用层:基于一些底层技术能力,将AI算法开发出来的技术和能力,封装成各种具体的功能流水线。用户层:在应用层之上,用户可以使用这些预先设定的基本功能来完成工作目标。6.ATLAS:部署和启动我们的部署采用了类似serverless的架构。之所以叫serverless,是因为它不是一个完整的serverless服务。因为我们的服务不面向广泛使用的应用场景,只是面向模型的在线服务,所以不需要考虑更多的兼容场景。API接口层提供了模型会接触到的三个部分:基本特征处理模型本身的预测,以及访问外部数据的能力。对于用户来说,只有图中橙色部分是用户需要注意的。平台提供的API可以降低开发成本,兼容市面上几乎所有的算法。借助API开发模型,从开发完成到上线,一天甚至半天就可以完成。除此之外,我们还可以通过集群管理为平台提供良好的稳定性保障、流量管理和容量管理。7.ATLAS:优化迭代下面演示了ATLAS上的两个优化迭代场景。场景一:在线模型的不断迭代。例如,在一个OCR模型的实现过程中,旧模型部署后会出现一些badcase。这些badcase会和已有的标注数据融合成为一个新的数据集,然后通过AutoML优化pipeline旧模型生成新模型,新模型部署,如此循环。通过这样一个循环,模型可以保持额外1%的精度提升。由于OCR模型的准确率很高,一般在95%以上,1%也是很大的提升。场景二:AutoML-guidedoptimization使用全流程AutoML代替简单重复的优化流程,对需要专家经验的场景使用AutoML作为辅助优化,以全流程AutoML的结果为基准选择最优模型部署。在我们公司,60%以上的场景都通过这种优化方式实现了性能提升,提升效果在1%到5%之间。2.自动机器学习下面介绍一下我们使用了哪些AutoML技术以及我们做了哪些改进。一、专家建模与AutoML首先介绍一下AutoML与传统专家建模相比的优势。AutoML的优势分为三个方面:效率:AutoML可以大大缩短AI算法的开发周期,一天可以生产出传统专家需要几个月才能生产出来的模型;门槛:AutoML可以减少或完全消除对专家的需求稳定性方面:专家建模依赖于人工经验,优化效果不稳定,而AutoML可以消除经验的影响,充分挖掘算法的潜力。2.AutoML简介下面介绍一下AutoML中常用的技术。AutoML中常用的技术包括三个方面:超参数优化:最常用的是黑盒优化和多保真度优化;元学习:从任务属性或先验模型中学习;网络结构搜索:专门针对神经网络场景,涉及不同的搜索空间和搜索算法。在实际工作过程中,会根据不同的任务场景选择不同的技术,这些技术可以组合使用。下面分别介绍这三种技术。3.自动机器学习平台:自动优化流水线首先是超参数优化部分。事实上,在我们的自动优化流水线中,整个机器学习流水线都是自动优化的目标,而不仅仅是超参数优化。包括自动化的特征工程、模型选择、模型训练和自动集成等,相对于单独的超参数优化降低了过拟合的可能性。此外,我们还实现了AutoML框架Genesis,兼容主流AI算法和Aut??oML工具,扩展友好。它可以使平台中的不同能力模块相互正交,从而可以自由组合。启用更灵活的自动优化管道。4.自动机器学习平台:元学习系统我们的系统也是采用了元学习的方法。下面介绍元学习方法的必要性和关键应用场景。(1)元学习的必要性在积累了大量的实验数据后,我们发现数据集在元特征空间中表现出明显的聚集性,因此我们假设在元特征空间也将关闭。基于这个假设,我们利用历史任务的超参数来指导新任务的参数优化,发现超参数搜索收敛速度会更快,并且在有限的预算下,算法效果可以额外提升1%.(2)应用场景一:现有数据集源于大数据应用场景,有时需要合并现有数据集,例如合并数据集A和B生成新的数据集C,如果使用数据集A和数据的超参数将B作为数据集C的冷启动来指导数据集C的超参数优化,一方面可以锁定搜索空间,另一方面可以达到最优的参数优化结果。场景二:数据集重复采样在实际开发过程中,有时需要对数据集进行采样,然后对采样数据集的超参数进行优化,因为采样数据的元特征空间分布接近的原始数据。因此,利用原始数据集的超参数来指导采样数据的超参数优化,可以提高优化效率。5.自动化机器学习平台:深度学习优化最后是我们针对深度学习场景的自动化优化。分为超参数优化和NAS探索两个方面:深度学习超参数优化深度学习的发展瓶颈在于训练时间,一次迭代需要数小时到数天,所以使用传统的贝叶斯优化需要迭代二三遍十次,培训时间从一个月到几个月不等。因此,我们将在深度学习超参数优化部分使用Hyperband方法为贝叶斯优化提供种子,以加快超参数搜索过程。在此基础上,我们还将利用历史数据的信息对冷启动进行优化,利用历史备选模型进行整合,比随机初始化更快收敛,达到全局最优解。在NAS探索的实际开发场景中,不同的部署场景对模型的规模和时间性能有不同的要求。其次,神经网络结构的优化是模型优化的重要组成部分。这一步我们需要排除人工干预。因此,我们提出了这种基于权重纠缠的one-shotNAS方法。搜索效率可达经典DARTS方法的3倍以上,搜索到的子网模型参数和计算代价可控。我们可以在目标范围内选择合适的模型。此外,我们还支持MobileNet、ResNet等多样化空间,以满足不同CV任务的需求。3.规模和效率最后,我们来谈谈我们在机器学习平台建设过程中遇到的规模和效率问题。1、深度学习的困境我们之所以关注规模和效率的问题,是因为深度学习面临着模型规模和计算需求的矛盾。模型参数越多,模型性能越好,这是业界共识。而深度学习有如下摩尔定律:模型参数规模每年翻10倍,硬件性能18个月翻一番。因此,快速增长的计算需求与硬件性能之间的差距必须通过优化来解决。2、数据并行度最常用的优化方法是并行度,包括数据并行度和模型并行度。最常用的技术之一是数据并行性。ATLAS平台的数据并行技术具有以下特点:作为ATLAS的基础功能,可以无感使用;不仅可以支持人工神经网络模型,还可以支持Boosting模型,如XGB、LGBM等;支持多种通信架构的优化并行效率;就优化效果而言,对于神经网络模型和Boosting模型,吞吐量呈线性增长,对于神经网络模型,并行训练增加了可训练规模,加快了收敛速度,最终提高了模型精度。3.模型并行还有一些模型不能仅靠数据并行解决训练效率问题,还需要引入模型并行技术。ATLAS的模型并行主要分为两个方面:场景一:层内并行有些网络模型的全连接层参数规模非常大。例如arcFace的分类规模高达几十、几百万甚至几千万。连接层不能被GPU卡覆盖。这时候就需要引入层内并行技术,不同的节点计算同一个张量的不同部分。场景二:层间并行(流水线并行)也是采用层间并行技术,即网络不同层的数据在不同的节点上计算,不做任何依赖的计算前置,减少IDLE(GPU)在计算过程中。等待的时间)。4.图的并行性除了可以用张量描述的线性数据,我们在图数据的并行训练上也做了一些探索。对于图数据,无论是采样还是其他操作,都需要动态跨节点,而且图数据一般规模较大。我们内部的图数据已经达到了上百亿的规模。单机很难计算出这样的图数据。结束。图数据分布式计算的瓶颈在于映射表。传统映射表的空间复杂度为O(n)。例如,10亿个点和10亿条边的图数据占用160GB的内存,形成了分布式训练的规模天花板。我们提出了一种空间复杂度为O(1)的方法。通过重新排列节点和边的ID,只保留映射边界,从而可以任意扩展图并行训练的规模。5.训练效率同时,我们在训练效率方面也做了一些优化。GPU利用率优化大量GPU时间花在读取数据、GPU清空等方面,通过预训练、事中监控预警、事后分析,可以将GPU的平均利用率提高一倍。反向传播重新计算我们还使用了反向传播重新计算技术。对于一些参数比较多的模型,在前向传播过程中,我们不保存所有层的计算结果,只保存部分节点的checkpoint,空白参数节点在反向传播时从checkpoint重新计算。如此一来,内存资源可减少50%以上,训练效率可提升35%以上。4.总结与思考最后说一下在机器学习平台建设中的经验与思考。我们总结了以下经验:第一,机器学习平台是实现我们AI算法最有效的解决方案;因为我们AI算法的实现涉及到方方面面的技术和内容,我不可能要求任何一个环节所有的同学都会了解全局,所以我们必须要有一个平台能够提供这些基础能力来帮助大家解决这些问题.其次,我们认为AutoML的应用是机器学习平台的核心建设能力;因为只有做好自动化或者AutoML的应用,才能更有效的解放算法专家的生产力,让算法专家做一些深入的算法,或者能力建设,提升机器学习的上限。最后,在这个设计过程中,因为更多的是一个内部的应用场景,所以我们的功能和能力的设计都会从我们的业务实际出发,优先满足业务需求。展望未来:首先,ATLAS的能力将适配更多场景,实现更高效率。其次,我们将探索3D并行等训练优化技术在超大规模语言模型上的应用,使我们的算法效果接近业界最前沿的AI算法水平。5.Q&AQ1:开源的AutoML框架,有哪些我们试用过推荐的?A1:Optuna是目前应用广泛的开源AutoML框架。也试过Auto-Sklearn和AutoWeka,然后给大家推荐一个网站,automl.org,因为其实这方面的人还是比较少的。本网站是由多位AutoML领域的专家教授共同搭建的网站。上面有很多AutoML的开源学习资料,大家可以参考一下。我们推荐的开源框架是我们使用Optuna进行参数调优,因为它的算法不仅仅是最基本的贝叶斯优化,它是一种TPE算法,更适合在参数非常多的情况下,在某些场景下,贝叶斯优化还是比较适合一些参数比较少的场景,但是我的建议是大家可以针对不同的场景尝试一些不同的方法,因为尝试多了之后,对于什么样的场景更适合体验哪种方法可能会有不同的想法。Q2:机器学习平台的开发周期有多长?A2:我们的机器学习平台建设到现在已经有三四年了。一开始,我们先解决部署应用的问题,然后开始构建我们的生产能力,比如计算和训练。如果是从头开始搭建,我建议大家可以先参考一些开源框架来搭建,然后看看自己在使用过程中业务场景会遇到什么样的问题,从而明确未来的发展方向。Q3:交叉验证时如何消除过拟合?A3:这可能是一个更具体的算法优化问题,但是在我们的优化流水线中,我们使用采样的方法来训练,这样我们的任务就可以看到数据集更多的角度,或者说,然后整合训练好的顶级模型采样之后让我们的模型有更强的泛化能力,这也是我们场景中很重要的一个方法。Q4:我们搭建整个机器学习学习平台,开发周期和人员投入是多少?A4:前面说了,这个开发周期大概是三四年。而如果算上教职工的话,现在的学员也不过六七人,早年的时候甚至还少于这个数字。Q5:虚拟化GPU会改进机器学习平台吗?A5:首先,这位同学说的虚拟化GPU应该是指资源的划分和隔离。如果我们是一个机器学习平台,那么虚拟化GPU应该是必备的能力,也就是说我们必须对资源进行虚拟化,才能更好的进行资源调度和分配。那么在这个基础上,我们可能还会把我们GPU的显存和它的计算资源进行划分,然后把不同大小的资源块分配给不同的任务,但是我们实际上并不是在训练里面用到的,因为训练任务通常对上面的要求比较高算力,不会是资源消耗更小的应用场景。我们将在推理场景中使用它。在实际应用过程中,我们发现虚拟化技术并没有很好的开源免费的方案,一些云服务厂商会提供一些收费的方案,所以我们在部署中采用了分时复用的方案,就是一些任务计算要求高的任务和一些计算要求低的任务混合实现分时复用,可以在一定程度上达到增加容量的效果。Q6:多节点分布式并行训练的加速比是多少?能接近线性吗?A6:我们可以接近一个线性加速比,也就是我们自己测的话,比较好的时候可以达到80到90的水平。当然,如果节点数非常多,可能还需要进一步优化。现在你可能发表论文或者看到论文说32或者64个节点可以达到80或者90的加速比,这可能是必要的。还有一些更专业的优化。但是如果我们在机器学习平台,我们可能需要针对更广泛的场景。在实际场景中,大部分的训练可能是4张GPU卡,8张GPU卡,最多16张GPU卡就可以满足要求。.Q7:使用AutoML时,用户需要配置哪些参数?整个计算需要多少算力和时间?A7:在我们AutoML的理想情况下,用户不需要配置任何参数。当然,我们也会允许用户根据自己的需要调整或确定一些参数。在时间消耗上,就是我们所有的AutoML场景,我们的目标是一天之内完成优化。那么在计算能力上,如果是一般的大数据建模,比如树模型XGB、LGBM等,单机可以搞定;如果是GPU任务,就看GPU任务本身的规模了,基本上就是原来训练规模的2到3倍的计算能力就可以完成AutoML的训练了。Q8:可以参考哪些开源的机器学习框架?A8:刚才提到这个问题,就是Optuna、Auto-Sklearn、AutoWeka都是参考。然后刚才提到了automl.org这个网站,上面有很多资料,大家可以去学习一下。Q9:和EasyDL有什么关系?A9:EasyDL属于百度,我们的框架是完全自研的。今天的分享就到这里,谢谢大家。