Adicionar uma etapa - Amazon SageMaker

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

Adicionar uma etapa

A seguir, descrevemos os requisitos de cada tipo de etapa e fornece um exemplo de implementação da etapa, além de como adicioná-la a um Pipelines. Essas não são implementações funcionais porque não fornecem os recursos e as entradas necessários. Para obter um tutorial que implementa essas etapas, consulte Ações de oleodutos.

nota

Você também pode criar uma etapa a partir do seu código de aprendizado de máquina local convertendo-a em uma etapa do Pipelines com o @step decorador. Para obter mais informações, consulte decorador @step.

O Amazon SageMaker Pipelines oferece suporte aos seguintes tipos de etapas:

decorador @step

Se você quiser orquestrar um trabalho de ML personalizado que aproveite SageMaker recursos avançados ou outros AWS serviços na interface do usuário do drag-and-drop Pipelines, use o. Etapa de execução do código

Você pode criar uma etapa a partir do código de aprendizado de máquina local usando o @step decorador. Depois de testar seu código, você pode converter a função em uma etapa do SageMaker pipeline anotando-a com o @step decorador. O Pipelines cria e executa um pipeline quando você passa a saída da função @step -decorada como uma etapa para o seu pipeline. Você também pode criar um DAG pipeline de várias etapas que inclua uma ou mais funções @step decoradas, bem como etapas tradicionais do SageMaker pipeline. Para obter mais detalhes sobre como criar uma etapa com o @step decorador, consulteLift-and-shift Código Python com o decorador @step.

Na drag-and-drop interface do usuário do Pipelines, você pode usar uma etapa Executar código para executar seu próprio código como uma etapa do pipeline. Você pode fazer upload de uma função, script ou notebook do Python para ser executado como parte do seu pipeline. Você deve usar essa etapa se quiser orquestrar um trabalho de ML personalizado que aproveite SageMaker recursos avançados ou outros serviços. AWS

A etapa Execute Code carrega arquivos para seu bucket padrão do Amazon S3 para a Amazon. SageMaker Esse bucket pode não ter as permissões necessárias de Cross-Origin Resource Sharing (CORS) definidas. Para saber mais sobre a configuração de CORS permissões, consulteCORSRequisito para dados de imagem de entrada.

A etapa Execute Code usa um trabalho SageMaker de treinamento da Amazon para executar seu código. Certifique-se de que sua IAM função tenha sagemaker:DescribeTrainingJob as sagemaker:CreateTrainingJob API permissões e. Para saber mais sobre todas as permissões necessárias para a Amazon SageMaker e como configurá-las, consulte SageMaker APIPermissões da Amazon: referência de ações, permissões e recursos.

Para adicionar uma etapa de execução de código a um pipeline usando o Pipeline Designer, faça o seguinte:

  1. Abra o console do Amazon SageMaker Studio seguindo as instruções emInicie o Amazon SageMaker Studio.

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

  3. Escolha Criar.

  4. Escolha em branco.

  5. Na barra lateral esquerda, escolha Executar código e arraste-o para a tela.

  6. Na tela, escolha a etapa Executar código que você adicionou.

  7. Na barra lateral direita, preencha os formulários nas guias Configuração e Detalhes.

  8. Você pode carregar um único arquivo para executar ou carregar uma pasta compactada contendo vários artefatos.

  9. Para uploads de um único arquivo, você pode fornecer parâmetros opcionais para notebooks, funções python ou scripts.

  10. Ao fornecer funções Python, um manipulador deve ser fornecido no formato file.py:<function_name>

  11. Para uploads de pastas compactadas, caminhos relativos para seu código devem ser fornecidos e, opcionalmente, você pode fornecer caminhos para um requirements.txt arquivo ou script de inicialização dentro da pasta compactada.

  12. Se a tela incluir qualquer etapa que preceda imediatamente a etapa Executar código que você adicionou, clique e arraste o cursor da etapa até a etapa Executar código para criar uma borda.

  13. Se a tela incluir alguma etapa que suceda imediatamente à etapa Executar código que você adicionou, clique e arraste o cursor da etapa Executar código até a etapa para criar uma borda. As saídas das etapas do código Execute podem ser referenciadas para funções do Python.

Use uma etapa de processamento para criar um trabalho de processamento para processamento de dados. Para obter mais informações sobre trabalhos de processamento, consulte Processar dados e avaliar modelos.

Pipeline Designer

Para adicionar uma etapa de processamento a um pipeline usando o Pipeline Designer, faça o seguinte:

  1. Abra o console do Amazon SageMaker Studio seguindo as instruções emInicie o Amazon SageMaker Studio.

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

  3. Escolha Criar.

  4. Na barra lateral esquerda, escolha Processar dados e arraste-os para a tela.

  5. Na tela, escolha a etapa Processar dados que você adicionou.

  6. Na barra lateral direita, preencha os formulários nas guias Configuração e Detalhes. Para obter informações sobre os campos nessas guias, consulte sagemaker.workflow.steps. ProcessingStep.

  7. Se a tela incluir qualquer etapa que preceda imediatamente a etapa Dados do processo que você adicionou, clique e arraste o cursor da etapa até a etapa Dados do processo para criar uma borda.

  8. Se a tela incluir alguma etapa que suceda imediatamente à etapa Dados do processo que você adicionou, clique e arraste o cursor da etapa Dados do processo até a etapa para criar uma borda.

SageMaker Python SDK

Uma etapa de processamento requer um processador, um script Python que defina o código de processamento, as saídas para processamento e os argumentos do trabalho. O exemplo a seguir mostra como criar uma definição 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") )

Passe parâmetros de tempo de execução

