限制 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

限制

在工作流步骤中使用@step装饰器时,请注意以下限制。

函数参数限制

当您将输入参数传递给@step装饰函数时,以下限制适用:

  • 你可以将DelayedReturnProperties(其他类型的步骤)和ExecutionVariable对象作为参数传递给@step装饰过的函数。Parameter但是@step装饰过的函数不支持JsonGetJoin对象作为参数。

  • 您不能直接从@step函数访问管道变量。以下示例会产生错误:

    param = ParameterInteger(name="<parameter-name>", default_value=10) @step def func(): print(param) func() # this raises a SerializationError
  • 不能将管道变量嵌套在另一个对象中并将其传递给@step函数。以下示例会产生错误:

    param = ParameterInteger(name="<parameter-name>", default_value=10) @step def func(arg): print(arg) func(arg=(param,)) # this raises a SerializationError because param is nested in a tuple
  • 由于函数的输入和输出是序列化的,因此可以作为函数的输入或输出传递的数据类型存在限制。有关更多详细信息,请参阅的 “数据序列化和反序列化” 部分调用函数。同样的限制也适用于@step装饰函数。

  • 任何具有 boto 客户端的对象都无法序列化,因此您无法将此类对象作为输入或输出传递给装饰过的函数@step。例如, SageMaker Python SDK 客户端类(例如EstimatorPredictor、和)Processor无法序列化。

函数导入

您应该在函数内部而不是函数外部导入步骤所需的库。如果在全局范围内导入它们,则序列化函数时可能会发生导入冲突。例如,sklearn.pipeline.Pipeline可以被覆盖。sagemaker.workflow.pipeline.Pipeline

引用函数返回值的子成员

如果您引用@step经过装饰的函数返回值的子成员,则适用以下限制:

  • []如果DelayedReturn对象表示元组、列表或字典,则可以使用引用子成员,如以下示例所示:

    delayed_return[0] delayed_return["a_key"] delayed_return[1]["a_key"]
  • 您无法解压元组或列表输出,因为在调用函数时无法知道底层元组或列表的确切长度。以下示例会产生错误:

    a, b, c = func() # this raises ValueError
  • 您无法在DelayedReturn对象上进行迭代。以下示例引发了错误:

    for item in func(): # this raises a NotImplementedError
  • 不能用 “.” 引用任意子成员。以下示例会产生错误:

    delayed_return.a_child # raises AttributeError

不支持的现有管道功能

您不能将@step装饰器与以下流水线功能一起使用: