用于批量转换的 AWS SageMaker 部署

AWS SageMaker Deployment for Batch Transform

我正在尝试在 Sage Maker 中使用 XGBoost 模型,并使用它对使用批量转换存储在 S3 中的大数据进行评分。

我使用现有的 Sagemaker 容器构建模型如下:

estimator = sagemaker.estimator.Estimator(image_name=container, 
                                          hyperparameters=hyperparameters,
                                          role=sagemaker.get_execution_role(),
                                          train_instance_count=1, 
                                          train_instance_type='ml.m5.2xlarge', 
                                          train_volume_size=5, # 5 GB 
                                          output_path=output_path,
                                          train_use_spot_instances=True,
                                          train_max_run=300,
                                          train_max_wait=600)

estimator.fit({'train': s3_input_train,'validation': s3_input_test})

以下代码用于批量转换

 The location of the test dataset
batch_input = 's3://{}/{}/test/examples'.format(bucket, prefix)

# The location to store the results of the batch transform job
batch_output = 's3://{}/{}/batch-inference'.format(bucket, prefix)

transformer = xgb_model.transformer(instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output)

transformer.transform(data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line')

transformer.wait()

当在 Jupyter 中构建模型时,以上代码在开发环境(Jupyter notebook)中运行良好。但是,我想部署模型并调用其端点以进行批量转换。

SageMaker 端点创建的大多数示例是针对单个数据评分而不是批量转换。

有人可以指出如何在 SageMaker 中部署和使用端点进行批量转换吗?谢谢

以下link示例说明了如何调用 SageMaker 中的存储模型到 运行 批量转换作业。

Batch Transform Reference