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 Amazon SageMaker Model Building Pipelines
SageMaker Los oleoductos se componen de escalones. Estos pasos definen las acciones que realiza la canalización y las relaciones entre los pasos mediante propiedades.
Temas
Tipos de pasos
A continuación, se describen los requisitos de cada tipo de paso y se proporciona un ejemplo de implementación del paso. Estas implementaciones no funcionan porque no proporcionan los recursos y los insumos necesarios. Para ver un tutorial que implemente estos pasos, consulteCrear y gestionar SageMaker canalizaciones.
nota
También puedes crear un paso a partir de tu código de aprendizaje automático local convirtiéndolo en un paso de SageMaker Pipelines con el @step
decorador. Para obtener más información, consulte @step (decorador).
Amazon SageMaker Model Building Pipelines admite los siguientes tipos de pasos:
@step (decorador)
Puedes crear un paso a partir del código de aprendizaje automático local con el @step
decorador. Después de probar el código, puedes convertir la función en un paso de SageMaker canalización anotándolo con el @step
decorador. SageMaker Pipelines crea y ejecuta una canalización al pasar el resultado de la función @step
decorada con símbolos como un paso a la canalización. También puedes crear una DAG canalización de varios pasos que incluya una o más funciones @step
decoradas, así como los pasos de canalización tradicionales. SageMaker Para obtener más información sobre cómo crear un escalón con un @step
decorador, consulte. Código L ift-and-shift Python con el decorador @step
Paso de procesamiento
Utilice un paso de procesamiento para crear un trabajo de procesamiento para el procesamiento de datos. Para obtener más información sobre los trabajos de procesamiento, consulte Process Data and Evaluate Models.
Un paso de procesamiento requiere un procesador, un script de Python que defina el código de procesamiento, las salidas para el procesamiento y los argumentos del trabajo. El siguiente ejemplo muestra cómo crear una definición de ProcessingStep
.
from sagemaker.sklearn.processing import SKLearnProcessor sklearn_processor = SKLearnProcessor(framework_version='1.0-1', role=
<role>
, instance_type='ml.m5.xlarge', instance_count=1)
from sagemaker.processing import ProcessingInput, ProcessingOutput from sagemaker.workflow.steps import ProcessingStep inputs = [ ProcessingInput(source=
<input_data>
, destination="/opt/ml/processing/input"), ] outputs = [ ProcessingOutput(output_name="train", source="/opt/ml/processing/train"), ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"), ProcessingOutput(output_name="test", source="/opt/ml/processing/test") ] step_process = ProcessingStep( name="AbaloneProcess", step_args = sklearn_processor.run(inputs=inputs, outputs=outputs, code="abalone/preprocessing.py") )
Pasar parámetros de tiempo de ejecución
El siguiente ejemplo muestra cómo pasar los parámetros de tiempo de ejecución de un PySpark procesador a unProcessingStep
.
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.spark.processing import PySparkProcessor from sagemaker.processing import ProcessingInput, ProcessingOutput from sagemaker.workflow.steps import ProcessingStep pipeline_session = PipelineSession() pyspark_processor = PySparkProcessor( framework_version='2.4', role=
<role>
, instance_type='ml.m5.xlarge', instance_count=1, sagemaker_session=pipeline_session, ) step_args = pyspark_processor.run( inputs=[ProcessingInput(source=<input_data>
, destination="/opt/ml/processing/input"),], outputs=[ ProcessingOutput(output_name="train", source="/opt/ml/processing/train"), ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"), ProcessingOutput(output_name="test", source="/opt/ml/processing/test") ], code="preprocess.py", arguments=None, ) step_process = ProcessingStep( name="AbaloneProcess", step_args=step_args, )
Para obtener más información sobre los requisitos de los pasos de procesamiento, consulte sagemaker.workflow.steps. ProcessingStep
Paso de entrenamiento
Puede usar un paso de entrenamiento para crear un trabajo de entrenamiento para entrenar un modelo. Para obtener más información sobre los trabajos de formación, consulta Entrena a una modelo con Amazon SageMaker.
Un paso de entrenamiento requiere un estimador, así como la introducción y la validación de los datos de entrenamiento. El siguiente ejemplo muestra cómo crear una definición de TrainingStep
. Para obtener más información sobre los requisitos de los pasos de entrenamiento, consulta sagemaker.workflow.steps. TrainingStep
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.inputs import TrainingInput from sagemaker.workflow.steps import TrainingStep from sagemaker.xgboost.estimator import XGBoost pipeline_session = PipelineSession() xgb_estimator = XGBoost(..., sagemaker_session=pipeline_session) step_args = xgb_estimator.fit( inputs={ "train": TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "train" ].S3Output.S3Uri, content_type="text/csv" ), "validation": TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "validation" ].S3Output.S3Uri, content_type="text/csv" ) } ) step_train = TrainingStep( name="TrainAbaloneModel", step_args=step_args, )
Paso de ajuste
Se utiliza un paso de ajuste para crear un trabajo de ajuste de hiperparámetros, también conocido como optimización de hiperparámetros ()HPO. Un trabajo de ajuste de hiperparámetros ejecuta varios trabajos de formación, y cada trabajo produce una versión modelo. Para obtener más información sobre el ajuste de hiperparámetros, consulte Realice un ajuste automático del modelo con SageMaker.
El trabajo de ajuste está asociado con el SageMaker experimento del proceso, y los trabajos de formación se crean a modo de pruebas. Para obtener más información, consulte Integración de experimentos.
Un paso de ajuste requiere una HyperparameterTunerwarm_start_config
del HyperparameterTuner
. Para obtener más información sobre el inicio en caliente y el ajuste de hiperparámetros, consulte Ejecución de un trabajo de ajuste de hiperparámetros de inicio en caliente.
Se utiliza el método get_top_model_s3_uri del sagemaker.workflow.steps
importante
Los pasos de ajuste se introdujeron en Amazon SageMaker Python SDK v2.48.0 y Amazon SageMaker Studio Classic v3.8.0. Debe actualizar Studio Classic antes de utilizar un paso de ajuste o la canalización no aparecerá. DAG Para actualizar Studio Classic, consulteCierre y actualice SageMaker Studio Classic.
El siguiente ejemplo muestra cómo crear una definición de TuningStep
.
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.tuner import HyperparameterTuner from sagemaker.inputs import TrainingInput from sagemaker.workflow.steps import TuningStep tuner = HyperparameterTuner(..., sagemaker_session=PipelineSession()) step_tuning = TuningStep( name = "HPTuning", step_args = tuner.fit(inputs=TrainingInput(s3_data="s3://
my-bucket/my-data
")) )
Obtención de la mejor versión del modelo
El siguiente ejemplo muestra cómo obtener la mejor versión del modelo a partir del trabajo de ajuste mediante el método get_top_model_s3_uri
. Como máximo, las 50 versiones con mejor rendimiento están disponibles clasificadas según HyperParameterTuningJobObjective. El argumento top_k
es un índice de las versiones, donde top_k=0
es la versión con mejor rendimiento y top_k=49
es la versión con peor rendimiento.
best_model = Model( image_uri=image_uri, model_data=step_tuning.get_top_model_s3_uri( top_k=0, s3_bucket=sagemaker_session.default_bucket() ), ... )
Para obtener más información sobre los requisitos de los pasos de ajuste, consulte sagemaker.workflow.steps. TuningStep
Paso AutoML
Utilice el AutoML
nota
Actualmente, el paso AutoML solo admite el modo de entrenamiento de ensamblaje.
El siguiente ejemplo muestra cómo crear una definición mediante AutoMLStep
.
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.automl_step import AutoMLStep pipeline_session = PipelineSession() auto_ml = AutoML(..., role="
<role>
", target_attribute_name="my_target_attribute_name
", mode="ENSEMBLING
", sagemaker_session=pipeline_session) input_training = AutoMLInput( inputs="s3://my-bucket/my-training-data
", target_attribute_name="my_target_attribute_name
", channel_type="training", ) input_validation = AutoMLInput( inputs="s3://my-bucket/my-validation-data
", target_attribute_name="my_target_attribute_name
", channel_type="validation", ) step_args = auto_ml.fit( inputs=[input_training, input_validation] ) step_automl = AutoMLStep( name="AutoMLStep", step_args=step_args, )
Obtención de la mejor versión del modelo
El paso AutoML entrena automáticamente a varios candidatos de modelos. Obtenga el modelo con la mejor métrica objetivo del trabajo de AutoML mediante el siguiente get_best_auto_ml_model
método. También debe usar un IAM role
para acceder a los artefactos del modelo.
best_model = step_automl.get_best_auto_ml_model(
role=<role>
)
Para obtener más información, consulte el paso AutoML
Paso de modelar
Utilice a ModelStep
para crear o registrar un SageMaker modelo. Para obtener más información sobre ModelStep
los requisitos, consulte sagemaker.workflow.model_step. ModelStep
Crear un modelo
Puede usar un ModelStep
para crear un SageMaker modelo. A ModelStep
requiere artefactos del modelo e información sobre el tipo de SageMaker instancia que necesita usar para crear el modelo. Para obtener más información sobre SageMaker los modelos, consulta Entrena a una modelo con Amazon SageMaker.
El siguiente ejemplo muestra cómo crear una definición de ModelStep
.
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.model import Model from sagemaker.workflow.model_step import ModelStep step_train = TrainingStep(...) model = Model( image_uri=pytorch_estimator.training_image_uri(), model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts, sagemaker_session=PipelineSession(), role=role, ) step_model_create = ModelStep( name="MyModelCreationStep", step_args=model.create(instance_type="ml.m5.xlarge"), )
Registrar un modelo
Puedes usar un ModelStep
para registrar un sagemaker.model.Model
sagemaker.pipeline.PipelineModel
o en el registro de SageMaker modelos de Amazon. Un PipelineModel
representa una canalización de inferencia, que es un modelo compuesto de una secuencia lineal de contenedores que procesan solicitudes de inferencia. Para obtener más información sobre cómo registrar un modelo, consulte Registro e implementación de modelos con el registro de modelos.
El siguiente ejemplo muestra cómo crear un ModelStep
que registre un PipelineModel
.
import time from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.sklearn import SKLearnModel from sagemaker.xgboost import XGBoostModel pipeline_session = PipelineSession() code_location = 's3://{0}/{1}/code'.format(
bucket_name
, prefix) sklearn_model = SKLearnModel( model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri, entry_point='inference.py', source_dir='sklearn_source_dir/', code_location=code_location, framework_version='1.0-1', role=role, sagemaker_session=pipeline_session, py_version='py3' ) xgboost_model = XGBoostModel( model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts, entry_point='inference.py', source_dir='xgboost_source_dir/', code_location=code_location, framework_version='0.90-2', py_version='py3', sagemaker_session=pipeline_session, role=role ) from sagemaker.workflow.model_step import ModelStep from sagemaker import PipelineModel pipeline_model = PipelineModel( models=[sklearn_model, xgboost_model], role=role,sagemaker_session=pipeline_session, ) register_model_step_args = pipeline_model.register( content_types=["application/json"], response_types=["application/json"], inference_instances=["ml.t2.medium", "ml.m5.xlarge"], transform_instances=["ml.m5.xlarge"], model_package_group_name='sipgroup', ) step_model_registration = ModelStep( name="AbaloneRegisterModel", step_args=register_model_step_args, )
CreateModel paso
importante
Recomendamos usarlo Paso de modelar para crear modelos a partir de la v2.90.0 de Python. SageMaker SDK CreateModelStep
seguirá funcionando en versiones anteriores de SageMaker PythonSDK, pero ya no es compatible activamente.
Se utiliza un CreateModel
paso para crear un SageMaker modelo. Para obtener más información sobre SageMaker los modelos, consulta Entrena a una modelo con Amazon SageMaker.
El paso de creación del modelo requiere artefactos del modelo e información sobre el tipo de SageMaker instancia que debe utilizar para crear el modelo. El siguiente ejemplo muestra cómo crear una definición de paso CreateModel
. Para obtener más información sobre los requisitos de los CreateModel
pasos, consulta sagemaker.workflow.steps. CreateModelStep
from sagemaker.workflow.steps import CreateModelStep step_create_model = CreateModelStep( name="AbaloneCreateModel", model=best_model, inputs=inputs )
RegisterModel paso
importante
Recomendamos usarlo Paso de modelar para registrar modelos a partir de la v2.90.0 de Python. SageMaker SDK RegisterModel
seguirá funcionando en versiones anteriores de SageMaker PythonSDK, pero ya no es compatible activamente.
Debe seguir un RegisterModel
paso para registrar un Sagemaker.Model.model o un sagemaker.pipelinePipelineModel
representa una canalización de inferencia, que es un modelo compuesto de una secuencia lineal de contenedores que procesan solicitudes de inferencia.
Para obtener más información sobre cómo registrar un modelo, consulte Registro e implementación de modelos con el registro de modelos. Para obtener más información sobre los requisitos de los RegisterModel
pasos, consulte sagemaker.workflow.step_collections. RegisterModel
El siguiente ejemplo muestra cómo crear un paso RegisterModel
que registre un PipelineModel
.
import time from sagemaker.sklearn import SKLearnModel from sagemaker.xgboost import XGBoostModel code_location = 's3://{0}/{1}/code'.format(
bucket_name
, prefix) sklearn_model = SKLearnModel(model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri, entry_point='inference.py', source_dir='sklearn_source_dir/
', code_location=code_location, framework_version='1.0-1', role=role, sagemaker_session=sagemaker_session, py_version='py3') xgboost_model = XGBoostModel(model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts, entry_point='inference.py', source_dir='xgboost_source_dir/
', code_location=code_location, framework_version='0.90-2', py_version='py3', sagemaker_session=sagemaker_session, role=role) from sagemaker.workflow.step_collections import RegisterModel from sagemaker import PipelineModel pipeline_model = PipelineModel(models=[sklearn_model,xgboost_model],role=role,sagemaker_session=sagemaker_session) step_register = RegisterModel( name="AbaloneRegisterModel
", model=pipeline_model, content_types=["application/json"], response_types=["application/json"], inference_instances=["ml.t2.medium
", "ml.m5.xlarge
"], transform_instances=["ml.m5.xlarge
"], model_package_group_name='sipgroup
', )
Si no se proporciona el model
, el paso de registro del modelo requiere un estimador, como se muestra en el ejemplo siguiente.
from sagemaker.workflow.step_collections import RegisterModel step_register = RegisterModel( name="
AbaloneRegisterModel
", estimator=xgb_train, model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts, content_types=["text/csv"], response_types=["text/csv"], inference_instances=["ml.t2.medium", "ml.m5.xlarge
"], transform_instances=["ml.m5.xlarge
"], model_package_group_name=model_package_group_name, approval_status=model_approval_status, model_metrics=model_metrics )
Paso de transformación
Utilice un paso de transformación por lotes para ejecutar la inferencia en todo un conjunto de datos. Para obtener más información acerca de la transformación por lotes, consulte Ejecución de transformaciones por lotes con canalizaciones de inferencia.
Un paso de transformación requiere un transformador y los datos sobre los que se ejecutará la transformación por lotes. El siguiente ejemplo muestra cómo crear una definición de paso Transform
. Para obtener más información sobre los requisitos de los Transform
pasos, consulte sagemaker.workflow.steps. TransformStep
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.transformer import Transformer from sagemaker.inputs import TransformInput from sagemaker.workflow.steps import TransformStep transformer = Transformer(..., sagemaker_session=PipelineSession()) step_transform = TransformStep( name="AbaloneTransform", step_args=transformer.transform(data="s3://
my-bucket/my-data
"), )
Paso de acondicionamiento
Se utiliza un paso de condición para evaluar la condición de las propiedades del paso y evaluar qué acción se debe realizar a continuación en la canalización.
Un paso de acondicionamiento requiere:
-
Una lista de condiciones.
-
Una lista de los pasos que se deben ejecutar si la condición se evalúa como tal.
true
-
Una lista de los pasos que se deben ejecutar si la condición se evalúa como tal.
false
El siguiente ejemplo muestra cómo crear una definición de ConditionStep
.
Limitaciones
-
SageMaker Pipelines no admite el uso de pasos de condición anidados. No puede pasar un paso de condición como entrada para otro paso de condición.
-
Un paso de condición no puede usar pasos idénticos en ambas ramas. Si necesita la misma funcionalidad de paso en ambas ramas, duplique el paso y asígnele un nombre diferente.
from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo from sagemaker.workflow.condition_step import ConditionStep from sagemaker.workflow.functions import JsonGet cond_lte = ConditionLessThanOrEqualTo( left=JsonGet( step_name=step_eval.name, property_file=evaluation_report, json_path="regression_metrics.mse.value" ), right=6.0 ) step_cond = ConditionStep( name="AbaloneMSECond", conditions=[cond_lte], if_steps=[step_register, step_create_model, step_transform], else_steps=[] )
Para obtener más información sobre ConditionStep
los requisitos, consulta sagemaker.workflow.condition_step. ConditionStep
Paso de devolución de llamada
Utilice un Callback
paso para añadir procesos y AWS servicios adicionales a su flujo de trabajo que Amazon SageMaker Model Building Pipelines no proporcione directamente. Cuando se ejecuta un paso Callback
, se lleva a cabo el siguiente procedimiento:
-
SageMaker Pipelines envía un mensaje a una cola de Amazon Simple Queue Service (AmazonSQS) especificada por el cliente. El mensaje contiene un token SageMaker generado por Pipelines y una lista de parámetros de entrada proporcionada por el cliente. Tras enviar el mensaje, SageMaker Pipelines espera la respuesta del cliente.
-
El cliente recupera el mensaje de la SQS cola de Amazon e inicia su proceso personalizado.
-
Cuando finaliza el proceso, el cliente llama a una de las siguientes direcciones APIs y envía el token generado por Pipelines: SageMaker
-
SendPipelineExecutionStepSuccess, junto con una lista de parámetros de salida
-
SendPipelineExecutionStepFailure, junto con el motivo del fallo
-
-
La API llamada hace que SageMaker Pipelines continúe con el proceso de canalización o lo falle.
Para obtener más información sobre los requisitos de los Callback
pasos, consulta sagemaker.workflow.callback_step. CallbackStep
importante
Callback
los pasos se introdujeron en Amazon SageMaker Python SDK v2.45.0 y Amazon SageMaker Studio Classic v3.6.2. Debe actualizar Studio Classic antes de usar un Callback
paso o la canalización no aparecerá. DAG Para actualizar Studio Classic, consulteCierre y actualice SageMaker Studio Classic.
En el siguiente ejemplo, se muestra una implementación del procedimiento anterior.
from sagemaker.workflow.callback_step import CallbackStep step_callback = CallbackStep( name="MyCallbackStep", sqs_queue_url="https://sqs.us-east-2.amazonaws.com/012345678901/MyCallbackQueue", inputs={...}, outputs=[...] ) callback_handler_code = ' import boto3 import json def handler(event, context): sagemaker_client=boto3.client("sagemaker") for record in event["Records"]: payload=json.loads(record["body"]) token=payload["token"] # Custom processing # Call SageMaker to complete the step sagemaker_client.send_pipeline_execution_step_success( CallbackToken=token, OutputParameters={...} ) '
nota
Los parámetros de salida para CallbackStep
no deben estar anidados. Por ejemplo, si utiliza un diccionario anidado como parámetro de salida, el diccionario se trata como una cadena única (p. ej. {"output1": "{\"nested_output1\":\"my-output\"}"}
). Si proporciona un valor anidado, al intentar hacer referencia a un parámetro de salida concreto, se SageMaker produce un error de cliente que no se puede volver a intentar.
Comportamiento de detención
Un proceso de canalización no se detiene mientras se ejecuta un paso Callback
.
Cuando llamas a un proceso de canalización con un Callback
paso StopPipelineExecutionen ejecución, SageMaker Pipelines envía un SQS mensaje de Amazon a la SQS cola. El cuerpo del SQS mensaje contiene un campo de estado, que está configurado en. Stopping
A continuación se muestra un ejemplo del cuerpo del SQS mensaje.
{ "token": "26vcYbeWsZ", "pipelineExecutionArn": "arn:aws:sagemaker:us-east-2:012345678901:pipeline/callback-pipeline/execution/7pinimwddh3a", "arguments": { "number": 5, "stringArg": "some-arg", "inputData": "s3://sagemaker-us-west-2-012345678901/abalone/abalone-dataset.csv" }, "status": "Stopping" }
Debes añadir lógica a tu consumidor de SQS mensajes de Amazon para tomar las medidas necesarias (por ejemplo, limpiar los recursos) al recibir el mensaje. Luego agrega una llamada a SendPipelineExecutionStepSuccess
oSendPipelineExecutionStepFailure
.
Solo cuando SageMaker Pipelines recibe una de estas llamadas, detiene el proceso de canalización.
Paso Lambda
Se utiliza un paso Lambda para ejecutar una AWS Lambda función. Puede ejecutar una función Lambda existente o SageMaker puede crear y ejecutar una función Lambda nueva. Para ver un cuaderno que muestre cómo usar un paso de Lambda en una SageMaker canalización, consulte sagemaker-pipelines-lambda-step .ipynb.
importante
Los pasos de Lambda se introdujeron en Amazon SageMaker Python SDK v2.51.0 y Amazon SageMaker Studio Classic v3.9.1. Debe actualizar Studio Classic antes de usar un paso de Lambda o la canalización DAG no aparecerá. Para actualizar Studio Classic, consulteCierre y actualice SageMaker Studio Classic.
SageMaker proporciona la clase SageMaker.Lambda_Helper.Lambda para crear, actualizar, invocar y eliminar funciones LambdaLambda
tiene la siguiente firma.
Lambda( function_arn, # Only required argument to invoke an existing Lambda function # The following arguments are required to create a Lambda function: function_name, execution_role_arn, zipped_code_dir, # Specify either zipped_code_dir and s3_bucket, OR script s3_bucket, # S3 bucket where zipped_code_dir is uploaded script, # Path of Lambda function script handler, # Lambda handler specified as "lambda_script.lambda_handler" timeout, # Maximum time the Lambda function can run before the lambda step fails ... )
El sagemaker.workflow.lambda_step. LambdaSteplambda_func
Lambda
Para invocar una función Lambda existente, el único requisito es proporcionar el nombre de recurso de Amazon ARN () de la función a. function_arn
Si no proporciona un valor para function_arn
, debe especificar el handler
y una de las siguientes opciones:
-
zipped_code_dir
: la ruta de la función de Lambda comprimidas3_bucket
: el bucket de Amazon S3 donde se va a cargarzipped_code_dir
-
script
: la ruta del archivo de script de la función de Lambda
El siguiente ejemplo muestra cómo crear una definición de paso Lambda
que invoque una función de Lambda existente.
from sagemaker.workflow.lambda_step import LambdaStep from sagemaker.lambda_helper import Lambda step_lambda = LambdaStep( name="ProcessingLambda", lambda_func=Lambda( function_arn="arn:aws:lambda:us-west-2:012345678910:function:split-dataset-lambda" ), inputs={ s3_bucket = s3_bucket, data_file = data_file }, outputs=[ "train_file", "test_file" ] )
El siguiente ejemplo muestra cómo crear una definición de paso Lambda
que cree e invoque una función de Lambda mediante un script de función de Lambda.
from sagemaker.workflow.lambda_step import LambdaStep from sagemaker.lambda_helper import Lambda step_lambda = LambdaStep( name="ProcessingLambda", lambda_func=Lambda( function_name="split-dataset-lambda", execution_role_arn=execution_role_arn, script="lambda_script.py", handler="lambda_script.lambda_handler", ... ), inputs={ s3_bucket = s3_bucket, data_file = data_file }, outputs=[ "train_file", "test_file" ] )
Entradas y salidas
Si la función Lambda
tiene entradas o salidas, estas también deben definirse en el paso Lambda
.
nota
Los parámetros de entrada y salida no deben estar anidados. Por ejemplo, si utiliza un diccionario anidado como parámetro de salida, el diccionario se trata como una cadena única (p. ej. {"output1": "{\"nested_output1\":\"my-output\"}"}
). Si proporciona un valor anidado e intenta consultarlo más adelante, se produce un error de cliente indicando que no se puede volver a intentar.
Al definir el paso Lambda
, inputs
debe se un diccionario de pares clave-valor. Cada valor del diccionario de inputs
debe ser de un tipo primitivo (cadena, entero o flotante). No se admiten objetos anidados. Si no se define, el valor de inputs
predeterminado es None
.
El valor de outputs
debe ser una lista de claves. Estas claves hacen referencia a un diccionario definido en la salida de la función Lambda
. Como en inputs
, estas claves deben ser de tipos primitivos y no se admiten objetos anidados.
Comportamiento de tiempo de espera y detención
La clase Lambda
tiene un argumento timeout
que especifica el tiempo máximo que puede ejecutarse la función de Lambda. El valor predeterminado es de 120 segundos, con un máximo de 10 minutos. Si la función de Lambda se está ejecutando cuando se alcanza el tiempo de espera, el paso Lambda producirá un erro; sin embargo, la función de Lambda seguirá ejecutándose.
No se puede detener un proceso de canalización mientras se está ejecutando un paso Lambda porque la función de Lambda invocada por el paso Lambda no se puede detener. Si detiene el proceso mientras la función Lambda está en ejecución, la canalización espera a que finalice la función o hasta que se agote el tiempo de espera. Esto depende de lo que ocurra primero. A continuación, el proceso se detiene. Si la función de Lambda finaliza, el estado del proceso de canalización es Stopped
. Si se agota el tiempo de espera, el estado del proceso de canalización es Failed
.
ClarifyCheck paso
Puede utilizar el paso ClarifyCheck
para comprobar la desviación de la referencia con respecto a las líneas de base anteriores para analizar los sesgos y la explicabilidad del modelo. A continuación, puede generar y registrar las líneas de base con el método model.register()
y pasar la salida de ese método a Paso de modelar con step_args
. Amazon SageMaker Model Monitor puede utilizar estas líneas base para la comprobación de desviaciones para los puntos finales de su modelo. Por lo tanto, no es necesario que haga una sugerencia de referencia por separado.
El paso ClarifyCheck
también permite extraer líneas de base para la comprobación de desviaciones del registro del modelo. En este ClarifyCheck
paso se utiliza el contenedor SageMaker prediseñado de Clarify. Este contenedor proporciona una gama de capacidades de monitoreo de modelos, que incluyen la sugerencia de restricciones y la validación de restricciones con respecto a una línea base determinada. Para obtener más información, consulte Comience con un contenedor SageMaker Clarify.
Configurar el paso ClarifyCheck
Puede configurar el paso ClarifyCheck
para que realice solo uno de los siguientes tipos de comprobaciones cada vez que se utilice en una canalización.
-
Verificación del sesgo de datos
-
Verificación del sesgo del modelo
-
Verificación de la explicabilidad del modelo
Para ello, defina el clarify_check_config
parámetro con uno de los siguientes valores de tipo de comprobación:
-
DataBiasCheckConfig
-
ModelBiasCheckConfig
-
ModelExplainabilityCheckConfig
Este ClarifyCheck
paso inicia un trabajo de procesamiento que ejecuta el contenedor SageMaker prediseñado de Clarify y requiere configuraciones específicas para la comprobación y el trabajo de procesamiento. ClarifyCheckConfig
y CheckJobConfig
son funciones auxiliares para estas configuraciones. Estas funciones auxiliares están alineadas con la forma en que el trabajo de procesamiento de SageMaker Clarify calcula para comprobar el sesgo del modelo, el sesgo de los datos o la explicabilidad del modelo. Para obtener más información, consulte Ejecute SageMaker Clarify Processing Jobs para analizar los sesgos y facilitar la explicación.
Control del comportamiento del paso para comprobaciones de desviación
El paso ClarifyCheck
requiere los dos indicadores booleanos siguientes para controlar su comportamiento:
-
skip_check
: este parámetro indica si se omite o no la comprobación de desviaciones con respecto a la referencia anterior. Si se establece enFalse
, debe estar disponible la referencia anterior del tipo de comprobación configurado. -
register_new_baseline
: este parámetro indica si se puede acceder a una referencia recién calculada mediante la propiedad de pasoBaselineUsedForDriftCheckConstraints
. Si se establece enFalse
, también debe estar disponible la referencia anterior del tipo de comprobación configurado. Se puede acceder a ella a través de la propiedadBaselineUsedForDriftCheckConstraints
.
Para obtener más información, consulte Cálculo de referencia, detección de desviaciones y ciclo de vida con Amazon SageMaker Model Building Pipelines ClarifyCheck y sus QualityCheck pasos.
Trabajo con líneas de base
Si lo desea, puede especificarlo model_package_group_name
para localizar la línea base existente. A continuación, el ClarifyCheck
paso extrae DriftCheckBaselines
el último paquete de modelos aprobado del grupo de paquetes de modelos.
O bien, puede proporcionar una referencia anterior a través del parámetro supplied_baseline_constraints
. Si especifica tanto model_package_group_name
como supplied_baseline_constraints
, el paso ClarifyCheck
utiliza la referencia especificada por el parámetro supplied_baseline_constraints
.
Para obtener más información sobre el uso de los requisitos del ClarifyCheck
paso, consulte sagemaker.workflow.steps. ClarifyCheckStepClarifyCheck
step in SageMaker Pipelines, consulta sagemaker-pipeline-model-monitor-clarify-steps.ipynb
ejemplo Creación de un paso ClarifyCheck
para la comprobación del sesgo de los datos
from sagemaker.workflow.check_job_config import CheckJobConfig from sagemaker.workflow.clarify_check_step import DataBiasCheckConfig, ClarifyCheckStep from sagemaker.workflow.execution_variables import ExecutionVariables check_job_config = CheckJobConfig( role=role, instance_count=1, instance_type="
ml.c5.xlarge
", volume_size_in_gb=120
, sagemaker_session=sagemaker_session, ) data_bias_data_config = DataConfig( s3_data_input_path=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri, s3_output_path=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'databiascheckstep
']), label=0, dataset_type="text/csv
", s3_analysis_config_output_path=data_bias_analysis_cfg_output_path, ) data_bias_config = BiasConfig( label_values_or_threshold=[15.0
], facet_name=[8
], facet_values_or_threshold=[[0.5
]] ) data_bias_check_config = DataBiasCheckConfig( data_config=data_bias_data_config, data_bias_config=data_bias_config, )h data_bias_check_step = ClarifyCheckStep( name="DataBiasCheckStep
", clarify_check_config=data_bias_check_config, check_job_config=check_job_config, skip_check=False, register_new_baseline=False supplied_baseline_constraints="s3://sagemaker-us-west-2-111122223333/baseline/analysis.json
", model_package_group_name="MyModelPackageGroup
" )
QualityCheck paso
Utilice este QualityCheck
paso para realizar sugerencias de referencia y comprobar la calidad de los datos o la calidad del modelo con respecto a una línea de base anterior en relación con la calidad de los datos o del modelo en proceso. A continuación, puede generar y registrar las líneas de base con el model.register()
método y pasar el resultado de ese método a su Paso de modelar utilizaciónstep_args
.]
El monitor de modelos utiliza estas referencias para la comprobación de desviaciones en los puntos de conexión del modelo, de manera que no sea necesario hacer una sugerencia de referencia aparte. El paso QualityCheck
también permite extraer líneas de base para la comprobación de desviaciones del registro del modelo. Este QualityCheck
paso aprovecha el contenedor prediseñado de Amazon SageMaker Model Monitor. Este contenedor tiene una gama de capacidades de monitoreo de modelos que incluyen la sugerencia de restricciones, la generación de estadísticas y la validación de restricciones con respecto a una línea de base. Para obtener más información, consulte Contenedor prediseñado de Amazon SageMaker Model Monitor.
Configurar el paso QualityCheck
Puede configurar el QualityCheck
paso para que ejecute solo uno de los siguientes tipos de comprobación cada vez que se utilice en una canalización.
-
Verificación de la calidad de los datos
-
Control de la calidad del modelo
Para ello, defina el parámetro quality_check_config
con uno de los siguientes valores de tipo de comprobación:
-
DataQualityCheckConfig
-
ModelQualityCheckConfig
El paso QualityCheck
inicia un trabajo de procesamiento que ejecuta el contenedor prediseñado del monitor de modelos y requiere configuraciones específicas para el trabajo de verificación y procesamiento. Las QualityCheckConfig
y CheckJobConfig
son funciones auxiliares para estas configuraciones. Estas funciones auxiliares están alineadas con la forma en que Model Monitor crea una línea base para la calidad del modelo o el monitoreo de la calidad de los datos. Para obtener más información sobre las sugerencias de referencia del monitor de modelos, consulte Crear una referencia y Cree una línea base de calidad del modelo.
Control del comportamiento del paso para comprobaciones de desviación
El paso QualityCheck
requiere los dos indicadores booleanos siguientes para controlar su comportamiento:
-
skip_check
: este parámetro indica si se omite o no la comprobación de desviaciones con respecto a la referencia anterior. Si se establece enFalse
, debe estar disponible la referencia anterior del tipo de comprobación configurado. -
register_new_baseline
: este parámetro indica si se puede acceder a una referencia recién calculada mediante las propiedad de pasoBaselineUsedForDriftCheckConstraints
yBaselineUsedForDriftCheckStatistics
. Si se establece enFalse
, también debe estar disponible la referencia anterior del tipo de comprobación configurado. Se puede acceder a ella a través de las propiedadesBaselineUsedForDriftCheckConstraints
yBaselineUsedForDriftCheckStatistics
.
Para obtener más información, consulte Cálculo de referencia, detección de desviaciones y ciclo de vida con Amazon SageMaker Model Building Pipelines ClarifyCheck y sus QualityCheck pasos.
Trabajo con líneas de base
Puede especificar una línea base anterior directamente a través de los supplied_baseline_constraints
parámetros supplied_baseline_statistics
y. También puede especificar model_package_group_name
y el QualityCheck
paso extrae el último paquete DriftCheckBaselines
de modelos aprobado del grupo de paquetes de modelos.
Al especificar lo siguiente, el QualityCheck
paso utiliza la línea base especificada por supplied_baseline_constraints
y supplied_baseline_statistics
sobre el tipo de verificación del QualityCheck
paso.
-
model_package_group_name
-
supplied_baseline_constraints
-
supplied_baseline_statistics
Para obtener más información sobre el uso de los requisitos del QualityCheck
paso, consulte sagemaker.workflow.steps. QualityCheckStepQualityCheck
step in SageMaker Pipelines, consulta sagemaker-pipeline-model-monitor-clarify-steps.ipynb
ejemplo Creación de un paso QualityCheck
para la comprobación de la calidad de los datos
from sagemaker.workflow.check_job_config import CheckJobConfig from sagemaker.workflow.quality_check_step import DataQualityCheckConfig, QualityCheckStep from sagemaker.workflow.execution_variables import ExecutionVariables check_job_config = CheckJobConfig( role=role, instance_count=1, instance_type="
ml.c5.xlarge
", volume_size_in_gb=120
, sagemaker_session=sagemaker_session, ) data_quality_check_config = DataQualityCheckConfig( baseline_dataset=step_process.properties.ProcessingOutputConfig.Outputs["train
"].S3Output.S3Uri, dataset_format=DatasetFormat.csv(header=False, output_columns_position="START"), output_s3_uri=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'dataqualitycheckstep']) ) data_quality_check_step = QualityCheckStep( name="DataQualityCheckStep", skip_check=False, register_new_baseline=False, quality_check_config=data_quality_check_config, check_job_config=check_job_config, supplied_baseline_statistics="s3://sagemaker-us-west-2-555555555555/baseline/statistics.json
", supplied_baseline_constraints="s3://sagemaker-us-west-2-555555555555/baseline/constraints.json
", model_package_group_name="MyModelPackageGroup
" )
EMRpaso 2
Utilice el paso Amazon SageMaker Model Building EMRPipelines para:
-
Procesa EMRlos pasos de Amazon en un EMR clúster de Amazon en ejecución.
-
Haz que la canalización cree y gestione un EMR clúster de Amazon por ti.
Para obtener más información sobre AmazonEMR, consulta Cómo empezar con Amazon EMR.
El EMR paso requiere que se EMRStepConfig
incluya la ubicación del JAR archivo utilizado por el EMR clúster de Amazon y cualquier argumento que se vaya a pasar. También debes proporcionar el ID de EMR clúster de Amazon si quieres ejecutar el paso en un EMR clúster en ejecución. También puedes pasar la configuración del clúster para ejecutar el EMR paso en un clúster que crea, administra y termina por ti. Las siguientes secciones incluyen ejemplos y enlaces a cuadernos de muestra que muestran ambos métodos.
nota
-
EMRestos pasos requieren que la función transferida a tu canalización tenga permisos adicionales. Adjunta la política AWS gestionada:
AmazonSageMakerPipelinesIntegrations
a tu rol de canalización o asegúrate de que el rol incluya los permisos de esa política. -
EMRel paso no se admite en sistemas EMR sin servidor. Tampoco es compatible con Amazon EMR onEKS.
-
Si procesas un EMR paso en un clúster en ejecución, solo podrás usar un clúster que se encuentre en uno de los siguientes estados:
-
STARTING
-
BOOTSTRAPPING
-
RUNNING
-
WAITING
-
-
Si procesas EMR los pasos en un clúster en ejecución, puedes tener un máximo de 256 EMR pasos en un
PENDING
estado en un EMR clúster. EMRlos pasos que se envíen por encima de este límite provocan un error en la ejecución de la canalización. Puede plantearse usar Política de reintentos para los pasos de la canalización. Especifique el ID del clúster o la configuración del clúster, pero no ambos.
El EMR paso depende de Amazon EventBridge para monitorear los cambios en el estado del EMR paso o del clúster. Si procesas tu EMR trabajo de Amazon en un clúster en ejecución, el EMR paso utiliza la
SageMakerPipelineExecutionEMRStepStatusUpdateRule
regla para supervisar el estado del EMR paso. Si procesas tu trabajo en un clúster creado por el EMR paso, este utilizará laSageMakerPipelineExecutionEMRClusterStatusRule
regla para supervisar los cambios en el estado del clúster. Si ves alguna de estas EventBridge reglas en tu AWS cuenta, no la elimines o, de lo contrario, es posible que el EMR paso no se complete.
Lanzar un nuevo trabajo en un EMR clúster de Amazon en ejecución
Para lanzar un nuevo trabajo en un EMR clúster de Amazon en ejecución, pasa el ID del clúster en forma de cadena al cluster_id
argumento deEMRStep
. El siguiente ejemplo demuestra este procedimiento.
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig emr_config = EMRStepConfig( jar="
jar-location
", # required, path to jar file used args=["--verbose", "--force"], # optional list of arguments to pass to the jar main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest properties=[ # optional list of Java properties that are set when the step runs { "key": "mapred.tasktracker.map.tasks.maximum", "value": "2" }, { "key": "mapreduce.map.sort.spill.percent", "value": "0.90" }, { "key": "mapreduce.tasktracker.reduce.tasks.maximum", "value": "5" } ] ) step_emr = EMRStep ( name="EMRSampleStep", # required cluster_id="j-1ABCDEFG2HIJK", # include cluster_id to use a running cluster step_config=emr_config, # required display_name="My EMR Step", description="Pipeline step to execute EMR job" )
Para ver un ejemplo de cuaderno que le guiará a través de un ejemplo completo, consulte SageMaker Pipelines EMR Step With Running EMR Cluster
Lanzar un nuevo trabajo en un nuevo EMR clúster de Amazon
Para lanzar un nuevo trabajo en un clúster nuevo que EMRStep
cree para usted, proporcione la configuración del clúster en forma de diccionario. El diccionario debe tener la misma estructura que una RunJobFlowsolicitud. Sin embargo, no incluya los siguientes campos en la configuración del clúster:
[
Name
][
Steps
][
AutoTerminationPolicy
][
Instances
][KeepJobFlowAliveWhenNoSteps
][
Instances
][TerminationProtected
]
Todos los demás argumentos RunJobFlow
están disponibles para su uso en la configuración del clúster. Para obtener más información sobre la sintaxis de la solicitud, consulte RunJobFlow.
En el siguiente ejemplo, se pasa una configuración de clúster a una definición de EMR pasos. Esto indica que el paso debe lanzar un nuevo trabajo en un EMR clúster nuevo. La configuración del EMR clúster de este ejemplo incluye especificaciones para los nodos del EMR clúster principal y principal. Para obtener más información sobre los tipos de EMR nodos de Amazon, consulte Comprender los tipos de nodos: nodos principales, principales y de tareas.
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig emr_step_config = EMRStepConfig( jar="
jar-location
", # required, path to jar file used args=["--verbose", "--force"], # optional list of arguments to pass to the jar main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest properties=[ # optional list of Java properties that are set when the step runs { "key": "mapred.tasktracker.map.tasks.maximum", "value": "2" }, { "key": "mapreduce.map.sort.spill.percent", "value": "0.90" }, { "key": "mapreduce.tasktracker.reduce.tasks.maximum", "value": "5" } ] ) # include your cluster configuration as a dictionary emr_cluster_config = { "Applications": [ { "Name": "Spark", } ], "Instances":{ "InstanceGroups":[ { "InstanceRole": "MASTER", "InstanceCount": 1, "InstanceType": "m5.2xlarge" }, { "InstanceRole": "CORE", "InstanceCount": 2, "InstanceType": "m5.2xlarge" } ] }, "BootstrapActions":[], "ReleaseLabel": "emr-6.6.0", "JobFlowRole": "job-flow-role
", "ServiceRole": "service-role
" } emr_step = EMRStep( name="emr-step", cluster_id=None, display_name="emr_step", description="MyEMRStepDescription", step_config=emr_step_config, cluster_config=emr_cluster_config )
Para ver un ejemplo de cuaderno que le guiará a través de un ejemplo completo, consulte SageMaker Pipelines EMR Step With Cluster Lifecycle Management
Paso de trabajo de Notebook
Utilice NotebookJobStep
a para ejecutar su SageMaker Notebook Job de forma no interactiva como un paso de proceso. Para obtener más información sobre los trabajos de SageMaker Notebook, consulte. SageMaker Trabajos de cuaderno
A NotebookJobStep
requiere como mínimo una libreta de entrada, una imagen URI y un nombre del núcleo. Para obtener más información sobre los requisitos de los pasos de Notebook Job y otros parámetros que puede configurar para personalizar su paso, consulte sagemaker.workflow.steps. NotebookJobStep
En el siguiente ejemplo, se utilizan argumentos mínimos para definir unNotebookJobStep
.
from sagemaker.workflow.notebook_job_step import NotebookJobStep notebook_job_step = NotebookJobStep( input_notebook=
input_notebook
, image_uri=image_uri
, kernel_name=kernel_name
)
El paso de la NotebookJobStep
canalización se trata como un trabajo de SageMaker cuaderno. Como resultado, realiza un seguimiento del estado de ejecución en el panel de tareas del cuaderno de Studio Classic UI incluyendo etiquetas específicas con el tags
argumento. Para obtener más información sobre las etiquetas que se deben incluir, consulteConsulta los trabajos de tu bloc de notas en el panel de la interfaz de usuario de Studio.
Además, si programa el trabajo del bloc de notas con SageMaker PythonSDK, solo podrá especificar determinadas imágenes para ejecutar el trabajo del bloc de notas. Para obtener más información, consulte Restricciones de imagen para trabajos de SDK cuadernos de SageMaker Python.
Paso fallido
Utilice FailStep
a para detener una ejecución de Amazon SageMaker Model Building Pipelines cuando no se alcance la condición o el estado deseados. Esto también marca la ejecución de esa canalización como fallida. El FailStep
también le permite introducir un mensaje de error personalizado en el que se indique la causa del error de la ejecución de la canalización.
nota
Cuando uno FailStep
y otros pasos de la canalización se ejecutan al mismo tiempo, la canalización no termina hasta que se hayan completado todos los pasos simultáneos.
Limitaciones de uso de FailStep
-
No puede agregar un
FailStep
a la listaDependsOn
de otros pasos. Para obtener más información, consulte Dependencia personalizada entre los pasos. -
Otros pasos no pueden hacer referencia al
FailStep
. Es siempre el último paso de la ejecución de una canalización. -
No se puede volver a intentar ejecutar una canalización que termine con un
FailStep
.
Puede crear el ErrorMessage
de FailStep
en forma de cadena de texto estático. Como alternativa, también puede utilizar los Parámetros de canalización, una operación de unión
El siguiente fragmento de código de ejemplo utiliza un FailStep
con un ErrorMessage
configurado con parámetros de canalización y una operación Join
.
from sagemaker.workflow.fail_step import FailStep from sagemaker.workflow.functions import Join from sagemaker.workflow.parameters import ParameterInteger mse_threshold_param = ParameterInteger(name="MseThreshold", default_value=5) step_fail = FailStep( name="
AbaloneMSEFail
", error_message=Join( on=" ", values=["Execution failed due to MSE >
", mse_threshold_param] ), )
Propiedades de los pasos
Utilice el properties
atributo para añadir dependencias de datos entre los pasos de la canalización. SageMaker 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 SageMaker 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 de la suya 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, SageMaker 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 SageMaker Pipelines directamente. En este caso, puedes crear una dependencia personalizada que indique a SageMaker 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']} ] }
SageMaker 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
Usa una imagen personalizada en un 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 SageMaker 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