Execute um pipeline - SageMaker IA da Amazon

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á.

Execute um pipeline

Depois de definir as etapas do pipeline como um gráfico acíclico direcionado (DAG), você pode executar o pipeline, o que executa as etapas definidas no DAG. As instruções a seguir mostram como executar um pipeline de SageMaker IA da Amazon usando o editor drag-and-drop visual no Amazon SageMaker Studio ou o SDK do Amazon Python SageMaker .

Para iniciar uma nova execução de pipeline, faça o seguinte:

Studio
  1. Abra o SageMaker Studio seguindo as instruções em Iniciar o Amazon SageMaker Studio.

  2. No painel de navegação à esquerda, selecione Pipelines.

  3. (Opcional) Para filtrar a lista de pipelines por nome, digite um nome de pipeline completo ou parcial no campo de pesquisa.

  4. Selecione um nome de pipeline.

  5. Escolha a guia Execuções.

  6. Insira ou atualize as seguintes informações obrigatórias:

    • Name: um nome único para sua conta na região da AWS .

    • Descrição: uma descrição opcional para sua execução.

    • ProcessingInstanceType— O tipo de EC2 instância da Amazon a ser usado para o trabalho de processamento.

    • TrainingInstanceType— O tipo de EC2 instância da Amazon a ser usado para o trabalho de treinamento

    • InputData— O URI do Amazon S3 para os dados de entrada.

    • PreprocessScript— O URI do Amazon S3 para o script de pré-processamento.

    • EvaluateScript— O URI do Amazon S3 para o script de avaliação do modelo.

    • AccuracyConditionThreshold— O limite de precisão do modelo a ser alcançado para registrar o modelo no registro.

    • ModelGroup— O registro no qual registrar o modelo.

    • MaximumParallelTrainingJobs— O número máximo de trabalhos de treinamento a serem executados paralelamente.

    • MaximumTrainingJobs— O número máximo de trabalhos de treinamento a serem executados.

  7. Escolha Criar.

nota

Se seu pipeline falhar, o banner de status mostrará o status Falha. Depois de solucionar a falha na etapa, escolha Tentar novamente no banner de status para retomar a execução do pipeline a partir dessa etapa.

Studio Classic
  1. Faça login no Amazon SageMaker Studio Classic. Para obter mais informações, consulte Launch Amazon SageMaker Studio Classic.

  2. Na barra lateral do Studio Classic, escolha o ícone Início ( Black square icon representing a placeholder or empty image. ).

  3. Selecione Pipelines no menu.

  4. Para restringir a lista de pipelines por nome, insira um nome de pipeline completo ou parcial no campo de pesquisa.

  5. Selecione um nome de pipeline.

  6. Na aba Execuções ou Gráfico na lista de execução, escolha Criar execução.

  7. Insira ou atualize as seguintes informações obrigatórias:

    • Name: Deve ser único na sua conta em uma Região da AWS .

    • ProcessingInstanceCount— O número de instâncias a serem usadas para processamento.

    • ModelApprovalStatus— Para sua conveniência.

    • InputDataUrl— O URI do Amazon S3 dos dados de entrada.

  8. Escolha Iniciar.

Depois que seu pipeline estiver em execução, você poderá visualizar os detalhes da execução escolhendo Exibir detalhes no banner de status.

Para interromper a execução, escolha Parar no banner de status. Para retomar a execução de onde ela foi interrompida, escolha Retomar no banner de status.

nota

Se seu pipeline falhar, o banner de status mostrará o status Falha. Depois de solucionar a falha na etapa, escolha Tentar novamente no banner de status para retomar a execução do pipeline a partir dessa etapa.

Depois de criar uma definição de pipeline usando o SDK do SageMaker AI Python, você pode enviá-la à SageMaker AI para iniciar sua execução. O tutorial a seguir mostra como enviar um pipeline, iniciar uma execução, examinar os resultados dessa execução e excluir seu pipeline.

Pré-requisitos

Este tutorial requer o seguinte:

  • Uma instância de SageMaker notebook. 

  • Uma definição de pipeline do Pipelines. Este tutorial pressupõe que você esteja usando a definição de pipeline criada ao concluir o tutorial Definir um pipeline.

Etapa 1: iniciar o pipeline

Primeiro, você precisa iniciar o pipeline.

Para iniciar o pipeline
  1. Examine a definição do pipeline JSON para garantir que ela esteja bem formada.

    import json json.loads(pipeline.definition())
  2. Envie a definição do pipeline ao serviço do Pipelines para criar um pipeline, caso ele não exista, ou atualizar o pipeline, caso exista. A função transmitida é usada pelo Pipelines para criar todos os trabalhos definidos nas etapas.

    pipeline.upsert(role_arn=role)
  3. Inicie a execução de um pipeline.

    execution = pipeline.start()

Etapa 2: examinar a execução de um pipeline

Em seguida, você precisa examinar a execução do pipeline.

Para examinar a execução de um pipeline
  1. Descreva o status de execução do pipeline para garantir que ele tenha sido criado e iniciado com sucesso.

    execution.describe()
  2. Aguarde o término da execução.

    execution.wait()
  3. Liste as etapas de execução e seu status.

    execution.list_steps()

    A saída será semelhante a:

    [{'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. Depois que a execução do pipeline for concluída, baixe o arquivo evaluation.json resultante do Amazon S3 para examinar o relatório.

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

Etapa 3: substituir parâmetros padrão para a execução de um pipeline

Você pode executar execuções adicionais do pipeline especificando diferentes parâmetros do pipeline para substituir os padrões.

Para substituir os parâmetros padrão
  1. Crie a execução do pipeline. Isso inicia outra execução do pipeline com a substituição do status de aprovação do modelo definido como “Aprovado”. Isso significa que a versão do pacote de modelo gerada pela RegisterModel etapa está automaticamente pronta para implantação por meio de pipelines de CI/CD, como com Projetos. SageMaker Para obter mais informações, consulte MLOps Automação com SageMaker projetos.

    execution = pipeline.start( parameters=dict( ModelApprovalStatus="Approved", ) )
  2. Aguarde o término da execução.

    execution.wait()
  3. Liste as etapas de execução e seu status.

    execution.list_steps()
  4. Depois que a execução do pipeline for concluída, baixe o arquivo evaluation.json resultante do Amazon S3 para examinar o relatório.

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

Etapa 4: interromper e excluir a execução de um pipeline

Ao concluir seu pipeline, você pode interromper qualquer execução em andamento e excluir o pipeline.

Para interromper e excluir a execução de um pipeline
  1. Interrompa a execução do pipeline.

    execution.stop()
  2. Exclua o pipeline.

    pipeline.delete()