一个开源模型服务(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 尤其欠缺的一个领域。


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
机器学习/深度学习 存储 并行计算
一篇就够:高性能推理引擎理论与实践 (TensorRT)
本文分享了关于 NVIDIA 推出的高性能的深度学习推理引擎 TensorRT 的背后理论知识和实践操作指南。
14171 9
一篇就够:高性能推理引擎理论与实践 (TensorRT)
|
存储 分布式计算 Hadoop
【HBase】(八)往 HBase 导入数据的几种操作
【HBase】(八)往 HBase 导入数据的几种操作
3256 0
|
BI
运营必备 - CPA、CPS、CPC、CPM推广是什么意思?(一)
运营必备 - CPA、CPS、CPC、CPM推广是什么意思?(一)
22113 0
运营必备 - CPA、CPS、CPC、CPM推广是什么意思?(一)
|
机器学习/深度学习 编解码 测试技术
TimeMOE: 使用稀疏模型实现更大更好的时间序列预测
TimeMOE是一种新型的时间序列预测基础模型,通过稀疏混合专家(MOE)设计,在提高模型能力的同时降低了计算成本。它可以在多种时间尺度上进行预测,并且经过大规模预训练,具备出色的泛化能力。TimeMOE不仅在准确性上超越了现有模型,还在计算效率和灵活性方面表现出色,适用于各种预测任务。该模型已扩展至数十亿参数,展现了时间序列领域的缩放定律。研究结果显示,TimeMOE在多个基准测试中显著优于其他模型,特别是在零样本学习场景下。
1411 64
|
存储 缓存 NoSQL
MongoDB 是什么?有哪些应用场景?
MongoDB 是一个由 MongoDB Inc. 开发的基于分布式文件存储的面向文档的数据库,自 2009 年推出以来,以其高性能、易部署、模式自由、强大的查询语言和出色的可扩展性受到广泛欢迎。它适用于互联网应用、日志分析、缓存、地理信息系统等多种场景。MongoDB 支持多种编程语言,并提供了丰富的社区支持,便于开发者快速上手。结合板栗看板等工具,MongoDB 可进一步提升数据存储、分析和同步的效率,支持个性化功能实现,助力团队协作和项目管理。
3796 1
|
人工智能 API 决策智能
智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
【7月更文挑战第8天】智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
15980 134
智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
|
机器学习/深度学习 存储 人工智能
摆脱 AI 生产“小作坊”:如何基于 Kubernetes 构建云原生 AI 平台
本文将介绍和梳理我们对云原生 AI 这个新领域的思考和定位,介绍云原生 AI 套件产品的核心场景、架构和主要能力。
摆脱 AI 生产“小作坊”:如何基于 Kubernetes 构建云原生 AI 平台
|
12月前
|
存储 安全 API
使用Ollama和Open WebUI管理本地开源大模型
Open WebUI 是一个功能丰富且用户友好的自托管 Web 用户界面(WebUI),它被设计用于与大型语言模型(LLMs)进行交互,特别是那些由 Ollama 或与 OpenAI API 兼容的服务所支持的模型。Open WebUI 提供了完全离线运行的能力,这意味着用户可以在没有互联网连接的情况下与模型进行对话,这对于数据隐私和安全敏感的应用场景尤为重要。
|
编解码 人工智能 文字识别
阶跃星辰开源GOT-OCR2.0:统一端到端模型,魔搭一站式推理微调最佳实践来啦!
GOT来促进OCR-2.0的到来。该模型具有580百万参数,是一个统一、优雅和端到端的模型,由高压缩编码器和长上下文解码器组成。
阶跃星辰开源GOT-OCR2.0:统一端到端模型,魔搭一站式推理微调最佳实践来啦!
|
机器学习/深度学习 API Python
阿里云百炼上线Qwen2.5-Turbo模型,可支持100万超长上下文
Qwen2.5-Turbo已上线,支持100万超长上下文,相当于100万个英文单词或150万个汉字。该模型在多个长文本任务评测集中表现出色,超越GPT-4,同时在推理速度上实现4.3倍提升。限时免费赠送1000万tokens额度,欢迎体验。
4172 0