SageMaker 对 sklearn 批处理变压器有效负载的限制



我遵循本教程的要点:

https://aws.amazon.com/blogs/machine-learning/preprocess-input-data-before-making-predictions-using-amazon-sagemaker-inference-pipelines-and-scikit-learn/

我正在使用自定义 sklearn 转换器在传递给 xgboost 之前预处理数据。当我到达这一点时:

transformer = sklearn_preprocessor.transformer(
instance_count=1, 
instance_type='ml.m4.xlarge',
assemble_with = 'Line',
accept = 'text/csv')
# Preprocess training input
transformer.transform('s3://{}/{}'.format(input_bucket, input_key), content_type='text/csv')
print('Waiting for transform job: ' + transformer.latest_transform_job.job_name)
transformer.wait()
preprocessed_train = transformer.output_path

训练数据的位置是 S3,那里有多个文件。我收到一个错误,指出已超过最大有效负载,并且您似乎只能设置100MB。这是否意味着 Sagemaker 无法将更大的数据作为输入转换为另一个进程?

在 SageMaker 批量转换中,maxPayloadInMB * maxConcurrentTransform 不能超过 100MB。但是,有效负载是发送到模型的请求的数据部分。在您的情况下,由于输入是 CSV,您可以将split_type设置为"行",每个 CSV 行将被视为一条记录。

如果batch_strategy是"多记录"(默认值(,则每个有效负载将具有尽可能多的记录/行。

如果batch_strategy为"SingleRecord",则每个有效负载将具有单个 CSV 行,您需要确保每行永远不会大于max_payload_size_in_MB。

简而言之,如果指定了split_type(而不是"无"(,则max_payload_size_in_MB与输入文件的总大小无关。

https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html#SageMaker-CreateTransformJob-request-MaxPayloadInMB

希望这有帮助!

相关内容

最新更新