O exemplo a seguir mostra como passar parâmetros de tempo de execução de um PySpark processador para umProcessingStep.

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 obter mais informações sobre os requisitos das etapas de processamento, consulte sagemaker.workflow.steps. ProcessingStepdocumentação. Para ver um exemplo detalhado, consulte o caderno de exemplo Orchestrate Jobs to Training and Evaluate Models with Amazon SageMaker Pipelines. A seção Definir uma etapa de processamento para engenharia de recursos inclui mais informações.

Você usa uma etapa de treinamento para criar um trabalho de treinamento para treinar um modelo. Para obter mais informações sobre trabalhos de treinamento, consulte Treinar um modelo com a Amazon SageMaker.

Uma etapa de treinamento requer um estimador, bem como entradas de dados de treinamento e validação.

Pipeline Designer

Para adicionar uma etapa de treinamento a um pipeline usando o Pipeline Designer, faça o seguinte:

  1. Abra o console do Amazon SageMaker Studio seguindo as instruções emInicie o Amazon SageMaker Studio.

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

  3. Escolha Criar.

  4. Escolha em branco.

  5. Na barra lateral esquerda, escolha Train model e arraste-o até a tela.

  6. Na tela, escolha a etapa do modelo de trem que você adicionou.

  7. Na barra lateral direita, preencha os formulários nas guias Configuração e Detalhes. Para obter informações sobre os campos nessas guias, consulte sagemaker.workflow.steps. TrainingStep.

  8. Se a tela incluir qualquer etapa que preceda imediatamente a etapa do modelo de trem que você adicionou, clique e arraste o cursor da etapa até a etapa do modelo de trem para criar uma borda.

  9. Se a tela incluir alguma etapa que suceda imediatamente à etapa do modelo de trem que você adicionou, clique e arraste o cursor da etapa do modelo de trem até a etapa para criar uma borda.

SageMaker Python SDK

O exemplo a seguir mostra como criar uma definição de TrainingStep. Para obter mais informações sobre os requisitos das etapas de treinamento, consulte sagemaker.workflow.steps. TrainingStepdocumentação.

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, )

Você usa uma etapa de ajuste para criar um trabalho de ajuste de hiperparâmetros, também conhecido como otimização de hiperparâmetros ()HPO. Um trabalho de ajuste de hiperparâmetros executa vários trabalhos de treinamento, com cada trabalho produzindo uma versão do modelo. Para obter mais informações sobre ajuste de hiperparâmetros, consulte Ajuste automático do modelo com SageMaker.

O trabalho de ajuste está associado ao SageMaker experimento do pipeline, com os trabalhos de treinamento criados como testes. Para obter mais informações, consulte Integração de experimentos.

Uma etapa de ajuste requer uma HyperparameterTunere entradas de treinamento. Você pode retreinar trabalhos de ajuste anteriores especificando o parâmetro warm_start_config do HyperparameterTuner. Para obter mais informações sobre ajuste de hiperparâmetros e inicialização a quente, consulte Executar um trabalho de ajuste de hiperparâmetros de inicialização a quente.

Você usa o método get_top_model_s3_uri do sagemaker.workflow.steps. TuningStepclasse para obter o artefato do modelo de uma das versões do modelo de melhor desempenho. Para um notebook que mostra como usar uma etapa de ajuste em um SageMaker pipeline, consulte sagemaker-pipelines-tuning-step.ipynb.

Importante

As etapas de ajuste foram introduzidas no Amazon SageMaker Python SDK v2.48.0 e no Amazon Studio Classic v3.8.0. SageMaker Você deve atualizar o Studio Classic antes de usar uma etapa de ajuste, caso contrário, o pipeline DAG não será exibido. Para atualizar o Studio Classic, consulteDesligue e atualize o SageMaker Studio Classic.

Os exemplos a seguir mostram como criar uma definição 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://amzn-s3-demo-bucket/my-data")) )

Obtenha a melhor versão do modelo

O exemplo a seguir mostra como obter a melhor versão do modelo do trabalho de ajuste usando o método get_top_model_s3_uri. No máximo, as 50 versões com melhor desempenho estão disponíveis, classificadas de acordo com HyperParameterTuningJobObjective. O top_k argumento é um índice das versões, onde top_k=0 está a versão com melhor desempenho e top_k=49 a versão com pior desempenho.

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 obter mais informações sobre os requisitos das etapas de ajuste, consulte sagemaker.workflow.steps. TuningStepdocumentação.

O ajuste fino treina um modelo básico pré-treinado da Amazon SageMaker JumpStart em um novo conjunto de dados. Esse processo, também conhecido como aprendizado por transferência, pode produzir modelos precisos com conjuntos de dados menores e menos tempo de treinamento. Ao ajustar um modelo, você pode usar o conjunto de dados padrão ou escolher seus próprios dados. Para saber mais sobre como ajustar um modelo básico a partir de JumpStart, consulte. Ajuste um modelo

A etapa de ajuste fino usa um trabalho de SageMaker treinamento da Amazon para personalizar seu modelo. Certifique-se de que sua IAM função tenha as sagemaker:CreateTrainingJob API permissões sagemaker:DescribeTrainingJob e as permissões para executar o trabalho de ajuste fino em seu pipeline. Para saber mais sobre as permissões necessárias para a Amazon SageMaker e como configurá-las, consulte SageMaker APIPermissões da Amazon: referência de ações, permissões e recursos.

Para adicionar uma etapa do modelo de ajuste fino ao seu pipeline usando o drag-and-drop editor, siga estas etapas:

  1. Abra o console do Studio seguindo as instruções emInicie o Amazon SageMaker Studio.

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

  3. Escolha Criar.

  4. Escolha em branco.

  5. Na barra lateral esquerda, escolha Ajustar modelo e arraste-o até a tela.

  6. Na tela, escolha a etapa do modelo de ajuste fino que você adicionou.

  7. Na barra lateral direita, preencha os formulários nas guias Configuração e Detalhes.

  8. Se a tela incluir qualquer etapa que preceda imediatamente a etapa do modelo de ajuste fino que você adicionou, clique e arraste o cursor da etapa até a etapa de ajuste fino do modelo para criar uma borda.

  9. Se a tela incluir alguma etapa que suceda imediatamente à etapa de ajuste fino do modelo que você adicionou, clique e arraste o cursor da etapa de ajuste fino do modelo até a etapa para criar uma borda.

