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-modelnamespace: default
spec:predictors:- name: defaultreplicas: 1graph:name: classifierimplementation: SKLEARN_SERVERmodelUri: gs://seldon-models/sklearn/irisname: 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-modelnamespace: default
    spec:predictors:- name: defaultreplicas: 1graph:name: classifierimplementation: SKLEARN_SERVERmodelUri: gs://seldon-models/sklearn/irisname: 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 官方文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/58968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言笔记(字符串函数,字符函数,内存函数)

目录 前言 1.字符串函数 1.1.strlen 1.2.strcpy 1.3.strcat 1.4.strcmp 1.5.strncpy 1.6.strncat 1.7.strncmp 1.8.strstr 1.9.strtok 1.10.strerror 2.字符函数 2.1字符分类函数 2.2字符转换函数 3.内存函数 3.1.mencpy 3.2.memmove 3.3.memcmp 前言 本文重…

Debian 12环境里部署nginx步骤记录

前言 浅记录一下 在Debian 12环境里安装nginx的过程&#xff0c;这个过程并没有特别顺利&#xff0c;有遇到各种报错&#xff0c;这些报错&#xff0c;我也会记录进来&#xff1b;方便自己后续查看以及供需要的小伙伴参考吧~~ 主要参考资料&#xff1a;https://blog.csdn.ne…

详解基于C#开发Windows API的SendMessage方法的鼠标键盘消息发送

在C#中&#xff0c;SendMessage方法是一个强大的工具&#xff0c;它允许我们与Windows API交互&#xff0c;模拟键盘和鼠标事件。本文将详细介绍如何使用SendMessage方法来发送鼠标和键盘消息。 1. SendMessage方法概述 SendMessage是Windows API中的一个函数&#xff0c;它用…

单片机入门知识

1单片机系统的int是16位 计算机系统的int是32位&#xff08;数据总线&#xff09; 2的16次方是65536 所以在单片机中&#xff0c;如果表示一个正整数&#xff0c;这个数字的范围是0~65535&#xff0c;总共有65536种可能 2内存条用于存储计算机运行时的数据&#xff0c;是连接…

ABAP:SET CURSOR FIELD设置鼠标焦点

SET CURSOR FIELD <字段名>&#xff1a;设置鼠标焦点到该字段 SET CURSOR 设置到鼠标焦点列还是行 SET CURSOR LINE 设置鼠标焦点到行 GET CURSOR field <字段名> &#xff1a;这个相对应的获取鼠标焦点得到的字段

ArcGIS从Excel表格文件导入XY数据并定义坐标系与投影的方法

本文介绍在ArcMap软件中&#xff0c;从Excel表格文件中批量导入坐标点数据&#xff0c;将其保存为.shp矢量格式&#xff0c;并定义坐标系、转为投影坐标系的方法。 已知我们有一个Excel表格文件&#xff08;可以是.xls、.xlsx、.csv等多种不同的表格文件格式&#xff09;&#…

三周精通FastAPI:38 针对不同的编程语言来生成客户端

官方文档&#xff1a;https://fastapi.tiangolo.com/zh/advanced/generate-clients/ 生成客户端 因为 FastAPI 是基于OpenAPI规范的&#xff0c;自然您可以使用许多相匹配的工具&#xff0c;包括自动生成API文档 (由 Swagger UI 提供)。 一个不太明显而又特别的优势是&#…

Linux【基础篇】T

--已经不知道幸福是什么味道了 Linux命令行 linux命令提示符 linux目录结构 Windows的目录结构是N个顶点&#xff0c;可以是C盘 可以是D盘 可以是E盘 往下。 linux的目录结构是只有一个订单 &#xff0c;像一颗倒状的树木一样的。 linux常用目录含义 /etc目录下一些重要的配置…

Mesh网格

Mesh(网格) 定义&#xff1a;Mesh 是一个包含顶点、三角形、顶点法线、UV坐标、颜色和骨骼权重等数据的对象。它定义了3D模型的几何形状。 功能&#xff1a; 顶点&#xff08;Vertices&#xff09;&#xff1a;构成3D模型的点。 三角形&#xff08;Triangles&#xff09;&…

【从零开始的LeetCode-算法】540. 有序数组中的单一元素

给你一个仅由整数组成的有序数组&#xff0c;其中每个元素都会出现两次&#xff0c;唯有一个数只会出现一次。 请你找出并返回只出现一次的那个数。 你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。 示例 1: 输入: nums [1,1,2,3,3,4,4,8,8] 输出: 2示例…

