簡體   English   中英

使用LDA模型運行Sagemaker批量轉換時出錯

[英]Errors running Sagemaker Batch Transformation with LDA model

我已經用sagemaker成功地訓練了LDA模型,我已經能夠建立一個推理API,但是它限制了我一次可以查詢多少條記錄。

我需要獲得大文件的預測,並且一直在嘗試使用“批量轉換”,但遇到了障礙。

我的輸入日期為application / 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,也嘗試了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: 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錯誤代碼。

任何幫助或指針將不勝感激! 謝謝

雖然Batch Transform平台支持靈活的有效負載限制(通過MaxPayloadInMB ),但是許多算法都設置了更嚴格的內部限制。 對於SageMaker內置的LDA算法,這是正確的,該算法根據其內部配置拒絕“大”請求。

您在日志中看到的錯誤正好說明了這一點:Batch Transform客戶端嘗試發送最大為20MB的請求,但是LDA算法服務器拒絕了錯誤代碼為413 (Request Entity Too Large)

當使用SageMaker內置算法容器或任何非您自己的容器時,建議您在CreateTransformJob請求中MaxPayloadInMB設置參數MaxPayloadInMB 這將提示平台選擇算法的默認執行參數,您將在日志中看到如下所示的默認執行參數:

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

有關如何解析這些“執行參數”的更多信息,請參見此處記錄的“優先順序”。

除了控制有效負載大小外,其他轉換作業參數選擇( SplitType=RecordIOBatchStrategy=MultiRecord )對於傳遞RecordIO-Protobuf數據看起來也是正確的。

我設法解決了這個問題,看來我使用的maxpayload太高了。 我設置了MaxPayloadInMB=1 ,它現在像夢一樣運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM