全新“机械学习”生命周期治理(2020)

作者:乐鱼平台发布时间:2021-11-19 02:19

本文摘要:我或许从2009年开始做机械学习的项目,到现在为止已经做过好几个项目,一直想做一个小总结,今天正好使用周末这个时机。如果大家喜欢,请留言评论。机械学习,尤其是深度学习已经成为一种解决庞大问题的技术,例如相识自动驾驶汽车或识别新冠肺炎病毒等等。 研究员和机械学习工程师都很是关注学习模型的体系结构和观点。随着机械学习模型被用于更多的应用法式和软件工具中,机械学习也需要像软件行业在已往十年中履历的流程尺度化一样举行尺度化。

乐鱼体育官网登录

我或许从2009年开始做机械学习的项目,到现在为止已经做过好几个项目,一直想做一个小总结,今天正好使用周末这个时机。如果大家喜欢,请留言评论。机械学习,尤其是深度学习已经成为一种解决庞大问题的技术,例如相识自动驾驶汽车或识别新冠肺炎病毒等等。

研究员和机械学习工程师都很是关注学习模型的体系结构和观点。随着机械学习模型被用于更多的应用法式和软件工具中,机械学习也需要像软件行业在已往十年中履历的流程尺度化一样举行尺度化。

我们从一开始自己研发所有的生命周期治理的工具,厥后转到开始大规模使用开源的项目,下面简朴说一下我们全新的生命周期治理,也就是俗称机械学习流水线。什么是机械学习流水线(machine learning pipeline)?在已往的几年中,机械学习领域的生长令人惊讶。(我记得09年时候,基本上都是自研算法框架等等) 随着图形处置惩罚单元(GPU)的广泛可用性以及诸如Transformers(例如Bert)或Generative Adversarial Networks(例如DCGAN)等新的深度学习观点的生长,人工智能项目的数量猛增。

人工智能初创公司的数量众多,企业正在将最新的机械学习观点应用于详细的业务问题。在急于寻求性能最高的机械学习解决方案的历程中,我们视察到数据科学家和机械学习工程师缺少用于加速,重用,治理和部署其开发的观点和工具的良好信息资源。需要的是机械学习流程的尺度化。

机械学习流水线是加速,重用,治理和部署机械学习模型的历程。约莫十年前,随着连续集成(CI)和连续部署(CD)的推出,软件工程履历了相同的变化。已往,测试和部署Web应用法式是一个漫长的历程。如今,通过一些工具和理念已大大简化了这些历程。

虽然Web应用法式的部署需要DevOps工程师与软件开发人员之间的协作,但如今,可以在几分钟内可靠地测试和部署Web应用法式。在事情流方面,数据科学家和机械学习工程师可以从软件工程学到许多工具。

凭据我的小我私家履历,大多数机械学习项目都没有一个庞大的团队来负担这些任务,包罗部署模型。这使得很难重新开始构建整个一个流水线系统。

随着时间的推移性能会下降,当基础数据发生更改时,数据工程师会花费大量时间来修复错误和部署升级等等。机械学习流水线从收集新的训练数据开始,在收到有关您的新训练模型的反馈时竣事。

此反馈可以是生产性能指标,也可以是产物用户的反馈。该管道包罗多个步骤,包罗数据预处置惩罚,模型训练和模型分析以及模型的部署。您可以想象手动完成这些步骤很贫苦而且很容易堕落。

机械学习流水线从上图中可以看到,流水线实际上是一个循环。可以一连收集数据,因此可以连续的更新机械学习模型。更多数据通常意味着模型的不停的革新,自动化才是关键。在实际的应用中,我们希望经常重新训练模型。

如果这是手动的历程,则需要手动验证新的训练数据或分析更新的模型,那么数据科学家或机械学习工程师将没有时间为其他的业务问题开发新模型。通常模型生命周期包罗:数据版本控制数据版本控制是模型生命周期的开始。

当一个新的周期开始时,例如,当有新的训练数据可用时,该数据的快照将受到版本控制,然后开始一个新的周期。此步骤与软件工程中的版本控制类似,只不外我们不commit软件代码,而是commit模型训练和数据。数据验证在训练新的模型版本之前,我们需要验证新数据。