传输协议设计与牧村摆动(Makimoto‘s Wave)

有一条活鱼和一条死鱼&#xff0c;你准备怎么做&#xff0c;你会将活鱼红烧或将死鱼清蒸吗&#xff1f;好的食材只需要最简单的烹饪&#xff0c;不好的食材才需要花活儿。 我此前的文字几乎都在阐述一个观点&#xff0c;广域网就是那条死鱼&#xff0c;数据中心则是那条活鱼。…

【AI学习】Mamba学习(十五):关于S4模型计算优化的再学习

前面理解了S4模型&#xff0c;但是对于具体的优化算法&#xff0c;还是没有完全理解透彻。现在补充学习。 S4 SSM HiPPO Structured Matrices 具体方案&#xff1a;Structured State Spaces (S4) 简单总结&#xff1a;用HiPPO-LegS的矩阵形式初始化SSM&#xff0c;解决训…

【C++】新手入门指南

> &#x1f343; 本系列为初阶C的内容&#xff0c;如果感兴趣&#xff0c;欢迎订阅&#x1f6a9; > &#x1f38a;个人主页:[小编的个人主页])小编的个人主页 > &#x1f380; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 > ✌️ &#x1f91e; &#x1…

小程序开发进阶之路-AI编程助手

之前&#xff0c;我独自一人开发了一个名为“心情追忆”的小程序&#xff0c;旨在帮助用户记录日常的心情变化及重要时刻。从项目的构思、设计、前端&#xff08;小程序&#xff09;开发、后端搭建到最终部署&#xff0c;所有环节都由我一人包办。经过一个月的努力&#xff0c;…

Cursor的chat与composer的使用体验分享

经过一段时间的试用&#xff0c;下面对 Composer 与 Chat 的使用差别进行总结&#xff1a; 一、长文本及程序文件处理方面 Composer 在处理长文本时表现较为稳定&#xff0c;可以对长文进行更改而不会出现内容丢失的情况。而 Chat 在更改长的程序文件时&#xff0c;有时会删除…

【笔记】自动驾驶预测与决策规划_Part6_不确定性感知的决策过程

文章目录 0. 前言1. 部分观测的马尔可夫决策过程1.1 POMDP的思想以及与MDP的联系1.1.1 MDP的过程回顾1.1.2 POMDP定义1.1.3 与MDP的联系及区别POMDP 视角MDP 视角决策次数对最优解的影响 1.2 POMDP的3种常规解法1.2.1 连续状态的“Belief MDP”方法1. 信念状态的定义2. Belief …

Latex公式转换编辑网站

https://editor.codecogs.com/ https://www.latexlive.com/home## https://simpletex.cn/ai/latex_ocr https://webdemo.myscript.com/views/math/index.html# 参考 https://latex.91maths.com/ https://web.baimiaoapp.com/image-to-latex https://blog.csdn.net/qq_45100…

注意力机制的目的:理解语义;编码器嵌入高纬空间计算;注意力得分“得到S*V”;解码器掩码和交叉注意力层用于训练;最终的编码器和输出实现大模型

目录 注意力机制的目的:理解语义中的它是小白兔 词编码器嵌入高纬空间 计算注意力得分“得到S*V” 权重QKV:连接权重 训练阶段使用解码器:翻译后的语句 解码器掩码和交叉注意力层用于训练 最终的编码器和输出实现大模型 Transformer模型中,QKV QKV的作用 举例说明…

【万字详解】如何在微信小程序的 Taro 框架中设置静态图片 assets/image 的 Base64 转换上限值

设置方法 mini 中提供了 imageUrlLoaderOption 和 postcss.url 。 其中&#xff1a; config.limit 和 imageUrlLoaderOption.limit 服务于 Taro 的 MiniWebpackModule.js &#xff0c; 值的写法要 &#xff08;&#xff09;KB * 1024。 config.maxSize 服务于 postcss-url 的…

【MatLab手记】 --从0到了解超超超详过程!!!

文章目录 MatLab笔记一、命令行窗口二、变量命名规则三、数据类型1. 数字2. 字符与字符串3. 矩阵3.1 矩阵创建3.2 矩阵的修改和删除3.3 矩阵的拼接与重构重排3.4 矩阵的运算方法3.5 矩阵的下标 4. 元胞数组&#xff08;类似数据容器&#xff09;5. 结构体 四、逻辑与流程控制五…