Use o AutoML API para criar uma tarefa do AutoML para treinar automaticamente um modelo. Para obter mais informações sobre trabalhos do AutoML, consulte Automatize o desenvolvimento de modelos com o Amazon Autopilot. SageMaker

nota

Atualmente, a etapa do AutoML oferece suporte somente ao modo de treinamento em conjunto.

Os exemplos a seguir mostram como criar uma definição usando 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://amzn-s3-demo-bucket/my-training-data", target_attribute_name="my_target_attribute_name", channel_type="training", ) input_validation = AutoMLInput( inputs="s3://amzn-s3-demo-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, )

Obtenha a melhor versão do modelo

A etapa do AutoML treina automaticamente vários candidatos a modelos. Obtenha o modelo com a melhor métrica objetiva do trabalho do AutoML usando o get_best_auto_ml_model método a seguir. Você também deve usar um IAM role para acessar os artefatos do modelo.

best_model = step_automl.get_best_auto_ml_model(role=<role>)

Para obter mais informações, consulte a etapa do AutoML no Python SageMaker . SDK

Use a ModelStep para criar ou registrar um SageMaker modelo. Para obter mais informações sobre ModelStep requisitos, consulte o sagemaker.workflow.model_step. ModelStepdocumentação.

Criar um modelo

Você pode usar a ModelStep para criar um SageMaker modelo. A ModelStep exige artefatos do modelo e informações sobre o tipo de SageMaker instância que você precisa usar para criar o modelo. Para obter mais informações sobre SageMaker modelos, consulte Treinar um modelo com a Amazon SageMaker.

O exemplo a seguir mostra como criar uma definição 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 um modelo

Você pode usar ModelStep a para registrar um sagemaker.model.Model ou um no registro sagemaker.pipeline.PipelineModel de SageMaker modelos da Amazon. Um PipelineModel representa um pipeline de inferência, que é um modelo composto por uma sequência linear de contêineres que processam solicitações de inferência. Para obter mais informações sobre como registrar um modelo, consulte Implantação de registro de modelo com registro de modelos.

O exemplo a seguir mostra como criar um ModelStep que registra a 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, )

Você usa a etapa Criar modelo para criar um SageMaker modelo. Para obter mais informações sobre SageMaker modelos, consulteTreine um modelo com a Amazon SageMaker.

A etapa de criação do modelo requer artefatos do modelo e informações sobre o tipo de SageMaker instância que você precisa usar para criar o modelo. Os exemplos a seguir mostram como criar uma definição de etapa do modelo Create. Para obter mais informações sobre os requisitos da etapa de criação de modelo, consulte sagemaker.workflow.steps. CreateModelStepdocumentação.

Pipeline Designer

Para adicionar uma etapa de criação de modelo ao seu pipeline, faça o seguinte:

  1. Abra o console do Studio seguindo as instruções emInicie o Amazon SageMaker Studio.

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

  3. Escolha Criar.

  4. Escolha em branco.

  5. Na barra lateral esquerda, escolha Criar modelo e arraste-o para a tela.

  6. Na tela, escolha a etapa Criar modelo que você adicionou.

  7. Na barra lateral direita, preencha os formulários nas guias Configuração e Detalhes. Para obter informações sobre os campos nessas guias, consulte sagemaker.workflow.steps. CreateModelStep.

  8. Se a tela incluir qualquer etapa que preceda imediatamente a etapa Criar modelo que você adicionou, clique e arraste o cursor da etapa até a etapa Criar modelo para criar uma borda.

  9. Se a tela incluir alguma etapa que suceda imediatamente à etapa Criar modelo que você adicionou, clique e arraste o cursor da etapa Criar modelo até a etapa para criar uma borda.

SageMaker Python SDK
Importante

Recomendamos usar Etapa do modelo para criar modelos a partir da v2.90.0 do Python. SageMaker SDK CreateModelStepcontinuará funcionando nas versões anteriores do SageMaker PythonSDK, mas não tem mais suporte ativo.

from sagemaker.workflow.steps import CreateModelStep step_create_model = CreateModelStep( name="AbaloneCreateModel", model=best_model, inputs=inputs )

A etapa Registrar modelo registra um modelo no Registro de SageMaker Modelos.

Pipeline Designer

Para registrar um modelo de um pipeline usando o Pipeline Designer, faça o seguinte:

  1. Abra o console do Amazon SageMaker Studio seguindo as instruções emInicie o Amazon SageMaker Studio.

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

  3. Escolha Criar.

  4. Escolha em branco.

  5. Na barra lateral esquerda, escolha Registrar modelo e arraste-o para a tela.

  6. Na tela, escolha a etapa Registrar modelo que você adicionou.

  7. Na barra lateral direita, preencha os formulários nas guias Configuração e Detalhes. Para obter informações sobre os campos nessas guias, consulte sagemaker.workflow.step_collections. RegisterModel.

  8. Se a tela incluir qualquer etapa que preceda imediatamente a etapa do modelo de registro que você adicionou, clique e arraste o cursor da etapa até a etapa de registro do modelo para criar uma borda.

  9. Se a tela incluir alguma etapa que suceda imediatamente à etapa Registrar modelo que você adicionou, clique e arraste o cursor da etapa Registrar modelo até a etapa para criar uma borda.

SageMaker Python SDK
Importante

Recomendamos usar Etapa do modelo para registrar modelos a partir da v2.90.0 do Python. SageMaker SDK RegisterModelcontinuará funcionando nas versões anteriores do SageMaker PythonSDK, mas não tem mais suporte ativo.

