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),Parametere objetosExecutionVariablepara funções decoradas por@stepcomo argumentos. Mas as funções decoradas por@stepnão oferecem apoio aJsonGete objetosJoincomo 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 SerializationErrorVocê 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 tupleComo 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ãoProcessorpodem 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 objetoDelayedReturnrepresentar 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 ValueErrorVocê não pode repetir um objeto
DelayedReturn. Veja a seguir um exemplo com erro:for item in func(): # this raises a NotImplementedErrorVocê 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: