Seldon Core:闪电般快速、工业级就绪的机器学习
一个在 Kubernetes 上大规模部署机器学习模型的平台。
Seldon Core V2 现已推出
Seldon Core V2 现已推出。如果你是 Seldon Core 新手,我们建议你从这里开始。查看这里的文档,并确保在我们的 Slack 社区留下反馈,以及在代码库提交 bug 或功能请求。代码库可在此分支找到。
继续阅读以了解 Seldon Core V1 的信息...
概述
Seldon Core 将你的机器学习模型(Tensorflow、Pytorch、H2o 等)或语言包装器(Python、Java 等)转换为生产级 REST/GRPC 微服务。
Seldon 能够处理数千个生产机器学习模型的扩展,并提供高级机器学习功能,包括高级指标、请求日志记录、解释器、异常检测器、A/B 测试、金丝雀发布等。
- 阅读 Seldon Core 文档
- 加入我们的社区 Slack提问
- 从 Seldon Core 笔记本示例开始
- 参加我们两周一次的在线工作组会议:Google 日历
- 了解如何开始贡献
- 查看深入探讨 Seldon Core 组件的博客
- 观看一些使用 Seldon Core 的视频和讲座
主要特点
Seldon Core 已有超过 200 万次安装,在各组织中用于管理大规模机器学习模型部署,主要优势包括:
- 使用我们的预打包推理服务器、自定义服务器或语言包装器轻松容器化机器学习模型。
- 开箱即用的端点,可通过 Swagger UI、Seldon Python 客户端或 Curl / GRPCurl 进行测试。
- 云平台无关,并在 AWS EKS、Azure AKS、Google GKE、阿里云、Digital Ocean 和 Openshift 上进行了测试。
- 由预测器、转换器、路由器、组合器等组成的强大而丰富的推理图。
- 元数据溯源,确保每个模型都可以追溯到其相应的训练系统、数据和指标。
- 先进且可定制的指标,集成到 Prometheus 和 Grafana。
- 通过模型输入输出请求日志集成到 Elasticsearch,实现完全可审计性。
- 通过集成到 Jaeger 的微服务分布式追踪,深入了解跨微服务跳跃的延迟。
- 通过一致的安全和更新策略维护的安全、可靠和稳健的系统。
入门
通过使用我们预打包的推理服务器和语言包装器,使用Seldon Core部署您的模型变得更加简单。下面您可以看到如何部署我们的"hello world Iris"示例。您可以在我们的文档快速入门中查看有关这些工作流程的更多详细信息。
安装Seldon Core
使用Helm 3快速安装(您也可以使用Kustomize):
kubectl create namespace seldon-system
helm install seldon-core seldon-core-operator \
--repo https://storage.googleapis.com/seldon-charts \
--set usageMetrics.enabled=true \
--namespace seldon-system \
--set istio.enabled=true
# 您可以通过设置--set ambassador.enabled=true来使用ambassador
使用预打包的模型服务器部署您的模型
我们为一些最流行的深度学习和机器学习框架提供了优化的模型服务器,允许您部署训练好的模型二进制文件/权重,而无需对其进行容器化或修改。
您只需要将模型二进制文件上传到您喜欢的对象存储中,在这个例子中,我们在Google存储桶中有一个训练好的scikit-learn iris模型:
gs://seldon-models/v1.19.0-dev/sklearn/iris/model.joblib
创建一个命名空间来运行您的模型:
kubectl create namespace seldon
然后,我们可以使用scikit-learn的预打包模型服务器(SKLEARN_SERVER)通过运行以下kubectl apply
命令将此模型与Seldon Core一起部署到我们的Kubernetes集群:
$ kubectl apply -f - << END
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.19.0-dev/sklearn/iris
name: classifier
name: default
replicas: 1
END
向已部署的模型发送API请求
每个部署的模型都会公开一个标准化的用户界面,使用我们的OpenAPI架构发送请求。
可以通过端点http://<ingress_url>/seldon/<namespace>/<model-name>/api/v1.0/doc/
访问此界面,这将允许您直接通过浏览器发送请求。
或者,您可以使用我们的Seldon Python客户端或其他Linux CLI以编程方式发送请求:
$ curl -X POST http://<ingress>/seldon/seldon/iris-model/api/v1.0/predictions \
-H 'Content-Type: application/json' \
-d '{ "data": { "ndarray": [[1,2,3,4]] } }'
{
"meta" : {},
"data" : {
"names" : [
"t:0",
"t:1",
"t:2"
],
"ndarray" : [
[
0.000698519453116284,
0.00366803903943576,
0.995633441507448
]
]
}
}
使用语言包装器部署自定义模型
对于具有自定义依赖项(如第三方库、操作系统二进制文件甚至外部系统)的更多自定义深度学习和机器学习用例,我们可以使用任何Seldon Core语言包装器。
您只需编写一个公开模型逻辑的类包装器;例如,在Python中我们可以创建一个文件Model.py
:
import pickle
class Model:
def __init__(self):
self._model = pickle.loads( open("model.pickle", "rb") )
def predict(self, X):
output = self._model(X)
return output
现在我们可以使用Seldon Core s2i工具将我们的类文件容器化,以生成sklearn_iris
镜像:
s2i build . seldonio/seldon-core-s2i-python3:0.18 sklearn_iris:0.1
现在我们将其部署到我们的Seldon Core Kubernetes集群:
$ kubectl apply -f - << END
apiVersion: machinelearning.seldon.io/v1
kind: SeldonDeployment
metadata:
name: iris-model
namespace: model-namespace
spec:
name: iris
predictors:
- componentSpecs:
- spec:
containers:
- name: classifier
image: sklearn_iris:0.1
graph:
name: classifier
name: default
replicas: 1
END
向已部署的模型发送API请求
每个部署的模型都会公开一个标准化的用户界面,使用我们的OpenAPI架构发送请求。
可以通过端点http://<ingress_url>/seldon/<namespace>/<model-name>/api/v1.0/doc/
访问此界面,这将允许您直接通过浏览器发送请求。
或者,您可以使用我们的Seldon Python客户端或其他Linux CLI以编程方式发送请求:
$ curl -X POST http://<ingress>/seldon/model-namespace/iris-model/api/v1.0/predictions \
-H 'Content-Type: application/json' \
-d '{ "data": { "ndarray": [1,2,3,4] } }' | json_pp
{
"meta" : {},
"data" : {
"names" : [
"t:0",
"t:1",
"t:2"
],
"ndarray" : [
[
0.000698519453116284,
0.00366803903943576,
0.995633441507448
]
]
}
}
深入探讨高级生产机器学习集成
任何使用Seldon Core部署和编排的模型都能为监控、管理、扩展和调试提供开箱即用的机器学习洞察。
以下是核心组件以及提供进一步设置指导的日志链接。
<表格>
<行 valign="top">
<单元格 width="50%" >
使用Prometheus进行标准和自定义指标监控
</单元格>
<单元格 width="50%">
使用ELK请求日志进行完整审计跟踪
</单元格>
</行>
<行 valign="top">
<单元格 width="50%">
机器学习可解释性解释器
</单元格>
<单元格 width="50%">
用于监控的异常值和对抗性检测器
</单元格>
</行>
<行 valign="top">
<单元格 width="50%">
大规模MLOps的CI/CD
</单元格>
<单元格 width="50%">
用于性能监控的分布式追踪
</单元格>
</行>
</表格>
下一步
入门
Seldon Core深度探索
预打包推理服务器
语言包装器(生产版)
语言包装器(孵化中)
入口
生产
高级推理
示例
参考
- 基于注解的配置
- 基准测试
- 正式发布
- Helm Charts
- 镜像
- 日志记录和日志级别
- 私有 Docker 仓库
- 预测 API
- Python API 参考
- 发布亮点
- Seldon Deployment CRD
- 服务编排器
- Kubeflow
开发者
关于 "Seldon Core" 的名称
Seldon(ˈSɛldən)Core 这个名字的灵感来自于基地系列(科幻小说),其前提是一位名叫"哈里·谢尔顿"的数学家毕生致力于发展心理史学理论,这是一种新的、有效的数学社会学,可以在很长一段时间内(跨越数十万年)极其准确地预测未来。
商业产品
要了解更多关于我们的商业产品,请访问 https://www.seldon.io/。