模型经理:大规模生产机器学习模型
  • Jeffrey龟井静香
  • 2020年5月25日

意外之财的使命是确定地球上每个人的净资产. 这是一个巨大的数据挑战, 腾讯五分彩平台的工作使腾讯五分彩平台能够把成千上万的数据属性缝合在一起,并围绕净资产开发模型. 考虑到腾讯五分彩平台独特的优势, 腾讯五分彩平台的许多客户要求腾讯五分彩平台帮助他们确定他们理想的客户或捐赠者的概况.

遍布全国的500多家客户,你可以想象在规模上有很多挑战. 假设你是意外之财公司的一名新数据科学家,你为客户创建了一个模型:

  • 你如何与团队中的其他数据科学家合作以获得反馈?
  • 工程师需要知道什么才能将其产品化?
  • 如何持续地为客户部署它?
  • 需要持久化哪些文档或软件工件以供以后使用?

在这篇文章中, 腾讯五分彩平台将回顾一下意外之财在大规模部署预测模型时面临的一些挑战, 腾讯五分彩平台的解决方案被称为 模型管理员, 以及腾讯五分彩平台如何大大减少了构建可扩展机器学习模型的时间, 在快速增加腾讯五分彩平台可以支持的模型数量的同时.

构建挑战:大规模部署模型

生产和部署数据科学模型可能具有挑战性. 部分问题在于,一般来说,没有一个人可以拥有整个过程. 数据科学家是实际构建模型的统计学家专家, 而工程师则专注于构建可伸缩的生产级架构. 最重要的是,数据科学和工程技术的选择有一些显著的差异. 例如, 探索性数据分析(“EDA”)和建模通常使用动态类型脚本语言(如R和Python)来执行, 而REST服务和健壮的生产系统通常使用静态类型的JVM语言或Go构建.

在暴利, 腾讯五分彩平台定期为许多客户创建定制的预测模型,很快就遇到了这个问题. 例如, 腾讯五分彩平台提供非营利倾向模型,根据属性/特征(如净资产)对一个组织的成员捐赠的可能性进行评分, 过去给, 或其他人口特征. 每个模型都是针对腾讯五分彩平台的每个客户的组织特定的, 通常腾讯五分彩平台会为每个客户创建不止一个模型. 这意味着腾讯五分彩平台需要  duplicate models with the same use case for multiple customers; each is specific for that customer. 不用说, 腾讯五分彩平台的定制模型集合增长得非常快,管理所有这些很快就会变得难以处理, 特别是考虑到意外之财的增长.

测试博文中的图片标题.

当意外之财最初发布时,腾讯五分彩平台的每个模型都是单独部署和管理的. 如果腾讯五分彩平台需要使用模型, 通常,腾讯五分彩平台需要将构建模型的数据科学家拖进来,以便简单地找出如何正确使用模型以及预测所需的特性. 这可能会导致几个小时的低效来回. 为了解决这个问题,腾讯五分彩平台开发了一个叫做模型管理器的解决方案.

随着模型管理员解决方案的启动和运行, 数据科学家只需将代码更改合并到GitHub存储库的主分支中,就可以在几分钟内将新的或更新的模型部署到生产中. 部署过程是完全标准化的, 任何用户都可以通过健壮且严格的API访问该模型. 不需要知道谁构建了模型,模型是如何构建的,或者模型存在于何处. 假设腾讯五分彩平台的整个模型库都是通过标准化API公开的, 这允许工程师, 数据科学家, 和非技术用户通过UI方便地访问和使用这些模型. 今天, 模型管理员支持超过150个模型, 腾讯五分彩平台觉得它可以很容易地支持几个数量级.

确定模型管理员的需求