Você usa uma RegisterModel etapa para registrar um SageMaker.model.Model ou um sagemaker.pipeline. PipelineModelcom o registro de SageMaker modelos da Amazon. Um PipelineModel representa um pipeline de inferência, que é um modelo composto por uma sequência linear de contêineres que processam solicitações de inferência.

Para obter mais informações sobre como registrar um modelo, consulte Implantação de registro de modelo com registro de modelos. Para obter mais informações sobre os requisitos das RegisterModel etapas, consulte sagemaker.workflow.step_collections. RegisterModeldocumentação.

O exemplo a seguir mostra como criar uma etapa RegisterModel que registra um 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', )

Se model não for fornecida, a etapa do modelo de registro requer um estimador, conforme mostrado no exemplo a seguir.

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 )

No Pipeline Designer, use a etapa Implantar modelo (endpoint) para implantar seu modelo em um endpoint. Você pode criar um novo endpoint ou usar um endpoint existente. A inferência em tempo real é ideal para workloads de inferência em que você tem requisitos em tempo real, interativos e de baixa latência. Você pode implantar seu modelo em serviços de SageMaker hospedagem e obter um endpoint em tempo real que pode ser usado para inferência. Esses endpoints são totalmente gerenciados e oferecem suporte ao auto-scaling. Para saber mais sobre inferência em tempo real em SageMaker, consulteInferência em tempo real.

Antes de adicionar uma etapa do modelo de implantação ao seu pipeline, certifique-se de que sua IAM função tenha as seguintes permissões:

  • sagemaker:CreateModel

  • sagemaker:CreateEndpointConfig

  • sagemaker:CreateEndpoint

  • sagemaker:UpdateEndpoint

  • sagemaker:DescribeModel

  • sagemaker:DescribeEndpointConfig

  • sagemaker:DescribeEndpoint

Para saber mais sobre todas as permissões necessárias SageMaker e como configurá-las, consulte SageMaker APIPermissões da Amazon: referência de ações, permissões e recursos.

Para adicionar uma etapa de implantação do modelo ao seu Pipeline no drag-and-drop editor, conclua as seguintes etapas:

  1. Abra o console do Studio seguindo as instruções emInicie o Amazon SageMaker Studio.

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

  3. Escolha Criar.

  4. Escolha em branco.

  5. Na barra lateral esquerda, escolha Implantar modelo (endpoint) e arraste-o até a tela.

  6. Na tela, escolha a etapa de implantação do modelo (endpoint) que você adicionou.

  7. Na barra lateral direita, preencha os formulários nas guias Configuração e Detalhes.

  8. Se a tela incluir qualquer etapa que preceda imediatamente a etapa Implantar modelo (endpoint) que você adicionou, clique e arraste o cursor da etapa até a etapa Implantar modelo (endpoint) para criar uma borda.

  9. Se a tela incluir alguma etapa que suceda imediatamente à etapa Implantar modelo (endpoint) que você adicionou, clique e arraste o cursor da etapa Implantar modelo (endpoint) até a etapa para criar uma borda.

Você usa uma etapa de transformação para transformação em lote para executar inferência em um conjunto de dados inteiro. Para obter mais informações sobre a transformação em lotes, consulte Transformações em lote com pipelines de inferência.

Uma etapa de transformação requer um transformador e os dados nos quais executar a transformação em lote. O exemplo a seguir mostra como criar uma definição de etapa de transformação. Para obter mais informações sobre os requisitos da etapa de transformação, consulte sagemaker.workflow.steps. TransformStepdocumentação.

Pipeline Designer

Para adicionar uma etapa de transformação em lote ao seu pipeline usando o editor drag-and-drop visual, faça o seguinte:

  1. Abra o console do Studio seguindo as instruções emInicie o Amazon SageMaker Studio.

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

  3. Escolha Criar.

  4. Escolha em branco.

  5. Na barra lateral esquerda, escolha Implantar modelo (transformação em lote) e arraste-o até a tela.

  6. Na tela, escolha a etapa Implantar modelo (transformação em lote) que você adicionou.

  7. Na barra lateral direita, preencha os formulários nas guias Configuração e Detalhes. Para obter informações sobre os campos nessas guias, consulte sagemaker.workflow.steps. TransformStep.

  8. Se a tela incluir qualquer etapa que preceda imediatamente a etapa Implantar modelo (transformação em lote) que você adicionou, clique e arraste o cursor da etapa até a etapa Implantar modelo (transformação em lote) para criar uma borda.

  9. Se a tela incluir alguma etapa que suceda imediatamente à etapa Implantar modelo (transformação em lote) que você adicionou, clique e arraste o cursor da etapa Implantar modelo (transformação em lote) até a etapa para criar uma borda.

SageMaker Python SDK
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://amzn-s3-demo-bucket/my-data"), )

Você usa uma etapa de condição para avaliar a condição das propriedades da etapa para avaliar qual ação deve ser tomada em seguida no pipeline.

Uma etapa de condição requer:

  • Uma lista de condições.

  • Uma lista de etapas a serem executadas se a condição for avaliada como. true

  • Uma lista de etapas a serem executadas se a condição for avaliada como. false

Pipeline Designer

Para adicionar uma etapa de condição a um pipeline usando o Pipeline Designer, faça o seguinte:

  1. Abra o console do Amazon SageMaker Studio seguindo as instruções emInicie o Amazon SageMaker Studio.

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

  3. Escolha Criar.

  4. Escolha em branco.

  5. Na barra lateral esquerda, escolha Condição e arraste-a até a tela.

  6. Na tela, escolha a etapa Condição que você adicionou.

  7. Na barra lateral direita, preencha os formulários nas guias Configuração e Detalhes. Para obter informações sobre os campos nessas guias, consulte sagemaker.workflow.condition_step. ConditionStep.

  8. Se a tela incluir qualquer etapa que preceda imediatamente a etapa Condição que você adicionou, clique e arraste o cursor da etapa até a etapa Condição para criar uma borda.

  9. Se a tela incluir alguma etapa que suceda imediatamente à etapa Condição adicionada, clique e arraste o cursor da etapa Condição até a etapa para criar uma borda.

