Transformer-Feast
type
status
date
slug
summary
tags
category
icon
password
网址
Transformer 是一个
InferenceService
组件,用于在模型推理过程中执行预处理和后处理。在本例中,我们不是进行典型的将原始数据转换为张量的输入转换,而是展示了一个在预处理阶段进行在线特征增强的用例。我们使用 Feast Transformer
来收集在线特征,使用 SKLearn
预测器运行推理,并保持后处理为直接传递。开始之前
- 您的 ~/.kube/config 应指向已安装 KServe 的集群。
- 您集群的 Istio 入口网关必须是网络可访问的。
- 您可以在 kserve 代码仓库中找到代码示例。
注意
本示例使用 Feast 版本
0.30.2
创建 Redis 服务器
本示例使用 Redis 作为在线存储。使用以下命令部署 Redis 服务器。
预期输出
创建 Feast 服务器
构建特征存储初始化器 Docker 镜像
特征存储初始化器是一个初始化容器,用于初始化新的示例特征仓库,使用示例驾驶员数据填充在线存储,并将特征仓库复制到卷挂载点。特征存储初始化器的 Dockerfile 可以在代码示例目录中找到。检出 feast 代码示例并在示例目录下运行以下命令:
构建 Feast 服务器 Docker 镜像
feast server dockerfile 可以在代码示例目录中找到。
部署 Feast 服务器
等待 Redis
Deployment
可用。现在,更新以下命令中初始化容器和容器的 image
字段,然后部署 Feast 服务器。预期输出
使用 Feast 创建 Transformer
扩展 Model 类并实现预处理/后处理函数
KServe.Model
基类主要定义了三个处理程序preprocess
、predict
和postprocess
,这些处理程序按顺序执行。preprocess
的输出作为输入传递给predict
,当传入predictor_host
时,predict
处理程序默认会向预测器URL发出HTTP调用并获取响应,然后将响应传递给postprocess
处理程序。KServe会自动为Transformer
填充predictor_host
并处理对Predictor
的调用,对于gRPC预测器,目前您需要重写predict
处理程序来进行gRPC调用。要实现
Transformer
,您可以从基础Model
类派生,然后重写preprocess
和postprocess
处理程序以实现自定义转换逻辑。我们创建了一个名为DriverTransformer的类,它扩展了
Model
类用于此驾驶员排名示例。它接受额外的参数以便transformer与Feast交互:- feast_serving_url:Feast服务URL,格式为
<host_name:port>
或<ip:port>
- entity_id_name:用于从Feast特征存储检索特征的实体ID名称
- feature_refs:要检索的特征引用
构建Transformer docker镜像
transformer dockerfile可以在代码示例目录中找到。检出feast代码示例并在示例目录下运行以下命令:
创建推理服务
在Feast Transformer镜像中,我们打包了驾驶员transformer类,这样KServe就知道使用预处理实现在进行模型推理请求之前用在线特征来增强输入。然后,
InferenceService
使用SKLearn
来服务驾驶员排名模型,该模型使用Feast离线特征进行训练,这些特征存储在storageUri
指定的GCS存储桶中。更新容器的image
字段和feast_serving_url
参数以创建InferenceService
,其中包含一个Feast Transformer和一个SKLearn预测器。新模式
预期输出
运行预测
准备推理请求的输入。将以下 Json 复制到名为
driver-input.json
的文件中。预期输出
上一篇
多模型服务- ModelMesh 概览
下一篇
自定义Transformer推理
Loading...