腾讯五分彩平台开始开发自己的应用程序之前, 腾讯五分彩平台列出了必须具备的要求:

  1. 标准化. 首先,也是最重要的, 腾讯五分彩平台希望将用户或其他应用程序与现有模型的接口方式标准化. 发现和使用新模型也应该很容易.
  2. 将工程和数据科学解耦. 数据科学家应该被授权独立部署他们自己的模型. 工程师不应该为每一个新的模型或更新的模型更改而需要.
  3. 无缝的持续集成 & 用于模型部署的部署(CI/CD)管道. 类似地,腾讯五分彩平台希望为数据科学家自动化模型部署. 数据科学家推动了一个模型和-的变化 吹熄蜡烛的声音 新模型版本应该会被部署. 这也意味着要添加大量的测试并将模型彼此分离,以确保一个“坏”模型不会导致整个系统崩溃.
  4. 选择编程语言和库的自由(在合理范围内). 这适用于双方——数据科学家和工程师. 除了个人偏好, 构建模型的最佳选择很可能与构建可伸缩的REST服务不同. 虽然意外之财有许多技术标准,但腾讯五分彩平台希望在这里发挥个人的优势.
  5. 支持实时和批处理预测. 从技术上讲, 实时方法可以覆盖批处理操作, 你只需要做很多. 由于效率和成本效益, 腾讯五分彩平台认为明确支持批处理作业是有益的, 考虑到腾讯五分彩平台的历史基础结构更适合这种方法.
  6. 自动缩放支持(包括升级和降级). 如果腾讯五分彩平台启动多个预测作业, 腾讯五分彩平台希望系统能够适当地扩展,理想情况下不需要连续运行,这是出于性能考虑. 另一方面, 如果腾讯五分彩平台每周只使用一个模型进行一次批量预测, 那么它不应该使用任何超出需要的资源  它需要. 腾讯五分彩平台为自己是一个精益组织而感到自豪,在这里降低规模的能力是很重要的.

可用选项

有许多可用的选项试图解决这个问题. 他们中的大多数在部分问题上做得很好. 然而, 腾讯五分彩平台觉得这些解决方案没有一个完全解决了腾讯五分彩平台特定的用例,并检查了腾讯五分彩平台需求列表上的所有项目. 这并不是说腾讯五分彩平台不会在腾讯五分彩平台的解决方案中使用这些选项, 但是现在, 腾讯五分彩平台还没有使用这些. 腾讯五分彩平台在下面概述了一些潜在的技术.

MLFlow,皮层,SageMaker

这三个选项都假设腾讯五分彩平台只想创建实时REST服务. 而他们似乎在这方面做得很好,有很多快乐的客户, 腾讯五分彩平台对批处理作业的支持有严格的要求. 此外, 意外之财来自谷歌云平台 在撰写本文时,Cortex和SageMaker仅支持AWS环境. 不幸的是,这些已经出来了.

H20

h2o是腾讯五分彩平台用例中最接近现成解决方案的东西. 它具有多语言支持,并允许跨这些不同的语言序列化训练过的模型. 不幸的是,可以理解的是,这需要你几乎完全接受水的世界. 在腾讯五分彩平台开始这个项目的时候, 仍然缺少一些其他R库或Python包所提供的功能. 腾讯五分彩平台决定不拘泥于单一的框架及其局限性.

意外之财的解决方案-构建规模:模型管理器

考虑到腾讯五分彩平台无法找到一个可以购买并执行的解决方案,腾讯五分彩平台决定创建自己的解决方案. 以下是它的工作原理:

模型管理员的唯一职责正如其名:管理腾讯五分彩平台的模型. 这意味着它可以作为腾讯五分彩平台的数据科学团队创建的任何模型的注册中心,使用这些模型之一的任何请求都将通过model Manager. 模型管理员实际上更像是一个框架,而不是单个应用程序.

模型管理员有两个主要组件:应用程序层和模型注册中心. 应用层是一个轻量级的、用户友好的API. 它只是充当请求路由器,并将繁重的工作委托给模型本身. 模型注册表作为所有模型的标准库, 应用程序层可以根据需要浏览哪个. 最终用户只需要了解如何与API交互. 注册表中的每个模型都运行在Kubernetes上的Docker容器中. 注册表显示哪些容器需要启动和执行, 允许模型的容器本身保存关于模型的业务逻辑.