SageMaker Python SDK

O exemplo a seguir mostra como criar uma definição de ConditionStep.

Limitações

  • Os pipelines não suportam o uso de etapas de condição aninhadas. Você não pode passar uma etapa de condição como entrada para outra etapa de condição.

  • Uma etapa de condição não pode usar etapas idênticas nas duas ramificações. Se você precisar da mesma funcionalidade de etapa em ambas as ramificações, duplique a etapa e dê a ela um nome 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 obter mais informações sobre ConditionStep os requisitos, consulte o sagemaker.workflow.condition_step. ConditionStepAPIreferência. Para obter mais informações sobre as condições suportadas, consulte Amazon SageMaker Pipelines - Conditions na documentação do SageMaker SDK Python.

Use uma Callback etapa para adicionar outros processos e AWS serviços ao seu fluxo de trabalho que não são fornecidos diretamente pelo Amazon SageMaker Pipelines. Quando uma etapa Callback é executada, ocorre o seguinte procedimento:

  • O Pipelines envia uma mensagem para uma fila do Amazon Simple Queue Service (AmazonSQS) especificada pelo cliente. A mensagem contém um token gerado pelo Pipelines e uma lista de parâmetros de entrada fornecida pelo cliente. Depois de enviar a mensagem, a Pipelines espera por uma resposta do cliente.

  • O cliente recupera a mensagem da SQS fila da Amazon e inicia seu processo personalizado.

  • Quando o processo termina, o cliente liga para uma das seguintes opções APIs e envia o token gerado pelo Pipelines:

  • A API chamada faz com que os Pipelines continuem o processo do pipeline ou falhem no processo.

Para obter mais informações sobre os requisitos das Callback etapas, consulte sagemaker.workflow.callback_step. CallbackStepdocumentação. Para obter uma solução completa, consulte Estender SageMaker pipelines para incluir etapas personalizadas usando etapas de retorno de chamada.

Importante

Callbacketapas foram introduzidas no Amazon SageMaker Python SDK v2.45.0 e no Amazon SageMaker Studio Classic v3.6.2. Você deve atualizar o Studio Classic antes de usar uma Callback etapa ou o pipeline DAG não será exibido. Para atualizar o Studio Classic, consulteDesligue e atualize o SageMaker Studio Classic.

O exemplo a seguir mostra uma implementação do procedimento 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

Os parâmetros de saída para CallbackStep não devem ser aninhados. Por exemplo, se você usar um dicionário aninhado como parâmetro de saída, o dicionário será tratado como uma única string (ex. {"output1": "{\"nested_output1\":\"my-output\"}"}). Se você fornecer um valor aninhado, ao tentar se referir a um determinado parâmetro de saída, SageMaker gerará um erro de cliente que não pode ser repetido.

Parando o comportamento

Um processo de pipeline não para durante a execução de uma etapa Callback.

Quando você chama StopPipelineExecutionum processo de pipeline com uma Callback etapa em execução, o Pipelines envia uma SQS mensagem da Amazon para a SQS fila. O corpo da SQS mensagem contém um campo Status, que está definido comoStopping. Veja a seguir um exemplo de corpo de SQS mensagem.

{ "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" }

Você deve adicionar lógica ao seu consumidor de SQS mensagens da Amazon para realizar qualquer ação necessária (por exemplo, limpeza de recursos) após o recebimento da mensagem. Em seguida, adicione uma chamada para SendPipelineExecutionStepSuccess ouSendPipelineExecutionStepFailure.

Somente quando o Pipelines recebe uma dessas chamadas, isso interrompe o processo do pipeline.

Você usa uma etapa Lambda para executar uma AWS Lambda função. Você pode executar uma função Lambda existente ou SageMaker criar e executar uma nova função Lambda. Para um notebook que mostra como usar uma etapa do Lambda em um SageMaker pipeline, consulte sagemaker-pipelines-lambda-step .ipynb.

Importante

As etapas do Lambda foram introduzidas no Amazon SageMaker Python v2.51.0 SDK e no Amazon Studio Classic v3.9.1. SageMaker Você deve atualizar o Studio Classic antes de usar uma etapa do Lambda, caso contrário, o pipeline DAG não será exibido. Para atualizar o Studio Classic, consulteDesligue e atualize o SageMaker Studio Classic.

SageMaker fornece a classe SageMaker.lambda_helper.Lambda para criar, atualizar, invocar e excluir funções Lambda. Lambdatem a seguinte assinatura.

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

O sagemaker.workflow.lambda_step. LambdaStepclasse tem um lambda_func argumento do tipoLambda. Para invocar uma função Lambda existente, o único requisito é fornecer o Amazon Resource Name ARN () da função a. function_arn Se você não fornecer um valor para function_arn, deverá especificar handler uma das seguintes opções:

  • zipped_code_dir: o caminho da função do Lambda compactada

    s3_bucket: bucket do Amazon S3 onde zipped_code_dir deve ser carregado

  • script: o caminho do arquivo de script da função do Lambda

O exemplo a seguir mostra como criar uma definição de etapa Lambda que invoca uma função do 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" ] )

O exemplo a seguir mostra como criar uma definição de etapa Lambda que cria e invoca uma função do Lambda usando um script de função do 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 e saídas

Se sua função Lambda tiver entradas ou saídas, elas também devem ser definidas em sua etapa Lambda.

nota

