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.
Pasos de Pipelines
Los oleoductos se componen de escalones. Estos pasos definen las acciones que realiza la canalización y las relaciones entre los pasos mediante propiedades. En la página siguiente se describen los tipos de pasos, sus propiedades y las relaciones entre ellos.
Temas
Propiedades del paso
Utilice el properties
atributo para añadir dependencias de datos entre los pasos de la canalización. Las canalizaciones utilizan estas dependencias de datos para construirlas a DAG partir de la definición de canalización. Se puede hacer referencia a estas propiedades como valores de marcador de posición y se resuelven en el tiempo de ejecución.
El properties
atributo de un paso de Pipelines coincide con el objeto devuelto por una Describe
llamada para el tipo de trabajo correspondiente SageMaker . Para cada tipo de trabajo, la llamada Describe
devuelve el siguiente objeto de respuesta:
-
ProcessingStep
– DescribeProcessingJob -
TrainingStep
– DescribeTrainingJob -
TransformStep
– DescribeTransformJob
Para comprobar qué propiedades son recomendables para cada tipo de paso durante la creación de una dependencia de datos, consulte Dependencia de datos: referencia de propiedades
Paralelismo escalonado
Cuando un paso no depende de ningún otro paso, se ejecuta inmediatamente después de la ejecución de la canalización. Sin embargo, si se ejecutan demasiados pasos de canalización en paralelo se podrían agotar rápidamente los recursos disponibles. Controle el número de pasos simultáneos para la ejecución de una canalización con ParallelismConfiguration
.
En el siguiente ejemplo, se utiliza ParallelismConfiguration
para establecer el límite de pasos simultáneos en cinco.
pipeline.create( parallelism_config=ParallelismConfiguration(5), )
Dependencia de datos entre pasos
La estructura se define DAG especificando las relaciones de datos entre los pasos. Para crear dependencias de datos entre los pasos, transfiera las propiedades de un paso como entrada a otro paso de la canalización. El paso que recibe la entrada no se inicia hasta que termina de ejecutarse el paso que proporciona la entrada.
Una dependencia de datos utiliza la JsonPath notación en el siguiente formato. Este formato recorre el archivo de JSON propiedades. Esto significa que puede añadir tantas <property>
instancias según sea necesario para alcanzar la propiedad anidada deseada en el archivo. Para obtener más información sobre la JsonPath notación, consulta el JsonPath repositorio
<step_name>
.properties.<property>
.<property>
A continuación se muestra cómo especificar un bucket de Amazon S3 mediante la propiedad ProcessingOutputConfig
de un paso de procesamiento.
step_process.properties.ProcessingOutputConfig.Outputs["train_data"].S3Output.S3Uri
Para crear la dependencia de datos, pase el bucket a un paso de entrenamiento de la siguiente manera.
from sagemaker.workflow.pipeline_context import PipelineSession sklearn_train = SKLearn(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="CensusTrain", step_args=sklearn_train.fit(inputs=TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "train_data"].S3Output.S3Uri )) )
Para comprobar qué propiedades son recomendables para cada tipo de paso durante la creación de una dependencia de datos, consulte Dependencia de datos: referencia de propiedades
Dependencia personalizada entre los pasos
Cuando especificas una dependencia de datos, Pipelines proporciona la conexión de datos entre los pasos. Como alternativa, un paso puede acceder a los datos de un paso anterior sin usar Pipelines directamente. En este caso, puedes crear una dependencia personalizada que indique a Pipelines que no inicie un paso hasta que otro haya terminado de ejecutarse. Para crear una dependencia personalizada, especifique el atributo DependsOn
de un paso.
A modo de ejemplo, lo siguiente define un paso C
que comienza solo después de que el paso A
y el paso B
terminen de ejecutarse.
{ 'Steps': [ {'Name':'A', ...}, {'Name':'B', ...}, {'Name':'C', 'DependsOn': ['A', 'B']} ] }
Pipelines lanza una excepción de validación si la dependencia crea una dependencia cíclica.
En el siguiente ejemplo, se crea un paso de entrenamiento que comienza cuando termina de ejecutarse un paso de procesamiento.
processing_step = ProcessingStep(...) training_step = TrainingStep(...) training_step.add_depends_on([processing_step])
El siguiente ejemplo crea un paso de entrenamiento que no comienza hasta que terminen de ejecutarse dos pasos de procesamiento diferentes.
processing_step_1 = ProcessingStep(...) processing_step_2 = ProcessingStep(...) training_step = TrainingStep(...) training_step.add_depends_on([processing_step_1, processing_step_2])
A continuación, se proporciona una forma alternativa de crear la dependencia personalizada.
training_step.add_depends_on([processing_step_1]) training_step.add_depends_on([processing_step_2])
El siguiente ejemplo crea un paso de entrenamiento que recibe la entrada de un paso de procesamiento y espera a que termine de ejecutarse otro paso de procesamiento.
processing_step_1 = ProcessingStep(...) processing_step_2 = ProcessingStep(...) training_step = TrainingStep( ..., inputs=TrainingInput( s3_data=processing_step_1.properties.ProcessingOutputConfig.Outputs[ "train_data" ].S3Output.S3Uri ) training_step.add_depends_on([processing_step_2])
En el ejemplo siguiente se muestra cómo recuperar una lista de cadenas de las dependencias personalizadas de un paso.
custom_dependencies = training_step.depends_on
Imágenes personalizadas en un solo paso
Puedes usar cualquiera de las imágenes del contenedor de aprendizaje SageMaker profundo
También puede utilizar su propio contenedor con pasos de canalización. Como no puede crear una imagen desde Studio Classic, debe crearla con otro método antes de usarla con Pipelines.
Para usar tu propio contenedor al crear los pasos de tu canalización, incluye la imagen URI en la definición del estimador. Para obtener más información sobre cómo usar tu propio contenedor con SageMaker, consulta Cómo usar contenedores Docker con. SageMaker