1

是否有建议的方法在 Kubernetes 中为数百个机器学习模型提供服务?像Kfserving这样的解决方案似乎更适合只有一个训练模型或几个版本的模型,并且该模型服务于所有请求的情况。例如,在所有用户中通用的 typeahead 模型。

但是有没有建议的方法来服务成百上千个这样的模型呢?例如,针对每个用户的数据专门训练的 typeahead 模型。

实现这样的事情的最天真的方法是,每个预先输入的服务容器在内存中维护一个本地模型缓存。但是随后扩展到多个 pod 将是一个问题,因为每个缓存都是 pod 的本地缓存。因此,每个请求都需要路由到已加载模型的正确 pod。

还必须维护这样一个注册表,我们知道哪个 pod 加载了哪个模型并在模型驱逐时执行更新似乎是很多工作。

4

2 回答 2

1

您可以将 Catwalk 与Grab混合使用。

Grab 拥有大量数据,我们可以利用这些数据来解决复杂的问题,例如欺诈性用户活动,并为我们的客户提供个性化的产品体验。我们用来理解这些数据的工具之一是机器学习 (ML)。

这就是 Catwalk 的创建方式:一个易于使用、自助服务的机器学习模型服务平台,适用于 Grab 的每个人。

您可以在此处找到有关时装表演的更多信息:时装表演

您可以使用 TensorFlow 和 Google Cloud 提供多个机器学习模型。

机器学习领域之所以经历如此史诗般的繁荣,是因为它具有彻底改变行业和改善生活的真正潜力。一旦机器学习模型经过训练,下一步就是将这些模型部署到使用中,让需要它们的人可以使用它们——无论是医院、自动驾驶汽车制造商、高科技农场、银行、航空公司还是日常智能手机用户。在生产中,风险很高,无法承受服务器崩溃、连接速度变慢等问题。随着我们的客户对我们机器学习服务的需求增加,我们希望在凌晨 3 点或下午 3 点无缝满足这一需求。同样,如果需求减少,我们希望缩减承诺资源以节省成本,因为众所周知,

您可以在此处找到更多信息:机器学习服务

您也可以使用Seldon

Seldon Core 是一个开源平台,用于在 Kubernetes 集群上部署机器学习模型。

特征:

  • 在云端或本地部署机器学习模型。
  • 获取指标,确保您正在运行的机器学习模型得到适当的治理和合规性。
  • 创建由多个组件组成的推理图。

  • 为使用
    异构 ML 工具包构建的模型提供一致的服务层。

有用的文档:Kubernetes-Machine-Learning

于 2020-02-24T09:42:53.347 回答
1

不幸的是,目前没有专门为这种类型的用例构建的开源解决方案。充分利用机器资源同时保持相对较低延迟的理想解决方案将需要一些自定义模型服务系统,该系统支持加载和卸载经过训练的模型,并将请求路由到已加载或准备加载模型的 pod。

您可以尝试使用开源解决方案最接近的方法是 Knative 和 BentoML(完全公开,我是 BentoML 的作者)。BentoML 提供了一种将 ML 模型及其依赖项打包到 API 服务器容器中的方法,而 Knative 是 Google 的基于 kubernetes 的无服务器框架。使用这两个库,您可以将数百个 ML 模型部署为 Kubernetes 集群上的无服务器端点,每个模型都有自己的使用 BentoML 构建的 docker 容器映像,并且这些容器仅在有预测请求进入时才会加载。

这是 Knative 关于使用 BentoML 部署训练有素的 ML 模型的文档:

BentoML GitHub 存储库和快速入门指南:

于 2020-05-04T16:28:26.343 回答