使用 Seldon Core 服务模型

简介: 当您构建机器学习驱动的产品时,弄清楚如何弥合模型与其他一切之间的差距至关重要。 例如,也许你有一个很好的推荐模型,但在我们能够将这些推荐呈现给客户之前,这个模型并没有多大用处。这就是模型服务的用武之地。在本文中,我们将了解如何使用 Seldon Core 为模型提供服务,这是一个为速度和大规模而构建的开源服务框架,能够一次运行 1000 多个模型。 我将讨论一些让 Seldon 在这个领域独一无二的东西,以及在你的项目中使用和反对使用它的原因。这是关于 Seldon Core 系列的第一部分。 除了模型服务的基础知识,在以后的部分中,我们将使用 Alibi Detect 监控 Seldon

什么是模型服务?

作为一个模型服务框架,Seldon Core 是一个很好的公司,位于数十个不同的模型服务框架中(请参阅我们的模型服务指南以了解更多关于它们的信息)。

我们想要对模型服务做三件事:

  • 通过 API 与您的模型交互,以便产品的其他组件可以与模型交互,而无需了解其内部细节。
  • 将模型部署到云端(或其他地方,如边缘/物联网环境)。
  • 轻松扩展模型以满足用户需求

可以想象,每个框架都采用不同的方法来解决这些问题。 让我们看看 Seldon 如何在这三点上发挥作用。


Seldon Core 简介


Seldon Core 支持来自各种 ML 框架的模型,包括 TensorFlow 和 PyTorch。它还适用于多种实现语言,支持 R、Julia、C++ 和 Java 以及 Python。这是我们在许多模型服务框架(竞品)中看不到的。

它通过将模型打包到 Docker 容器中来工作。 Seldon 提供了一系列预先构建的 Docker 镜像,许多真实世界的模型可以通过使用其中一个镜像来立即部署,而无需您编写任何额外的代码。

Seldon 在 Kubernetes 之上运行。如果您不熟悉它,Kubernetes 是基于云的容器编排的事实标准,它提供了一种强大而可靠的方式来运行和扩展容器。这是 Seldon 的超能力之一:通过在 Kubernetes 之上运行,Seldon 在规模和可靠性方面为模型服务带来了同样的能力。

因此,您需要维护一个 Kubernetes 集群才能使用 Seldon,但由于所有主要的云提供商都将 Kubernetes 作为托管服务提供,所以,这并不是一个巨大的开销。如果您需要规模化,这是最好的选择。


基于 Kubernetes 也意味着它最适合云部署。它不会用于基于边缘的或物联网场景的模型服务。

Seldon Core 安装

Kubernetes 集群是设置 Seldon Core 的先决条件。 之后,安装 Seldon 就非常简单了。

Seldon 提供了使用 Helm 在 Kubernetes 上安装的说明,这是最简单的方法。

此外,可以选择在本地运行 Seldon。 这样做的好处是,您可以在实际部署任何东西之前在本地试验模型以及提供配置,同时仍然确保您的实验环境与生产中使用的环境相匹配。

Seldon 在这里推荐的方法是使用 Kind(它代表 Docker 中的 Kubernetes)。 有关更多详细信息,请参阅用于本地安装的 Seldon 文档


Seldon 如何为模型服务?

让我们看一个例子。 假设我们有一个用 SKLearn 训练过的模型。 实际上,ML 框架并不重要。 它也可以是 PyTorch、Tensorflow 等。

首先,我们需要将模型资产托管在 Seldon 可以访问它们的地方。 这可以是 Google Cloud 存储桶、AWS S3 存储桶等。 在内部,Seldon 使用名为 rclone 的工具从云存储位置读取文件,因此它可以与 rclone 支持的 40 多个平台中的任何一个一起使用。

接下来我们需要配置模型服务器。 配置如下所示:

apiVersion: machinelearning.seldon.io/v1
kind: SeldonDeployment
metadata:
  name: iris-model
  namespace: seldon
spec:
  name: iris
  predictors:
  - graph:
      implementation: SKLEARN_SERVER
      modelUri: gs://seldon-models/v1.14.0-dev/sklearn/iris
      name: classifier
    name: default
    replicas: 1
复制代码


这似乎是很多配置,所以让我们分解重要的部分:

  • 名称(Name)每个模型都需要有一个唯一的名称。 这样我们就可以在部署后对其进行管理,在应用程序日志中识别它等。
  • 预测器(Predictors):这是我们描述模型本身的地方。 可以有多个预测变量,但对于我们的目的而言,这并不重要。

需要使用以下信息设置预测器:

  • 实现(Implementation)这是一个什么样的模型服务? 在我们的例子中,它是一个 SKLearn 服务。
  • 模型 URI(Model URI)模型资产在哪里? 我们在这里使用谷歌云存储桶。
  • 副本(Replicas):模型服务可能需要处理数千个请求。 我们可以通过设置副本的数量在多个服务之间均衡负载

我们使用 Kubernetes 命令行工具部署服务:

kubectl apply -f iris_server.yaml
复制代码



就像这样,我们有一个模型服务,我们可以使用 REST API 与模型进行交互。 无需编写任何代码,我们就将模型变成了 Web 服务,这非常酷。 不仅如此,Seldon 还为您的 API 提供基于 Swagger 的文档。 您可以使用它来试验和测试您的 API。

网络异常,图片无法展示
|



使用自定义 Docker 镜像服务

虽然 Seldon 的预构建 Docker 镜像可以让您轻松启动和运行,但有时我们需要构建自己的镜像。这包括当我们的模型需要安装特殊依赖项时,或者当我们想要对模型输入进行一些预处理时。

