如何建立企业级别的机器学习模型服务器?- kdnuggets


随着MLOps流程和最佳实践的逐渐成熟,机器学习注入了更多的应用程序。对于这些软件和系统而言,至关重要的是运行机器学习模型的服务器,该服务器应具有关键功能,以驱动成功的企业级机器学习大规模生产。
在本文中,我们重点介绍模型服务器,这是实时或脱机运行的机器学习服务的核心软件。有两种用于服务机器学习模型的常用方法:
第一种方法将模型计算嵌入到Web服务器(例如Flask)中,作为专用于预测服务的API服务端点。
第二种方法将模型计算转移到单独的服务上。对于初创公司来说,这是一个活跃的领域,并且越来越多的选项属于此类。产品包括 :云提供商  (SageMaker,  Azure,  Google Cloud),  用于模型服务的开源项目  (Ray Serve,Seldon,TorchServe,TensorFlow Serving等),  专有软件  (SAS,Datatron,ModelOp等)的服务,以及定制解决方案通常以某种通用框架编写。
尽管机器学习可以用于一次性项目,但大多数开发人员都希望将机器学习嵌入其产品和服务中。模型服务器是用于生产机器学习的软件基础结构的重要组成部分,因此,公司需要仔细评估他们的选择。这篇文章重点介绍公司应该在模型服务器中寻找的关键功能。
 
流行的工具包
模型服务器可能与模型训练系统分开。选择一个模型服务器,使其能够使用使用多种流行工具生成的经过训练的模型工件。开发人员和机器学习工程师使用许多不同的库来构建模型,其中包括用于深度学习(PyTorch,TensorFlow),机器学习和统计的库(scikit-learn,XGBoost,SAS,  statsmodel)。模型构建者还继续使用各种编程语言。尽管Python已成为机器学习的主要语言,但其他语言(如R,Java,Scala,Julia,SAS)仍然有很多用户。最近,许多公司已经实施了数据科学工作台,例如Databricks,Cloudera,Dataiku,Domino Data Lab等。
 
用于模型部署的GUI
开发人员可以使用命令行界面,但是企业用户将需要图形化的用户界面,以指导他们完成模型的部署过程,并突出显示机器学习生命周期的不同阶段。随着部署过程的成熟,它们可能会迁移到脚本和自动化方面。具有用户界面的模型服务器包括Seldon Deploy,  SAS模型管理器,  Datatron和其他针对企业用户的模型服务器  。
 
易于操作和部署,但具有高性能和可扩展性
随着机器学习被嵌入到关键应用程序中,公司将需要能够支持大规模预测服务的低延迟模型服务器。像Facebook和Google这样的公司提供的机器学习服务每天提供数十亿次实时响应  。尽管这些情况可能是极端的情况,但许多公司还部署了推荐和个性化系统之类的应用程序,这些应用程序   每天与许多用户进行交互。随着诸如Ray Serve之类的开源软件的可用性,公司现在可以访问可扩展到许多计算机的低延迟模型服务器。
大多数模型服务器使用微服务架构,并且可以通过REST或gRPC API进行访问。这使得将机器学习(“推荐器”)与其他服务(“购物车”)集成起来更加容易。根据您的设置,您可能需要一个模型服务器,该服务器可让您在云,本地或两者上部署模型。模型服务器必须参与基础结构功能,例如自动缩放,资源管理和硬件供应。
一些模型服务器增加了最新的创新,这些创新可以降低复杂性,提高性能并提供与其他服务集成的灵活选项。通过引入新的Tensor数据类型、RedisAI来支持“数据本地性”:该功能使用户可以从自己喜欢的客户端获取和设置Tensors,并“在其数据所在的位置运行其AI模型”,Ray Serve  通过为开发人员提供从API端点到模型评估,再到API端点的端到端控制,使模型评估逻辑更接近业务逻辑 。此外,Ray Serve与简单的Web服务器一样易于操作且易于部署。
 
包括用于测试,部署和推出的工具
训练模型后,必须在部署模型之前对其进行检查和测试。Seldon Deploy,Datatron和其他模型服务器具有一些有趣的功能,可让您通过单个预测或使用负载测试来测试模型。为了促进错误识别和测试,这些模型服务器还允许您上载测试数据并可视化测试预测。
对模型进行检查和测试后,模型服务器应使您能够安全地升级和降级模型。其他流行的推出模式包括:

  • Canary:一小部分请求发送到新模型,而大部分请求则路由到现有模型。
  • Shadowing:将生产流量复制到非生产服务中以在运行模型之前对其进行测试。

理想情况下,推出工具是完全自动化的,因此可以将部署工具插入CI / CD或MLOps流程中。
 
支持复杂的部署模式
随着增加对机器学习的使用,模型服务器应该能够支持生产中的许多模型。您的模型服务器还应该支持复杂的部署模式,该模式涉及一次部署多个模型。它应支持多种模式,包括:
  • A / B测试:一小部分预测使用一个模型,其余预测则使用另一个模型。
  • 集成:将多个模型组合在一起,以形成更强大的预测模型。
  • 级联:如果基线模型产生的预测具有较低的置信度,则会将流量路由到备用模型。另一个用例是改进:检测图片中是否有汽车,如果有,则将图片发送给读取汽车牌照的模型。
  • Multi-arm bandit:强化学习的一种形式,bandit将流量分配给多个竞争模型。

 
开箱即用的指标和监控
机器学习模型会随着时间的流逝而退化,因此重要的是要有适当的系统来指示何时模型变得不太准确或何时开始显示偏差和其他意外行为。模型服务器应发出性能、使用情况和其他自定义指标,可视化和实时监视工具可以使用这些指标。一些模型服务器开始提供高级功能,包括异常检测和警报。甚至还有创业公司(Superwise,  Arize),重点是使用“机器学习来监视机器学习”。尽管这些工具是目前与模型服务器分离并需要与模型服务器集成的专用工具,但是某些模型服务器很可能会在其产品中构建高级监视和可观察性功能。
 
与模型管理工具集成
随着将更多模型部署到生产中,模型服务器将需要与模型管理工具集成。这些工具带有很多标签-访问控制,模型目录,模型注册表,模型管理仪表板-但本质上,它们为您提供了过去和当前模型的360度视图。
由于需要定期检查模型,因此模型服务器应与用于审计和复制模型的服务接口。  现在,模型版本控制是标准的,并且随我们检查的大多数模型服务器一起提供。Datatron有一个模型管理仪表板,该仪表板提供了用于审核表现不佳的模型的工具。许多模型服务器具有  数据沿袭  服务,这些服务记录何时发送请求以及模型输入和输出是什么。调试和审计模型还需要对其关键驱动程序有更深入的了解。Seldon Deploy与 用于模型检查和解释性的开源工具集成  。

 
统一批处理和在线评分
假设您更新了模型,或者收到了许多新记录。在这两个示例中,您可能需要将模型应用于大型数据集。您将需要一个模型服务器,该服务器可以在小型批次中有效地对大型数据集进行评分,并提供低延迟的在线评分(例如,Ray Serve支持批量和在线评分)。
 
总结
随着机器学习被嵌入更多软件应用程序中,公司需要仔细选择其模型服务器。尽管  Ray Serve  是一个相对较新的开源模型服务器,但它已经具有我们在本文中列出的许多功能。Ray Serve是用于部署,操作和监视机器学习模型的可扩展,简单且灵活的工具。我们相信Ray和Ray Serve将成为未来许多ML平台的基础。