一个开源模型服务(model serving)指南

简介: 当我们完成模型训练之后,我们如何处理我们的模型呢?模型本身没有多大价值 —— 关键在于你如何使用它们。无论是推动您的业务决策,还是为您的客户提供新功能,服务框架的作用都是让您的模型栩栩如生。

简介

当我们完成模型训练之后,我们如何处理我们的模型呢?

模型本身没有多大价值 —— 关键在于你如何使用它们。无论是推动您的业务决策,还是为您的客户提供新功能,服务框架的作用都是让您的模型栩栩如生。

使用模型服务框架,您可以

  • 通过 API 与模型交互。正因为如此,任何与你的模型对话的东西都可以在不知道任何内部细节的情况下这样做,比如使用了哪些工具来训练它或者它是用什么语言编写的。
  • 将模型与应用程序的其他组件一起部署在云中
  • 轻松扩展模型以满足用户需求

举一个具体的例子,假设您经营一家在线商店,并且您希望您的每个客户都能看到个性化的产品推荐。有很多方法可以为这个任务训练模型,但假设你已经完成了那部分,下一个挑战是让网站与之对话。

即使模型可能很复杂,模型服务框架会隐藏这种复杂性,给我们留下一个简单的 API,这样,每当我们希望客户看到推荐时,我们需要做的就是查询该 API。


批量与实时

有时,您希望模型能够提供即时结果。 在产品推荐示例中就是这种情况,我们希望在客户浏览网站时向他们提供相关建议。

在其他情况下,结果不需要是即时的,并且可以按计划(schedule)访问模型。 想象一下,我们有一些产品的价格每周都会更新,使用的模型是经过训练可以根据季节性趋势进行定价。

许多模型服务框架同时适用于实时和批量使用,但在实现模型服务之前了解您需要哪种方法很重要。


我需要模型服务框架吗?

虽然我们都需要以某种方式与我们的模型进行交互,但模型服务框架并不是唯一的方法。

模型服务的优势在于它可以将复杂的模型隐藏在简单的 API 后面,这使得这种方法非常适合在云中运行的任何应用程序,包括 Web 应用程序。

但并非一切都是基于云的。 比如:边缘/物联网应用。 以使用模型检测人脸的智能相机为例。 在这种情况下,模型需要直接在摄像机的硬件上运行,因为将视频流式传输到远程服务器太慢了。


有什么可供选择的模型服务框架?

开源模型服务框架的选择非常广泛。为了缩小范围,考虑以下几个因素对选择会有所帮助:

  • 机器学习库支持。任何模型都将使用 TensorFlow、PyTorch 或 SKLearn 等 ML 库进行训练。例如,一些服务工具支持多个 ML 库,而另一些可能仅支持 TensorFlow。
  • 模型是如何打包的。一个典型的模型由原始模型资产和一堆代码依赖组成。本指南中的服务工具都是通过将模型 + 依赖项打包到 Docker 容器中来工作的。 Docker 是将软件打包、分发和部署到现代基础设施的行业标准方式。
  • 模型运行的地方。一些服务框架只是为您提供了一个容器,您可以在任何支持 Docker 的地方运行该容器。其他的则建立在 Kubernetes 之上,Kubernetes 是用于自动化部署、扩展和管理容器的最流行的开源解决方案。

考虑到这些因素,让我们看一些可供选择的模型服务框架。


Seldon

Seldon Core 是一个成熟的工具,专为可扩展、可靠的模型服务而构建,它以丰富的开箱即用功能集支持这一点,包括高级指标、日志记录、可解释性和 A/B 测试。

Seldon Core 的一项特别重要的功能是指标和监控。每个模型服务都公开了可以集成到您的软件监控堆栈中的指标,并且它可以与 Seldon 的另一个开源产品 Alibi-Detect 结合使用,对漂移和偏差等模型进行特定的监控。

优点

  • 由 Kubernetes 提供支持。容器编排的事实标准,Seldon 利用其提供所有模型服务功能,以低管理开销提供可扩展且可靠的基础架构。
  • 支持许多 ML 库。包括 PyTorch、TensorFlow、SKLearn。
  • 不需要额外的代码。默认情况下,您无需编写任何代码即可部署模型;您只需告诉 Seldon 在哪里可以找到您的模型资产,然后让它完成剩下的工作。
  • 模型监控。包括启用模型监控的功能。

缺点

  • Kubernetes 并不总是最好的选择。有了 Seldon,您别无选择,只能使用 Kubernetes。如果您只部署一两个模型,那么运行 Kubernetes 可能对您的需求来说成本太高。

BentoML

虽然 Seldon Core 专注于 Kubernetes 上的模型部署,但 BentoML 对模型的部署位置并不挑剔。

使用 Bento 的最简单方法是通过 Docker 容器,但这也不是必需的,因为您可以在自己的基础架构上运行自己的 BentoML 服务实例。

优点

  • 支持许多 ML 库。 包括 PyTorch、TensorFlow、SKLearn。
  • 在任何地方部署模型。 包括 Docker、Kubernetes 或 AWS、GCP 和 Azure 等云平台。


缺点

  • 没有内置编排。编排是关于自动化容器的部署、管理、扩展和网络。 BentoML 由您决定:根据您的部署位置,编排支持会有所不同。 相比之下,Seldon Core 通过 Kubernetes 免费获得这个功能。

Kubeflow 和 KServe

Kubeflow 是最古老的开源 MLOps 框架之一。它涵盖了许多不同的领域,从pipelines、模型训练和模型服务。正如您可能从名称中猜到的那样,它运行在 Kubernetes 之上。

