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 objetosExecutionVariable
para funções decoradas por@step
como argumentos. Mas as funções decoradas por@step
não oferecem apoio aJsonGet
e objetosJoin
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 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ãoProcessor
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 objetoDelayedReturn
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: