Limitações - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Limitações

As seções a seguir descrevem as limitações que você deve conhecer ao usar o decorador @step nas etapas do pipeline.

Limitações de argumentos de função

Quando você passa um argumento de entrada para a função decorada por @step, as seguintes limitações se aplicam:

  • Você pode passar DelayedReturn, Properties (de etapas de outros tipos), Parameter e objetos ExecutionVariable para funções decoradas por @step como argumentos. Mas as funções decoradas por @step não oferecem apoio a JsonGet e objetos Join como argumentos.

  • Você não pode acessar diretamente uma variável de pipeline a partir de uma função @step. O seguinte exemplo produz um erro:

    param = ParameterInteger(name="<parameter-name>", default_value=10) @step def func(): print(param) func() # this raises a SerializationError
  • Você não pode aninhar uma variável de pipeline em outro objeto e passá-la para uma função @step. O seguinte exemplo produz um erro:

    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
  • Como as entradas e saídas de uma função são serializadas, há restrições quanto ao tipo de dados que pode ser passado como entrada ou saída de uma função. Consulte a seção Serialização e desserialização de dados de Invocar uma função remota para obter mais detalhes. As mesmas restrições se aplicam às funções decoradas por @step.

  • Qualquer objeto que tenha um cliente boto não pode ser serializado, portanto, você não pode passar esses objetos como entrada ou saída de uma função decorada por @step. Por exemplo, classes de cliente do SDK do SageMaker PythonEstimator, como, ePredictor, não Processor podem ser serializadas.

Importações de funções

Você deve importar as bibliotecas exigidas pela etapa dentro da função, ao invés de fora. Se você importá-las em âmbito global, corre o risco de uma colisão de importação ao serializar a função. Por exemplo, sklearn.pipeline.Pipeline pode ser substituído por sagemaker.workflow.pipeline.Pipeline.

Como referenciar membros filhos do valor de retorno da função

Se você fizer referência a membros filhos do valor de retorno de uma função decorada por @step, as seguintes limitações se aplicam:

  • Você pode referenciar os membros secundários com [] se o objeto DelayedReturn representar uma tupla, lista ou dicionário, conforme mostrado no seguinte exemplo:

    delayed_return[0] delayed_return["a_key"] delayed_return[1]["a_key"]
  • Você não pode descompactar uma saída de tupla ou lista porque não é possível saber o comprimento exato da tupla ou lista subjacente quando você invoca a função. O seguinte exemplo produz um erro:

    a, b, c = func() # this raises ValueError
  • Você não pode repetir um objeto DelayedReturn. Veja a seguir um exemplo com erro:

    for item in func(): # this raises a NotImplementedError
  • Você não pode referenciar membros secundários arbitrários com “.”. O seguinte exemplo produz um erro:

    delayed_return.a_child # raises AttributeError

Atributos de pipeline existentes que não são compatíveis

Você não pode usar o decorador @step com os seguintes atributos de pipeline: