0

我有一个 SageMaker TrainingStep,然后是一个 ProcessingStep。我需要将 TrainingStep 的输出路径传递给 ProcessingStep。

TrainingStep 正在将输出到 S3 文件夹写入名为s3://mybucket/output.tar.gz. 但是,作为输出,在 path$['ModelArtifacts']['S3ModelArtifacts']中,它返回了错误的文件名:s3://mybucket/model.tar.gz

为了能够解决这个错误,我必须删除路径的最后 12 个字符。所以我需要运行的亚马逊状态语言表达式是:

$['ModelArtifacts']['S3ModelArtifacts'][0,-12]

我正在使用 Python 来配置我的状态机,所以我有以下代码:

ProcessingInput(
  source=
    train_step.output()["$['ModelArtifacts']['S3ModelArtifacts'][0,-12]"], 
  destination='/opt/ml/processing/inference_output/',
  input_name='inference_output'
),

这会生成以下 Amazon 状态语言字符串:

        "S3Input": {
          "S3Uri.$": "$['$['ModelArtifacts']['S3ModelArtifacts'][0,-12]']",
          "LocalPath": "/opt/ml/processing/inference_output/",
          "S3DataType": "S3Prefix",
          "S3InputMode": "File",
          "S3DataDistributionType": "FullyReplicated",
          "S3CompressionType": "None"
        }

这不是期望的结果,因为期望的结果是产生以下结果:

"S3Uri.$": "$['ModelArtifacts']['S3ModelArtifacts'][0,-12]"

如何修改我的 Python 代码以产生所需的结果?

4

1 回答 1

0

解决方法是将正确的 S3 路径指定为执行输入参数。

于 2022-01-19T09:00:02.077 回答