运行Sagemaker批量转换与LDA模型错误(Errors running Sagemaker B

2019-10-29 06:03发布

我已经成功地训练了与sagemaker一个LDA模型,我已经能够建立一个推理API,但它有我多少条记录可以同时查询的限制。

我需要得到的预测为大文件,并且一直在尝试使用批量转换但是我运行针对路障。

我的输入日期是在应用程序/ x-recordio-protobuf的内容类型,代码如下:

# Initialize the transformer object
transformer =sagemaker.transformer.Transformer(
    base_transform_job_name='Batch-Transform',
    model_name=model_name,
    instance_count=1,
    instance_type='ml.c4.xlarge',
    output_path=output_location,
    max_payload=20,
    strategy='MultiRecord'
    )
# Start a transform job
transformer.transform(input_location, content_type='application/x-recordio-protobuf',split_type="RecordIO")
# Then wait until the transform job has completed
transformer.wait()

# Fetch validation result 
s3_client.download_file(bucket, 'topic_model_batch_transform/output/batch_tansform_part0.pbr.out', 'batch_tansform-result')
with open('batch_tansform-result') as f:
    results = f.readlines()   
print("Sample transform result: {}".format(results[0]))

我已经输入文件分块到每个10个文件大小约为19MB。 我在第一次尝试在一个单一的块上运行,因此总共19MB。 我试图改变策略,试图SingleRecord。 我也尝试过不同的split_types,也试图和无“线”。

我读过的文件,但它不清楚还有什么我应该尝试,也是错误信息是非常不清楚。

2019-04-02T15:49:47.617:[sagemaker logs]: MaxConcurrentTransforms=1, MaxPayloadInMB=20, BatchStrategy=MULTI_RECORD
#011at java.lang.Thread.run(Thread.java:748)2019-04-02T15:49:48.035:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr: Bad HTTP status returned from invoke: 413
2019-04-02T15:49:48.036:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr:
2019-04-02T15:49:48.036:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr: Message:
2019-04-02T15:49:48.036:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2019-04-02T15:49:48.036:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr: <title>413 Request Entity Too Large</title>
2019-04-02T15:49:48.036:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr: <h1>Request Entity Too Large</h1>
2019-04-02T15:49:48.036:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr: <p>The data value transmitted exceeds the capacity limit.</p>

以上是最后一个我上面的配置了,在那之前我也得到了一个400 HTTP错误代码。

任何帮助或指针将不胜感激! 谢谢

Answer 1:

尽管批量变换平台支持灵活的有效载荷限制(通过MaxPayloadInMB ),许多算法设定更严格的内部限制。 这对于内置SageMaker LDA算法根据其内部配置与拒绝“大”的请求是真实的。

在日志中看到的错误说,正是这个:批量转换客户端试图发送大到20MB的请求,但LDA算法服务器拒绝,错误代码请求413 (Request Entity Too Large)

当使用内置的算法容器SageMaker,或者说是不是你自己的任何容器,我们建议保留参数MaxPayloadInMB在未设置CreateTransformJob请求。 这将促使平台选择算法的默认执行参数,你会看到印在你的日志中,像这样:

[sagemaker logs]: MaxConcurrentTransforms=1, MaxPayloadInMB=${DEFAULT_MAX_PAYLOAD_IN_MB}, BatchStrategy=MultiRecord

有关这些“执行参数”如何解决更深入的了解,请参阅“优先次序”记载这里 。

除了控制负载大小,你的其他转换作业参数选项( SplitType=RecordIOBatchStrategy=MultiRecord )寻求通过RecordIO-的Protobuf数据是正确的。



Answer 2:

我设法解决这个问题,似乎我用的是maxpayload过高。 我设置MaxPayloadInMB=1 ,现在运行就像一个梦



文章来源: Errors running Sagemaker Batch Transformation with LDA model