Os parâmetros de entrada e saída não devem ser aninhados. Por exemplo, se você usar um dicionário aninhado como parâmetro de saída, o dicionário será tratado como uma única string (ex. {"output1": "{\"nested_output1\":\"my-output\"}"}). Se você fornecer um valor aninhado e tentar referenciá-lo posteriormente, será gerado um erro de cliente que não pode ser repetido.

Ao definir a etapa Lambda, inputs deve ser um dicionário de pares de valores-chave. Cada valor do inputs dicionário deve ser de um tipo primitivo (string, número inteiro ou flutuante). Não há suporte para objetos aninhados. Se não for definido, o inputs valor padrão será None.

O outputs valor deve ser uma lista de chaves. Essas chaves se referem a um dicionário definido na saída da Lambda função. Por exemplo inputs, essas chaves devem ser de tipos primitivos e não há suporte para objetos aninhados.

Tempo limite e comportamento de parada

A Lambda classe tem um timeout argumento que especifica o tempo máximo que a função do Lambda pode ser executada. O valor padrão é de 120 segundos, com máximo de 10 minutos. Se a função do Lambda estiver em execução quando o tempo limite for atingido, a etapa Lambda falhará; no entanto, a função do Lambda continuará em execução.

Um processo de pipeline não pode ser interrompido enquanto uma etapa do Lambda está em execução porque a função do Lambda invocada pela etapa do Lambda não pode ser interrompida. Se você interromper o processo enquanto a função Lambda estiver em execução, o pipeline aguardará a conclusão da função ou até que o tempo limite seja atingido. Isso depende do que ocorrer primeiro. O processo então é interrompido. Se a função do Lambda terminar, o status do processo do pipeline será Stopped. Se o tempo limite for atingido, o status do processo do pipeline será Failed.

Você pode usar a etapa ClarifyCheck para realizar verificações de oscilação da linha de base em relação às linhas de base anteriores para análise de viés e explicabilidade do modelo. Em seguida, você pode gerar e registrar suas linhas de base com o método model.register() e passar a saída desse método para Etapa do modelo usando step_args. Essas linhas de base para verificação de deriva podem ser usadas pelo Amazon SageMaker Model Monitor para os endpoints do seu modelo. Como resultado, você não precisa fazer uma sugestão básica separadamente.

A etapa ClarifyCheck também pode extrair linhas de base para verificação de oscilação do registro do modelo. A ClarifyCheck etapa usa o contêiner pré-construído SageMaker Clarify. Esse contêiner fornece uma variedade de recursos de monitoramento de modelos, incluindo sugestão de restrições e validação de restrições em relação a uma determinada linha de base. Para obter mais informações, consulte Contêineres SageMaker Clarify pré-construídos.

Configurando a etapa ClarifyCheck

Você pode configurar a etapa ClarifyCheck para realizar somente um dos seguintes tipos de verificação sempre que ela for usada em um pipeline.

  • Verificação de viés de dados

  • Verificação de viés do modelo

  • Verificação da explicabilidade do modelo

Para fazer isso, defina o clarify_check_config parâmetro com um dos seguintes valores de tipo de verificação:

  • DataBiasCheckConfig

  • ModelBiasCheckConfig

  • ModelExplainabilityCheckConfig

A ClarifyCheck etapa inicia uma tarefa de processamento que executa o contêiner pré-construído do SageMaker Clarify e requer configurações dedicadas para a verificação e a tarefa de processamento. ClarifyCheckConfige CheckJobConfig são funções auxiliares para essas configurações. Essas funções auxiliares estão alinhadas com a forma como a tarefa de processamento do SageMaker Clarify calcula para verificar o viés do modelo, o viés de dados ou a explicabilidade do modelo. Para obter mais informações, consulte Execute trabalhos de processamento do SageMaker Clarify para análise de viés e explicabilidade.

Controlar os comportamentos das etapas para verificação de oscilação

A etapa ClarifyCheck requer os dois sinalizadores booleanos a seguir para controlar seu comportamento:

  • skip_check: esse parâmetro indica se a verificação de oscilação em relação à linha de base anterior foi ignorada ou não. Se estiver definido como False, a linha de base anterior do tipo de verificação configurado deverá estar disponível.

  • register_new_baseline: esse parâmetro indica se uma linha de base recém-calculada pode ser acessada por meio da propriedade de etapa BaselineUsedForDriftCheckConstraints. Se estiver definido como False, a linha de base anterior do tipo de verificação configurado também deve estar disponível. Isso pode ser acessado através da propriedade BaselineUsedForDriftCheckConstraints.

Para obter mais informações, consulte Cálculo básico, detecção de desvios, ciclo de vida e ClarifyCheck etapas QualityCheck no Amazon Pipelines SageMaker .

Trabalhar com linhas de base

Opcionalmente, você pode especificar o model_package_group_name para localizar a linha de base existente. Em seguida, a ClarifyCheck etapa extrai o DriftCheckBaselines pacote de modelo aprovado mais recente no grupo de pacotes de modelos.

Ou você pode fornecer uma linha de base anterior por meio do parâmetro supplied_baseline_constraints. Se você especificar o model_package_group_name e o supplied_baseline_constraints, a etapa ClarifyCheck usará a linha de base especificada pelo parâmetro supplied_baseline_constraints.

Para obter mais informações sobre como usar os requisitos das ClarifyCheck etapas, consulte sagemaker.workflow.steps. ClarifyCheckStepna Amazon SageMaker SageMaker SDK para Python. Para um notebook Amazon SageMaker Studio Classic que mostra como usar o ClarifyCheck step in Pipelines, consulte sagemaker-pipeline-model-monitor-clarify-steps.ipynb.

exemplo Crie uma etapa ClarifyCheck para verificação de viés de dados
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" )

Use a QualityCheck etapa para realizar sugestões de linha de base e verificar o desvio em relação a uma linha de base anterior para verificar a qualidade dos dados ou a qualidade do modelo em um pipeline. Em seguida, você pode gerar e registrar suas linhas de base com o model.register() método e passar a saída desse método para Etapa do modelo usingstep_args.]

