You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Serverless部署含预处理的Amazon SageMaker PipelineModel?遇报错求助

问题解决与方案

错误原因

SageMaker的PipelineModel类的deploy()方法并不支持serverless_inference_config参数,因为Serverless Inference目前不直接兼容PipelineModel的多容器串联部署模式。

可行的Serverless部署方案

方案1:将预处理逻辑与模型打包为单个自定义容器

把预处理代码和XGBoost模型打包到同一个推理容器中,构建成单模型后再用Serverless Inference部署:

  • 编写包含预处理逻辑的推理脚本(比如inference.py),在脚本中先处理输入数据,再调用XGBoost模型生成预测。
  • 基于SageMaker XGBoost基础镜像或自定义基础镜像,将推理脚本、模型文件打包成新的Docker镜像,推送到ECR仓库。
  • 使用Model类加载该自定义镜像,再通过deploy()方法传入serverless_inference_config完成Serverless部署。

示例代码片段:

from sagemaker.model import Model
from sagemaker.serverless import ServerlessInferenceConfig

serverless_config = ServerlessInferenceConfig(
    memory_size_in_mb=2048,
    max_concurrency=5
)

# 加载自定义容器模型
custom_model = Model(
    image_uri="your-ecr-image-uri",
    model_data="s3://path-to-your-model-artifact",
    role="your-sagemaker-role"
)

# 部署Serverless端点
serverless_predictor = custom_model.deploy(serverless_inference_config=serverless_config)

方案2:将预处理逻辑放在Lambda中执行

完全可以把预处理代码放到Lambda函数中,处理完数据后再调用SageMaker Serverless端点,具体步骤:

  • 单独部署XGBoost模型为SageMaker Serverless端点(无需PipelineModel)。
  • 创建Lambda函数,在函数中编写预处理代码,接收原始输入数据,完成清洗、特征工程等预处理步骤。
  • 在Lambda函数中调用SageMaker Serverless端点的预测API,传入预处理后的数据,获取预测结果后返回给调用方。

注意事项:

  • 确保Lambda函数拥有调用SageMaker端点的IAM权限(添加AmazonSageMakerFullAccess或更精细的权限策略)。
  • 控制Lambda的内存和超时时间,匹配预处理逻辑的资源需求。
  • 可以通过API Gateway暴露Lambda函数,提供对外的预测接口。

内容的提问来源于stack exchange,提问作者張玹侊

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:07:14