数据验证的重点是检查新数据的统计信息,并在发现任何异常时提醒数据科学家。例如,如果您正在训练一个二元分类模型,那么您的训练数据可能包罗50%的A类样本和50%的B类样本。如果这些种别之间的划分发生变化,则数据验证工具会发出警报,其中新收集的数据可能会在两个种别之间以70/30的比率举行划分。如果使用这样的偏差训练集来训练模型,而数据科学家没有调整模型的损失函数,或者样本A或B样本过高/不足,则模型将偏向主导种别。

通用数据验证工具将还可以比力差别的数据集。假设您有一个带有显性标签的数据集,并将该数据集拆分为训练和验证集,则需要确保两个数据集之间的标签拆分大致相同。

数据验证工具可让您比力数据集并突出显示异常。如果验证之后显示出不寻常的内容,则可以在此处停止整个流水线并向数据科学家发出警报。如果检测到数据偏移,则数据科学家或机械学习工程师可以更改单个标签样本的采样(例如,仅选择相同数量的标签样本),或者更改模型的损失函数并启动新模型建设管道并重新启动生命周期。

数据预处置惩罚您极有可能无法使用新收集的数据来直接训练您的机械学习模型。在险些所有情况下,您都需要预处置惩罚数据然后将其用于训练运行。

标签通常需要转换为one-hot或multi-hot向量。模型输入也是如此。

如果从文本数据训练模型,则要将文本的字符转换为索引,或者将文本标志转换为单词向量。由于仅在模型训练之前才需要举行预处置惩罚,而不是在每个训练时期都需要举行预处置惩罚,因此在训练模型之前在其自身的生命周期步骤中举行预处置惩罚是最有意义的。已经开发了多种工具来有效地处置惩罚数据并快速。

乐鱼体育官网登录

可能的解决方案列表是无止境的,规模从简朴的Python剧本到详尽的图形模型。只管大多数数据科学家都将重点放在首选工具的处置惩罚能力上,但也可以将预处置惩罚步骤的修改链接随处理后的数据上,反之亦然,这一点也很重要。这意味着,如果有人修改了处置惩罚步骤(例如,在one-hot向量转换中允许添加其他标签),则先前的训练数据将变为无效并强制更新整个流水线。

模型训练与调优模型训练步骤是机械学习流程的焦点。在这一步中,我们训练模型以获取输入并预测可能的最低误差的输出。对于较大的模型,尤其是对于大型训练集,此步骤可能很快变得难以治理。由于内存通常是我们盘算的有限资源,因此模型训练的有效分配至关重要。

最近,模型调优引起了许多关注,因为它可以显著提高性能并提高竞争优势。在模型训练的较早步骤中,我们假设我们将举行一次训练。可是,如何仅一次运行就可以找到最佳的模型架构或超参数呢?不行能!这就是需要模型调优的地方。