O Model Monitor pode usar essas linhas de base para verificar a oscilação dos endpoints do modelo, para que você não precise fazer uma sugestão de linha de base separadamente. A etapa QualityCheck também pode extrair linhas de base para verificação de oscilação do registro do modelo. A QualityCheck etapa aproveita o contêiner pré-construído Amazon SageMaker Model Monitor. Esse contêiner tem uma variedade de recursos de monitoramento de modelos, incluindo sugestão de restrições, geração de estatísticas e validação de restrições em relação a uma linha de base. Para obter mais informações, consulte Contêiner pré-construído Amazon SageMaker Model Monitor.

Configurando a etapa QualityCheck

Você pode configurar a QualityCheck etapa para executar somente um dos seguintes tipos de verificação sempre que ela for usada em um pipeline.

  • Verificação de qualidade de dados

  • Verificação de qualidade do modelo

Para fazer isso, defina o parâmetro quality_check_config com um dos seguintes valores de tipo de verificação:

  • DataQualityCheckConfig

  • ModelQualityCheckConfig

A etapa QualityCheck inicia um trabalho de processamento que executa o contêiner pré-construído do Model Monitor e requer configurações dedicadas para a verificação e o trabalho de processamento. As QualityCheckConfig e CheckJobConfig são funções auxiliares para essas configurações. Essas funções auxiliares estão alinhadas com a forma como o Model Monitor cria uma linha de base para a qualidade do modelo ou o monitoramento da qualidade dos dados. Para obter mais informações sobre as sugestões de linha de base do Model Monitor, consulte Criar uma linha de base e Crie uma linha de base de qualidade do modelo.

Controlar os comportamentos das etapas para verificação de oscilação

A etapa QualityCheck requer os dois sinalizadores booleanos a seguir para controlar seu comportamento:

  • skip_check: esse parâmetro indica se a verificação de oscilação em relação à linha de base anterior foi ignorada ou não. Se estiver definido como False, a linha de base anterior do tipo de verificação configurado deverá estar disponível.

  • register_new_baseline: esse parâmetro indica se uma linha de base recém-calculada pode ser acessada por meio das propriedades da etapa BaselineUsedForDriftCheckConstraints e BaselineUsedForDriftCheckStatistics. Se estiver definido como False, a linha de base anterior do tipo de verificação configurado também deve estar disponível. Eles podem ser acessados por meio das propriedades BaselineUsedForDriftCheckConstraints e BaselineUsedForDriftCheckStatistics.

Para obter mais informações, consulte Cálculo básico, detecção de desvios, ciclo de vida e ClarifyCheck etapas QualityCheck no Amazon Pipelines SageMaker .

Trabalhar com linhas de base

Você pode especificar uma linha de base anterior diretamente por meio dos supplied_baseline_constraints parâmetros supplied_baseline_statistics e. Você também pode especificar model_package_group_name e a QualityCheck etapa extrai o DriftCheckBaselines pacote de modelo aprovado mais recente no grupo de pacotes de modelos.

Quando você especifica o seguinte, a QualityCheck etapa usa a linha de base especificada por supplied_baseline_constraints e supplied_baseline_statistics no tipo de verificação da QualityCheck etapa.

  • model_package_group_name

  • supplied_baseline_constraints

  • supplied_baseline_statistics

Para obter mais informações sobre como usar os requisitos das QualityCheck etapas, consulte sagemaker.workflow.steps. QualityCheckStepna Amazon SageMaker SageMaker SDK para Python. Para um notebook Amazon SageMaker Studio Classic que mostra como usar o QualityCheck step in Pipelines, consulte sagemaker-pipeline-model-monitor-clarify-steps.ipynb.

exemplo Crie uma etapa QualityCheck para verificação da qualidade dos dados
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" )

Use a EMRetapa do Amazon SageMaker Pipelines para:

  • Processe EMRas etapas da Amazon em um EMR cluster da Amazon em execução.

  • Faça com que o pipeline crie e gerencie um EMR cluster da Amazon para você.

Para obter mais informações sobre a AmazonEMR, consulte Introdução à Amazon EMR.

A EMR etapa exige que EMRStepConfig inclua a localização do JAR arquivo usado pelo EMR cluster da Amazon e quaisquer argumentos a serem passados. Você também fornece o ID do EMR cluster da Amazon se quiser executar a etapa em um EMR cluster em execução. Você também pode passar a configuração do cluster para executar a EMR etapa em um cluster que ele cria, gerencia e encerra para você. As seções a seguir incluem exemplos e links para exemplos de cadernos que demonstram os dois métodos.

nota
  • EMRas etapas exigem que a função passada para seu pipeline tenha permissões adicionais. Anexe a política AWS gerenciada: AmazonSageMakerPipelinesIntegrations à sua função de pipeline ou garanta que a função inclua as permissões dessa política.

  • EMRa etapa não é suportada no EMR serverless. Também não é compatível com a Amazon EMR emEKS.

  • Se você processar uma EMR etapa em um cluster em execução, só poderá usar um cluster que esteja em um dos seguintes estados:

    • STARTING

    • BOOTSTRAPPING

    • RUNNING

    • WAITING

  • Se você processa EMR etapas em um cluster em execução, poderá ter no máximo 256 EMR etapas em um PENDING estado em um EMR cluster. EMRetapas enviadas além desse limite resultam em falha na execução do pipeline. Você pode considerar usar Política de repetição para etapas do pipeline.

  • Você pode especificar o ID ou a configuração do cluster, mas não ambos.

  • A EMR etapa depende da Amazon EventBridge para monitorar as mudanças na EMR etapa ou no estado do cluster. Se você processa seu EMR trabalho da Amazon em um cluster em execução, a EMR etapa usa a SageMakerPipelineExecutionEMRStepStatusUpdateRule regra para monitorar o estado da EMR etapa. Se você processar seu trabalho em um cluster criado pela EMR etapa, a etapa usará a SageMakerPipelineExecutionEMRClusterStatusRule regra para monitorar as alterações no estado do cluster. Se você encontrar alguma dessas EventBridge regras em sua AWS conta, não as exclua, caso contrário, sua EMR etapa poderá não ser concluída.

