我们过去几年的调查表明,很多不同行业的机构对机器学习(ML)越来越感兴趣。有几个因素促成人们在产品和服务中运用机器学习。首先,机器学习社区已经在企业感兴趣的许多领域实现了研究的突破,并且大部分研究都通过预发表和专业会议演示进行了公布。我们也开始看到研究人员共享出在流行的开源框架中编写的示例代码,有些甚至共享出了预先训练好的模型。企业和机构现在还可以从更多的应用案例从中吸取灵感。非常有可能在你感兴趣的行业或领域里,你可以找到许多有趣的机器学习的应用并借鉴参考。最后,建模工具正在被改进和优化,同时自动化工具已经可以让新用户去解决那些曾经是需要专家才能解决的问题。
随着机器学习进入落地阶段,人们很自然地希望改进那些面向企业运用机器学习的工具。 在之前的博文中,我们概述了在企业和机构内运用机器学习所需的基础技术,并且一些早期迹象表明模型开发和模型管理的工具已经开始获得用户的青睐。
图1 主要面向模型开发、管理和运维的工具的集合。图片来源:Ben Lorica
模型开发
企业越来越认真地看待机器学习的一个明确迹象就是:专门为管理机器学习模型开发生命周期而设计的工具(例如MLflow和Comet.ml)越来越受欢迎。为什么传统的软件工具不胜任了?在之前的一篇博文中,我们注意到一些区分一个项目是否是机器学习项目的关键属性:
- 不像传统的软件,其主要目的是满足功能需求。机器学习的目标是优化一个指标。
- 质量不仅仅依赖于代码,还包括数据、调参、规律地升级和再训练。
- 参与机器学习的人总是希望能对新的库、算法和数据源进行尝试。因此工具就需要能把这些新的组件引入生产系统中。
MLflow等工具被更多地采用表明,实际上对新工具的需求是非常强烈的。这些机器学习开发工具专门用于帮助开发人员、机器学习工程师和数据科学家等团队进行协作、管理和再现机器学习的实验。模型开发类别中的许多工具允许用户系统地进行建模实验(例如超参数调优和网络架构搜索),同时重点关注于管理、跟踪和再现这些实验的便利性上。
模型管理
我们也开始见到有的公司对模型管理工具和能力有需求。正如长期以来,企业已经将数据视为资产一样,随着机器学习对企业和机构的运营变得越来越重要,模型必将被视为重要的资产。更确切地说,需要管理和保护为专门的应用构建或调优的模型(实际上这意味着模型+数据):
- 用于授权和安全的数据库:谁读/写了某个模型?
- 一个目录或者数据库,用来记录模型信息,包括某个模型什么时候被测试、训练和部署的。
- 一个验证数据集的目录,以及对存储的模型的准确度测量结果。
- (模型、特征向量和数据的)版本控制,以及能够进行前推、回滚或者允许多版本的能力。
- 用于全面审计追踪的元数据和工件。
- 谁批准并把模型发布到生产环节,谁能够监控模型的表现并收到告警,以及谁对模型负责。
- 对于所有的参与者(运维、机器学习工程师、数据科学家和业务方)提供的可以定制页面展示的管理仪表盘。
模型运维、测试和监控
随着机器学习在产品和服务中应用的激增,我们需要一系列的角色、最佳实践和工具来在实际生产环境中部署、管理、测试和监控机器学习模型。已经出现了一些针对模型运维和测试的工具,它们主要可被用于部署和监控机器学习的模型。但很明显,我们仍处于提供这些领域解决方案的早期阶段。
有三个常见问题会在模型发布到生产环境后降低机器学习的价值。第一个是概念漂移。由于现实世界的变化,生产环境中的模型的准确性会随着时间的推移而降低,这是由于训练模型的数据与需要预测的数据之间的差距变得越来越大。第二个问题是地域。当模型被部署到新的地理位置、新的用户群或商业客户时,之前训练的模型通常不会以预期的准确度工作。 对每个客户、地理区域、人口统计群体进行在线准确性测量对于偏差监控和确保面对不断增长的客户群时的准确性非常重要。第三是数据质量。由于机器学习模型对输入数据的含义很敏感,传统数据质量工具经常忽略的数据分布变化会对模型的准确性造成严重影响。
除了需要监控当前部署的模型是否按预期运行之外,另一个挑战确保新的模型在生产环境中确实有更好的表现。一些新出现系统允许将“现有模型”与“挑战者模型”进行比较,包括让挑战者处于“暗启动”或“离线”模式(这意味着挑战者模型是对生产流量进行评估但尚未部署到生产环境中)。其他值得注意的项目包括:
- 用于持续集成和持续测试模型的工具。模型返回有效值,并不意味着模型“正确”。它必须满足准确度的要求。在部署模型之前,需要有一种方法来针对给定的度量指标和验证集来测试这一点。
- 在线测量每个模型的准确性(用户在“真实场景”中得到的准确度是多少?)。与此相关的是需要监控偏差、地区效应和相关风险。例如,指标得分需要根据人口统计数据(男性和女性是否获得类似的准确度?)或语言区域(德语和西班牙语用户是否获得类似的准确度?)进行细分。
- 能够针对不同客户进行服务质量管理的能力,包括速率限制、请求大小限制、计量、机器人检测和IP地理围栏。
- 有能力扩展(并且是自动扩展)、确保模型安全、监控模型和排除运行中模型的故障。扩展有两个维度:模型能服务的流量上限和需要的模型数量。
模型运维和测试仍然是一个新生的领域,相关的系统性的检查表才刚刚出现。来自谷歌2017年的一篇论文中的概述让我们可以判断模型运维和测试还需要多少工具。本文附带一份28项的检查表,详细说明了想拥有可靠的生产级机器学习系统需要考虑的事项:
- 特征和数据:包括七点内容:检查隐私控制、特征验证、探索特征的必要性和特征的成本以及其他与数据相关的测试。
- 模型的开发测试:七项健全性检查,包括:检查更简单的模型是否足够用、对于关键数据切片(例如,地区、年龄、新近度、频率等)的表现、模型老化的影响以及其他重要的因素。
- 基础设施测试:七个考虑因素,包括:模型训练的可重复性、模型可以轻松回滚、端到端模型管道的集成测试、针对金丝雀过程的模型测试。
- 监控:作者列出了确保模型按预期工作的七点内容,包括:对模型老化的测试,性能指标(训练、推断、吞吐量),验证训练和服务代码会生成类似的结果,以及其他基本项。
新角色
围绕机器学习的讨论往往涉及到数据科学家和模型构建专家的工作。随着许多公司开始进入机器学习的落地实施阶段,这种情况开始发生变化。机器学习工程师、数据工程师、开发人员和领域专家对机器学习项目的成功至关重要。目前,很少有(如果有的话)团队拥有如同Google 2017年的论文里所述检查表一样广泛内容的检查表。构建真实世界里的生产级机器学习模型的任务仍然需要把跨越许多功能领域的工具和团队拼凑在一起。然而,随着模型治理和模型运维和测试的工具开始变得精致并且变得更加广泛可用,专家(“MLops团队”)将会负责使用这些工具。自动化工具也将是一个重要组件,它们要能使企业和机构构建、管理和监控更多的机器学习模型。
图2 企业和机构对于管理机器学习的工具的需求。图片来源:Ben Lorica
我们开始看到出现了一些能让团队管理机器学习模型的开发生命周期的专用工具。像MLflow这样的工具可以被用来跟踪和管理机器学习实验(主要是离线阶段,并使用测试数据)。还有一些新工具则涵盖了模型管理、生产环境部署,模型服务和监控等方面,但目前他们倾向于只针对某个机器学习库(比如TFX)或建模工具(SAS模型管理器)。实际的情况是,企业需要对于语言库、建模工具和使用的环境更灵活的应用能力。幸运的是,初创公司和大企业已经开始构建用于在企业中实现机器学习的综合工具。
相关内容:
- “现代深度学习:工具和技术”:人工智能圣何塞大会上的一个教学课程。
- 《成为一个机器学习企业意味着对基础技术的投资》
- 《用于机器学习开发和模型管理的特殊工具正变得非常重要》
- 《在调优机器学习模型成为真正的产品和服务过程中学到的经验教训》
- Harish Doddi的《简化机器学习生命周期管理》
- Ira Cohen的《应用机器学习来获取关于机器学习算法的洞察》
- Ameet Talwalkar的《对于神经网络架构搜索的随机搜索和可再现》
- 《机器学习的深度自动化》
- 《我们需要构建机器学习工具来增强机器学习工程师》
- 《管理机器学习的风险》