Kubeflow 的现有用户会发现最容易坚持使用它进行模型服务。最近,Kubeflow 的模型服务部分被拆分为一个独立的项目,称为 KServe,您可以在没有 Kubeflow 的其余部分的情况下使用它。

从表面上看,KServe 承诺与 Seldon Core 类似的东西:在 Kubernetes 上运行任何模型。但与 Seldon 相比,KServe 更轻量级,使其更易于设置和运行,但代价是功能更少。

优点

  • 支持许多 ML 库。包括 PyTorch、TensorFlow、SKLearn。
  • 不仅仅是服务。如果完全使用 Kubeflow,那么您可以在同一个系统中训练和部署模型。

缺点

  • Legacy。 在过去几年中,MLOPS 工具有了很大的进步,KServe 和 Kubeflow 在很多方面都落后于这一趋势。
  • 缺少高级监控。与 Seldon Core 相比,这是 Kubeflow 尤其欠缺的一个领域。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
机器学习/深度学习 人工智能
Micro LLAMA:教学版 LLAMA 3模型实现,用于学习大模型的核心原理
Micro LLAMA是一个精简的教学版LLAMA 3模型实现,旨在帮助学习者理解大型语言模型的核心原理。该项目仅约180行代码,便于理解和学习。Micro LLAMA基于LLAMA 3中最小的8B参数模型,适合对深度学习和模型架构感兴趣的研究者和学生。
114 18
Micro LLAMA:教学版 LLAMA 3模型实现,用于学习大模型的核心原理
|
5月前
|
存储 人工智能 并行计算
Pai-Megatron-Patch:围绕Megatron-Core打造大模型训练加速生态
Pai-Megatron-Patch(https://github.com/alibaba/Pai-Megatron-Patch)是阿里云人工智能平台PAI研发的围绕Nvidia MegatronLM的大模型开发配套工具,旨在帮助开发者快速上手大模型,完成大模型(LLM)相关的高效分布式训练,有监督指令微调,下游任务评估等大模型开发链路。最近一年来,我们持续打磨Pai-Megatron-Patch的性能和扩展功能,围绕Megatron-Core(以下简称MCore)进一步打造大模型训练加速技术生态,推出更多的的训练加速、显存优化特性。
|
6月前
|
Linux Docker 异构计算
模型部署 — PaddleNLP 基于 Paddle Serving 快速使用(服务化部署 - Docker)— 图像识别 + 信息抽取(UIE-X)
模型部署 — PaddleNLP 基于 Paddle Serving 快速使用(服务化部署 - Docker)— 图像识别 + 信息抽取(UIE-X)
120 0
|
9月前
|
机器学习/深度学习 Kubernetes TensorFlow
基于ASK+TFJob快速完成分布式Tensorflow训练任务
本文介绍如何使用TFJob在ASK+ECI场景下,快速完成基于GPU的TensorFlow分布式训练任务。
301 0
基于ASK+TFJob快速完成分布式Tensorflow训练任务
|
机器学习/深度学习 JSON 算法
TensorFlow Serving使用指南
TensorFlow Serving使用指南
575 0
|
机器学习/深度学习 弹性计算 JSON
Tensorflow Serving部署模型与调用
本文以mnist为数据集,使用keras 构建CNN网络,将训练获取的模型通过Tensorflow Serving方式部署提供Rest Full接口,分别使用PostMan和Python调用服务,代码编辑调试使用阿里云PAI DSW实例,模型部署使用阿里云ECS虚拟机。
62735 2
Tensorflow Serving部署模型与调用
|
机器学习/深度学习 存储 Kubernetes
快速入门统一模型部署(Model Serving)框架 BentoML
BentoML 是一个用于机器学习模型服务的开源框架,旨在弥合数据科学和 DevOps 之间的差距(gap)。 数据科学家可以使用 BentoMl 轻松打包使用任何 ML 框架训练的模型,并重现该模型以用于生产。 BentoML 协助管理 BentoML 格式打包的模型,并允许 DevOps 将它们部署为任何云平台上的在线 API 服务端点或离线批量推理作业。
|
机器学习/深度学习 存储 Java
阿里云机器学习模型在线服务自定义Processor部署PMML模型(二)
阿里云机器学习模型在线服务自定义Processor部署PMML模型(一)中介绍了使用EASCMD搭建环境,进行自定义processor的部署,这里介绍使用阿里云提供的镜像进行模型的在线部署,并通过Java SDK演示模型的在线调用。
3330 2
阿里云机器学习模型在线服务自定义Processor部署PMML模型(二)
|
机器学习/深度学习 弹性计算 Ubuntu
阿里云机器学习模型在线服务自定义Processor部署PMML模型(一)
Processor是包含在线预测逻辑(模型加载和请求预测逻辑)的程序包,如果PAI-EAS提供的官方通用Processor无法满足模型部署需求,则可以根据Processor的开发标准自定义Processor。本文演示如果在本地搭建环境进行测试,并通过EASCMD指令打包方式上传服务到EAS服务器,实现模型在线调用。
128480 0
阿里云机器学习模型在线服务自定义Processor部署PMML模型(一)
|
机器学习/深度学习 TensorFlow API
阿里云机器学习PAI EAS部署TensorFlow Model
为了帮助用户更好的实现一站式端到端的算法应用,PAI平台针对在线推理场景提供了PAI EAS(Elastic Algorithm Service)在线预测服务,支持基于异构硬件(CPU/GPU)的模型加载和数据请求的实时响应。您可以通过在线部署功能将您的模型快速部署为Restful API,然后使用HTTP请求的方式进行调用。本文通过一个示例演示:TensorFlow(SavedModel)模型的在线部署及调用。
3224 0
阿里云机器学习PAI EAS部署TensorFlow Model