使用 Seldon Core 服务模型

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 当您构建机器学习驱动的产品时,弄清楚如何弥合模型与其他一切之间的差距至关重要。 例如,也许你有一个很好的推荐模型,但在我们能够将这些推荐呈现给客户之前,这个模型并没有多大用处。这就是模型服务的用武之地。在本文中,我们将了解如何使用 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 模型。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
|
数据采集 机器学习/深度学习 数据格式
在使用 Core ML 时,有哪些注意事项?
在使用 Core ML 时,有哪些注意事项?
94 1
32 # core 模块使用
32 # core 模块使用
54 0
|
5月前
|
开发框架 .NET 对象存储
【.NET Core】深入理解异步编程模型(APM)
【.NET Core】深入理解异步编程模型(APM)
110 1
|
缓存 安全 算法
Core Image框架
解读官方文档中Core Image的能力与最佳使用
119 0
|
存储 开发框架 数据可视化
Entity Framework Core 简介
Entity Framework Core 简介
215 0
|
弹性计算 运维 监控
.Net Core 2.1 MVC Web应用迁移到函数计算 custom runtime
前言 Custom Runtime 就是自定义的执行环境, 用户基于 Custom Runtime 可以完成以下目标: 可以随心所欲持定制个性化语言执行环境(例如 golang、lua、ruby)以及各种语言的小版本(例如python3.7、Nodejs12)等,打造属于自己的自定义runtime; 现有的 web 应用或基于传统开发 web 项目基本不用做任何改造,即可将项目一键迁移到函数计算平台。
1533 0
|
SQL .NET
.Net Core中利用TPL(任务并行库)构建Pipeline处理Dataflow
在学习的过程中,看一些一线的技术文档很吃力,而且考虑到国内那些技术牛人英语都不差的,要向他们看齐,所以每天下班都在疯狂地背单词,博客有些日子没有更新了,见谅见谅 什么是TPL? Task Parallel Library (TPL), 在.NET Framework 4微软推出TPL,并把TPL作为编写多线程和并行代码的首选方式,但是,在国内,到目前为止好像用的人并不多。
1659 0
Core ML 框架详细解析
Core ML框架详细解析(一) —— Core ML基本概览Core ML框架详细解析(二) —— 获取模型并集成到APP中Core ML框架详细解析(三) —— 利用Vision和Core ML对图像进行分类Core ML框架详细解析(四) —— ...
2069 0
|
iOS开发
Core Audio 框架详细解析
Core Audio框架详细解析(一) —— 基本概要Core Audio框架详细解析(二) —— 基于CoreAudio的ios音频服务总结分析
1560 0
Core Image 框架详细解析
Core Image框架详细解析(一) —— 基本概览Core Image框架详细解析(二) —— Core Image滤波器参考Core Image框架详细解析(三) —— 关于Core ImageCore Image框架详细解析(四) —— Pro...
996 0