Inicie um novo trabalho em um EMR cluster da Amazon em execução

Para iniciar um novo trabalho em um EMR cluster da Amazon em execução, passe o ID do cluster como uma string para o cluster_id argumento deEMRStep. O exemplo a seguir demonstra esse procedimento.

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 um exemplo de notebook que orienta você em um exemplo completo, consulte Pipelines EMR Step With Running EMR Cluster.

Inicie um novo trabalho em um novo EMR cluster da Amazon

Para iniciar um novo trabalho em um novo cluster EMRStep criado para você, forneça sua configuração de cluster como um dicionário. O dicionário deve ter a mesma estrutura de uma RunJobFlowsolicitação. No entanto, não inclua os seguintes campos na configuração do cluster:

  • [Name]

  • [Steps]

  • [AutoTerminationPolicy]

  • [Instances][KeepJobFlowAliveWhenNoSteps]

  • [Instances][TerminationProtected]

Todos os outros argumentos RunJobFlow estão disponíveis para uso na configuração do cluster. Para obter detalhes sobre a sintaxe da solicitação, consulte RunJobFlow.

O exemplo a seguir passa uma configuração de cluster para uma definição de EMR etapa. Isso indica a etapa para iniciar um novo trabalho em um novo EMR cluster. A configuração do EMR cluster neste exemplo inclui especificações para os nós principais e principais EMR do cluster. Para obter mais informações sobre os tipos de EMR nós da Amazon, consulte Compreender os tipos de nós: nós primários, principais e de tarefas.

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 uma amostra de caderno que orienta você em um exemplo completo, consulte Pipelines EMR Step With Cluster Lifecycle Management.

Use a NotebookJobStep para executar seu SageMaker Notebook Job de forma não interativa como uma etapa do pipeline. Se você criar seu pipeline na drag-and-drop interface do Pipelines, use o Etapa de execução do código para executar seu notebook. Para obter mais informações sobre trabalhos do SageMaker Notebook, consulteSageMaker Empregos em notebooks.

A NotebookJobStep requer no mínimo uma entrada de caderno, imagem URI e nome do kernel. Para obter mais informações sobre os requisitos da etapa do Notebook Job e outros parâmetros que você pode definir para personalizar sua etapa, consulte sagemaker.workflow.steps. NotebookJobStep.

O exemplo a seguir usa argumentos mínimos para definir umNotebookJobStep.

from sagemaker.workflow.notebook_job_step import NotebookJobStep notebook_job_step = NotebookJobStep( input_notebook=input_notebook, image_uri=image_uri, kernel_name=kernel_name )

Sua etapa do NotebookJobStep pipeline é tratada como uma tarefa de SageMaker notebook. Como resultado, acompanhe o status de execução no painel de tarefas do notebook Studio Classic UI incluindo tags específicas com o tags argumento. Para obter mais detalhes sobre as tags a serem incluídas, consulteVisualize suas tarefas de notebook no painel do Studio UI.

Além disso, se você agendar o trabalho do notebook usando o SageMaker PythonSDK, só poderá especificar determinadas imagens para executar o trabalho do notebook. Para obter mais informações, consulte Restrições de imagem para trabalhos em notebooks Python SageMaker SDK.

Use uma etapa de falha para interromper a execução do Amazon SageMaker Pipelines quando a condição ou o estado desejado não for alcançado. A etapa Falha também permite que você insira uma mensagem de erro personalizada, indicando a causa da falha na execução do pipeline.

nota

Quando uma etapa de falha e outras etapas do pipeline são executadas ao mesmo tempo, o pipeline não termina até que todas as etapas simultâneas sejam concluídas.

Limitações para usar a etapa Fail

  • Você não pode adicionar uma etapa de falha à DependsOn lista de outras etapas. Para obter mais informações, consulte Dependência personalizada entre as etapas.

  • Outras etapas não podem fazer referência à etapa Falha. É sempre a última etapa na execução de um pipeline.

  • Você não pode repetir a execução de um pipeline que termine com uma etapa de falha.

Você pode criar a mensagem de erro da etapa de falha na forma de uma sequência de texto estática. Como alternativa, você também pode usar parâmetros de pipeline, uma operação de junção ou outras propriedades da etapa para criar uma mensagem de erro mais informativa se você usar o. SDK

Pipeline Designer

Para adicionar uma etapa de falha ao seu pipeline, faça o seguinte:

  1. Abra o console do Studio seguindo as instruções emInicie o Amazon SageMaker Studio.

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

  3. Escolha Criar.

  4. Escolha em branco.

  5. Na barra lateral esquerda, escolha Falha e arraste-a para a tela.

  6. Na tela, escolha a etapa Falha que você adicionou.

  7. Na barra lateral direita, preencha os formulários nas guias Configuração e Detalhes. Para obter informações sobre os campos nessas guias, consulte sagemaker.workflow.fail_step. FailStep.

  8. Se a tela incluir qualquer etapa que preceda imediatamente a etapa Falha que você adicionou, clique e arraste o cursor da etapa até a etapa Falha para criar uma borda.

  9. Se a tela incluir alguma etapa que suceda imediatamente à etapa Falha que você adicionou, clique e arraste o cursor da etapa Falha até a etapa para criar uma borda.

SageMaker Python SDK

O exemplo de trecho de código a seguir usa um FailStep com um ErrorMessage configurado com parâmetros de pipeline e uma Join operação.

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] ), )