Transformer-Feast

type
status
date
slug
summary
tags
category
icon
password
网址
Transformer 是一个 InferenceService 组件,用于在模型推理过程中执行预处理和后处理。在本例中,我们不是进行典型的将原始数据转换为张量的输入转换,而是展示了一个在预处理阶段进行在线特征增强的用例。我们使用 Feast Transformer 来收集在线特征,使用 SKLearn 预测器运行推理,并保持后处理为直接传递。

开始之前

  1. 您的 ~/.kube/config 应指向已安装 KServe 的集群。
  1. 您集群的 Istio 入口网关必须是网络可访问的
  1. 您可以在 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基类主要定义了三个处理程序preprocesspredictpostprocess,这些处理程序按顺序执行。preprocess的输出作为输入传递给predict,当传入predictor_host时,predict处理程序默认会向预测器URL发出HTTP调用并获取响应,然后将响应传递给postprocess处理程序。KServe会自动为Transformer填充predictor_host并处理对Predictor的调用,对于gRPC预测器,目前您需要重写predict处理程序来进行gRPC调用。
要实现Transformer,您可以从基础Model类派生,然后重写preprocesspostprocess处理程序以实现自定义转换逻辑。
我们创建了一个名为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 的文件中。
在测试 InferenceService 之前,首先检查它是否处于就绪状态。现在,确定入口 IP 和端口并设置 INGRESS_HOSTINGRESS_PORT
预期输出
上一篇
多模型服务- ModelMesh 概览
下一篇
自定义Transformer推理
Loading...
文章列表
Kserve中文文档
快速开始
管理指南
用户指南
开发指南
机器学习概念
大模型周报