模型注册

腾讯五分彩平台将模型保存在一个完全独立的存储库中,其中包括各种库和编程语言. 每个模型都有一些需要定义的配置和端点,以便成功地向model Manager注册. 这些配置包括, 例如, 无论是实时作业还是批处理作业,以及预测所需的特性. 取决于模型是实时的还是批处理的, 它可能需要配置和/或公开一小组附加端点.

为了限制数据科学家的工程工作量, 腾讯五分彩平台的自动化CI/CD管道负责部署模型并将其注册到模型注册中心. 一旦模型存在于此,就可以通过model Manager应用程序立即使用它.

打开一个新的Pull Request, CI/CD管道运行一组严格的测试,以确保每个模型都被正确配置. 与单元测试和集成测试类似,这为损坏的代码提供了更快的反馈周期. 这允许数据科学家在内部收到警报 一两分钟 他们的模型是否能够成功地注册到model Manager而不是等待数小时, 天, 甚至可能在投入生产前几周.

将变更合并到master时, 管道将为模型构建Docker图像, 生成模型注册中心所需的适当配置, 并部署到生产环境中. 需要指出的是,腾讯五分彩平台正在推送新的配置和带版本标签的Docker映像,而不是重写现有的. 这使得腾讯五分彩平台可以很容易地比较模型随时间的变化,并回滚可能没有按照预期执行的模型.

模型管理器应用程序

如前所述,模型管理员应用程序本身是一个非常轻量级的REST服务. 它知道如何正确地将请求路由到适当的模型,并与底层容器系统交互, 码头工人和Kubernetes. Docker允许腾讯五分彩平台支持各种编程语言和库, Kubernetes为腾讯五分彩平台提供了一个运行Docker容器的平台. 腾讯五分彩平台选择这种设计是因为它们是成熟的技术. 请注意,数据科学家完全不需要承担这些责任.

一旦模型被标准化并包含在模型注册表中, 问题最棘手的部分已经解决. 基于应用程序用户(工程师)的, 数据科学家, 或非技术人员)请求, 模型管理员 finds the appropriate model in our registry and kicks off the container in Kubernetes; batch models are Kuberenetes jobs, 而实时模型总是运行服务.

除了, 模型管理器应用程序将跟踪作业的状态,并确保用户从模型接收到成功的预测. 这看起来好像腾讯五分彩平台需要一个单独的数据库来支持模型管理员,但实际上腾讯五分彩平台不需要. 该应用程序充当Kuberenetes的API代理, Kubernetes是所有工作的元数据来源. 这允许模型管理员应用程序本身是无状态的,并删除数据库需求.

Summary

因为数据和数据科学是腾讯五分彩平台的核心, 意外之财需要确定一个扩展数据科学建模过程的解决方案. 市场上的解决方案是有限的, 腾讯五分彩平台希望探索构建自己的专有解决方案,使腾讯五分彩平台能够满足多种场景,而不会在成长过程中感到沉重的负担. 为了解决腾讯五分彩平台的问题,腾讯五分彩平台构建了模型管理员.

今天,腾讯五分彩平台的数据科学家可以定期将任何新的和更新的模型注册到模型管理员中. 它们将自动拾取和生产, 腾讯五分彩平台的数据科学团队没有管理部署的责任或工程复杂性的负担. 一旦这些模型被部署,用户就可以自由地使用任何模型进行预测.

腾讯五分彩平台仍在努力提高服务水平, 但它已经为腾讯五分彩平台提供了巨大的影响力, 每推出一款新车型,就会增加多少.

你对此感兴趣吗? 腾讯五分彩平台 招聘 为腾讯五分彩平台的团队,希望听到您的消息!

了解更多有关腾讯五分彩平台的服务,以及腾讯五分彩平台可以如何帮助你的机构, 随时腾讯五分彩平台的 团队.


本文作者是 杰夫龟井静香,高级软件工程师 意外之财. 多亏了 科里塔克帕特里克静脉奥雅纳Banerjee 感谢您对本文的贡献.

相关内容