Seldon Core大模型部署详解

一 Seldon Core定义

Seldon Core 目前是机器学习模型部署领域最受欢迎的方案之一,由 Seldon 公司开源和维护,旨在为不同框架下训练出来的模型(Tensorflow,Pytorch,SKLearn,XGBoost)提供一套相对统一的部署方式,支持多种不同类型模型的Inference Server。

seldoncore将ML模型(Tensorflow、Pytorch、H2o等)或语言包装器(Python、Java等)转换为生产REST/GRPC微服务。

Seldon可以扩展到数千个生产机器学习模型,并提供现成的高级机器学习功能,包括高级指标、请求日志记录、解释器、异常值检测器、A/B测试、金丝雀等。

二 功能特点

  1. 多语言支持:支持多种编程语言和机器学习框架,如 Python、R、TensorFlow、PyTorch、Scikit-learn 等。
  2. 可扩展性:利用 Kubernetes 的可扩展性,支持大规模的模型部署和管理。
  3. A/B 测试和多臂赌博机:支持 A/B 测试和多臂赌博机实验,帮助优化模型性能。
  4. 模型监控:提供详细的监控和日志功能,帮助跟踪模型的性能和健康状况。
  5. 安全性:支持身份验证和授权,确保模型和数据的安全。
  6. 弹性伸缩:根据负载自动扩展和缩减模型实例,确保高效的资源利用。
  7. 集成性:与 CI/CD 工具、监控工具(如 Prometheus 和 Grafana)和日志工具(如 ELK Stack)无缝集成。

三 关键组件和底层原理

Seldon Core 的底层原理基于 Kubernetes 和容器化技术。它通过定义自定义资源(Custom Resource Definitions, CRDs)来扩展 Kubernetes API,使得用户可以使用 Kubernetes 原生的方式来管理机器学习模型,以下是 Seldon Core 的关键组件和原理:

1. SeldonDeployment CRD

Seldon Core 通过定义 SeldonDeployment CRD 来描述机器学习模型的部署规范。SeldonDeployment CRD 包含了模型的镜像、资源需求、服务配置等信息。

  • apiVersion:定义 CRD 的 API 版本。
  • kind:定义资源类型,这里是 SeldonDeployment。
  • metadata:包含资源的元数据,如名称和命名空间。
  • spec:定义模型的部署规范,包括预测器、图结构、模型 URI 等。
2. Seldon Operator

Seldon Operator 是一个控制器,负责监控 SeldonDeployment 资源的变化,并根据定义的规范创建和管理相应的 Kubernetes 资源(如 Pods、Services 等)。Seldon Operator 的主要职责包括:

  • 监控 SeldonDeployment 资源的创建、更新和删除事件。
  • 根据 SeldonDeployment 资源的定义,创建和管理相应的 Kubernetes 资源。
  • 确保模型服务的高可用性和扩展性。
3. Model Server

Model Server 是容器化的模型服务器,负责加载和运行机器学习模型,处理预测请求。Seldon Core 支持多种模型服务器实现,如 TensorFlow Serving、SKLearn Server、XGBoost Server 等。

  • 模型加载:从指定的存储位置加载模型。
  • 预测处理:接收预测请求,调用模型进行预测,并返回预测结果。
4. Metrics Server

Metrics Server 收集和暴露模型的性能指标,供监控工具(如 Prometheus 和 Grafana)使用。常见的性能指标包括请求延迟、吞吐量、错误率等。

  • 指标收集:收集模型服务的性能指标。
  • 指标暴露:通过 Prometheus 格式暴露指标,供监控工具使用。
5. Router

Router 用于实现 A/B 测试和多臂赌博机实验,路由请求到不同的模型版本。Router 的主要职责包括:

  • 请求路由:根据配置的路由策略,将请求分发到不同的模型版本。
  • 实验管理:管理 A/B 测试和多臂赌博机实验,收集实验结果。

四 Seldon Core 的部署方案

Seldon Core 的部署方案主要包括以下步骤:

  1. 安装 Kubernetes 集群:确保 Kubernetes 集群已经安装并运行。
  2. 安装 Seldon Core:在 Kubernetes 集群中安装 Seldon Core。
  3. 创建 SeldonDeployment 资源:定义并创建 SeldonDeployment 资源,描述模型的部署规范。
  4. 部署模型:使用 kubectl 命令将 SeldonDeployment 资源应用到 Kubernetes 集群中。
  5. 访问模型服务:通过 Kubernetes 服务访问模型的预测接口。
1. 安装 Kubernetes 集群

可以使用多种方式安装 Kubernetes 集群,如 Minikube、Kubeadm、Google Kubernetes Engine(GKE)等。以下是使用 Minikube 安装 Kubernetes 集群的示例:

minikube start
2. 安装 Seldon Core

在 Kubernetes 集群中安装 Seldon Core。以下是使用 Helm 安装 Seldon Core 的示例:

kubectl create namespace seldon-system
kubectl apply -f https://raw.githubusercontent.com/SeldonIO/seldon-core/master/helm-charts/seldon-core-operator/templates/crds.yaml
helm install seldon-core seldon-core-operator --namespace seldon-system --repo https://storage.googleapis.com/seldon-charts
3. 创建 SeldonDeployment 资源