Seldon 使用并推荐了一种构建 Docker 镜像的特殊方式,称为 source to image (s2i)。最初,s2i 是由 RedHat 开发的,旨在提供一种从源代码生成镜像的方法。

如果您已经熟悉如何使用 Dockerfile 构建 Docker 映像,那么 s2i 只是此过程之上的一个抽象。如果您更喜欢编写自己的 Dockerfile,也不必使用 s2i,这只是推荐的方法。

尽管这一切听起来有点复杂,但实际上并不是这样。构建自己的镜像是大多数团队在某个时候不可避免地最终会做的事情,Seldon 花了很多心思让这件事变得轻松。


Seldon 适合你吗?

Seldon 是一个成熟的模型服务框架,兼容多种不同类型的 ML 模型,并且可以跨多种编程语言工作。它预先构建的 Docker 镜像使得将模型投入生产变得非常容易,而且因为它建立在 Kubernetes 之上,你也可以获得 Kuberentes 所著名的可靠性和规模。

但并不是每个人都想建立和维护一个 Kubernetes 集群,而且对于很多人来说,承担这样做的复杂性和成本并没有什么意义。如果您正处于构建基于 ML 的产品的早期阶段,并且您预计短期内不会有大规模的需求,情况尤其如此。

话虽如此,使用 Kubernetes 变得越来越容易。这个过程从托管的 Kubernetes 服务开始,这些服务为您处理配置和扩展集群。

最近,谷歌发布了 Autopilot,它可以让你在 Kubernetes 上运行东西,而无需运行自己的集群,并且只需为 CPU 和内存资源付费。由于 Autopilot 的限制,Seldon 还不能在上面运行,但如果这种情况发生变化,那么进入的门槛就会降低很多,即使对于那些早期项目,Seldon 也将是一个不错的选择。

除了模型服务的用途之外,Seldon Core 还有更多好处。在下一篇博客中,我们将看看 Alibi Detect,它可以用来监控 Seldon 模型。


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
机器学习/深度学习 监控 Kubernetes
使用 Seldon Alibi 进行模型监控
虽然 Seldon 使在生产中部署和服务模型变得容易,但一旦部署,我们如何知道该模型是否在做正确的事情? 训练期间的良好表现并不一定意味着在生产运行几个月后表现良好。 现实世界中发生的事情是我们无法解释的,例如:输入数据逐渐偏离训练数据,以及异常值和偏差。
pip镜像源大全及配置
在中国使用pip时,可以配置国内镜像源来提高安装速度和稳定性。以下是一些常见的国内镜像源:
17144 0
|
Kubernetes 负载均衡 应用服务中间件
【K8S系列】第十三讲:Ingress详解
【K8S系列】第十三讲:Ingress详解
7575 0
|
Linux 数据安全/隐私保护 Windows
更换(Pypi)pip源到国内镜像
pip国内的一些镜像 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.
247122 2
|
7月前
|
人工智能 运维 数据可视化
凌晨急诊室诞生的疫苗系统:一个宝妈的AI破局之路
本文分享了一位妈妈在急诊室经历后,将技术与母爱结合的心路历程。从凌晨抱着高烧儿子就医,同时处理工作告警的崩溃时刻,到意识到妈妈和程序员都是“运维工程师”,作者逐步构建了宝宝疫苗管理系统。文章介绍了系统从静态命令行工具升级为动态智能预警系统的全过程,包括环境搭建、核心代码解析及家庭协同功能实现,并总结了碎片时间开发法与防坑指南。最终,作者通过技术赋予母爱温度,为其他妈妈提供了实用资源包,展现了代码背后的人文关怀。
172 5
|
9月前
|
机器学习/深度学习 PyTorch 调度
内部干货 | 基于华为昇腾910B算力卡的大模型部署和调优-课程讲义
近日上海,TsingtaoAI为某央企智算中心交付华为昇腾910B算力卡的大模型部署和调优课程。课程深入讲解如何在昇腾NPU上高效地训练、调优和部署PyTorch与Transformer模型,并结合实际应用场景,探索如何优化和迁移模型至昇腾NPU平台。课程涵盖从模型预训练、微调、推理与评估,到性能对比、算子适配、模型调优等一系列关键技术,帮助学员深入理解昇腾NPU的优势及其与主流深度学习框架(如PyTorch、Deepspeed、MindSpore)的结合应用。
2662 13
|
C++ 开发者 Python
实现Python日志点击跳转到代码位置的方法
本文介绍了如何在Python日志中实现点击跳转到代码位置的功能,以提升调试效率。通过结合`logging`模块的`findCaller()`方法记录代码位置信息,并使用支持点击跳转的日志查看工具(如VS Code、PyCharm),开发者可以从日志直接点击链接定位到出错代码,加快问题排查。
|
机器学习/深度学习 存储 算法
提升数据中心能效的智能温控策略
【4月更文挑战第17天】 在数据中心的运营管理中,能效优化是一项持续的挑战。随着能源成本的不断上升和对环境影响的日益关注,开发智能且高效的温控系统显得尤为重要。本文提出了一种基于机器学习算法的智能温控策略,该策略通过实时监测数据中心的环境参数并动态调整冷却设备的工作状态,旨在降低能耗并保证系统的稳定运行。通过与传统温控方法进行比较,结果表明,智能温控策略能够有效减少能源消耗并提高整体效率。
|
分布式计算 资源调度 大数据
【大数据技术Hadoop+Spark】Spark架构、原理、优势、生态系统等讲解(图文解释)
【大数据技术Hadoop+Spark】Spark架构、原理、优势、生态系统等讲解(图文解释)
2377 1
|
小程序 前端开发 Java
微信小程序|Springboot+Node+Vue实现学科竞赛管理系统
微信小程序|Springboot+Node+Vue实现学科竞赛管理系统
277 0