Ejecución de una canalización - Amazon SageMaker

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.

Ejecución de una canalización

Tras definir los pasos de tu canalización como un gráfico acíclico dirigido (DAG), puedes ejecutar tu canalización, que ejecuta los pasos definidos en tu. DAG En los siguientes tutoriales, se muestra cómo ejecutar una SageMaker canalización de Amazon mediante el editor drag-and-drop visual de Amazon SageMaker Studio o Amazon Python SageMaker . SDK

Para iniciar una nueva ejecución de tu canalización, haz lo siguiente:

Studio
  1. Abre SageMaker Studio siguiendo las instrucciones de Launch Amazon SageMaker Studio.

  2. En el panel de navegación izquierdo, selecciona Pipelines.

  3. (Opcional) Para filtrar la lista de tuberías por nombre, introduzca un nombre de tubería completo o parcial en el campo de búsqueda.

  4. Seleccione el nombre de una tubería.

  5. Seleccione la pestaña Ejecuciones.

  6. Ingrese o actualice la siguiente información obligatoria:

    • Nombre: un nombre exclusivo de su cuenta en la AWS región.

    • Descripción: una descripción opcional para la ejecución.

    • ProcessingInstanceType— El tipo de EC2 instancia de Amazon que se utilizará para el trabajo de procesamiento.

    • TrainingInstanceType— El tipo de EC2 instancia de Amazon que se utilizará para el trabajo de formación

    • InputData— El Amazon S3 URI a los datos de entrada.

    • PreprocessScript— Del Amazon S3 URI al script de preprocesamiento.

    • EvaluateScript— Del Amazon S3 URI al script de evaluación de modelos.

    • AccuracyConditionThreshold— El umbral de precisión del modelo que se debe alcanzar para registrar el modelo en el registro.

    • ModelGroup— El registro en el que se inscribirá el modelo.

    • MaximumParallelTrainingJobs— El número máximo de trabajos de formación que se pueden ejecutar en paralelo.

    • MaximumTrainingJobs— El número máximo de trabajos de formación que se pueden ejecutar.

  7. Seleccione Crear.

nota

Si la canalización falla, el banner de estado mostrará el estado Fallido. Tras solucionar el error del paso, elija Reintentar en el banner de estado para reanudar la ejecución de la canalización a partir de ese paso.

Studio Classic
  1. Inicia sesión en Amazon SageMaker Studio Classic. Para obtener más información, consulte Lanzamiento de Amazon SageMaker Studio Classic.

  2. En la barra lateral de Studio Classic, selecciona el icono de inicio () Black square icon representing a placeholder or empty image. .

  3. Seleccione Canalizaciones en el menú.

  4. Para reducir la lista de canalizaciones por nombre, introduzca un nombre de canalización total o parcial en el campo de búsqueda.

  5. Seleccione un nombre de tubería.

  6. En la pestaña Ejecuciones o Gráfico de la lista de ejecuciones, elija Crear ejecución.

  7. Ingrese o actualice la siguiente información obligatoria:

    • Name: el nombre debe ser único para su cuenta en la región de AWS .

    • ProcessingInstanceCount— El número de instancias que se van a utilizar para el procesamiento.

    • ModelApprovalStatus— Para su comodidad.

    • InputDataUrl— El Amazon S3 URI de los datos de entrada.

  8. Elija Iniciar.

Una vez que la canalización esté en ejecución, puede ver los detalles de la ejecución seleccionando Ver detalles en el banner de estado.

Para detener la ejecución, selecciona Detener en el banner de estado. Para reanudar la ejecución desde donde se detuvo, elija Reanudar en el banner de estado.

nota

Si tu canalización falla, el banner de estado mostrará el estado Fallido. Tras solucionar el error del paso, elija Reintentar en el banner de estado para reanudar la ejecución de la canalización a partir de ese paso.

Una vez que hayas creado una definición de canalización con SageMaker PythonSDK, puedes enviarla SageMaker a para iniciar la ejecución. El siguiente tutorial muestra cómo enviar una canalización, iniciar una ejecución, examinar los resultados de esa ejecución y eliminar la canalización.

Requisitos previos

