Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Limitaciones
En las secciones siguientes, se describen las limitaciones que hay que tener en cuenta al utilizar el decorador @step en los pasos de canalización.
Limitaciones de los argumentos de funciones
Al pasar un argumento de entrada a la función decorada con @step, se aplican las siguientes limitaciones:
Puede pasar los objetos
DelayedReturn,Properties(de pasos de otros tipos)ParameteryExecutionVariablea funciones decoradas con@stepcomo argumentos. Sin embargo, las funciones decoradas con@stepno admiten objetosJsonGetyJoincomo argumentos.No se puede acceder directamente a una variable de canalización desde una función
@step. El siguiente ejemplo produce un error:param = ParameterInteger(name="<parameter-name>", default_value=10) @step def func(): print(param) func() # this raises a SerializationErrorNo puede anidar una variable de canalización en otro objeto y pasarlo a una función
@step. El siguiente ejemplo produce un error: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 las entradas y salidas de una función están serializadas, existen restricciones en cuanto al tipo de datos que se puede transferir como entrada o salida desde una función. Consulte la sección Serialización y deserialización de datos de Invocación de una función remota para obtener más información. Las mismas restricciones se aplican a las funciones decoradas con
@step.Ningún objeto que tenga un cliente boto se puede serializar, por lo que no se pueden pasar dichos objetos como entrada o salida desde una función decorada con
@step. Por ejemplo, las clases de cliente del SDK de SageMaker PythonEstimator, comoPredictor, y, no seProcessorpueden serializar.
Importaciones de funciones
Debe importar las bibliotecas necesarias para el paso dentro más que fuera de la función. Si las importa a escala global, corre el riesgo de que se produzca un error de importación al serializar la función. Por ejemplo, sklearn.pipeline.Pipeline podría ser anulada por sagemaker.workflow.pipeline.Pipeline.
Referencia a miembros secundarios del valor de devolución de la función
Si hace referencia a los miembros secundarios del valor de devolución de una función decorada con @step, se aplican las siguientes limitaciones:
Puede hacer referencia a los miembros secundarios con
[]si el objetoDelayedReturnrepresenta una tupla, una lista o un dictado, como se muestra en el siguiente ejemplo:delayed_return[0] delayed_return["a_key"] delayed_return[1]["a_key"]No se puede desempaquetar el resultado de una tupla o lista, porque no se puede conocer la longitud exacta de la tupla o lista subyacente al invocar la función. El siguiente ejemplo produce un error:
a, b, c = func() # this raises ValueErrorNo se puede iterar sobre un objeto
DelayedReturn. El siguiente ejemplo da un error:for item in func(): # this raises a NotImplementedErrorNo se puede hacer referencia a miembros secundarios arbitrarios con
.. El siguiente ejemplo produce un error:delayed_return.a_child # raises AttributeError
Características de canalización existentes que no se admiten
No puede usar el decorador @step con las siguientes características de canalización: