如何在Vertex AI Endpoint部署与模型配套的预处理代码
Vertex AI 预处理逻辑与模型一体化部署方案
Vertex AI 支持三种主流的方式把预处理逻辑和模型绑定部署,不用再在客户端提前做特征处理:
1. 使用自定义预测例程(Custom Predictor,官方优先推荐)
这是适配绝大多数场景的方案,不用自己构建完整容器,只需要封装预测逻辑即可:
- 继承Vertex AI提供的
Predictor基类,重写两个核心方法:load方法:负责加载模型文件、预处理需要的配套资源(比如标准化器、分词器、类别编码器等)predict方法:按顺序执行输入预处理→模型推理→结果后处理的完整逻辑
- 将你的预处理代码、模型文件、预处理配套资源、依赖清单
requirements.txt一起打包为tar.gz格式的模型归档包 - 部署Endpoint时选择「自定义预测例程」模式,指定你实现的Predictor类的入口路径即可完成部署
示例代码参考:
from google.cloud.aiplatform.prediction.predictor import Predictor from google.cloud.aiplatform.utils import prediction_utils import joblib import numpy as np class CustomPredictor(Predictor): def load(self, artifacts_uri: str) -> None: # 下载并加载部署所需的所有资源 prediction_utils.download_model_artifacts(artifacts_uri) self.model = joblib.load("trained_model.pkl") # 加载预处理用的特征标准化器 self.feature_scaler = joblib.load("scaler.pkl") def predict(self, instances): # 第一步:执行预处理逻辑 preprocessed_input = self.feature_scaler.transform(np.array(instances)) # 第二步:调用模型推理 raw_pred = self.model.predict(preprocessed_input) # 第三步:按需添加后处理逻辑后返回 return raw_pred.tolist()
2. 预处理逻辑嵌入模型计算图
如果你的预处理逻辑可以用训练框架的原生算子实现,推荐用这个方案,推理延迟最低:
- TensorFlow场景:把预处理逻辑用
tf.keras.layers下的预处理层实现,作为模型的第一层和模型一起导出成SavedModel格式 - PyTorch场景:把预处理逻辑封装为
torch.nn.Module子类,和模型主体拼接后一起导出为TorchScript格式 - 导出后的模型可以直接按照原生模型的方式部署到Vertex AI Endpoint,不需要额外添加预处理代码
3. 构建自定义推理容器
如果你的预处理逻辑依赖非常特殊,前两种方案无法满足,可以用完全自定义的容器部署:
- 按照Vertex AI推理容器规范构建镜像:暴露8080端口,实现
/health健康检查接口、/predict预测接口 - 把预处理逻辑、推理代码、模型文件、所有依赖都打包到镜像中
- 本地测试镜像功能正常后,推到Google Artifact Registry,直接用该镜像部署Endpoint即可
注意:无论用哪种方案,都需要把预处理用到的所有第三方依赖明确写到部署环境的依赖清单中,避免运行时报依赖缺失错误。
内容的提问来源于stack exchange,提问作者Amal Sarkar
相关产品推荐
相关产品推荐