Este tutorial requiere lo siguiente:

  • Una instancia de SageMaker bloc de notas. 

  • Una definición de canalización de Pipelines. En este tutorial se supone que utilizará la definición de canalización creada al completar el tutorial Defina una canalización.

Paso 1: Iniciar la canalización

En primer lugar, es preciso iniciar la canalización.

Para iniciar la canalización
  1. Examine la definición de la JSON tubería para asegurarse de que esté bien formada.

    import json json.loads(pipeline.definition())
  2. Envía la definición de canalización al servicio Pipelines para crear una canalización si no existe, o actualiza la canalización si existe. Pipelines utiliza la función transferida para crear todos los trabajos definidos en los pasos.

    pipeline.upsert(role_arn=role)
  3. Inicie la ejecución de la canalización.

    execution = pipeline.start()

Paso 2: Examinar la ejecución de una canalización

A continuación, debe examinar la ejecución de la canalización.

Para examinar la ejecución de una canalización
  1. Describa el estado de ejecución de la canalización para asegurarse de que se ha creado e iniciado correctamente.

    execution.describe()
  2. Espere a que finalice la ejecución.

    execution.wait()
  3. Enumere los pasos de ejecución y su estado.

    execution.list_steps()

    El resultado debería tener el siguiente aspecto:

    [{'StepName': 'AbaloneTransform', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 870000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 45, 50, 492000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'TransformJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:transform-job/pipelines-cfvy1tjuxdq8-abalonetransform-ptyjoef3jy'}}}, {'StepName': 'AbaloneRegisterModel', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 929000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 28, 15000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'RegisterModel': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model-package/abalonemodelpackagegroupname/1'}}}, {'StepName': 'AbaloneCreateModel', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 895000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 708000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'Model': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model/pipelines-cfvy1tjuxdq8-abalonecreatemodel-jl94rai0ra'}}}, {'StepName': 'AbaloneMSECond', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 25, 558000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 329000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'Condition': {'Outcome': 'True'}}}, {'StepName': 'AbaloneEval', 'StartTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 767000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 18, 80000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneeval-zfraozhmny'}}}, {'StepName': 'AbaloneTrain', 'StartTime': datetime.datetime(2020, 11, 21, 2, 34, 55, 867000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 34000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'TrainingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:training-job/pipelines-cfvy1tjuxdq8-abalonetrain-tavd6f3wdf'}}}, {'StepName': 'AbaloneProcess', 'StartTime': datetime.datetime(2020, 11, 21, 2, 30, 27, 160000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 34, 48, 390000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneprocess-mgqyfdujcj'}}}]
  4. Una vez finalizada la ejecución de la canalización, descargue el archivo evaluation.json resultante de Amazon S3 para examinar el informe.

    evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format( step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"] )) json.loads(evaluation_json)

Paso 3: Anular los parámetros predeterminados para la ejecución de una canalización

Puede ejecutar más ejecuciones de la canalización si especifica distintos parámetros de canalización para anular los valores predeterminados.

Para anular los parámetros predeterminados
  1. Cree la ejecución de la canalización. Esto inicia otra ejecución de la canalización con la anulación del estado de aprobación del modelo establecida en “Aprobado”. Esto significa que la versión del paquete modelo generada por el RegisterModel paso está lista automáticamente para su implementación a través de las canalizaciones de CI/CD, como en el caso de Projects. SageMaker Para obtener más información, consulte MLOpsAutomatización con SageMaker proyectos.

    execution = pipeline.start( parameters=dict( ModelApprovalStatus="Approved", ) )
  2. Espere a que finalice la ejecución.

    execution.wait()
  3. Enumere los pasos de ejecución y su estado.

    execution.list_steps()
  4. Una vez finalizada la ejecución de la canalización, descargue el archivo evaluation.json resultante de Amazon S3 para examinar el informe.

    evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format( step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"] )) json.loads(evaluation_json)

Paso 4: Detener y eliminar la ejecución de una canalización

Cuando termine con la canalización, puede detener cualquier ejecución en curso y eliminar la canalización.

Para detener y eliminar la ejecución de una canalización
  1. Detenga la ejecución de la canalización.

    execution.stop()
  2. Elimine la canalización.

    pipeline.delete()