SageMaker对Sklearn批量变压器有效载荷的限制

时间:2019-12-18 14:31:48

标签: amazon-sagemaker

我正在遵循本教程的要旨:

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无法将较大的数据作为输入转换为另一个进程?

1 个答案:

答案 0 :(得分:0)

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

如果batch_strategy为“ MultiRecord”(默认值),则每个有效负载将具有尽可能多的记录/行。

如果batch_strategy为“ SingleRecord”,则每个有效负载将只有一个CSV行,并且您需要确保每行都不得大于max_payload_size_in_MB。

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

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

希望这会有所帮助!