为了账号安全,请及时绑定邮箱和手机立即绑定

使用 LDA 模型运行 Sagemaker Batch Transformation 时出错

使用 LDA 模型运行 Sagemaker Batch Transformation 时出错

ABOUTYOU 2021-12-26 15:27:45
我已经成功地用 sagemaker 训练了一个 LDA 模型,我已经能够设置一个推理 API,但是它对我一次可以查询的记录数量有限制。我需要对大文件进行预测,并且一直在尝试使用批量转换,但是我遇到了障碍。我的输入日期是application/x-recordio-protobuf内容类型,代码如下:# Initialize the transformer objecttransformer =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 jobtransformer.transform(input_location, content_type='application/x-recordio-protobuf',split_type="RecordIO")# Then wait until the transform job has completedtransformer.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,也尝试过 None 和“Line”。我已经阅读了文档,但不清楚我还应该尝试什么,错误消息也很不清楚。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: 4132019-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 以上是我用上面的配置得到的最后一个,在此之前我也得到了400 HTTP错误代码。任何帮助或指示将不胜感激!谢谢
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

虽然 Batch Transform 平台支持灵活的负载限制(通过MaxPayloadInMB),但许多算法设置了更严格的内部限制。对于根据其内部配置拒绝“大”请求的 SageMaker 内置 LDA 算法来说也是如此。

您在日志中看到的错误恰恰说明了这一点:Batch Transform 客户端尝试发送最大 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 数据来说看起来是正确的。


查看完整回答
反对 回复 2021-12-26
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

我设法解决了这个问题,我使用的最大有效载荷似乎太高了。我设置 MaxPayloadInMB=1,它现在像梦一样运行


查看完整回答
反对 回复 2021-12-26
  • 2 回答
  • 0 关注
  • 212 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信