借助当今的DevOps工具,我们可以轻松地复制机械模型及其训练设置。这使我们有时机并行或按顺序测试大量模型(取决于优化方法),而且能凭据差别的设置测试模型。在模型调优步骤中,训练具有差别超参数(例如, 该模型的学习率或网络层数可以自动化。

调整工具将从参数建议列表中选择一组参数。参数值的选择可以基于网格搜索(在网格搜索中我们可以扫过所有参数的组合),也可以基于更多概率的方法(可以实验预计最佳的下一组参数来训练模型)。

调整工具将设置模型训练运行,类似于我们在前面的训练步骤中执行的训练运行。该工具将使我们能够举行更大规模且完全自动化的机械学习。

模型分析一旦确定了最合适的模型参数集(可提供最高的准确性或最低的损失),就需要在将模型部署到我们的生产情况之前分析其性能。验证用于偏差的生产模型至关重要。

在这些步骤中,我们将凭据看不见的分析数据集来验证模型,该数据集不应该是先前使用的训练和验证集的子集。在模型分析历程中,我们将模型袒露给分析数据集的小变化,并评估模型的预测对小变化的敏感水平。同时,分析工具会丈量模型是否主要预测数据集子集部门的一个标签。

支持适当的模型分析的一个关键原因是,在训练模型时,可能会对验证历程中丢失的数据部门造成偏见。在训练历程中,针对验证集的模型准确性通常被盘算为整个数据集的平均值,这将很难发现偏差。

模型验证和版本控制模型版本控制和验证步骤的目的是跟踪已选择哪个模型,超参数集和数据集作为该模型的下一个版本。模型部署训练,调整和分析模型后,就可以开始准备了。不幸的是,一次性部署了太多的模型,使得更新模型变得很难题。一些模型服务器在最近几年已经开源,可以有效地举行部署。

现代模型服务器使您无需编写Web应用法式代码即可部署模型。通常,它们为您提供多个API接口,例如REST或远程历程挪用(RPC)协议,并允许您同时托管同一模型的多个版本。同时托管多个版本将允许您在模型上运行A / B测试,并提供有关模型革新的有价值的反馈。

模型服务器还允许您在不重新部署应用法式的情况下更新模型版本,从而淘汰了应用法式的停机时间和淘汰应用法式开发和机械学习团队之间的相同。模型反馈机械学习生命周期的最后一步通常被遗忘,但这对数据科学项目的乐成至关重要。我们需要闭环并评估新部署的模型的有效性和性能。

在此步骤中,我们可以捕捉有关模型性能的有价值的信息,并捕捉新的训练数据以增加我们的数据集以更新模型并建立新版本模型。通过捕捉数据,我们可以完善整个机械学习生命周期。

机械学习流水线与AI 需求条理AI 需求条理几年前,前Jawbone数据副总裁及LinkedIn数据科学家Monica Rogati对此提出了各个组织应用AI的需求条理论,如上图。整个机械学习的流水线包罗了在AI需求条理中。可是在实际的机械学习项目,尤其的早期的项目,我们都市把大部门的精神都放在上面三层,下面三层很少涉及到。

下面简化一下机械学习的流程(如下图所示),用Airflow实现简朴的流程,简化之后的机械学习的流程用Apache Airflow 机械学习流水线 Apache Airflow是一个盛行的平台,可以使用Python建立,摆设和监视机械学习流水线。它在Github上的星标凌驾15K(https://github.com/apache/airflow),而且被Yahoo,Twitter,Airbnb和Spotify等公司的工程师使用。

airflow UI常见有两种方式运行Airflow的 worker nodes,Celery ExecutorCelery Executor需要设置Redis或RabbitMQ才气将消息分发给worker nodes。然后,Airflow将任务分配给可以在一台或多台盘算机上运行的Celery workers。如下图所示,Celery Executor2.Airflow 和K8s这个想法是使用K8s node pools,每个池将提供一种机械类型(高内存,高CPU,GPU…)和一组启用了弹性的作用域。

然后,我们可以使用KubernetesPodOperator在airflow的差别node pool中提交ML作业,如下图所示。KubernetesPodOperator 和airflow使用node pool在Kubernetes中运行我们的ML任务具有以下优点:无需手动治理实例的建立和销毁:如果池上没有运行的Pod,它将自动降级为零,而且如果需要更多的资源,则会建立更多的节点。可以共享盘算资源。例如,我们可以在一个节点上运行一个Pod以完成训练任务。

如果节点有足够的资源,则可以在其上摆设另一个pod(很可能是轻量级作业),从而制止了建立另一个实例的分外成本(时间和款项)。可以在集群中的所有Pod之间共享服务。例如,我们可以设置一个Datadog署理服务来收集我们差别ML作业的各种基础数据。机械学习流水线的业务场景自动化机械学习流水线的实现将给数据科学团队带来两个影响:加速新模型的开发,节约时间,更新现有模型的历程越发简朴,利便,这两个方面都将大大降低机械学习项目的成本。

此外,自动化机械学习流水线将有助于检测数据集或训练模型中的潜在偏差。发现偏差可以防止伤害与模型互动的人,例如,亚马逊的机械学习型简历筛选器被发现对女性有偏见,如果泛起关于通用数据掩护条例(GDPR)合规性的问题,可以追踪到模型公布治理建立的记载。

模型更新的自动化将给数据科学家节约大量时间,提高他们的事情满足度。


本文关键词:全新,“,机械学习,”,生命,周期,治理,2020,我,leyu乐鱼体育官网

本文来源:乐鱼平台-www.eedsawyy.com