创建一个 YAML 文件,定义模型的部署规范。例如,以下是一个简单的 SeldonDeployment 示例:

apiVersion: machinelearning.seldon.io/v1
kind: SeldonDeployment
metadata:
  name: seldon-model
  namespace: default
spec:
  predictors:
  - name: default
    replicas: 1
    graph:
      name: classifier
      implementation: SKLEARN_SERVER
      modelUri: gs://seldon-models/sklearn/iris
    name: default
4. 部署模型

使用 kubectl 命令将 SeldonDeployment 资源应用到 Kubernetes 集群中:

kubectl apply -f seldon-deployment.yaml
5. 访问模型服务

部署完成后,可以通过 Kubernetes 服务访问模型的预测接口。例如,使用 curl 命令发送预测请求:

curl -X POST http://<NODE_IP>:<NODE_PORT>/api/v1.0/predictions -d '{"data": {"ndarray": [[5.1, 3.5, 1.4, 0.2]]}}'

五 工作流程

  1. 模型打包:将机器学习模型打包为 Docker 镜像,并推送到容器镜像仓库。
  2. 定义 SeldonDeployment:创建一个 SeldonDeployment 资源,定义模型的部署规范。
  3. 部署模型:使用 kubectl 命令将 SeldonDeployment 资源应用到 Kubernetes 集群中。
  4. Seldon Operator 监控:Seldon Operator 监控 SeldonDeployment 资源的变化,并创建相应的 Kubernetes 资源。
  5. 模型服务启动:模型服务器容器启动,加载模型并开始处理预测请求。
  6. 监控和日志:Metrics Server 收集模型的性能指标,日志工具记录模型的运行日志。
  7. 扩展和缩减:根据负载自动扩展和缩减模型实例,确保高效的资源利用。

六 使用方法

使用 Seldon Core 通常涉及以下步骤:

  1. 安装 Seldon Core

    kubectl create namespace seldon-system
    kubectl apply -f https://raw.githubusercontent.com/SeldonIO/seldon-core/master/helm-charts/seldon-core-operator/templates/crds.yaml
    helm install seldon-core seldon-core-operator --namespace seldon-system --repo https://storage.googleapis.com/seldon-charts
    
  2. 创建 SeldonDeployment 资源: 创建一个 YAML 文件,定义模型的部署规范。例如,以下是一个简单的 SeldonDeployment 示例:

    apiVersion: machinelearning.seldon.io/v1
    kind: SeldonDeployment
    metadata:
      name: seldon-model
      namespace: default
    spec:
      predictors:
      - name: default
        replicas: 1
        graph:
          name: classifier
          implementation: SKLEARN_SERVER
          modelUri: gs://seldon-models/sklearn/iris
        name: default
    
  3. 部署模型: 使用 kubectl 命令将 SeldonDeployment 资源应用到 Kubernetes 集群中:

    kubectl apply -f seldon-deployment.yaml
    
  4. 访问模型服务: 部署完成后,可以通过 Kubernetes 服务访问模型的预测接口。例如,使用 curl 命令发送预测请求:

    curl -X POST http://<NODE_IP>:<NODE_PORT>/api/v1.0/predictions -d '{"data": {"ndarray": [[5.1, 3.5, 1.4, 0.2]]}}'
    

七 优缺点

优点:

  • Seldon Core的安装量超过200万台,可用于跨组织管理机器学习模型的大规模部署,其主要优点包括:

    • 使用pre-packaged推理服务器、自定义服务器或语言包装器来容器化ML模型的简单方法。
    • 现成的端点可以通过swaggerui、Seldon Python客户端或Curl/GRPCurl进行测试。
    • 云不可知论者,在AWS EKS、azureaks、Google GKE、阿里云、数字海洋和Openshift上进行了测试。
    • 由预测器、变压器、路由器、组合器等组成的强大而丰富的推理图。
    • 元数据来源,以确保每个模型可以追溯到其各自的培训系统、数据和指标。
    • 与普罗米修斯和格拉法纳集成的高级可定制指标。
    • 通过模型input-output请求实现完全可审计性(日志与Elasticsearch集成)
    • 通过集成到Jaeger的Microservice分布式跟踪,可以深入了解跨微服务跃点的延迟。
    • 通过一致的安全和更新政策维护安全、可靠和强健的系统。

缺点

  1. 复杂性:需要一定的 Kubernetes 知识和经验,初学者可能需要一些时间来熟悉。
  2. 资源开销:在大规模部署时,可能需要较多的计算和存储资源。
  3. 调试难度:分布式系统的调试和故障排查可能比较复杂。

八 更多信息

Seldon Core 是一个强大的平台,通过提供多语言支持、可扩展性、模型监控和安全性等功能,显著提高了机器学习模型的部署和管理效率。随着机器学习技术的发展,Seldon Core 将继续在大规模模型部署和应用中发挥重要作用。更多信息和详细文档可以参考 Seldon Core 官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏沫の梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值