

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

# SageMaker Fluxos de trabalho de IA
<a name="workflows"></a>

Ao escalar suas operações de aprendizado de máquina (ML), você pode usar os serviços de fluxo de trabalho totalmente gerenciados da Amazon SageMaker AI para implementar práticas de integração e implantação contínuas (CI/CD) para seu ciclo de vida de ML. Com o Pipelines SDK, é possível escolher e integrar as etapas do pipeline em uma solução unificada que automatiza o processo de criação do modelo, desde a preparação dos dados até a implantação do modelo. Para arquiteturas baseadas em Kubernetes, você pode instalar operadores de IA em seu cluster Kubernetes para criar trabalhos de SageMaker IA de forma nativa usando a SageMaker API Kubernetes e ferramentas de linha de comando do Kubernetes, como. `kubectl` Com componentes de SageMaker IA para pipelines Kubeflow, você pode criar e monitorar trabalhos de SageMaker IA nativos a partir de seus pipelines Kubeflow. Os parâmetros, o status e as saídas do trabalho da SageMaker IA podem ser acessados na interface do usuário do Kubeflow Pipelines. Por fim, se quiser agendar trabalhos em lotes, você pode usar a integração da fila de trabalhos ou o serviço de fluxos de AWS Batch trabalho baseado no notebook Jupyter para iniciar execuções autônomas ou regulares em um cronograma definido por você.

Em resumo, a SageMaker IA oferece as seguintes tecnologias de fluxo de trabalho:
+ [Pipelines](pipelines.md): ferramenta para criar e gerenciar pipelines de ML.
+ [Orquestração do Kubernetes](kubernetes-workflows.md): operadores personalizados de SageMaker IA para seu cluster Kubernetes e componentes para o Kubeflow Pipelines.
+ [SageMaker Empregos em notebooks](notebook-auto-run.md): execuções em lote não interativas sob demanda ou programadas do seu caderno Jupyter.

Você também pode aproveitar outros serviços que se integram à SageMaker IA para criar seu fluxo de trabalho. As opções incluem os seguintes serviços:
+ [Fluxos de trabalho do Airflow](https://sagemaker.readthedocs.io/en/stable/workflows/airflow/index.html): SageMaker APIs para exportar configurações para criar e gerenciar fluxos de trabalho do Airflow.
+ [AWS Step Functions](https://sagemaker.readthedocs.io/en/stable/workflows/step_functions/index.html): fluxos de trabalho de ML em várias etapas em Python que orquestram a infraestrutura de SageMaker IA sem precisar provisionar seus recursos separadamente.
+ [AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/getting-started-sagemaker.html): envie trabalhos de treinamento de SageMaker IA para uma fila de AWS Batch trabalhos, onde você pode priorizar e programar trabalhos para execução em um ambiente computacional.

Para obter mais informações sobre o gerenciamento de SageMaker treinamento e inferência, consulte Fluxos de trabalho do [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/workflows/index.html).

**Topics**
+ [Pipelines](pipelines.md)
+ [Orquestração do Kubernetes](kubernetes-workflows.md)
+ [SageMaker Empregos em notebooks](notebook-auto-run.md)
+ [Programe seus fluxos de trabalho de ML](workflow-scheduling.md)
+ [AWS Batch suporte para trabalhos de treinamento em SageMaker IA](training-job-queues.md)

# Pipelines
<a name="pipelines"></a>

O Amazon SageMaker Pipelines é um serviço de orquestração de fluxo de trabalho desenvolvido especificamente para automatizar o desenvolvimento de aprendizado de máquina (ML).

Os pipelines oferecem as seguintes vantagens em relação a outras ofertas de AWS fluxo de trabalho:

**Infraestrutura sem servidor com escalabilidade automática Você não precisa gerenciar a infraestrutura** de orquestração subjacente para executar o Pipelines, o que permite que você se concentre nas principais tarefas de ML. SageMaker A IA provisiona, escala e desliga automaticamente os recursos computacionais de orquestração do pipeline conforme sua carga de trabalho de ML exige.

**Experiência intuitiva do usuário** Os pipelines podem ser criados e gerenciados por meio da interface de sua escolha: editor visual, SDK ou APIs JSON. Você pode executar drag-and-drop as várias etapas de ML para criar seus pipelines na interface visual do Amazon SageMaker Studio. A captura de tela a seguir mostra o editor visual do Studio para pipelines.

![\[Captura de tela da drag-and-drop interface visual do Pipelines no Studio.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


Se você preferir gerenciar seus fluxos de trabalho de ML programaticamente, o SDK do SageMaker Python oferece recursos avançados de orquestração. Para obter mais informações, consulte [Amazon SageMaker Pipelines](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html) na documentação do SageMaker Python SDK.

**AWS integrações** Os pipelines fornecem integração perfeita com todos os recursos de SageMaker IA e outros AWS serviços para automatizar o processamento de dados, o treinamento de modelos, o ajuste fino, a avaliação, a implantação e os trabalhos de monitoramento. Você pode incorporar os recursos de SageMaker IA em seus pipelines e navegar por eles usando links diretos para criar, monitorar e depurar seus fluxos de trabalho de ML em grande escala.

**Custos reduzidos** Com o Pipelines, você paga apenas pelo ambiente SageMaker Studio e pelas tarefas subjacentes que são orquestradas pelos Pipelines (por exemplo, SageMaker treinamento, SageMaker processamento, inferência de SageMaker IA e armazenamento de dados do Amazon S3).

**Capacidade de auditoria e rastreamento de linhagem**: com o Pipelines, você pode acompanhar o histórico de atualizações e execuções de pipeline usando o versionamento integrado. O Amazon SageMaker ML Lineage Tracking ajuda você a analisar as fontes de dados e os consumidores de dados no ciclo de vida de desenvolvimento do end-to-end ML.

**Topics**
+ [Visão geral do Pipelines](pipelines-overview.md)
+ [Ações de pipelines](pipelines-build.md)

# Visão geral do Pipelines
<a name="pipelines-overview"></a>

[Um pipeline de SageMaker IA da Amazon é uma série de etapas interconectadas no gráfico acíclico direcionado (DAG) que são definidas usando a interface do usuário ou o SDK do drag-and-drop Pipelines.](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html) Você também pode criar seu pipeline usando o [esquema JSON de definição de pipeline](https://aws-sagemaker-mlops.github.io/sagemaker-model-building-pipeline-definition-JSON-schema/). Esse DAG JSON fornece informações sobre os requisitos e as relações entre cada etapa do seu pipeline. A estrutura do DAG de um pipeline é determinada pelas dependências de dados entre as etapas. Essas dependências de dados são criadas quando as propriedades da saída de uma etapa são passadas como entrada para outra etapa. A imagem a seguir é um exemplo de DAG de pipeline:

![\[\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/pipeline-full.png)


**O exemplo inclui as seguintes etapas:**

1. `AbaloneProcess`, uma instância da etapa de [processamento](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-processing), executa um script de pré-processamento nos dados usados para treinamento. Por exemplo, o script pode preencher valores ausentes, normalizar dados numéricos ou dividir dados nos conjuntos de dados de treinamento, validação e teste.

1. `AbaloneTrain`, uma instância da etapa de [treinamento](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-training), configura hiperparâmetros e treina um modelo a partir dos dados de entrada pré-processados.

1. `AbaloneEval`, outra instância da etapa de [processamento](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-processing), avalia a precisão do modelo. Esta etapa mostra um exemplo de dependência de dados: usa a saída do conjunto de dados de teste do `AbaloneProcess`.

1. `AbaloneMSECond`é uma instância de uma etapa de [condição](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-condition) que, neste exemplo, verifica se o mean-square-error resultado da avaliação do modelo está abaixo de um determinado limite. Se o modelo não atender aos critérios, o funcionamento do pipeline é interrompido.

1. A execução do pipeline prossegue com as seguintes etapas:

   1. `AbaloneRegisterModel`, em que a SageMaker IA exige uma [RegisterModel](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-register-model)etapa para registrar o modelo como um grupo de pacotes de modelos versionados no Amazon SageMaker Model Registry.

   1. `AbaloneCreateModel`, em que a SageMaker IA exige uma [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-create-model)etapa para criar o modelo em preparação para a transformação em lote. Em`AbaloneTransform`, a SageMaker IA chama uma etapa de [transformação](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-transform) para gerar previsões de modelo em um conjunto de dados especificado por você.

Os tópicos a seguir descrevem conceitos fundamentais do Pipelines. Para obter um tutorial descrevendo a implementação desses conceitos, consulte [Ações de pipelines](pipelines-build.md).

**Topics**
+ [Estrutura e execução do pipeline](build-and-manage-pipeline.md)
+ [Gerenciamento de acesso do IAM](build-and-manage-access.md)
+ [Configurar a compatibilidade entre contas para o Pipelines](build-and-manage-xaccount.md)
+ [Parâmetros de pipeline](build-and-manage-parameters.md)
+ [Etapas do Pipelines](build-and-manage-steps.md)
+ [Lift-and-shift Código Python com o decorador @step](pipelines-step-decorator.md)
+ [Passe dados entre etapas](build-and-manage-propertyfile.md)
+ [Etapas do pipeline de cache](pipelines-caching.md)
+ [Política de repetição para etapas do pipeline](pipelines-retry-policy.md)
+ [Execução seletiva das etapas do pipeline](pipelines-selective-ex.md)
+ [Cálculo básico, detecção de desvios, ciclo de vida e ClarifyCheck etapas QualityCheck no Amazon Pipelines SageMaker](pipelines-quality-clarify-baseline-lifecycle.md)
+ [Programar execuções de pipeline](pipeline-eventbridge.md)
+ [Integração SageMaker com Amazon Experiments](pipelines-experiments.md)
+ [Executar pipelines usando o modo local](pipelines-local-mode.md)
+ [Solução de problemas do Amazon SageMaker Pipelines](pipelines-troubleshooting.md)

# Estrutura e execução do pipeline
<a name="build-and-manage-pipeline"></a>

**Topics**
+ [Estrutura do pipeline](#build-and-manage-pipeline-structure)
+ [Execução de pipeline usando configuração de paralelismo](#build-and-manage-pipeline-execution)

## Estrutura do pipeline
<a name="build-and-manage-pipeline-structure"></a>

Uma instância do Amazon SageMaker Pipelines é composta por um `name``parameters`, e. `steps` Os nomes dos pipelines devem ser exclusivos dentro de um par `(account, region)`. Todos os parâmetros usados nas definições de etapas devem ser definidos no pipeline. As etapas do pipeline listadas determinam automaticamente sua ordem de execução de acordo com as dependências de dados de umas com as outras. O serviço do Pipelines resolve as relações entre as etapas no DAG de dependência de dados para criar uma série de etapas que a execução conclui. Veja a seguir um exemplo de uma estrutura de pipeline:

**Atenção**  
Ao criar um pipeline por meio do editor visual ou do SageMaker AI Python SDK, não inclua informações confidenciais nos parâmetros do pipeline ou em qualquer campo de definição de etapa (como variáveis de ambiente). Esses campos ficarão visíveis no futuro quando exibidos em uma solicitação `DescribePipeline`.

```
from sagemaker.workflow.pipeline import Pipeline
  
  pipeline_name = f"AbalonePipeline"
  pipeline = Pipeline(
      name=pipeline_name,
      parameters=[
          processing_instance_type, 
          processing_instance_count,
          training_instance_type,
          model_approval_status,
          input_data,
          batch_data,
      ],
      steps=[step_process, step_train, step_eval, step_cond],
  )
```

## Execução de pipeline usando configuração de paralelismo
<a name="build-and-manage-pipeline-execution"></a>

Por padrão, um pipeline executa todas as etapas disponíveis para execução paralela. Você pode controlar esse comportamento usando a propriedade `ParallelismConfiguration` ao criar ou atualizar um pipeline, bem como ao iniciar ou tentar a execução de um pipeline novamente. 

As configurações de paralelismo são aplicadas por execução. Por exemplo, se duas execuções forem iniciadas, cada uma poderá executar no máximo 50 etapas simultaneamente, totalizando 100 etapas em execução simultânea. Além disso, as `ParallelismConfiguration`s especificadas ao iniciar, tentar novamente ou atualizar uma execução têm precedência sobre as configurações de paralelismo definidas no pipeline.

**Example Criar uma execução de pipeline com `ParallelismConfiguration`**  

```
pipeline = Pipeline(
        name="myPipeline",
        steps=[step_process, step_train]
    )

  pipeline.create(role, parallelism_config={"MaxParallelExecutionSteps": 50})
```

# Gerenciamento de acesso do IAM
<a name="build-and-manage-access"></a>

As seções a seguir descrevem os requisitos AWS Identity and Access Management (IAM) do Amazon SageMaker Pipelines. Para obter um exemplo de como você pode implementar essas permissões, consulte [Pré-requisitos](define-pipeline.md#define-pipeline-prereq).

**Topics**
+ [Permissões de perfil de pipeline](#build-and-manage-role-permissions)
+ [Permissões de etapa de pipeline](#build-and-manage-step-permissions)
+ [Configuração do CORS com buckets do Amazon S3](#build-and-manage-cors-s3)
+ [Personalizar o gerenciamento de acesso para trabalhos do Pipelines](#build-and-manage-step-permissions-prefix)
+ [Personalizar o acesso a versões do pipeline](#build-and-manage-step-permissions-version)
+ [Políticas de controle de serviço com pipelines](#build-and-manage-scp)

## Permissões de perfil de pipeline
<a name="build-and-manage-role-permissions"></a>

Seu pipeline exige uma função de execução do pipeline do IAM que é passada para os pipelines quando você cria um pipeline. A função da instância de SageMaker IA que você está usando para criar o pipeline deve ter uma política com a `iam:PassRole` permissão que especifique a função de execução do pipeline. Isso ocorre porque a instância precisa de permissão para passar sua função de execução de pipeline para o serviço Pipelines para uso na criação e execução de pipelines. Para obter mais informações sobre perfis do IAM, consulte [Perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

Seu perfil de execução de pipeline requer as seguintes permissões:
+ Você pode usar uma função exclusiva ou personalizada para qualquer uma das etapas do trabalho de SageMaker IA em seu pipeline (em vez da função de execução do pipeline, que é usada por padrão). Certifique-se de que sua função de execução de pipeline tenha adicionado uma política com a `iam:PassRole` permissão que especifica cada uma dessas funções.
+  Permissões `Create` e `Describe` para cada um dos tipos de trabalho no pipeline. 
+  Permissões do Amazon S3 para usar o perfil `JsonGet`. Você pode controlar o acesso aos recursos do Amazon S3 usando uma política baseada em identidade ou em recursos. Uma política baseada em recursos é aplicada ao bucket do Amazon S3 para que o Pipelines possa ter acesso a ele. Uma política baseada em identidade dá ao seu pipeline a capacidade de fazer chamadas para o Amazon S3 a partir da sua conta. Para obter mais informações sobre as políticas baseadas em identidades e em recursos, consulte [Políticas baseadas em identidade e em recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html). 

  ```
  {
      "Action": [
          "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::<your-bucket-name>/*",
      "Effect": "Allow"
  }
  ```

## Permissões de etapa de pipeline
<a name="build-and-manage-step-permissions"></a>

Os pipelines incluem etapas que executam trabalhos de SageMaker IA. Para que as etapas do pipeline executem esses trabalhos, elas exigem um perfil do IAM em sua conta que forneça acesso ao recurso necessário. Essa função é passada para o diretor do serviço de SageMaker IA pelo seu pipeline. Para obter mais informações sobre perfis do IAM, consulte [Perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html). 

Por padrão, cada etapa assume o perfil de execução do pipeline. Opcionalmente, você pode transmitir um perfil diferente para qualquer uma das etapas do seu pipeline. Isso garante que o código em cada etapa não tenha a capacidade de impactar os recursos usados em outras etapas, a menos que haja uma relação direta entre as duas etapas especificadas na definição do pipeline. Você transmite esses perfis ao definir o processador ou o estimador para sua etapa. Para ver exemplos de como incluir essas funções nessas definições, consulte a documentação do [SDK para SageMaker AI Python](https://sagemaker.readthedocs.io/en/stable/overview.html#using-estimators). 

## Configuração do CORS com buckets do Amazon S3
<a name="build-and-manage-cors-s3"></a>

Para garantir que suas imagens sejam importadas para seus pipelines por meio de um bucket do Amazon S3 de forma previsível, uma configuração do CORS deve ser adicionada aos buckets do Amazon S3 de onde as imagens são importadas. Esta seção apresenta instruções sobre como definir a configuração do CORS necessária para seu bucket do Amazon S3. O XML `CORSConfiguration` necessário para o Pipelines é diferente daquele em [Requisito do CORS para dados de imagem de entrada](sms-cors-update.md). Do contrário, você pode usar as informações contidas lá para saber mais sobre o requisito do CORS com buckets do Amazon S3.

Use o código de configuração do CORS a seguir para os buckets do Amazon S3 que hospedam as imagens. Para ter instruções sobre como configurar o CORS, consulte [Configurar o compartilhamento de recursos de origem cruzada (CORS)](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-cors-configuration.html) no “Guia do usuário do Amazon Simple Storage Service”. Se você usar o console do Amazon S3 para adicionar a política ao bucket, deverá usar o formato JSON.

**JSON**

```
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "Access-Control-Allow-Origin"
        ]
    }
]
```

**XML**

```
<CORSConfiguration>
 <CORSRule>
   <AllowedHeader>*</AllowedHeader>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>PUT</AllowedMethod>
   <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
 </CORSRule>
</CORSConfiguration>
```

O seguinte GIF demonstra as instruções encontradas na documentação do Amazon S3 para adicionar uma política de cabeçalho CORS usando o console do Amazon S3:

![\[Gif de como adicionar uma política de cabeçalho CORS usando o console do Amazon S3.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/sms/gifs/cors-config.gif)


## Personalizar o gerenciamento de acesso para trabalhos do Pipelines
<a name="build-and-manage-step-permissions-prefix"></a>

Você pode personalizar ainda mais suas políticas do IAM para que membros selecionados em sua organização possam executar qualquer uma ou todas as etapas do pipeline. Por exemplo, você pode dar permissão a determinados usuários para criar trabalhos de treinamento, a outro grupo de usuários permissão para criar trabalhos de processamento e a todos os seus usuários permissão para executar as etapas restantes. Para usar esse atributo, selecione uma string personalizada que prefixa o nome do seu trabalho. Seu administrador acrescenta o prefixo ao permitido ARNs , enquanto seu cientista de dados inclui esse prefixo nas instanciações do pipeline. Como a política do IAM para usuários permitidos contém um ARN do trabalho com o prefixo especificado, os trabalhos subsequentes da etapa do pipeline têm as permissões necessárias para continuar. O prefixo do trabalho está desativado por padrão: você deve ativar essa opção em sua classe `Pipeline` para usá-la. 

Para trabalhos com prefixo desativado, o nome do trabalho é formatado conforme mostrado e é uma concatenação de campos descritos na tabela a seguir:

`pipelines-<executionId>-<stepNamePrefix>-<entityToken>-<failureCount>`


| Campo | Definição | 
| --- | --- | 
|  pipelines   |  Uma string estática sempre prefixada. Essa string identifica o serviço de orquestração do pipeline como a origem do trabalho.  | 
|  executionId  |  Um buffer aleatório para a instância em execução do pipeline.  | 
|  stepNamePrefix  |  O nome da etapa especificada pelo usuário (fornecido no argumento `name` da etapa do pipeline), limitado aos primeiros 20 caracteres.  | 
|  entityToken  |  Um token aleatório para garantir a idempotência da entidade da etapa.  | 
|  failureCount  |  O número atual de novas tentativas para concluir o trabalho.  | 

Nesse caso, nenhum prefixo personalizado é anexado ao nome do trabalho e a política do IAM correspondente deve corresponder a essa string.

Para usuários que ativam o prefixo do trabalho, o nome do trabalho subjacente assume o seguinte formato, com o prefixo personalizado especificado como `MyBaseJobName`:

*<MyBaseJobName>*-*<executionId>*-*<entityToken>*-*<failureCount>*

O prefixo personalizado substitui a `pipelines` string estática para ajudar você a restringir a seleção de usuários que podem executar o trabalho de SageMaker IA como parte de um pipeline.

**Restrições de comprimento de prefixo**

Os nomes dos trabalhos têm restrições internas de comprimento específicas para etapas individuais do pipeline. Essa restrição também limita o comprimento do prefixo permitido. Os requisitos de comprimento do prefixo são os seguintes:


| Etapa de pipeline | Comprimento do prefixo | 
| --- | --- | 
|   `[TrainingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#trainingstep)`, `[ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`, `[TransformStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#transformstep)`, `[ProcessingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#processingstep)`, `[ClarifyCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#clarifycheckstep)`, `[QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#qualitycheckstep)`, `[RegisterModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`   |  38  | 
|  `[TuningStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#tuningstep)`, `[AutoML](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#automlstep)`  |  6  | 

### Aplique prefixos de trabalho a uma política do IAM
<a name="build-and-manage-step-permissions-prefix-iam"></a>

Seu administrador cria políticas do IAM, permitindo que usuários de prefixos específicos criem trabalhos. O exemplo de política a seguir permite que cientistas de dados criem trabalhos de treinamento se usarem o prefixo `MyBaseJobName`. 

```
{
    "Action": "sagemaker:CreateTrainingJob",
    "Effect": "Allow",
    "Resource": [
        "arn:aws:sagemaker:region:account-id:*/MyBaseJobName-*"
    ]
}
```

### Aplicar prefixos de trabalho às instanciações do pipeline
<a name="build-and-manage-step-permissions-prefix-inst"></a>

Especifique seu prefixo com o argumento `*base_job_name` da classe da instância de trabalho.

**nota**  
Transmita o prefixo do trabalho com o argumento `*base_job_name` para a instância do trabalho antes de criar uma etapa do pipeline. Essa instância de trabalho contém as informações necessárias para que o trabalho seja executado como uma etapa em um pipeline. Esse argumento varia de acordo com a instância de trabalho usada. A seguinte lista mostra qual argumento usar para cada tipo de etapa do pipeline:  
`base_job_name` para as classes `[Estimator](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html)` (`[TrainingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#trainingstep)`), `[Processor](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html)` (`[ProcessingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#processingstep)`) e `[AutoML](https://sagemaker.readthedocs.io/en/stable/api/training/automl.html)` (`[AutoMLStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#automlstep)`)
`tuning_base_job_name` para a classe `[Tuner](https://sagemaker.readthedocs.io/en/stable/api/training/tuner.html)` (`[TuningStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#tuningstep)`)
`transform_base_job_name` para a classe `[Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html)` (`[TransformStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#transformstep)`)
`base_job_name` de `[CheckJobConfig](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#checkjobconfig)` para as classes `[QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#qualitycheckstep)` (Quality Check) e `[ClarifyCheckstep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#clarifycheckstep)` (Clarify Check)
Para a classe `[Model](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html)`, o argumento usado depende de você executar `create` ou `register` no seu modelo antes de transmitir o resultado para `[ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`  
Se você chamar `create`, o prefixo personalizado virá do argumento `name` quando você construir seu modelo (ou seja, `Model(name=)`)
Se você chamar `register`, o prefixo personalizado virá do argumento `model_package_name` da sua chamada para `register` (ou seja, `my_model.register(model_package_name=)`)

O exemplo a seguir mostra como especificar um prefixo para uma nova instância do trabalho de treinamento.

```
# Create a job instance
xgb_train = Estimator(
    image_uri=image_uri,
    instance_type="ml.m5.xlarge",
    instance_count=1,
    output_path=model_path,
    role=role,
    subnets=["subnet-0ab12c34567de89f0"],
    base_job_name="MyBaseJobName"
    security_group_ids=["sg-1a2bbcc3bd4444e55"],
    tags = [ ... ]
    encrypt_inter_container_traffic=True, 
)

# Attach your job instance to a pipeline step
step_train = TrainingStep(
    name="TestTrainingJob",
    estimator=xgb_train, 
    inputs={
        "train": TrainingInput(...), 
        "validation": TrainingInput(...) 
    }
)
```

O prefixo do trabalho está desativado por padrão. Para optar por esse atributo, use a opção `use_custom_job_prefix` de `PipelineDefinitionConfig` conforme mostrado no trecho a seguir:

```
from sagemaker.workflow.pipeline_definition_config import PipelineDefinitionConfig
        
# Create a definition configuration and toggle on custom prefixing
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True);

# Create a pipeline with a custom prefix
 pipeline = Pipeline(
     name="MyJobPrefixedPipeline",
     parameters=[...]
     steps=[...]
     pipeline_definition_config=definition_config
)
```

Criar e executar seu pipeline. O exemplo a seguir cria e executa um pipeline e também demonstra como você pode desativar o prefixo de trabalhos e executá-lo novamente.

```
pipeline.create(role_arn=sagemaker.get_execution_role())

# Optionally, call definition() to confirm your prefixed job names are in the built JSON
pipeline.definition()
pipeline.start()
      
# To run a pipeline without custom-prefixes, toggle off use_custom_job_prefix, update the pipeline 
# via upsert() or update(), and start a new run
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=False)
pipeline.pipeline_definition_config = definition_config
pipeline.update()
execution = pipeline.start()
```

Da mesma forma, você pode ativar o atributo para pipelines existentes e iniciar uma nova execução que usa prefixos de trabalho.

```
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True)
pipeline.pipeline_definition_config = definition_config
pipeline.update()
execution = pipeline.start()
```

Por fim, você pode visualizar seu trabalho com prefixo personalizado chamando a execução do pipeline `list_steps`.

```
steps = execution.list_steps()

prefixed_training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']
```

## Personalizar o acesso a versões do pipeline
<a name="build-and-manage-step-permissions-version"></a>

Você pode conceder acesso personalizado a versões específicas do Amazon SageMaker Pipelines usando a chave de `sagemaker:PipelineVersionId` condição. Por exemplo, a política abaixo concede acesso para iniciar execuções ou atualizar a versão do pipeline somente para a versão ID 6 e posterior.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "AllowStartPipelineExecution",
        "Effect": "Allow",
        "Action": [
            "sagemaker:StartPipelineExecution",
            "sagemaker:UpdatePipelineVersion"
        ],
        "Resource": "*",
        "Condition": {
            "NumericGreaterThanEquals": {
                "sagemaker:PipelineVersionId": 6
            }
        }
    }
}
```

------

Para obter mais informações sobre as chaves de condição suportadas, consulte [Chaves de condição para Amazon SageMaker AI](https://docs.aws.amazon.com//service-authorization/latest/reference/list_amazonsagemaker.html#amazonsagemaker-policy-keys).

## Políticas de controle de serviço com pipelines
<a name="build-and-manage-scp"></a>

As políticas de controle de serviço (SCPs) são um tipo de política organizacional que você pode usar para gerenciar permissões em sua organização. SCPs ofereça controle central sobre o máximo de permissões disponíveis para todas as contas em sua organização. Ao usar Pipelines em sua organização, você pode garantir que os cientistas de dados gerenciem suas execuções de pipeline sem precisar interagir com o AWS console. 

Se você estiver usando uma VPC com seu SCP que restringe o acesso ao Amazon S3, você precisa tomar medidas para permitir que seu pipeline acesse outros recursos do Amazon S3. 

Para permitir que o Pipelines acesse o Amazon S3 fora da sua VPC com a função `JsonGet`, atualize o SCP da sua organização para garantir que a função que está usando o Pipelines possa acessar o Amazon S3. Para fazer isso, crie uma exceção para os perfis que estão sendo usados pelo executor do Pipelines por meio do perfil de execução de pipeline usando uma tag de entidade principal e uma chave de condição. 

**Para permitir que o Pipelines acesse o Amazon S3 fora da sua VPC**

1. Crie uma tag exclusiva para sua função de execução do pipeline seguindo as etapas em [Como marcar usuários e funções do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html). 

1. Conceda uma exceção em seu SCP usando a chave de condição `Aws:PrincipalTag IAM` da tag que você criou. Para obter mais informações, consulte [Criar, atualizar e excluir políticas de controle de serviço](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_create.html). 

# Configurar a compatibilidade entre contas para o Pipelines
<a name="build-and-manage-xaccount"></a>

O suporte entre contas para o Amazon SageMaker Pipelines permite que você colabore em pipelines de aprendizado de máquina com outras equipes ou organizações que operam em contas diferentes. AWS Ao configurar o compartilhamento de pipeline entre contas, você pode conceder acesso controlado aos pipelines, permitir que outras contas visualizem os detalhes de pipeline, executem ações e monitorem as execuções. O tópico a seguir aborda como configurar o compartilhamento de pipeline entre contas, as diferentes políticas de permissão disponíveis para recursos compartilhados e como acessar e interagir com entidades de pipeline compartilhadas por meio de chamadas diretas de API para a SageMaker IA.

## Configurar o compartilhamento de pipeline entre contas
<a name="build-and-manage-xaccount-set-up"></a>

SageMaker A IA usa o [AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) (AWS RAM) para ajudar você a compartilhar com segurança suas entidades de funil em todas as contas. 

### Criar o compartilhamento de um recurso
<a name="build-and-manage-xaccount-set-up-console"></a>

1. Selecione **Criar um compartilhamento de recursos** por meio do [console do AWS RAM](https://console.aws.amazon.com/ram/home).

1. Ao especificar detalhes do compartilhamento de recursos, escolha o tipo de recurso do Pipelines e selecione um ou mais pipelines que você deseja compartilhar. Quando você compartilha um pipeline com qualquer outra conta, todas as suas execuções também são compartilhadas implicitamente.

1. Associar permissões a um compartilhamento de recursos. Escolha a política de permissão padrão somente leitura ou a política de permissão de execução estendida do pipeline. Para obter mais informações detalhadas, consulte [Políticas de permissão para recursos do Pipelines](#build-and-manage-xaccount-permissions). 
**nota**  
Se você selecionar a política de execução estendida do pipeline, observe que todos os comandos de início, interrupção e repetição chamados por contas compartilhadas usam recursos na AWS conta que compartilhou o pipeline.

1. Use IDs a AWS conta para especificar as contas às quais você deseja conceder acesso aos seus recursos compartilhados.

1. Revise sua configuração de compartilhamento de recursos e selecione **Criar compartilhamento de recursos**. Pode levar alguns minutos para que os compartilhamentos de recursos e as associações principais sejam concluídos.

Para obter mais informações, consulte [Compartilhar seus recursos da AWS](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html) no *Guia do usuário do Resource Access Manager da AWS *.

### Receba respostas para seu convite de compartilhamento de recursos
<a name="build-and-manage-xaccount-set-up-responses"></a>

Depois que o compartilhamento de recursos e as associações principais são definidas, as contas da AWS especificadas receberão um convite para participar desse compartilhamento. As AWS contas devem aceitar o convite para obter acesso a todos os recursos compartilhados.

Para obter mais informações sobre como aceitar um convite de compartilhamento de recursos por meio de AWS RAM, consulte [Usando AWS recursos compartilhados](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html) no *Guia do Usuário do AWS Resource Access Manager*.

## Políticas de permissão para recursos do Pipelines
<a name="build-and-manage-xaccount-permissions"></a>

Ao criar seu compartilhamento de recursos, escolha uma das duas políticas de permissão compatíveis para associar ao tipo de recurso do SageMaker AI Pipeline. Ambas as políticas concedem acesso a qualquer pipeline selecionado e a todas as suas execuções. 

### Permissões somente leitura padrão
<a name="build-and-manage-xaccount-permissions-default"></a>

A política `AWSRAMDefaultPermissionSageMakerPipeline` permite as seguintes ações somente leitura:

```
"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"   
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:Search"
```

### Permissões estendidas de execução de pipeline
<a name="build-and-manage-xaccount-permissions-extended"></a>

A política `AWSRAMPermissionSageMakerPipelineAllowExecution` inclui todas as permissões de somente leitura da política padrão e também permite que contas compartilhadas iniciem, parem e tentem novamente as execuções do pipeline.

**nota**  
Esteja atento ao uso de AWS recursos ao usar a política estendida de permissão de execução do pipeline. Com essa política, as contas compartilhadas podem iniciar, interromper e repetir as execuções do pipeline. Todos os recursos usados para execuções de funis compartilhados são consumidos pela conta do proprietário. 

A política de permissão de execução de pipeline estendida permite as seguintes ações:

```
"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"   
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:StartPipelineExecution"
"sagemaker:StopPipelineExecution"
"sagemaker:RetryPipelineExecution"
"sagemaker:Search"
```

## Acesse entidades de pipeline compartilhadas por meio de chamadas diretas de API
<a name="build-and-manage-xaccount-api-calls"></a>

Depois que o compartilhamento de pipeline entre contas estiver configurado, você poderá chamar as seguintes ações de SageMaker API usando um ARN de pipeline:

**nota**  
Você só pode chamar comandos da API se eles estiverem incluídos nas permissões associadas ao seu compartilhamento de recursos. Se você selecionar a `AWSRAMPermissionSageMakerPipelineAllowExecution` política, os comandos start, stop e retry usarão recursos na AWS conta que compartilhou o pipeline.
+ [DescribePipeline](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipeline.html)
+ [DescribePipelineDefinitionForExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipelineDefinitionForExecution.html)
+ [DescribePipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipelineExecution.html)
+ [ListPipelineExecutions](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineExecutions.html)
+ [ListPipelineExecutionSteps](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineExecutionSteps.html)
+ [ListPipelineParametersForExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineParametersForExecution.html)
+ [StartPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartPipelineExecution.html)
+ [StopPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopPipelineExecution.html)
+ [RetryPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RetryPipelineExecution.html)

# Parâmetros de pipeline
<a name="build-and-manage-parameters"></a>

Você pode introduzir variáveis na definição do seu pipeline usando parâmetros. Você pode referenciar os parâmetros que você define em toda a definição do pipeline. Os parâmetros têm um valor padrão, que você pode substituir especificando os valores dos parâmetros ao iniciar a execução de um pipeline. O valor padrão deve ser uma instância que corresponda ao tipo de parâmetro. Todos os parâmetros usados nas definições de etapas devem ser definidos na definição do pipeline. Este tópico descreve os parâmetros que você pode definir e como implementá-los.

O Amazon SageMaker Pipelines oferece suporte aos seguintes tipos de parâmetros: 
+  `ParameterString`: representando um parâmetro de string. 
+  `ParameterInteger`: representando um parâmetro inteiro. 
+  `ParameterFloat`: representando um parâmetro flutuante.
+  `ParameterBoolean`: representando um tipo booleano de Python.

Os grupos e parâmetros têm o seguinte formato:

```
<parameter> = <parameter_type>(
    name="<parameter_name>",
    default_value=<default_value>
)
```

O exemplo a seguir mostra uma implementação de parâmetros de exemplo.

```
from sagemaker.workflow.parameters import (
    ParameterInteger,
    ParameterString,
    ParameterFloat,
    ParameterBoolean
)

processing_instance_count = ParameterInteger(
    name="ProcessingInstanceCount",
    default_value=1
)
```

Você passa o parâmetro ao criar seu pipeline, conforme mostrado no exemplo a seguir.

```
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[
        processing_instance_count
    ],
    steps=[step_process]
)
```

Também é possível passar um valor de parâmetro diferente do padrão para uma execução de pipeline, conforme mostrado no exemplo a seguir.

```
execution = pipeline.start(
    parameters=dict(
        ProcessingInstanceCount="2",
        ModelApprovalStatus="Approved"
    )
)
```

Você pode manipular parâmetros com funções do SDK do SageMaker Python, como. `[ sagemaker.workflow.functions.Join](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.functions.Join)` Para obter mais informações sobre parâmetros, consulte [Parâmetros de SageMaker pipelines](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#parameters).

Para conhecer as limitações conhecidas dos parâmetros dos pipelines, consulte *[Limitações — Parametrização no SDK](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#parameterization)* do Amazon [Python SageMaker ](https://sagemaker.readthedocs.io/en/stable).

# Etapas do Pipelines
<a name="build-and-manage-steps"></a>

Os pipelines são compostos por etapas. Essas etapas definem as ações que o pipeline executa e as relações entre as etapas usando propriedades. A página a seguir descreve os tipos de etapas, suas propriedades e as relações entre elas.

**Topics**
+ [Adicionar uma etapa](build-and-manage-steps-types.md)
+ [Adicionar integração](build-and-manage-steps-integration.md)
+ [Propriedades da etapa](#build-and-manage-properties)
+ [Paralelismo de etapas](#build-and-manage-parallelism)
+ [Dependência de dados entre etapas](#build-and-manage-data-dependency)
+ [Dependência personalizada entre etapas](#build-and-manage-custom-dependency)
+ [Imagens personalizadas em uma etapa](#build-and-manage-images)

# Adicionar uma etapa
<a name="build-and-manage-steps-types"></a>

O seguinte descreve os requisitos de cada tipo de etapa e fornece um exemplo de implantação da etapa, além de como adicionar a etapa a um Pipelines: Não são implantaçõ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 pipelines](pipelines-build.md).

**nota**  
Você também pode criar uma etapa a partir do seu código de machine learning convertendo-o em uma etapa do Pipelines com o decorador `@step`. Para obter mais informações, consulte [decorador @step](#step-type-custom).

O Amazon SageMaker Pipelines oferece suporte aos seguintes tipos de etapas:
+ [Executar código](#step-type-executecode)

  [Processamento](#step-type-processing)
+ [Treinamento](#step-type-training)
+ [Ajustar](#step-type-tuning)
+ [AutoML](#step-type-automl)
+ [`Model`](#step-type-model)
+ [`Create model`](#step-type-create-model)
+ [`Register model`](#step-type-register-model)
+ [`Deploy model (endpoint)`](#step-type-deploy-model-endpoint)
+ [Transformação](#step-type-transform)
+ [Condição](#step-type-condition)
+ [`Callback`](#step-type-callback)
+ [Lambda](#step-type-lambda)
+ [`ClarifyCheck`](#step-type-clarify-check)
+ [`QualityCheck`](#step-type-quality-check)
+ [EMR](#step-type-emr)
+ [Trabalho de caderno](#step-type-notebook-job)
+ [Falha](#step-type-fail)

## decorador @step
<a name="step-type-custom"></a>

Se você quiser orquestrar um trabalho de ML personalizado que aproveite recursos avançados de SageMaker IA ou outros AWS serviços na interface do usuário do drag-and-drop Pipelines, use o. [Executar a etapa de código](#step-type-executecode)

Você pode criar uma etapa a partir do código de machine learning local usando o decorador `@step`. Depois de testar seu código, você pode converter a função em uma etapa do pipeline de SageMaker IA anotando-a com o `@step` decorador. O Pipelines cria e executa um pipeline quando você passa o resultado da função decorada por `@step` como uma etapa para o seu pipeline. Você também pode criar um pipeline DAG de várias etapas que inclua uma ou mais funções `@step` decoradas, bem como etapas tradicionais do pipeline de SageMaker IA. Para obter mais detalhes sobre como criar uma etapa com o decorador `@step`, consulte [Lift-and-shift Código Python com o decorador @step](pipelines-step-decorator.md).

## Executar a etapa de código
<a name="step-type-executecode"></a>

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 Python, script ou caderno para ser executado como parte do seu pipeline. Você deve usar essa etapa se quiser orquestrar um trabalho de ML personalizado que aproveite recursos avançados de SageMaker IA ou outros serviços. AWS 

A etapa **Execute Code** carrega arquivos em seu bucket padrão do Amazon S3 para Amazon SageMaker AI. Esse bucket pode não ter as permissões de compartilhamento de recursos entre origens (CORS) definidas. Para saber mais sobre como configurar as permissões CORS, consulte [Requisito do CORS para dados de imagem de entrada](sms-cors-update.md).

A etapa **Execute Code** usa um trabalho SageMaker de treinamento da Amazon para executar seu código. Certifique-se de que seu perfil do IAM tenha as permissões da API `sagemaker:DescribeTrainingJob` e `sagemaker:CreateTrainingJob`. Para saber mais sobre todas as permissões necessárias para o Amazon SageMaker AI e como configurá-las, consulte[Permissões da API Amazon SageMaker AI: referência de ações, permissões e recursos](api-permissions-reference.md).

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 em[Inicie o Amazon SageMaker Studio](studio-updated-launch.md).

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

1. Escolha **Criar**.

1. Escolha **Em branco**.

1. Na barra lateral esquerda, escolha **Executar código** e arraste-o para o canvas.

1. No canvas, escolha a etapa **Executar código** que você adicionou.

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

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

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

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

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

1. Se o canvas incluir alguma 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.

1. Se o canvas incluir alguma etapa que suceda imediatamente a 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 de **Executar código** podem ser referenciadas para funções do Python.

## Processamento de etapas
<a name="step-type-processing"></a>

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](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html).

------
#### [ 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 em[Inicie o Amazon SageMaker Studio](studio-updated-launch.md).

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

1. Escolha **Criar**.

1. Na barra lateral esquerda, escolha **Processar dados** e arraste-o para o canvas.

1. No canvas, escolha a etapa **Processar dados** que você adicionou.

1. 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](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep).

1. Se o canvas incluir alguma etapa que preceda imediatamente a etapa **Processar dados** que você adicionou, clique e arraste o cursor da etapa até a etapa **Processar dados** para criar uma borda.

1. Se o canvas incluir alguma etapa que suceda imediatamente a etapa **Processar dados** que você adicionou, clique e arraste o cursor da etapa **Processar dados** 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 runtime**

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

```
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. ProcessingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep)documentação. Para ver um exemplo detalhado, consulte o caderno de exemplo [Orchestrate Jobs to Training and Evaluate Models with Amazon SageMaker Pipelines](https://github.com/aws/amazon-sagemaker-examples/blob/62de6a1fca74c7e70089d77e36f1356033adbe5f/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.ipynb). A seção *Definir uma etapa de processamento para engenharia de atributos* inclui mais informações.

------

## Etapa de treinamento
<a name="step-type-training"></a>

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 AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html).

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 em[Inicie o Amazon SageMaker Studio](studio-updated-launch.md).

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

1. Escolha **Criar**.

1. Escolha **Em branco**.

1. Na barra lateral esquerda, escolha **Treinar modelo** e arraste-o até o canvas.

1. No canvas, escolha a etapa **Treinar modelo** que você adicionou.

1. 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](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep).

1. Se o canvas incluir alguma etapa que preceda imediatamente a etapa **Treinar modelo** que você adicionou, clique e arraste o cursor da etapa até a etapa **Treinar modelo** para criar uma borda.

1. Se o canvas incluir alguma etapa que suceda imediatamente a etapa **Treinar modelo** que você adicionou, clique e arraste o cursor da etapa **Treinar modelo** 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. TrainingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep)documentaçã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,
)
```

------

## Etapa de ajuste
<a name="step-type-tuning"></a>

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, cada um produzindo uma versão do modelo. Para obter mais informações sobre ajuste de hiperparâmetros, consulte [Ajuste automático do modelo com SageMaker IA](automatic-model-tuning.md).

O trabalho de ajuste está associado ao experimento de SageMaker IA do pipeline, com os trabalhos de treinamento criados como testes. Para obter mais informações, consulte [Integração de experimentos](pipelines-experiments.md).

Uma etapa de ajuste requer uma [HyperparameterTuner](https://sagemaker.readthedocs.io/en/stable/api/training/tuner.html)e 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](automatic-model-tuning-warm-start.md).

[Você usa o método [get\$1top\$1model\$1s3\$1uri do sagemaker.workflow.steps](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep.get_top_model_s3_uri). TuningStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep)classe 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 pipeline de SageMaker IA, consulte [sagemaker-pipelines-tuning-step.ipynb](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/tuning-step/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 DAG do pipeline não será exibido. Para atualizar o Studio Classic, consulte [Desligue e atualize o Amazon SageMaker Studio Classic](studio-tasks-update-studio.md).

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](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobObjective.html). 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. TuningStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep)documentação.

## Etapa de ajuste fino
<a name="step-type-fine-tuning"></a>

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](jumpstart-fine-tune.md)

A etapa de ajuste fino usa um trabalho de SageMaker treinamento da Amazon para personalizar seu modelo. Certifique-se de que seu perfil do IAM tenha as permissões de API `sagemaker:DescribeTrainingJob` e `sagemaker:CreateTrainingJob` para executar o trabalho de ajuste fino em seu pipeline. Para saber mais sobre as permissões necessárias para o Amazon SageMaker AI e como configurá-las, consulte[Permissões da API Amazon SageMaker AI: referência de ações, permissões e recursos](api-permissions-reference.md).

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 em [Inicie o Amazon SageMaker Studio](studio-updated-launch.md).

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

1. Escolha **Criar**.

1. Escolha **Em branco**.

1. Na barra lateral esquerda, escolha **Ajustar modelo** e arraste-o até o canvas.

1. No canvas, escolha a etapa **Ajustar modelo** que você adicionou.

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

1. Se o canvas incluir alguma etapa que preceda imediatamente a etapa **Ajustar modelo** que você adicionou, clique e arraste o cursor da etapa até a etapa **Ajustar modelo** para criar uma borda.

1. Se o canvas incluir alguma etapa que suceda imediatamente a etapa **Ajustar modelo** que você adicionou, clique e arraste o cursor da etapa **Ajustar modelo** até a etapa para criar uma borda.

## Etapa do AutoML
<a name="step-type-automl"></a>

Use a API [AutoML](https://sagemaker.readthedocs.io/en/stable/api/training/automl.html) para criar um trabalho 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](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development.html). SageMaker 

**nota**  
Atualmente, a etapa do AutoML oferece suporte somente ao [modo de treinamento de agrupamento](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html).

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 método `get_best_auto_ml_model` da seguinte forma: Você também deve usar um `role` do IAM 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](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.automl_step.AutoMLStep) no SDK do Python SageMaker .

## Etapa do modelo
<a name="step-type-model"></a>

Use a `ModelStep` para criar ou registrar um modelo de SageMaker IA. Para obter mais informações sobre `ModelStep` os requisitos, consulte o [sagemaker.workflow.model\$1step. ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.model_step.ModelStep)documentação.

### Criar um modelo
<a name="step-type-model-create"></a>

Você pode usar `ModelStep` a para criar um modelo de SageMaker IA. A `ModelStep` exige artefatos do modelo e informações sobre o tipo de instância de SageMaker IA que você precisa usar para criar o modelo. Para obter mais informações sobre modelos de SageMaker IA, consulte [Treinar um modelo com o Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html).

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
<a name="step-type-model-register"></a>

Você pode usar `ModelStep` a para registrar um `sagemaker.model.Model` ou um `sagemaker.pipeline.PipelineModel` no Amazon SageMaker Model Registry. 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 do registro do modelo com o Model Registry](model-registry.md).

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

## Criar etapa de modelo
<a name="step-type-create-model"></a>

Você usa a etapa Criar modelo para criar um modelo de SageMaker IA. Para obter mais informações sobre modelos de SageMaker IA, consulte[Treine um modelo com a Amazon SageMaker](how-it-works-training.md).

Uma etapa de criação do modelo requer artefatos do modelo e informações sobre o tipo de instância de SageMaker IA que você precisa usar para criar o modelo. O exemplo a seguir mostra como criar uma definição de etapa de criar modelo. Para obter mais informações sobre os requisitos da etapa de criação de modelo, consulte [sagemaker.workflow.steps. CreateModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.CreateModelStep)documentação.

------
#### [ Pipeline Designer ]

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

1. Abra o console do Studio seguindo as instruções em [Inicie o Amazon SageMaker Studio](studio-updated-launch.md).

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

1. Escolha **Criar**.

1. Escolha **Em branco**.

1. Na barra lateral esquerda, escolha **Criar modelo** e arraste-o para o canvas.

1. No canvas, escolha a etapa **Criar modelo** que você adicionou.

1. 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](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.CreateModelStep).

1. Se o canvas incluir alguma 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.

1. Se o canvas incluir alguma etapa que suceda imediatamente a 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](#step-type-model) para criar modelos a partir da versão 2.90.0 do SDK AI SageMaker Python. `CreateModelStep`continuará funcionando nas versões anteriores do SDK do SageMaker Python, mas não tem mais suporte ativo.

```
from sagemaker.workflow.steps import CreateModelStep

step_create_model = CreateModelStep(
    name="AbaloneCreateModel",
    model=best_model,
    inputs=inputs
)
```

------

## Etapa de registrar modelo
<a name="step-type-register-model"></a>

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 em[Inicie o Amazon SageMaker Studio](studio-updated-launch.md).

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

1. Escolha **Criar**.

1. Escolha **Em branco**.

1. Na barra lateral esquerda, escolha **Registrar modelo** e arraste-o para o canvas.

1. No canvas, escolha a etapa **Registrar modelo** que você adicionou.

1. 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\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel).

1. Se o canvas incluir alguma etapa que preceda imediatamente a etapa **Registrar modelo** que você adicionou, clique e arraste o cursor da etapa até a etapa **Registrar modelo** para criar uma borda.

1. Se o canvas incluir alguma etapa que suceda imediatamente a 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](#step-type-model) para registrar modelos a partir da versão 2.90.0 do SDK AI SageMaker Python. `RegisterModel`continuará funcionando nas versões anteriores do SDK do SageMaker Python, mas não tem mais suporte ativo.

[Você usa uma `RegisterModel` etapa para registrar um SageMaker.model.Model ou um [sagemaker.pipeline.](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html) PipelineModel](https://sagemaker.readthedocs.io/en/stable/api/inference/pipeline.html#pipelinemodel)com o Amazon SageMaker Model Registry. 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 do registro do modelo com o Model Registry](model-registry.md). Para obter mais informações sobre os requisitos das `RegisterModel` etapas, consulte [sagemaker.workflow.step\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel)documentaçã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
)
```

------

## Etapa de implantação de modelo (endpoint)
<a name="step-type-deploy-model-endpoint"></a>

No Pipeline Designer, use a etapa de implantar modelo (endpoint) para implantar o modelo em um endpoint. Você pode criar um novo endpoint ou usar um 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 nos serviços de hospedagem de SageMaker IA e obter um endpoint em tempo real que pode ser usado para inferência. Esses endpoints são totalmente gerenciados e oferecem apoio ao ajuste de escala automático. Para saber mais sobre inferência em tempo real em SageMaker IA, consulte[Inferência em tempo real](realtime-endpoints.md).

Antes de adicionar uma etapa de implantar modelo ao pipeline, certifique-se de que seu perfil do IAM 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 para a SageMaker IA e como configurá-las, consulte[Permissões da API Amazon SageMaker AI: referência de ações, permissões e recursos](api-permissions-reference.md).

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 em [Inicie o Amazon SageMaker Studio](studio-updated-launch.md).

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

1. Escolha **Criar**.

1. Escolha **Em branco**.

1. Na barra lateral esquerda, escolha **Implantar modelo (endpoint)** e arraste-o até o canvas.

1. No canvas, escolha a etapa **Implantar modelo (endpoint)** que você adicionou.

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

1. Se o canvas incluir alguma 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.

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

## Etapa de transformação
<a name="step-type-transform"></a>

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 lotes com pipelines de inferência](inference-pipeline-batch.md).

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. TransformStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TransformStep)documentaçã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 em [Inicie o Amazon SageMaker Studio](studio-updated-launch.md).

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

1. Escolha **Criar**.

1. Escolha **Em branco**.

1. Na barra lateral esquerda, escolha **Implantar modelo (transformação em lote)** e arraste-o até o canvas.

1. No canvas, escolha a etapa **Implantar modelo (transformação em lote)** que você adicionou.

1. 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](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TransformStep).

1. Se o canvas incluir alguma 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.

1. Se o canvas incluir alguma etapa que suceda imediatamente a 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"),
)
```

------

## Etapa de condição
<a name="step-type-condition"></a>

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 exige:
+ Uma lista de condições.
+ Uma lista de etapas a executar se a condição for avaliada como `true`.
+ Uma lista de etapas a executar 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 em[Inicie o Amazon SageMaker Studio](studio-updated-launch.md).

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

1. Escolha **Criar**.

1. Escolha **Em branco**.

1. Na barra lateral esquerda, escolha **Condição** e arraste-o até o canvas.

1. No canvas, escolha a etapa **Condição** que você adicionou.

1. 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\$1step. ConditionStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.condition_step.ConditionStep).

1. Se o canvas incluir alguma 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.

1. Se o canvas incluir alguma etapa que suceda imediatamente a 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**
+ O Pipelines não oferece apoio ao uso de etapas de condições 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\$1step. ConditionStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#conditionstep) Referência da API. Para obter mais informações sobre as condições suportadas, consulte *[Amazon SageMaker Pipelines -](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#conditions)* Conditions na documentação do SageMaker SDK para AI Python. 

------

## Etapa de retorno de chamada
<a name="step-type-callback"></a>

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 (Amazon SQS) 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, o Pipelines aguarda uma resposta do cliente.
+ O cliente recupera a mensagem da fila do Amazon SQS 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:
  +  [SendPipelineExecutionStepSuccess](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SendPipelineExecutionStepSuccess.html), junto com uma lista de parâmetros de saída
  +  [SendPipelineExecutionStepFailure](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SendPipelineExecutionStepFailure.html), junto com um motivo de falha
+ A chamada de API faz com que o Pipelines continue com o processo do pipeline ou falhe no processo.

Para obter mais informações sobre os requisitos das `Callback` etapas, consulte [sagemaker.workflow.callback\$1step. CallbackStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.callback_step.CallbackStep)documentação. Para obter uma solução completa, consulte [Estender SageMaker pipelines para incluir etapas personalizadas usando etapas de retorno de chamada](https://aws.amazon.com/blogs/machine-learning/extend-amazon-sagemaker-pipelines-to-include-custom-steps-using-callback-steps/).

**Importante**  
`Callback`etapas foram introduzidas no Amazon SageMaker Python SDK v2.45.0 e no Amazon Studio Classic v3.6.2. SageMaker Você deve atualizar o Studio Classic antes de usar uma etapa `Callback`; caso contrário, o DAG do pipeline não será exibido. Para atualizar o Studio Classic, consulte [Desligue e atualize o Amazon SageMaker Studio Classic](studio-tasks-update-studio.md).

O exemplo a seguir demonstra 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 AI 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 (p. ex., `{"output1": "{\"nested_output1\":\"my-output\"}"}`). Se você fornecer um valor aninhado, ao tentar se referir a um determinado parâmetro de saída, a SageMaker IA 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 um processo de pipeline com uma `Callback` etapa [StopPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopPipelineExecution.html)em execução, o Pipelines envia uma mensagem do Amazon SQS para a fila do SQS. O corpo da mensagem SQS contém um campo **Status**, que está definido como `Stopping`. O exemplo a seguir mostra um exemplo de corpo de mensagem SQS.

```
{
  "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 mensagens do Amazon SQS 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` ou `SendPipelineExecutionStepFailure`.

O Pipelines interrompe o processo de pipeline somente quando recebe uma dessas chamadas.

## Etapa Lambda
<a name="step-type-lambda"></a>

Você usa uma etapa do Lambda para executar uma AWS Lambda função. Você pode executar uma função Lambda existente ou a SageMaker IA pode criar e executar uma nova função Lambda. Se você optar por usar uma função Lambda existente, ela deverá estar no mesmo pipeline Região da AWS de SageMaker IA. [Para um notebook que mostra como usar uma etapa do Lambda em um pipeline de SageMaker IA, consulte sagemaker-pipelines-lambda-step .ipynb.](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/lambda-step/sagemaker-pipelines-lambda-step.ipynb)

**Importante**  
As etapas do Lambda foram introduzidas no Amazon SageMaker Python SDK v2.51.0 e no Amazon Studio Classic v3.9.1. SageMaker Você deve atualizar o Studio Classic antes de usar uma etapa Lambda; caso contrário, o DAG do pipeline não será exibido. Para atualizar o Studio Classic, consulte [Desligue e atualize o Amazon SageMaker Studio Classic](studio-tasks-update-studio.md).

SageMaker A IA fornece a [classe SageMaker.lambda\$1helper.Lambda para criar, atualizar, invocar e excluir funções do Lambda](https://sagemaker.readthedocs.io/en/stable/api/utility/lambda_helper.html). `Lambda`tem 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\$1step. LambdaStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.lambda_step.LambdaStep)classe tem um `lambda_func` argumento do tipo`Lambda`. Para invocar uma função do Lambda existente, o único requisito é fornecer o nome do recurso da Amazon (ARN) da função para `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á compatibilidade com 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á compatibilidade com 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ê tentar interromper o processo enquanto a função do 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`.

## ClarifyCheck etapa
<a name="step-type-clarify-check"></a>

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 desvio e explicabilidade do modelo. Em seguida, você pode gerar e [registrar suas linhas de base](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-calculations) com o método `model.register()` e passar a saída desse método para [Etapa do modelo](#step-type-model) usando `[step\$1args](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#model-step)`. Essas linhas de base para verificação de deriva podem ser usadas pelo Amazon SageMaker Model Monitor para seus endpoints de modelo. Como resultado, você não precisa fazer uma sugestão [de linha de base](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-create-baseline.html) 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. O 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](clarify-processing-job-configure-container.md).

### Configurando a etapa ClarifyCheck
<a name="configuring-step-type-clarify"></a>

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 desvio de dados
+ Verificação de desvio do modelo
+ Verificação da explicabilidade do modelo

Para fazer isso, defina o parâmetro `clarify_check_config` 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 AI Clarify e exige [configurações dedicadas para a verificação e a tarefa de processamento](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-configure-processing-jobs.html). `ClarifyCheckConfig`e `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](clarify-processing-job-run.md). 

### Controlar os comportamentos das etapas para verificação de oscilação
<a name="controlling-step-type-clarify"></a>

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](pipelines-quality-clarify-baseline-lifecycle.md).

### Trabalhar com linhas de base
<a name="step-type-clarify-working-with-baselines"></a>

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

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. ClarifyCheckStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.clarify_check_step.ClarifyCheckStep)no *Amazon SageMaker AI SageMaker AI 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](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/model-monitor-clarify-pipelines/sagemaker-pipeline-model-monitor-clarify-steps.ipynb).

**Example Crie uma etapa `ClarifyCheck` para verificação de desvio 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"
)
```

## QualityCheck etapa
<a name="step-type-quality-check"></a>

Você pode usar a etapa `QualityCheck` para realizar [sugestões de linha de base](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-create-baseline.html) e verificar oscilações 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](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-calculations) com o método `model.register()` e passar a saída desse método para [Etapa do modelo](#step-type-model) usando `[step\$1args](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#model-step)`. ]

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 AI Model Monitor. O 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](model-monitor-pre-built-container.md).

### Configurando a etapa QualityCheck
<a name="configuring-step-type-quality"></a>

Você pode configurar a etapa `QualityCheck` para realizar 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. `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](model-monitor-create-baseline.md) e [Criar uma linha de base da qualidade de modelo](model-monitor-model-quality-baseline.md).

### Controlar os comportamentos das etapas para verificação de oscilação
<a name="controlling-step-type-quality"></a>

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](pipelines-quality-clarify-baseline-lifecycle.md).

### Trabalhar com linhas de base
<a name="step-type-quality-working-with-baselines"></a>

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

Quando você especifica o seguinte, a etapa `QualityCheck` usa a linha de base especificada por `supplied_baseline_constraints` e `supplied_baseline_statistics` no tipo de verificação da etapa `QualityCheck`:
+ `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. QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.quality_check_step.QualityCheckStep)no *Amazon SageMaker AI SageMaker AI 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](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/model-monitor-clarify-pipelines/sagemaker-pipeline-model-monitor-clarify-steps.ipynb). 

**Example 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"
)
```

## Etapa do EMR
<a name="step-type-emr"></a>

Use a etapa [EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-overview.html) do Amazon SageMaker Pipelines para:
+ Processar as [etapas do Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-work-with-steps.html) em um cluster do Amazon EMR em execução.
+ Fazer com que o pipeline crie e gerencie um cluster do Amazon EMR para você.

Para obter mais informações sobre o Amazon EMR, consulte o [Conceitos básicos do Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html).

A etapa do EMR exige que `EMRStepConfig` inclua a localização do arquivo JAR usado pelo cluster do Amazon EMR e os argumentos a serem passados. Você também fornece o ID do cluster do Amazon EMR se quiser executar a etapa em um cluster do EMR em execução. Você também pode passar a configuração do cluster para executar a etapa do EMR em um cluster que ela 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**  
As etapas do EMR exigem que a função passada para seu pipeline tenha permissões adicionais. Anexe a [política gerenciada da AWS : `AmazonSageMakerPipelinesIntegrations`](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-pipelines.html#security-iam-awsmanpol-AmazonSageMakerPipelinesIntegrations) à função de pipeline ou garanta que a função inclua as permissões dessa política.
Se você processar uma etapa do EMR em um cluster em execução, só poderá usar um cluster que esteja em um dos seguintes estados:   
`STARTING`
`BOOTSTRAPPING`
`RUNNING`
`WAITING`
Se você processar etapas do EMR em um cluster em execução, poderá ter no máximo 256 etapas do EMR em um estado `PENDING` em um cluster do EMR. As etapas do EMR 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](pipelines-retry-policy.md).
Você pode especificar o ID ou a configuração do cluster, mas não ambos.
A etapa do EMR depende da Amazon EventBridge para monitorar as mudanças na etapa do EMR ou no estado do cluster. Se você processa seu trabalho do Amazon EMR em um cluster em execução, a etapa do EMR usa a regra `SageMakerPipelineExecutionEMRStepStatusUpdateRule` para monitorar o estado da etapa do EMR. Se você processar seu trabalho em um cluster criado pela etapa do EMR, a etapa usa a regra `SageMakerPipelineExecutionEMRClusterStatusRule` 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 etapa do EMR poderá não ser concluída.

**Adicione uma etapa do Amazon EMR ao seu pipeline**

Para adicionar uma etapa do EMR ao seu pipeline, faça o seguinte:
+ Abra o console do Studio seguindo as instruções em [Iniciar o Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).
+ No painel de navegação à esquerda, selecione **Pipelines**.
+ Escolha **Criar**.
+ Escolha **Em branco**.
+ Na barra lateral esquerda, escolha **Processar dados** e arraste-o para o canvas.
+ No canvas, escolha a etapa **Processar dados** que você adicionou.
+ Na barra lateral direita, em modo, escolha **EMR (**gerenciado).
+ 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\$1step. EMRstep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.emr_step.EMRStep).

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

Par iniciar um novo trabalho em um cluster do Amazon EMR em execução, transmita o ID do cluster como uma string para o argumento `cluster_id` de `EMRStep`. 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 uma amostra de caderno que orienta você com um exemplo completo, consulte [Etapa de EMR do Pipelines com cluster do EMR em execução](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/emr-step/sagemaker-pipelines-emr-step-with-running-emr-cluster.ipynb).

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

Para iniciar um novo trabalho em um novo cluster que o `EMRStep` criou para você, forneça a configuração de cluster como um dicionário. O dicionário deve ter a mesma estrutura de uma [RunJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html)solicitaçã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](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html).

O exemplo a seguir passa uma configuração de cluster para uma definição de etapa do EMR. Isso faz com que a etapa inicie um novo trabalho em um novo cluster do EMR. A configuração do cluster EMR neste exemplo inclui especificações para os nós primários e principais do cluster EMR. Para obter mais informações sobre os tipos de nós do Amazon EMR, consulte [Compreender os tipos de nós: nós primários, principais e de tarefas](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-master-core-task-nodes.html).

```
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ê com um exemplo completo, consulte [Etapa de EMR do Pipelines com gerenciamento de ciclo de vida do cluster](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/emr-step/sagemaker-pipelines-emr-step-with-cluster-lifecycle-management.ipynb).

## Etapa sem servidor do EMR
<a name="step-type-serverless"></a>

Para adicionar uma etapa sem servidor do EMR ao seu pipeline, faça o seguinte:
+ Abra o console do Studio seguindo as instruções em [Iniciar o Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).
+ No painel de navegação à esquerda, selecione **Pipelines**.
+ Escolha **Criar**.
+ Escolha **Em branco**.
+ Na barra lateral esquerda, escolha **Processar dados** e arraste-o para o canvas.
+ No canvas, escolha a etapa **Processar dados** que você adicionou.
+ Na barra lateral direita, em modo, escolha **EMR (**sem servidor).
+ Na barra lateral direita, preencha os formulários nas guias **Configuração e Detalhes**.

## Etapa de trabalho de caderno
<a name="step-type-notebook-job"></a>

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 [Executar a etapa de código](#step-type-executecode) para executar seu notebook. Para obter mais informações sobre trabalhos do SageMaker Notebook, consulte[SageMaker Empregos em notebooks](notebook-auto-run.md).

O `NotebookJobStep` requer no mínimo um caderno de entrada, URI de imagem 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](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep).

O exemplo a seguir usa argumentos mínimos para definir um `NotebookJobStep`.

```
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 trabalhos do caderno na interface do Studio Classic incluindo tags específicas com o argumento `tags`. Para mais detalhes sobre tags a serem incluídas, consulte [Visualizar seus trabalhos de caderno no painel da interface do Studio](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash).

Além disso, se você agendar o trabalho do notebook usando o SDK do SageMaker Python, só poderá especificar determinadas imagens para executar o trabalho do notebook. Para obter mais informações, consulte [Restrições de imagem para trabalhos de notebook do SageMaker AI Python SDK](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk).

## Etapa de falha
<a name="step-type-fail"></a>

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 de 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 de pipeline são executadas simultaneamente, o pipeline não termina até que todas as etapas simultâneas sejam concluídas.

### Limitações do uso da etapa de falha
<a name="step-type-fail-limitations"></a>
+ Você não pode adicionar uma etapa de falha à lista `DependsOn` de outras etapas. Para obter mais informações, consulte [Dependência personalizada entre etapas](build-and-manage-steps.md#build-and-manage-custom-dependency).
+ Outras etapas não podem fazer referência à etapa de 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 [os parâmetros de pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-parameters.html), uma operação de [junção](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html?highlight=Join#sagemaker.workflow.functions.Join) ou outras [propriedades de etapa](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#build-and-manage-properties) para criar uma mensagem de erro mais informativa, se usar o SDK.

------
#### [ Pipeline Designer ]

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

1. Abra o console do Studio seguindo as instruções em [Inicie o Amazon SageMaker Studio](studio-updated-launch.md).

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

1. Escolha **Criar**.

1. Escolha **Em branco**.

1. Na barra lateral esquerda, selecione **Falha** e arraste-o para o canvas.

1. No canvas, escolha a etapa **Falha** que você adicionou.

1. 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\$1step. FailStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.fail_step.FailStep).

1. Se o canvas incluir alguma 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.

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

------
#### [ SageMaker Python SDK ]

**Example**  
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]
    ),
)
```

------

# Adicionar integração
<a name="build-and-manage-steps-integration"></a>

MLflow a integração permite que você use MLflow com pipelines para selecionar um servidor de rastreamento ou aplicativo sem servidor, escolher um experimento e registrar métricas.

## Principais conceitos
<a name="add-integration-key-concepts"></a>

**Criação de aplicativo padrão** - Um MLflow aplicativo padrão será criado quando você entrar no editor visual do pipeline.

**Painel de integrações** - Inclui um novo painel de integrações MLflow, que você pode selecionar e configurar.

**Atualizar aplicativo e experimento** - A opção de substituir o aplicativo e o experimento selecionados durante a execução do pipeline.

## Como funciona
<a name="add-integration-how-it-works"></a>
+ Acesse o **Pipeline Visual Editor**
+ Escolha **Integração** na barra de ferramentas
+ Escolha **MLflow**
+ Configure o MLflow aplicativo e experimente

## Exemplo de capturas de tela
<a name="add-integration-example-screenshots"></a>

Painel lateral de integrações

![\[A descrição do que fazer.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/screenshot-pipeline-1.png)


MLflow configuração

![\[A descrição do que fazer.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/screenshot-pipeline-2.png)


Como substituir o experimento durante a execução do pipeline

![\[A descrição do que fazer.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/screenshot-pipeline-3.png)


## Propriedades da etapa
<a name="build-and-manage-properties"></a>

Use o atributo `properties` para adicionar dependências de dados entre as etapas do pipeline. Essas dependências de dados são então usadas pelo Pipelines para criar o DAG a partir da definição de pipeline. Essas propriedades podem ser referenciadas como valores de espaço reservado e são resolvidas em runtime. 

O `properties` atributo de uma etapa do Pipelines corresponde ao objeto retornado por uma `Describe` chamada para o tipo de trabalho de SageMaker IA correspondente. Para cada tipo de trabalho, a chamada `Describe` retorna o seguinte objeto de resposta:
+ `ProcessingStep` – [DescribeProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html)
+ `TrainingStep` – [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)
+ `TransformStep` – [DescribeTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTransformJob.html)

[Para verificar quais propriedades são referenciáveis para cada tipo de etapa durante a criação da dependência de dados, consulte Dependência de *[dados - Referência de propriedades no](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#data-dependency-property-reference)* SDK do Amazon Python. SageMaker ](https://sagemaker.readthedocs.io/en/stable)

## Paralelismo de etapas
<a name="build-and-manage-parallelism"></a>

Quando uma etapa não depende de nenhuma outra etapa, ela é executada imediatamente após a execução do pipeline. No entanto, executar muitas etapas do pipeline em paralelo pode esgotar rapidamente os recursos disponíveis. Controle o número de etapas simultâneas para a execução de um pipeline com `ParallelismConfiguration`.

O exemplo a seguir é usado `ParallelismConfiguration` para definir o limite de etapas simultâneas como cinco.

```
pipeline.create(
    parallelism_config=ParallelismConfiguration(5),
)
```

## Dependência de dados entre etapas
<a name="build-and-manage-data-dependency"></a>

Você define a estrutura do seu DAG especificando as relações de dados entre as etapas. Para criar dependências de dados entre as etapas, transmita as propriedades de uma etapa como entrada para outra etapa no pipeline. A etapa que recebe a entrada não é iniciada até que a etapa que fornece a entrada termine de ser executada.

Uma dependência de dados usa JsonPath notação no formato a seguir. Esse formato percorre o arquivo de propriedades JSON. Isso significa que você pode acrescentar quantas *<property>* instâncias forem necessárias para alcançar a propriedade aninhada desejada no arquivo. Para obter mais informações sobre JsonPath notação, consulte o [JsonPath repositório](https://github.com/json-path/JsonPath).

```
<step_name>.properties.<property>.<property>
```

O exemplo a seguir mostra como especificar um bucket do Amazon S3 usando a propriedade `ProcessingOutputConfig` de uma etapa de processamento.

```
step_process.properties.ProcessingOutputConfig.Outputs["train_data"].S3Output.S3Uri
```

Para criar a dependência de dados, passe o bucket para uma etapa de treinamento da seguinte forma:

```
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 verificar quais propriedades são referenciáveis para cada tipo de etapa durante a criação da dependência de dados, consulte Dependência de *[dados - Referência de propriedades no](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#data-dependency-property-reference)* SDK do Amazon Python. SageMaker ](https://sagemaker.readthedocs.io/en/stable)

## Dependência personalizada entre etapas
<a name="build-and-manage-custom-dependency"></a>

Quando você especifica uma dependência de dados, o Pipelines fornece a conexão de dados entre as etapas. Como alternativa, uma etapa pode acessar os dados de uma etapa anterior sem usar o Pipelines diretamente. Nesse caso, você pode criar uma dependência personalizada que diga ao Pipelines que não inicie uma etapa até que a execução de outra etapa seja concluída. Você cria uma dependência personalizada especificando o atributo de uma etapa `DependsOn`.

Como exemplo, o exemplo a seguir define uma etapa `C` que começa somente após a execução da etapa `A` e `B` da etapa.

```
{
  'Steps': [
    {'Name':'A', ...},
    {'Name':'B', ...},
    {'Name':'C', 'DependsOn': ['A', 'B']}
  ]
}
```

O Pipelines fará uma exceção de validação se a dependência criar uma dependência cíclica.

O exemplo a seguir cria uma etapa de treinamento que começa após a conclusão da execução de uma etapa de processamento.

```
processing_step = ProcessingStep(...)
training_step = TrainingStep(...)

training_step.add_depends_on([processing_step])
```

O exemplo a seguir cria uma etapa de treinamento que não começa até que duas etapas de processamento diferentes terminem de ser executadas.

```
processing_step_1 = ProcessingStep(...)
processing_step_2 = ProcessingStep(...)

training_step = TrainingStep(...)

training_step.add_depends_on([processing_step_1, processing_step_2])
```

O seguinte fornece uma forma alternativa de criar a dependência personalizada:

```
training_step.add_depends_on([processing_step_1])
training_step.add_depends_on([processing_step_2])
```

O exemplo a seguir cria uma etapa de treinamento que recebe informações de uma etapa de processamento e aguarda a conclusão da execução de uma etapa de processamento diferente.

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

O exemplo a seguir mostra como recuperar uma lista de strings das dependências personalizadas de uma etapa.

```
custom_dependencies = training_step.depends_on
```

## Imagens personalizadas em uma etapa
<a name="build-and-manage-images"></a>

 Você pode usar qualquer uma das [imagens do SageMaker AI Deep Learning Container](https://github.com/aws/deep-learning-containers/blob/master/available_images.md) disponíveis ao criar uma etapa em seu pipeline. 

Também é possível usar seu próprio contêiner com etapas do pipeline. Como você não pode criar uma imagem no Studio Classic, você deve criar sua imagem usando outro método antes de usá-la com o Pipelines.

Para usar seu próprio contêiner ao criar as etapas do seu pipeline, inclua o URI da imagem na definição do estimador. Para obter mais informações sobre como usar seu próprio contêiner com SageMaker IA, consulte Como [usar contêineres do Docker com SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers.html).

# Lift-and-shift Código Python com o decorador @step
<a name="pipelines-step-decorator"></a>

O decorador `@step` é um atributo que converte seu código local de machine learning (ML) em uma ou mais etapas de pipeline. Você pode escrever sua função de ML da mesma forma que faria em qualquer projeto de ML. Depois de testada localmente ou como um trabalho de treinamento usando o `@remote` decorador, você pode converter a função em uma etapa do pipeline de SageMaker IA adicionando um `@step` decorador. Em seguida, você pode passar o resultado da chamada da função decorada por `@step` como uma etapa para o Pipelines, para criar e executar um pipeline. Você também pode encadear uma série de funções com o decorador `@step` para criar um pipeline de gráfico acíclico direcionado (DAG) de várias etapas.

A configuração para usar o decorador `@step` é a mesma configuração para usar o decorador `@remote`. Você pode consultar a documentação da função remota para obter detalhes sobre como [configurar o ambiente](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator.html#train-remote-decorator-env) e [usar um arquivo de configuração](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator-config.html) para definir padrões. Para obter mais informações sobre o decorador `@step`, consulte [sagemaker.workflow.function\$1step.step](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.function_step.step).

Para ver cadernos de exemplo que demonstram o uso do decorador `@step`, consulte [cadernos de exemplo do decorador @step](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/step-decorator).

As seções a seguir explicam como você pode anotar seu código de ML local com um decorador `@step` para criar uma etapa, criar e executar um pipeline usando a etapa e personalizar a experiência para seu caso de uso.

**Topics**
+ [Criar um pipeline com funções decoradas por `@step`](pipelines-step-decorator-create-pipeline.md)
+ [Execute um pipeline](pipelines-step-decorator-run-pipeline.md)
+ [Configure seu pipeline](pipelines-step-decorator-cfg-pipeline.md)
+ [Práticas recomendadas](pipelines-step-decorator-best.md)
+ [Limitações](pipelines-step-decorator-limit.md)

# Criar um pipeline com funções decoradas por `@step`
<a name="pipelines-step-decorator-create-pipeline"></a>

Você pode criar um pipeline convertendo funções do Python em etapas de pipeline usando o decorador `@step`, criando dependências entre essas funções para criar um gráfico de pipeline (ou gráfico acíclico direcionado (DAG)) e passando os nós da folha desse gráfico como uma lista de etapas para o pipeline. As seções a seguir explicam esse procedimento detalhadamente com exemplos.

**Topics**
+ [Converter uma função em uma etapa](#pipelines-step-decorator-run-pipeline-convert)
+ [Crie dependências entre as etapas](#pipelines-step-decorator-run-pipeline-link)
+ [Use `ConditionStep` com etapas decoradas por `@step`](#pipelines-step-decorator-condition)
+ [Definir um pipeline usando a saída `DelayedReturn` das etapas](#pipelines-step-define-delayed)
+ [Criar um pipeline](#pipelines-step-decorator-pipeline-create)

## Converter uma função em uma etapa
<a name="pipelines-step-decorator-run-pipeline-convert"></a>

Para criar uma etapa usando o decorador `@step`, anote a função com `@step`. O exemplo a seguir mostra uma função decorada por `@step` que pré-processa os dados.

```
from sagemaker.workflow.function_step import step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe
    
step_process_result = preprocess(raw_data)
```

Quando você invoca uma função `@step` -decorada, a SageMaker IA retorna uma `DelayedReturn` instância em vez de executar a função. Uma instância `DelayedReturn` é um proxy para o retorno real da função. A instância `DelayedReturn` pode ser passada para outra função como argumento ou diretamente para uma instância do pipeline como uma etapa. Para obter informações sobre a `DelayedReturn` classe, consulte [sagemaker.workflow.function\$1step. DelayedReturn](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.function_step.DelayedReturn).

## Crie dependências entre as etapas
<a name="pipelines-step-decorator-run-pipeline-link"></a>

Ao criar uma dependência entre duas etapas, você cria uma conexão entre as etapas no gráfico do pipeline. As seções a seguir apresentam várias maneiras de criar uma dependência entre as etapas do pipeline.

### Dependências de dados por meio de argumentos de entrada
<a name="pipelines-step-decorator-run-pipeline-link-interstep"></a>

Passar a saída `DelayedReturn` de uma função como entrada para outra função cria automaticamente uma dependência de dados no DAG do pipeline. No exemplo a seguir, passar a saída `DelayedReturn` da função `preprocess` para a função `train` cria uma dependência entre `preprocess` e `train`.

```
from sagemaker.workflow.function_step import step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe

@step
def train(training_data):
    ...
    return trained_model

step_process_result = preprocess(raw_data)    
step_train_result = train(step_process_result)
```

O exemplo anterior define uma função de treinamento que é decorada com`@step`. Quando essa função é invocada, ela recebe a saída `DelayedReturn` da etapa do pipeline de pré-processamento como entrada. A invocação da função de treinamento retorna outra instância `DelayedReturn`. Essa instância contém as informações sobre todas as etapas anteriores definidas nessa função (ou seja, a etapa `preprocess` no exemplo) que formam o DAG do pipeline.

No exemplo anterior, a função `preprocess` retorna um único valor. Para tipos de retorno mais complexos, como listas ou tuplas, consulte [Limitações](pipelines-step-decorator-limit.md).

### Definir dependências personalizadas
<a name="pipelines-step-decorator-run-pipeline-link-custom"></a>

No exemplo anterior, a função `train` recebeu a saída `DelayedReturn` de `preprocess` e criou uma dependência. Se você quiser definir a dependência explicitamente sem passar a saída da etapa anterior, use a função `add_depends_on` com a etapa. Você pode usar a função `get_step()` para recuperar a etapa subjacente de sua instância `DelayedReturn` e, em seguida, chamar `add_depends_on`\$1on com a dependência como entrada. Para ver a definição da função `get_step()`, consulte [sagemaker.workflow.step\$1outputs.get\$1step](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_outputs.get_step). O exemplo a seguir mostra como criar uma dependência entre `preprocess` e `train` usando `get_step()` e `add_depends_on()`.

```
from sagemaker.workflow.step_outputs import get_step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    processed_data = ..
    return s3.upload(processed_data)

@step
def train():
    training_data = s3.download(....)
    ...
    return trained_model

step_process_result = preprocess(raw_data)    
step_train_result = train()

get_step(step_train_result).add_depends_on([step_process_result])
```

### Transmita dados de e para uma função decorada por `@step` para uma etapa tradicional de pipeline
<a name="pipelines-step-decorator-run-pipeline-link-pass"></a>

Você pode criar um pipeline que inclua uma etapa decorada por `@step` e uma etapa tradicional de pipeline para transmitir dados entre elas. Por exemplo, você pode usar `ProcessingStep` para processar os dados e passar o resultado para a função de treinamento decorada por `@step`. No exemplo a seguir, uma etapa de treinamento decorada por `@step` faz referência à saída de uma etapa de processamento.

```
# Define processing step

from sagemaker.sklearn.processing import SKLearnProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

sklearn_processor = SKLearnProcessor(
    framework_version='1.2-1',
    role='arn:aws:iam::123456789012:role/SagemakerExecutionRole',
    instance_type='ml.m5.large',
    instance_count='1',
)

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

process_step = ProcessingStep(
    name="MyProcessStep",
    step_args=sklearn_processor.run(inputs=inputs, outputs=outputs,code='preprocessing.py'),
)
```

```
# Define a @step-decorated train step which references the 
# output of a processing step

@step
def train(train_data_path, test_data_path):
    ...
    return trained_model
    
step_train_result = train(
   process_step.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
   process_step.properties.ProcessingOutputConfig.Outputs["test"].S3Output.S3Uri,
)
```

## Use `ConditionStep` com etapas decoradas por `@step`
<a name="pipelines-step-decorator-condition"></a>

Os pipelines oferecem apoio a uma classe `ConditionStep` que avalia os resultados das etapas anteriores para decidir qual ação tomar no pipeline. Você também pode usar `ConditionStep` com uma etapa decorada por `@step`. Para usar a saída de qualquer etapa decorada por `@step` com `ConditionStep`, insira a saída dessa etapa como argumento para `ConditionStep`. No exemplo a seguir, a etapa de condição recebe a saída da etapa de avaliação de modelo decorada por `@step`.

```
# Define steps

@step(name="evaluate")
def evaluate_model():
    # code to evaluate the model
    return {
        "rmse":rmse_value
    }
    
@step(name="register")
def register_model():
    # code to register the model
    ...
```

```
# Define ConditionStep

from sagemaker.workflow.condition_step import ConditionStep
from sagemaker.workflow.conditions import ConditionGreaterThanOrEqualTo
from sagemaker.workflow.fail_step import FailStep

conditionally_register = ConditionStep(
    name="conditional_register",
    conditions=[
        ConditionGreaterThanOrEqualTo(
            # Output of the evaluate step must be json serializable
            left=evaluate_model()["rmse"],  # 
            right=5,
        )
    ],
    if_steps=[FailStep(name="Fail", error_message="Model performance is not good enough")],
    else_steps=[register_model()],
)
```

## Definir um pipeline usando a saída `DelayedReturn` das etapas
<a name="pipelines-step-define-delayed"></a>

Você define um pipeline da mesma forma, independentemente de usar ou não um decorador `@step`. Ao passar uma instância `DelayedReturn` para seu pipeline, você não precisa passar uma lista completa de etapas para criar o pipeline. O SDK infere automaticamente as etapas anteriores com base nas dependências que você define. Todas as etapas anteriores dos objetos `Step` que você passou para o pipeline ou objetos `DelayedReturn` são incluídas no gráfico do pipeline. No exemplo a seguir, o pipeline recebe o objeto `DelayedReturn` da função `train`. SageMaker A IA adiciona a `preprocess` etapa, como etapa anterior`train`, ao gráfico do pipeline.

```
from sagemaker.workflow.pipeline import Pipeline

pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_train_result],
    sagemaker_session=<sagemaker-session>,
)
```

Se não houver dados ou dependências personalizadas entre as etapas e você executar várias etapas em paralelo, o gráfico do pipeline terá mais de um nó de folha. Passe todos esses nós de folha em uma lista para o argumento `steps` em sua definição de pipeline, conforme mostrado no seguinte exemplo:

```
@step
def process1():
    ...
    return data
    
@step
def process2():
   ...
   return data
   
step_process1_result = process1()
step_process2_result = process2()

pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_process1_result, step_process2_result],
    sagemaker_session=sagemaker-session,
)
```

Quando o pipeline é executado, as duas etapas são executadas paralelamente.

Você só passa os nós de folha do gráfico para o pipeline porque os nós de folha contêm informações sobre todas as etapas anteriores definidas por meio de dados ou dependências personalizadas. Ao compilar o pipeline, a SageMaker IA também infere todas as etapas subsequentes que formam o gráfico do pipeline e adiciona cada uma delas como uma etapa separada ao pipeline.

## Criar um pipeline
<a name="pipelines-step-decorator-pipeline-create"></a>

Crie um pipeline chamando `pipeline.create()`, como mostrado no trecho a seguir. Para obter detalhes sobre `create()`, consulte [sagemaker.workflow.pipeline.Pipeline.create](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.create).

```
role = "pipeline-role"
pipeline.create(role)
```

Quando você liga`pipeline.create()`, a SageMaker IA compila todas as etapas definidas como parte da instância do pipeline. SageMaker A IA carrega a função serializada, os argumentos e todos os outros artefatos relacionados à etapa para o Amazon S3.

Os dados residem no bucket do S3 de acordo com a seguinte estrutura:

```
s3_root_uri/
    pipeline_name/
        sm_rf_user_ws/
            workspace.zip  # archive of the current working directory (workdir)
        step_name/
            timestamp/
                arguments/                # serialized function arguments
                function/                 # serialized function
                pre_train_dependencies/   # any dependencies and pre_execution scripts provided for the step       
        execution_id/
            step_name/
                results     # returned output from the serialized function including the model
```

`s3_root_uri`é definido no arquivo de configuração do SageMaker AI e se aplica a todo o pipeline. Se indefinido, o bucket de SageMaker IA padrão será usado.

**nota**  
Toda vez que a SageMaker IA compila um pipeline, a SageMaker IA salva as funções, argumentos e dependências serializados das etapas em uma pasta com a data e hora atual. Isso ocorre toda vez que você executa `pipeline.create()`, `pipeline.update()`, `pipeline.upsert()` ou `pipeline.definition()`.

# Execute um pipeline
<a name="pipelines-step-decorator-run-pipeline"></a>

A página a seguir descreve como executar um pipeline com o Amazon SageMaker Pipelines, com recursos de SageMaker IA ou localmente.

Inicie uma nova execução de pipeline com a `pipeline.start()` função, como você faria com uma execução de pipeline de SageMaker IA tradicional. Para obter informações sobre a função `start()`, consulte [sagemaker.workflow.pipeline.Pipeline.start](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.start).

**nota**  
Uma etapa definida usando o decorador `@step` é executada como um trabalho de treinamento. Portanto, esteja ciente das seguintes limitações:  
Limites de instância e limites de tarefas de treinamento em suas contas. Atualize seus limites adequadamente para evitar problemas de limitação de recursos ou controle de utilização.
Os custos monetários associados a cada execução de uma etapa de treinamento no pipeline. Para obter mais detalhes, consulte [Amazon SageMaker Pricing](https://aws.amazon.com/sagemaker/pricing/).

## Recupere resultados de uma execução de pipeline localmente
<a name="pipelines-step-decorator-run-pipeline-retrieve"></a>

Para ver o resultado de qualquer etapa da execução de um pipeline, use [execution.result()](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline._PipelineExecution.result           ), conforme mostrado no trecho a seguir:

```
execution = pipeline.start()
execution.result(step_name="train")
```

**nota**  
O Pipelines não oferece apoio ao `execution.result()` no modo local.

Você só poderá recuperar resultados de uma etapa de cada vez. Se o nome da etapa foi gerado pela SageMaker IA, você pode recuperar o nome da etapa chamando da `list_steps` seguinte forma:

```
execution.list_step()
```

## Execute um pipeline localmente
<a name="pipelines-step-decorator-run-pipeline-local"></a>

Você pode executar um pipeline com etapas decoradas por `@step` localmente, como faria com as etapas tradicionais do pipeline. Para obter detalhes sobre a execução de pipeline no modo local, consulte [Executar pipelines usando o modo local](pipelines-local-mode.md). Para usar o modo local, forneça um `LocalPipelineSession` em vez de `SageMakerSession` para sua definição de pipeline, conforme mostrado no seguinte exemplo:

```
from sagemaker.workflow.function_step import step
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.pipeline_context import LocalPipelineSession

@step
def train():
    training_data = s3.download(....)
    ...
    return trained_model
    
step_train_result = train()

local_pipeline_session = LocalPipelineSession()

local_pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_train_result],
    sagemaker_session=local_pipeline_session # needed for local mode
)

local_pipeline.create(role_arn="role_arn")

# pipeline runs locally
execution = local_pipeline.start()
```

# Configure seu pipeline
<a name="pipelines-step-decorator-cfg-pipeline"></a>

É recomendável usar o arquivo de configuração do SageMaker AI para definir os padrões do pipeline. Para obter informações sobre o arquivo de configuração do SageMaker AI, consulte [Como configurar e usar padrões com o SDK do Python SageMaker ](https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk). Qualquer configuração adicionada ao arquivo de configuração se aplica a todas as etapas do pipeline. Se você quiser substituir as opções de alguma etapa, forneça novos valores nos argumentos do decorador `@step`. O tópico a seguir descreve como configurar um arquivo de configuração.

A configuração do decorador `@step` no arquivo de configuração é idêntica à configuração do decorador `@remote`. Para configurar o ARN da função do pipeline e as tags do pipeline no arquivo de configuração, use a seção `Pipeline` mostrada no seguinte trecho:

```
SchemaVersion: '1.0'
SageMaker:
  Pipeline:
    RoleArn: 'arn:aws:iam::555555555555:role/IMRole'
    Tags:
    - Key: 'tag_key'
      Value: 'tag_value'
```

Para a maioria dos padrões que você pode definir no arquivo de configuração, você também pode substituir passando novos valores para o decorador `@step`. Por exemplo, é possível substituir o tipo de instância definido no arquivo de configuração da etapa de pré-processamento, conforme mostrado no seguinte exemplo:

```
@step(instance_type="ml.m5.large")
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe
```

Alguns argumentos não fazem parte da lista de parâmetros do `@step` decorador. Eles só podem ser configurados para todo o pipeline por meio do arquivo de configuração do SageMaker AI. Eles estão listados a seguir:
+ `sagemaker_session`(`sagemaker.session.Session`): A sessão de SageMaker IA subjacente à qual a SageMaker IA delega chamadas de serviço. Se não for especificado, uma sessão será criada usando a seguinte configuração padrão:

  ```
  SageMaker:
    PythonSDK:
      Modules:
        Session:
          DefaultS3Bucket: 'default_s3_bucket'
          DefaultS3ObjectKeyPrefix: 'key_prefix'
  ```
+ `custom_file_filter` (`CustomFileFilter)`: um objeto `CustomFileFilter` que especifica os diretórios e arquivos locais a serem incluídos na etapa do pipeline. Se não for especificado, esse valor terá o padrão `None`. Para `custom_file_filter` entrar em vigor, você deve definir `IncludeLocalWorkdir` como `True`. O exemplo a seguir mostra uma configuração que ignora todos os arquivos do caderno e os arquivos e diretórios chamados `data`.

  ```
  SchemaVersion: '1.0'
  SageMaker:
    PythonSDK:
      Modules:
        RemoteFunction:
          IncludeLocalWorkDir: true
          CustomFileFilter: 
            IgnoreNamePatterns: # files or directories to ignore
            - "*.ipynb" # all notebook files
            - "data" # folder or file named "data"
  ```

  Para obter mais detalhes sobre como usar `IncludeLocalWorkdir` com `CustomFileFilter`, consulte [Como usar o código modular com o decorador @remote](train-remote-decorator-modular.md).
+ `s3_root_uri (str)`: a pasta raiz do Amazon S3 para a qual a SageMaker IA carrega os arquivos de código e os dados. Se não for especificado, o bucket de SageMaker IA padrão será usado.
+ `s3_kms_key (str)`: a chave usada para criptografar os dados de entrada e saída. Você só pode configurar esse argumento no arquivo de configuração do SageMaker AI e o argumento se aplica a todas as etapas definidas no pipeline. Se não especificado, o valor padrão é `None`. Veja o seguinte trecho para ver um exemplo de configuração de chave do KMS do S3:

  ```
  SchemaVersion: '1.0'
  SageMaker:
    PythonSDK:
      Modules:
        RemoteFunction:
          S3KmsKeyId: 's3kmskeyid'
          S3RootUri: 's3://amzn-s3-demo-bucket/my-project
  ```

# Práticas recomendadas
<a name="pipelines-step-decorator-best"></a>

As seções a seguir sugerem as práticas recomendadas a serem seguidas ao usar o decorador `@step` nas etapas do pipeline.

## Use grupos de aquecimento
<a name="pipelines-step-decorator-best-warmpool"></a>

Para uma execução mais rápida das etapas de pipeline, use a funcionalidade de grupos de aquecimento fornecida para trabalhos de treinamento. Você pode ativar a funcionalidade de grupos de aquecimento fornecendo o argumento `keep_alive_period_in_seconds` ao decorador `@step`, conforme demonstrado no seguinte trecho:

```
@step(
   keep_alive_period_in_seconds=900
)
```

Para obter mais informações sobre grupos quentes, consulte [SageMaker Piscinas aquecidas gerenciadas por IA](train-warm-pools.md). 

## Proteja seu diretório
<a name="pipelines-step-decorator-best-dir"></a>

É recomendável usar módulos de código ao usar o decorador `@step`. Coloque o módulo `pipeline.py`, no qual você invoca as funções de etapa e define o pipeline, na raiz do espaço de trabalho. A estrutura recomendada é mostrada a seguir:

```
.
├── config.yaml # the configuration file that define the infra settings
├── requirements.txt # dependencies
├── pipeline.py  # invoke @step-decorated functions and define the pipeline here
├── steps/
| ├── processing.py
| ├── train.py
├── data/
├── test/
```

# Limitações
<a name="pipelines-step-decorator-limit"></a>

As seções a seguir descrevem as limitações que você deve conhecer ao usar o decorador `@step` nas etapas do pipeline.

## Limitações de argumentos de função
<a name="pipelines-step-decorator-arg"></a>

Quando você passa um argumento de entrada para a função decorada por `@step`, as seguintes limitações se aplicam:
+ Você pode passar `DelayedReturn`, `Properties` (de etapas de outros tipos), `Parameter` e objetos `ExecutionVariable` para funções decoradas por `@step` como argumentos. Mas as funções decoradas por `@step` não oferecem apoio a `JsonGet` e objetos `Join` como argumentos.
+ Você não pode acessar diretamente uma variável de pipeline a partir de uma função `@step`. O seguinte exemplo produz um erro:

  ```
  param = ParameterInteger(name="<parameter-name>", default_value=10)
  
  @step
  def func():
      print(param)
  
  func() # this raises a SerializationError
  ```
+ Você não pode aninhar uma variável de pipeline em outro objeto e passá-la para uma função `@step`. O seguinte exemplo produz um erro:

  ```
  param = ParameterInteger(name="<parameter-name>", default_value=10)
  
  @step
  def func(arg):
      print(arg)
  
  func(arg=(param,)) # this raises a SerializationError because param is nested in a tuple
  ```
+ Como as entradas e saídas de uma função são serializadas, há restrições quanto ao tipo de dados que pode ser passado como entrada ou saída de uma função. Consulte a seção *Serialização e desserialização de dados* de [Invocar uma função remota](train-remote-decorator-invocation.md) para obter mais detalhes. As mesmas restrições se aplicam às funções decoradas por `@step`.
+ Qualquer objeto que tenha um cliente boto não pode ser serializado, portanto, você não pode passar esses objetos como entrada ou saída de uma função decorada por `@step`. Por exemplo, classes de cliente do SDK do SageMaker Python`Estimator`, como, e`Predictor`, não `Processor` podem ser serializadas.

## Importações de funções
<a name="pipelines-step-decorator-best-import"></a>

Você deve importar as bibliotecas exigidas pela etapa dentro da função, ao invés de fora. Se você importá-las em âmbito global, corre o risco de uma colisão de importação ao serializar a função. Por exemplo, `sklearn.pipeline.Pipeline` pode ser substituído por `sagemaker.workflow.pipeline.Pipeline`.

## Como referenciar membros filhos do valor de retorno da função
<a name="pipelines-step-decorator-best-child"></a>

Se você fizer referência a membros filhos do valor de retorno de uma função decorada por `@step`, as seguintes limitações se aplicam:
+ Você pode referenciar os membros secundários com `[]` se o objeto `DelayedReturn` representar uma tupla, lista ou dicionário, conforme mostrado no seguinte exemplo:

  ```
  delayed_return[0]
  delayed_return["a_key"]
  delayed_return[1]["a_key"]
  ```
+ Você não pode descompactar uma saída de tupla ou lista porque não é possível saber o comprimento exato da tupla ou lista subjacente quando você invoca a função. O seguinte exemplo produz um erro:

  ```
  a, b, c = func() # this raises ValueError
  ```
+ Você não pode repetir um objeto `DelayedReturn`. Veja a seguir um exemplo com erro:

  ```
  for item in func(): # this raises a NotImplementedError
  ```
+ Você não pode referenciar membros secundários arbitrários com “`.`”. O seguinte exemplo produz um erro:

  ```
  delayed_return.a_child # raises AttributeError
  ```

## Atributos de pipeline existentes que não são compatíveis
<a name="pipelines-step-decorator-best-unsupported"></a>

Você não pode usar o decorador `@step` com os seguintes atributos de pipeline:
+ [Cache de etapas de pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-caching.html)
+ [Arquivo de propriedades](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-propertyfile.html#build-and-manage-propertyfile-property)

# Passe dados entre etapas
<a name="build-and-manage-propertyfile"></a>

Ao criar pipelines com o Amazon SageMaker Pipelines, talvez seja necessário passar dados de uma etapa para a outra. Por exemplo, talvez você queira usar os artefatos do modelo gerados por uma etapa de treinamento como entrada para uma etapa de avaliação ou implantação de modelo. Você pode usar essa funcionalidade para criar etapas de pipeline interdependentes e construir seus fluxos de trabalho de ML.

Quando precisar recuperar informações da saída de uma etapa de pipeline, você pode usar `JsonGet`. `JsonGet` ajuda você a extrair informações do Amazon S3 ou de arquivos de propriedades. As seções a seguir explicam os métodos que você pode usar para extrair as saídas das etapas `JsonGet`.

## Transmita dados entre etapas com o Amazon S3
<a name="build-and-manage-propertyfile-s3"></a>

Você pode usar `JsonGet` em um `ConditionStep` para obter a saída JSON diretamente do Amazon S3. O URI do Amazon S3 pode ser uma função `Std:Join` contendo strings primitivas, variáveis de execução de pipeline ou parâmetros de pipeline. O exemplo a seguir mostra como você pode usar `JsonGet` em um `ConditionStep`.

```
# Example json file in s3 bucket generated by a processing_step
{
   "Output": [5, 10]
}

cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name="<step-name>",
        s3_uri="<s3-path-to-json>",
        json_path="Output[1]"
    ),
    right=6.0
)
```

Se você estiver usando `JsonGet` com um caminho do Amazon S3 na etapa de condição, deverá adicionar explicitamente uma dependência entre a etapa de condição e a etapa que gera a saída JSON. No seguinte exemplo, a etapa de condição é criada com uma dependência da etapa de processamento:

```
cond_step = ConditionStep(
        name="<step-name>",
        conditions=[cond_lte],
        if_steps=[fail_step],
        else_steps=[register_model_step],
        depends_on=[processing_step],
)
```

## Passe dados entre etapas com arquivos de propriedades
<a name="build-and-manage-propertyfile-property"></a>

Use arquivos de propriedades para armazenar informações da saída de uma etapa de processamento. Isso é particularmente útil ao analisar os resultados de uma etapa de processamento para decidir como uma etapa condicional deve ser executada. A `JsonGet` função processa um arquivo de propriedades e permite que você use a JsonPath notação para consultar o arquivo JSON da propriedade. Para obter mais informações sobre JsonPath notação, consulte o [JsonPath repositório](https://github.com/json-path/JsonPath).

Para armazenar um arquivo de propriedades para uso posterior, primeiro você deve criar uma instância `PropertyFile` com o formato a seguir. O parâmetro `path` é o nome do arquivo JSON no qual o arquivo de propriedades é salvo. Qualquer um `output_name` deve corresponder ao `output_name` do `ProcessingOutput` que você define em sua etapa de processamento. Isso permite que o arquivo de propriedades capture o `ProcessingOutput` na etapa.

```
from sagemaker.workflow.properties import PropertyFile

<property_file_instance> = PropertyFile(
    name="<property_file_name>",
    output_name="<processingoutput_output_name>",
    path="<path_to_json_file>"
)
```

Ao criar sua `ProcessingStep` instância, adicione o `property_files` parâmetro para listar todos os arquivos de parâmetros que o serviço Amazon SageMaker Pipelines deve indexar. Isso salva o arquivo de propriedades para uso posterior.

```
property_files=[<property_file_instance>]
```

Para usar seu arquivo de propriedade em uma etapa de condição, adicione a `property_file` à condição que você passa para sua etapa de condição, conforme mostrado no exemplo a seguir, para consultar o arquivo JSON da propriedade desejada usando o parâmetro `json_path`.

```
cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name=step_eval.name,
        property_file=<property_file_instance>,
        json_path="mse"
    ),
    right=6.0
)
```

Para obter exemplos mais detalhados, consulte *[Arquivo de propriedades](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#property-file)* no SDK do [Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

# Etapas do pipeline de cache
<a name="pipelines-caching"></a>

No Amazon SageMaker Pipelines, você pode usar o cache de etapas para economizar tempo e recursos ao executar novamente os pipelines. O cache de etapas reutiliza a saída de uma execução anterior bem-sucedida de uma etapa (em vez de computar novamente) quando a etapa tem a mesma configuração e entradas. Isso ajuda você a obter resultados consistentes em reexecuções de pipeline com parâmetros idênticos. O tópico a seguir mostra como configurar e ativar o armazenamento em cache de etapas para seus pipelines.

Quando você usa o cache de assinatura de etapas, o Pipelines tenta encontrar uma execução anterior da etapa atual do pipeline com os mesmos valores para determinados atributos. Se encontrada, o Pipelines propaga as saídas da execução anterior em vez de computar a etapa novamente. Os atributos verificados são específicos do tipo de etapa e estão listados em [Atributos de chave de cache padrão por tipo de etapa do pipeline](pipelines-default-keys.md).

Você deve optar pelo armazenamento em cache por etapas: ele está desativado por padrão. Ao ativar o cache de etapas, você também deve definir um tempo limite. Esse tempo limite define quantos anos uma corrida anterior pode ter para permanecer candidata à reutilização.

O cache de etapas considera apenas execuções bem-sucedidas: ele nunca reutiliza execuções com falha. Quando existem várias execuções bem-sucedidas dentro do período de tempo limite, o Pipelines usa o resultado para a execução bem-sucedida mais recente. Se nenhuma execução bem-sucedida coincidir no período de tempo limite, o Pipelines executa novamente a etapa. Se o executor encontrar uma execução anterior que atenda aos critérios, mas ainda esteja em andamento, as duas etapas continuarão em execução e atualizarão o cache se forem bem-sucedidas.

O cache de etapas tem como escopo apenas pipelines individuais, portanto, você não pode reutilizar uma etapa de outro pipeline, mesmo que haja uma correspondência na assinatura da etapa.

O cache de etapas está disponível para os seguintes tipos de etapas: 
+ [Processamento](build-and-manage-steps-types.md#step-type-processing)
+ [Treinamento](build-and-manage-steps-types.md#step-type-training)
+ [Ajustar](build-and-manage-steps-types.md#step-type-tuning)
+ [AutoML](build-and-manage-steps-types.md#step-type-automl)
+ [Transformação](build-and-manage-steps-types.md#step-type-transform)
+ [`ClarifyCheck`](build-and-manage-steps-types.md#step-type-clarify-check)
+ [`QualityCheck`](build-and-manage-steps-types.md#step-type-quality-check)
+ [EMR](build-and-manage-steps-types.md#step-type-emr)

**Topics**
+ [Ativar o cache de etapas](pipelines-caching-enabling.md)
+ [Desativar o cache de etapas](pipelines-caching-disabling.md)
+ [Atributos de chave de cache padrão por tipo de etapa do pipeline](pipelines-default-keys.md)
+ [Controle de acesso a dados em cache](pipelines-access-control.md)

# Ativar o cache de etapas
<a name="pipelines-caching-enabling"></a>

Para ativar o cache de etapas, você deve adicionar a propriedade `CacheConfig` à definição da etapa. As propriedades `CacheConfig` usam o seguinte formato no arquivo de definição do pipeline:

```
{
    "CacheConfig": {
        "Enabled": false,
        "ExpireAfter": "<time>"
    }
}
```

O campo `Enabled` indica se o armazenamento em cache está ativado para a etapa específica. Você pode definir o campo como`true`, o que SageMaker instrui a IA a tentar encontrar uma execução anterior da etapa com os mesmos atributos. Ou você pode definir o campo como`false`, o que SageMaker instrui a IA a executar a etapa toda vez que o pipeline for executado. `ExpireAfter`é uma string no formato de [duração ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Durations) que define o período de tempo limite. A `ExpireAfter` duração pode ser um valor de ano, mês, semana, dia, hora ou minuto. Cada valor consiste em um número seguido por uma letra indicando a unidade de duração. Por exemplo:
+ "30d" = 30 dias
+ "5y" = 5 anos
+ "T16m" = 16 minutos
+ "30dT5h" = 30 dias e 5 horas.

A discussão a seguir descreve o procedimento para ativar o armazenamento em cache para pipelines novos ou preexistentes usando o SDK do Amazon Python SageMaker .

**Ativar o armazenamento em cache para novos pipelines**

Para novos pipelines, inicialize uma instância `CacheConfig` com `enable_caching=True` e forneça-a como entrada para a etapa do pipeline. O seguinte exemplo ativa o armazenamento em cache com um período de tempo limite de 1 hora para uma etapa de treinamento: 

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
      
cache_config = CacheConfig(enable_caching=True, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)
```

**Ativar o armazenamento em cache para pipelines pré-existentes**

Para ativar o armazenamento em cache para pipelines preexistentes e já definidos, ative a propriedade `enable_caching` da etapa e defina `expire_after` como valor de tempo limite. Por fim, atualize o pipeline com `pipeline.upsert()` ou `pipeline.update()`. Depois de executá-lo novamente, o seguinte exemplo de código ativa o armazenamento em cache com um período de tempo limite de 1 hora para uma etapa de treinamento:

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
from sagemaker.workflow.pipeline import Pipeline

cache_config = CacheConfig(enable_caching=True, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)

# define pipeline
pipeline = Pipeline(
    steps=[step_train]
)

# additional step for existing pipelines
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Como alternativa, atualize a configuração do cache depois de já ter definido o pipeline (preexistente), permitindo a execução contínua de um código. O seguinte exemplo de código demonstra esse método:

```
# turn on caching with timeout period of one hour
pipeline.steps[0].cache_config.enable_caching = True 
pipeline.steps[0].cache_config.expire_after = "PT1H" 

# additional step for existing pipelines
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Para exemplos de código mais detalhados e uma discussão sobre como os parâmetros do SDK do Python afetam o armazenamento em cache, consulte [Configuração de cache na documentação do SDK do](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) Amazon Python. SageMaker 

# Desativar o cache de etapas
<a name="pipelines-caching-disabling"></a>

Uma etapa do pipeline não será executada novamente se você alterar algum atributo que não esteja listado em [Atributos de chave de cache padrão por tipo de etapa do pipeline](pipelines-default-keys.md) como seu tipo de etapa. No entanto, você pode decidir que deseja que a etapa do pipeline seja executada novamente de qualquer maneira. Nesse caso, você precisa desativar o cache de etapas.

Para desativar o armazenamento em cache de etapas, defina o `Enabled` atributo na propriedade `CacheConfig` da definição da etapa como `false`, conforme mostrado no seguinte trecho de código:

```
{
    "CacheConfig": {
        "Enabled": false,
        "ExpireAfter": "<time>"
    }
}
```

Observe que o atributo `ExpireAfter` é ignorado quando `Enabled` é `false`.

Para desativar o armazenamento em cache de uma etapa do pipeline usando o SDK do Amazon SageMaker Python, defina o pipeline da etapa do pipeline, desative `enable_caching` a propriedade e atualize o pipeline.

Depois de executá-lo novamente, o seguinte exemplo de código desativa o armazenamento em cache para uma etapa de treinamento:

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
from sagemaker.workflow.pipeline import Pipeline

cache_config = CacheConfig(enable_caching=False, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)

# define pipeline
pipeline = Pipeline(
    steps=[step_train]
)

# update the pipeline
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Como alternativa, desative a propriedade `enable_caching` depois de já ter definido o pipeline, permitindo a execução contínua de um código. O seguinte exemplo de código demonstra essa solução:

```
# turn off caching for the training step
pipeline.steps[0].cache_config.enable_caching = False

# update the pipeline
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Para exemplos de código mais detalhados e uma discussão sobre como os parâmetros do SDK do Python afetam o armazenamento em cache, consulte [Configuração de cache na documentação do SDK do](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) Amazon Python. SageMaker 

# Atributos de chave de cache padrão por tipo de etapa do pipeline
<a name="pipelines-default-keys"></a>

Ao decidir se deve reutilizar uma etapa anterior de pipeline ou executar a etapa novamente, o Pipelines verifica se determinados atributos foram alterados. Se o conjunto de atributos for diferente de todas as execuções anteriores dentro do período de tempo limite, a etapa será executada novamente. Esses atributos incluem artefatos de entrada, especificação de aplicação ou algoritmo e variáveis de ambiente. A lista a seguir mostra cada tipo de etapa do pipeline e os atributos que, se alterados, iniciam uma nova execução da etapa. Para obter mais informações sobre quais parâmetros do SDK do Python são usados para criar os seguintes atributos, consulte Configuração de [cache na](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) documentação do SDK do Amazon Python SageMaker .

## [Processamento de etapas](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html)
<a name="collapsible-caching-section-1"></a>
+ AppSpecification
+ Environment
+ ProcessingInputs. Esse atributo contém informações sobre o script de pré-processamento.

  

## [Etapa de treinamento](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)
<a name="collapsible-caching-section-2"></a>
+ AlgorithmSpecification
+ CheckpointConfig
+ DebugHookConfig
+ DebugRuleConfigurations
+ Environment
+ HyperParameters
+ InputDataConfig. Esse atributo contém informações sobre o script de treinamento.

  

## [Etapa de ajuste](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)
<a name="collapsible-caching-section-3"></a>
+ HyperParameterTuningJobConfig
+ TrainingJobDefinition. Esse atributo é composto por vários atributos secundários, e nem todos fazem com que a etapa seja executada novamente. Os atributos secundários que podem incorrer em uma nova execução (se alterados) são:
  + AlgorithmSpecification
  + HyperParameterRanges
  + InputDataConfig
  + StaticHyperParameters
  + TuningObjective
+ TrainingJobDefinitions

  

## [Etapa do AutoML](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_AutoMLJobConfig.html)
<a name="collapsible-caching-section-4"></a>
+ MLJobConfiguração automática. Esse atributo é composto por vários atributos secundários, e nem todos fazem com que a etapa seja executada novamente. Os atributos secundários que podem incorrer em uma nova execução (se alterados) são:
  + CompletionCriteria
  + CandidateGenerationConfig
  + DataSplitConfig
  + Modo
+ MLJobObjetivo automático
+ InputDataConfig
+ ProblemType

  

## [Etapa de transformação](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)
<a name="collapsible-caching-section-5"></a>
+ DataProcessing
+ Environment
+ ModelName
+ TransformInput

  

## [ClarifyCheck etapa](build-and-manage-steps-types.md#step-type-clarify-check)
<a name="collapsible-caching-section-6"></a>
+ ClarifyCheckConfig
+ CheckJobConfig
+ SkipCheck
+ RegisterNewBaseline
+ ModelPackageGroupName
+ SuppliedBaselineConstraints

  

## [QualityCheck etapa](build-and-manage-steps-types.md#step-type-quality-check)
<a name="collapsible-caching-section-7"></a>
+ QualityCheckConfig
+ CheckJobConfig
+ SkipCheck
+ RegisterNewBaseline
+ ModelPackageGroupName
+ SuppliedBaselineConstraints
+ SuppliedBaselineStatistics

  

## [Etapa do EMR](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-emr)
<a name="collapsible-caching-section-8"></a>
+ ClusterId
+ StepConfig

  

# Controle de acesso a dados em cache
<a name="pipelines-access-control"></a>

Quando um pipeline de SageMaker IA é executado, ele armazena em cache os parâmetros e metadados associados às tarefas de SageMaker IA lançadas pelo pipeline e os salva para reutilização em execuções subsequentes. Esses metadados podem ser acessados por meio de várias fontes, além das etapas do pipeline em cache, e incluem os seguintes tipos:
+ Solicitações `Describe*Job`
+ CloudWatch Registros
+ CloudWatch Eventos
+ CloudWatch Métricas
+ SageMaker Pesquisa de IA

Observe que o acesso a cada fonte de dados na lista é controlado por seu próprio conjunto de permissões do IAM. Remover o acesso de uma função específica a uma fonte de dados não afeta o nível de acesso às outras. Por exemplo, um administrador da conta pode remover as permissões do IAM para `Describe*Job` solicitações da função de um chamador. Embora o chamador não possa mais fazer solicitações `Describe*Job`, ele ainda pode recuperar os metadados de um pipeline executado com etapas em cache, desde que tenha permissão para executar o pipeline. Se um administrador da conta quiser remover completamente o acesso aos metadados de um determinado trabalho de SageMaker IA, ele precisará remover as permissões de cada um dos serviços relevantes que fornecem acesso aos dados. 

# Política de repetição para etapas do pipeline
<a name="pipelines-retry-policy"></a>

As políticas de repetição ajudam você a repetir automaticamente as etapas do Pipelines após a ocorrência de um erro. Qualquer etapa do pipeline pode encontrar exceções, e as exceções acontecem por vários motivos. Em certos casos, uma nova tentativa pode resolver esses problemas. Com uma política de nova tentativa para etapas do pipeline, você pode escolher se quer repetir uma etapa específica do pipeline ou não.

A política de nova tentativa é compatível com somente as seguintes etapas do pipeline:
+ [Processamento de etapas](build-and-manage-steps-types.md#step-type-processing) 
+ [Etapa de treinamento](build-and-manage-steps-types.md#step-type-training) 
+ [Etapa de ajuste](build-and-manage-steps-types.md#step-type-tuning) 
+ [Etapa do AutoML](build-and-manage-steps-types.md#step-type-automl) 
+ [Criar etapa de modelo](build-and-manage-steps-types.md#step-type-create-model) 
+ [Etapa de registrar modelo](build-and-manage-steps-types.md#step-type-register-model) 
+ [Etapa de transformação](build-and-manage-steps-types.md#step-type-transform) 
+ [Etapa de trabalho de caderno](build-and-manage-steps-types.md#step-type-notebook-job) 

**nota**  
Os trabalhos executados nas etapas de ajuste e AutoML conduzem novas tentativas internamente e não repetirão o tipo de exceção `SageMaker.JOB_INTERNAL_ERROR`, mesmo que uma política de nova tentativa esteja configurada. Você pode programar sua própria [estratégia de repetição](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RetryStrategy.html) usando a SageMaker API.

## Tipos de exceção compatíveis com a política de nova tentativa
<a name="pipelines-retry-policy-supported-exceptions"></a>

A política de nova tentativa para etapas do pipeline oferece apoio aos seguintes tipos de exceção:
+ `Step.SERVICE_FAULT`: essas exceções ocorrem quando ocorre um erro interno do servidor ou um erro transitório ao chamar serviços downstream. O Pipelines faz uma nova tentativa automaticamente nesse tipo de erro. Com uma política de nova tentativa, você pode substituir a operação de repetição padrão para esse tipo de exceção.
+ `Step.THROTTLING`: exceções de limitação podem ocorrer ao chamar os serviços downstream. O Pipelines faz uma nova tentativa automaticamente nesse tipo de erro. Com uma política de nova tentativa, você pode substituir a operação de repetição padrão para esse tipo de exceção.
+ `SageMaker.JOB_INTERNAL_ERROR`: essas exceções ocorrem quando o trabalho de SageMaker IA retorna`InternalServerError`. Nesse caso, iniciar um novo trabalho pode corrigir um problema transitório.
+ `SageMaker.CAPACITY_ERROR`: O trabalho de SageMaker IA pode encontrar o Amazon EC2`InsufficientCapacityErrors`, o que leva ao fracasso do trabalho de SageMaker IA. Você pode tentar novamente iniciando um novo trabalho de SageMaker IA para evitar o problema. 
+ `SageMaker.RESOURCE_LIMIT`: você pode exceder a cota limite de recursos ao executar um trabalho de SageMaker IA. Você pode esperar e tentar executar novamente o trabalho de SageMaker IA após um curto período e ver se os recursos foram liberados.

## O esquema JSON para a política de nova tentativa
<a name="pipelines-retry-policy-json-schema"></a>

A política de nova tentativa para o Pipelines tem o seguinte esquema JSON:

```
"RetryPolicy": {
   "ExceptionType": [String]
   "IntervalSeconds": Integer
   "BackoffRate": Double
   "MaxAttempts": Integer
   "ExpireAfterMin": Integer
}
```
+ `ExceptionType`: esse campo exige os seguintes tipos de exceção em um formato de matriz de sequências de caracteres.
  + `Step.SERVICE_FAULT`
  + `Step.THROTTLING`
  + `SageMaker.JOB_INTERNAL_ERROR`
  + `SageMaker.CAPACITY_ERROR`
  + `SageMaker.RESOURCE_LIMIT`
+ `IntervalSeconds` (opcional): o número de segundos antes da primeira tentativa (1 por padrão). `IntervalSeconds` tem um valor máximo de 43.200 segundos (12 horas).
+ `BackoffRate` (opcional): o multiplicador pelo qual o intervalo de novas tentativas aumenta durante cada tentativa (por padrão, 2,0).
+ `MaxAttempts` (opcional): um inteiro positivo que representa o número máximo de tentativas novas (por padrão, 5). Se o erro voltar a ocorrer mais vezes do que `MaxAttempts`, as novas tentativas são interrompidas e o tratamento de erro normal é retomado. Um valor de 0 especifica que os erros nunca são repetidos. `MaxAttempts` tem um valor máximo de 20.
+ `ExpireAfterMin` (opcional): um número inteiro positivo que representa o período máximo de repetição. Se o erro persistir após a execução da contagem de `ExpireAfterMin` minutos a partir da etapa, as novas tentativas serão interrompidas e o tratamento normal de erros será retomado. Um valor de 0 especifica que os erros nunca são repetidos. `ExpireAfterMin ` tem um valor máximo de 14.400 minutos (10 dias).
**nota**  
Somente um dos `MaxAttempts` ou `ExpireAfterMin` pode ser fornecido, mas não ambos; se ambos *não* forem especificados, `MaxAttempts` se tornará o padrão. Se ambas as propriedades forem identificadas em uma política, a política de nova tentativa gerará um erro de validação.

# Configuração uma política de nova tentativa
<a name="pipelines-configuring-retry-policy"></a>

Embora os SageMaker Pipelines forneçam uma maneira robusta e automatizada de orquestrar fluxos de trabalho de aprendizado de máquina, você pode encontrar falhas ao executá-los. Para lidar com esses cenários de forma tranquila e melhorar a confiabilidade de seus pipelines, você pode configurar políticas de repetição que definam como e quando repetir automaticamente etapas específicas após encontrar uma exceção. A política de repetição permite que você especifique os tipos de exceções a serem repetidas, o número máximo de tentativas, o intervalo entre as tentativas e a taxa de espera para aumentar os intervalos de repetição. A seção a seguir fornece exemplos de como configurar uma política de repetição para uma etapa de treinamento em seu pipeline, tanto em JSON quanto usando o SDK do Python SageMaker .

Veja a seguir um exemplo de uma etapa de treinamento com uma política de nova tentativa.

```
{
    "Steps": [
        {
            "Name": "MyTrainingStep",
            "Type": "Training",
            "RetryPolicies": [
                {
                    "ExceptionType": [
                        "SageMaker.JOB_INTERNAL_ERROR",
                        "SageMaker.CAPACITY_ERROR"
                    ],
                    "IntervalSeconds": 1,
                    "BackoffRate": 2,
                    "MaxAttempts": 5
                }
            ]
        }
    ]
}
```



Veja a seguir um exemplo de como criar um SDK `TrainingStep` in para Python (Boto3) com uma política de nova tentativa.

```
from sagemaker.workflow.retry import (
    StepRetryPolicy, 
    StepExceptionTypeEnum,
    SageMakerJobExceptionTypeEnum,
    SageMakerJobStepRetryPolicy
)

step_train = TrainingStep(
    name="MyTrainingStep",
    xxx,
    retry_policies=[
        // override the default 
        StepRetryPolicy(
            exception_types=[
                StepExceptionTypeEnum.SERVICE_FAULT, 
                StepExceptionTypeEnum.THROTTLING
            ],
            expire_after_mins=5,
            interval_seconds=10,
            backoff_rate=2.0 
        ),
        // retry when resource limit quota gets exceeded
        SageMakerJobStepRetryPolicy(
            exception_types=[SageMakerJobExceptionTypeEnum.RESOURCE_LIMIT],
            expire_after_mins=120,
            interval_seconds=60,
            backoff_rate=2.0
        ),
        // retry when job failed due to transient error or EC2 ICE.
        SageMakerJobStepRetryPolicy(
            failure_reason_types=[
                SageMakerJobExceptionTypeEnum.INTERNAL_ERROR,
                SageMakerJobExceptionTypeEnum.CAPACITY_ERROR,
            ],
            max_attempts=10,
            interval_seconds=30,
            backoff_rate=2.0
        )
    ]
)
```

Para obter mais informações sobre como configurar o comportamento de repetição para determinados tipos de etapas, consulte *[Amazon SageMaker Pipelines - Retry Policy na](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#retry-policy)* documentação do Amazon Python SageMaker SDK.

# Execução seletiva das etapas do pipeline
<a name="pipelines-selective-ex"></a>

Ao usar o Pipelines para criar fluxos de trabalho e orquestrar suas etapas de treinamento de ML, talvez seja necessário passar por várias fases de experimentação. Em vez de executar o pipeline completo a cada vez, talvez você queira repetir apenas algumas etapas. Com o Pipelines, você pode executar as etapas do pipeline de forma seletiva. Isso ajuda a otimizar seu treinamento de ML. A execução seletiva é útil nos seguintes cenários: 
+ Você quer reiniciar uma etapa específica com o tipo de instância, hiperparâmetros ou outras variáveis atualizados e, ao mesmo tempo, manter os parâmetros das etapas iniciais.
+ Seu pipeline falha em uma etapa intermediária. As etapas anteriores da execução, como preparação de dados ou extração de atributos, são caras de serem executadas novamente. Talvez seja necessário introduzir uma correção e executar novamente algumas etapas manualmente para concluir o pipeline. 

Usando a execução seletiva, você pode optar por executar qualquer subconjunto de etapas, desde que elas estejam conectadas no gráfico acíclico direcionado (DAG) do seu pipeline. O DAG a seguir mostra um exemplo de fluxo de trabalho de pipeline:

![\[Um gráfico acíclico dirigido (DAG, directed acyclic graph) de um exemplo de pipeline.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/pipeline-full.png)


Você pode selecionar etapas `AbaloneTrain` e `AbaloneEval` em uma execução seletiva, mas não pode selecionar apenas `AbaloneTrain` e `AbaloneMSECond`, porque essas etapas não estão conectadas no DAG. Para etapas não selecionadas no fluxo de trabalho, a execução seletiva reutiliza as saídas da execução de um pipeline de referência em vez de executar as etapas novamente. Além disso, as etapas não selecionadas que estão a jusante das etapas selecionadas não são executadas em uma execução seletiva. 

Se você optar por executar um subconjunto de etapas intermediárias em seu pipeline, suas etapas poderão depender das etapas anteriores. SageMaker A IA precisa de uma execução de pipeline de referência a partir da qual fornecer recursos a essas dependências. Por exemplo, se você optar por executar as etapas `AbaloneTrain` e `AbaloneEval`, você precisa das saídas da etapa `AbaloneProcess`. Você pode fornecer um ARN de execução de referência ou direcionar a SageMaker IA para usar a execução mais recente do pipeline, que é o comportamento padrão. Se você tiver uma execução de referência, também poderá criar os parâmetros de runtime de sua execução de referência e fornecê-los à sua execução executiva seletiva com substituições. Para obter detalhes, consulte [Reutilize valores de parâmetros de runtime de uma execução de referência](#pipelines-selective-ex-reuse).

Em detalhes, você especifica uma configuração para sua execução de pipeline de execução seletiva usando `SelectiveExecutionConfig`. Se você incluir um ARN para a execução de um pipeline de referência (com o `source_pipeline_execution_arn` argumento), a SageMaker AI usará as dependências da etapa anterior da execução do pipeline que você forneceu. Se você não incluir um ARN e existir uma execução de pipeline mais recente, a SageMaker IA o usará como referência por padrão. Se você não incluir um ARN e não quiser que a SageMaker IA use sua última execução de pipeline, `reference_latest_execution` defina como. `False` A execução do pipeline que a SageMaker IA finalmente usa como referência, seja a mais recente ou especificada pelo usuário, deve estar em `Success` ou `Failed` estado.

A tabela a seguir resume como a SageMaker IA escolhe uma execução de referência.


| O valor do argumento `source_pipeline_execution_arn` | O valor do argumento `reference_latest_execution` | A execução de referência usada | 
| --- | --- | --- | 
| Um ARN de pipeline | `True` ou não especificado | Esse é o ARN do pipeline especificado | 
| Um ARN de pipeline | `False` | Esse é o ARN do pipeline especificado | 
| null ou não especificado | `True` ou não especificado | A última execução do pipeline | 
| null ou não especificado | `False` | Nenhuma: nesse caso, selecione etapas sem dependências upstream | 

Para obter mais informações sobre os requisitos de configuração de execução seletiva, consulte [sagemaker.workflow.selective\$1execution\$1config. SelectiveExecutionConfig](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#selective-execution-config)documentação.

A discussão a seguir inclui exemplos dos casos em que você deseja especificar uma execução de referência de pipeline, usar a execução mais recente do pipeline como referência ou executar a execução seletiva sem uma execução de pipeline de referência.

## Execução seletiva com uma referência de pipeline especificada pelo usuário
<a name="pipelines-selective-ex-arn"></a>

O exemplo a seguir demonstra o uso da execução seletiva das etapas `AbaloneTrain` e `AbaloneEval` usando uma execução de pipeline de referência.

```
from sagemaker.workflow.selective_execution_config import SelectiveExecutionConfig

selective_execution_config = SelectiveExecutionConfig(
    source_pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef", 
    selected_steps=["AbaloneTrain", "AbaloneEval"]
)

selective_execution = pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Execução seletiva com a execução mais recente do pipeline como referência
<a name="pipelines-selective-ex-latest"></a>

O exemplo a seguir demonstra o uso da execução seletiva das etapas `AbaloneTrain` e `AbaloneEval` usando a execução mais recente do pipeline como referência. Como a SageMaker IA usa a execução mais recente do pipeline por padrão, você pode, opcionalmente, definir o `reference_latest_execution` argumento como. `True`

```
# Prepare a new selective execution. Select only the first step in the pipeline without providing source_pipeline_execution_arn.
selective_execution_config = SelectiveExecutionConfig(
    selected_steps=["AbaloneTrain", "AbaloneEval"],
    # optional
    reference_latest_execution=True
)

# Start pipeline execution without source_pipeline_execution_arn
pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Execução seletiva sem um pipeline de referência
<a name="pipelines-selective-ex-none"></a>

O exemplo a seguir demonstra uma execução seletiva das etapas `AbaloneProcess` `AbaloneTrain` sem fornecer um ARN de referência e desativar a opção de usar a última execução do pipeline como referência. SageMaker A IA permite essa configuração, pois esse subconjunto de etapas não depende das etapas anteriores.

```
# Prepare a new selective execution. Select only the first step in the pipeline without providing source_pipeline_execution_arn.
selective_execution_config = SelectiveExecutionConfig(
    selected_steps=["AbaloneProcess", "AbaloneTrain"],
    reference_latest_execution=False
)

# Start pipeline execution without source_pipeline_execution_arn
pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Reutilize valores de parâmetros de runtime de uma execução de referência
<a name="pipelines-selective-ex-reuse"></a>

Você pode criar os parâmetros da execução do pipeline de referência usando `build_parameters_from_execution` e fornecer o resultado ao pipeline de execução seletiva. Você pode usar os parâmetros originais da execução da referência ou aplicar quaisquer substituições usando o argumento `parameter_value_overrides`.

O exemplo a seguir mostra como criar parâmetros a partir de uma execução de referência e aplicar uma substituição ao parâmetro `MseThreshold`.

```
# Prepare a new selective execution.
selective_execution_config = SelectiveExecutionConfig(
    source_pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef",
    selected_steps=["AbaloneTrain", "AbaloneEval", "AbaloneMSECond"],
)
# Define a new parameters list to test.
new_parameters_mse={
    "MseThreshold": 5,
}

# Build parameters from reference execution and override with new parameters to test.
new_parameters = pipeline.build_parameters_from_execution(
    pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef",
    parameter_value_overrides=new_parameters_mse
)

# Start pipeline execution with new parameters.
execution = pipeline.start(
    selective_execution_config=selective_execution_config,
    parameters=new_parameters
)
```

# Cálculo básico, detecção de desvios, ciclo de vida e ClarifyCheck etapas QualityCheck no Amazon Pipelines SageMaker
<a name="pipelines-quality-clarify-baseline-lifecycle"></a>

O tópico a seguir discute como as linhas de base e as versões do modelo evoluem no Amazon SageMaker Pipelines ao usar as etapas e. [`ClarifyCheck`](build-and-manage-steps-types.md#step-type-clarify-check) [`QualityCheck`](build-and-manage-steps-types.md#step-type-quality-check)

Para a etapa `ClarifyCheck`, uma linha de base é um único arquivo que reside nas propriedades da etapa com o sufixo `constraints`. Para a etapa `QualityCheck`, uma linha de base é uma combinação de dois arquivos que residem nas propriedades da etapa: um com o sufixo `statistics` e outro com o sufixo `constraints`. Nos tópicos a seguir, discutimos essas propriedades com um prefixo que descreve como elas são usadas, afetando o comportamento básico e o ciclo de vida nessas duas etapas do pipeline. Por exemplo, a etapa `ClarifyCheck` sempre calcula e atribui as novas linhas de base na propriedade `CalculatedBaselineConstraints` e a etapa `QualityCheck` faz o mesmo nas propriedades `CalculatedBaselineConstraints` e `CalculatedBaselineStatistics`.

## Cálculo e registro da linha de base ClarifyCheck e etapas QualityCheck
<a name="pipelines-quality-clarify-baseline-calculations"></a>

As etapas `ClarifyCheck` e `QualityCheck` sempre calculam novas linhas de base com base nas entradas da etapa por meio da execução do trabalho de processamento subjacente. Essas linhas de base recém-calculadas são acessadas por meio das propriedades com o prefixo `CalculatedBaseline`. Você pode registrar essas propriedades como as `ModelMetrics` do seu pacote de modelo no [Etapa do modelo](build-and-manage-steps-types.md#step-type-model). Este pacote de modelo pode ser registrado com 5 linhas de base diferentes. Você pode registrá-lo com um para cada tipo de verificação: desvio de dados, desvio do modelo e explicabilidade do modelo a partir da execução da etapa `ClarifyCheck` e da qualidade do modelo, e qualidade dos dados da execução da etapa `QualityCheck`. O parâmetro `register_new_baseline` determina o valor definido nas propriedades com o prefixo `BaselineUsedForDriftCheck` após a execução de uma etapa.

A tabela a seguir de possíveis casos de uso mostra comportamentos diferentes resultantes dos parâmetros da etapa que você pode definir para as etapas `ClarifyCheck` e `QualityCheck`:


| Possível caso de uso que você pode considerar para selecionar essa configuração  | `skip_check` / `register_new_baseline` | O Step faz uma verificação de oscilação? | Valor da propriedade da etapa `CalculatedBaseline` | Valor da propriedade da etapa `BaselineUsedForDriftCheck` | 
| --- | --- | --- | --- | --- | 
| Você está fazendo um novo treinamento regular com as verificações habilitadas para obter uma nova versão do modelo, mas *deseja transferir as linhas de base anteriores* conforme estão `DriftCheckBaselines` no registro do modelo para sua nova versão do modelo. | False/ False | A verificação de deriva é executada em relação às linhas de base existentes | Novas linhas de base calculadas executando a etapa | Linha de base do último modelo aprovado no Model Registry ou a linha de base fornecida como parâmetro de etapa | 
| Você está fazendo um novo treinamento regular com as verificações habilitadas para obter uma nova versão do modelo, mas *deseja atualizá-las `DriftCheckBaselines` no registro do modelo com as linhas de base recém-calculadas* para sua nova versão do modelo. | False/ True | A verificação de deriva é executada em relação às linhas de base existentes | Novas linhas de base calculadas executando a etapa | Linha de base recém-calculada executando a etapa (valor da propriedade CalculatedBaseline) | 
| Você está iniciando o pipeline para treinar novamente uma nova versão do modelo porque há uma violação detectada pelo Amazon SageMaker Model Monitor em um endpoint para um determinado tipo de verificação e deseja *ignorar esse tipo de verificação em relação à linha de base anterior, mas transferir a linha de base anterior como `DriftCheckBaselines` no registro do modelo para sua nova versão do modelo*. | True/ False | Sem verificação de oscilação | Novas linhas de base calculadas pela execução | Linha de base do último modelo aprovado no registro do modelo ou da linha de base fornecida como parâmetro de etapa | 
| Isso acontece nos seguintes casos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html)  | True/ True | Sem verificação de oscilação | Novas linhas de base calculadas executando a etapa | Linha de base recém-calculada executando a etapa (valor da propriedade CalculatedBaseline) | 

**nota**  
Se você usar notação científica em sua restrição, precisará converter em float. Para obter um exemplo de script de pré-processamento de como fazer isso, consulte [Criar uma linha de base de qualidade de modelo](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-baseline.html).

Ao registrar um modelo com [Etapa do modelo](build-and-manage-steps-types.md#step-type-model), você pode registrar a propriedade `BaselineUsedForDriftCheck` como `DriftCheckBaselines`. Esses arquivos de linha de base podem então ser usados pelo Model Monitor para verificações de qualidade de modelos e dados. Além disso, essas linhas de base também podem ser usadas na `QualityCheck` etapa ClarifyCheckStep e para comparar modelos recém-treinados com os modelos existentes que estão registrados no registro de modelos para futuras execuções do pipeline.

## Detecção de oscilações em relação às linhas de base anteriores no Pipelines
<a name="pipelines-quality-clarify-baseline-drift-detection"></a>

No caso da etapa `QualityCheck`, ao iniciar o pipeline de treinamento regular para obter uma nova versão do modelo, talvez você não queira executar a etapa de treinamento se a qualidade dos dados e o desvio de dados tiverem [Esquema para violações (arquivo constraint\$1violations.json)](model-monitor-interpreting-violations.md) nas linhas de base da versão anterior do modelo aprovada. Talvez você também não queira registrar a versão do modelo recém-treinada se a qualidade do modelo, o desvio do modelo ou a explicabilidade do modelo violarem a linha de base registrada da versão anterior aprovada do modelo ao executar a etapa `ClarifyCheck`. Nesses casos, você pode ativar as verificações desejadas definindo a propriedade `skip_check` da etapa de verificação correspondente definida como `False`, resultando na falha das etapas `ClarifyCheck` e `QualityCheck` se a violação for detectada em relação às linhas de base anteriores. O processo de pipeline então não prossegue, de forma que o modelo com oscilação da linha de base não seja registrado. As etapas `ClarifyCheck` e `QualityCheck` são capazes de obter `DriftCheckBaselines` a versão mais recente do modelo aprovado de um determinado grupo de pacotes de modelos com a qual comparar. As linhas de base anteriores também podem ser fornecidas diretamente `supplied_baseline_constraints` (além de `supplied_baseline_statistics` se for uma etapa `QualityCheck`) e são sempre priorizadas sobre quaisquer linhas de base extraídas do grupo de pacotes de modelo. 

## Ciclo de vida e evolução da versão do modelo e linha de base com o Pipelines
<a name="pipelines-quality-clarify-baseline-evolution"></a>

Ao definir `register_new_baseline` de suas etapas `ClarifyCheck` e `QualityCheck` como `False`, sua linha de base anterior pode ser acessada por meio do prefixo `BaselineUsedForDriftCheck` da propriedade da etapa. Em seguida, você pode registrar essas linhas de base como `DriftCheckBaselines` na nova versão do modelo ao registrar um modelo com [Etapa do modelo](build-and-manage-steps-types.md#step-type-model). Depois de aprovar essa nova versão do modelo no registro do modelo, a `DriftCheckBaseline` versão deste modelo fica disponível para as etapas `ClarifyCheck` e `QualityCheck` e etapas do próximo processo de pipeline. Se você quiser atualizar a linha de base de um determinado tipo de verificação para futuras versões do modelo, defina `register_new_baseline` para `True` que as propriedades com prefixo `BaselineUsedForDriftCheck` se tornem a linha de base recém-calculada. Dessa forma, você pode preservar suas linhas de base preferidas para um modelo treinado no futuro ou atualizá-las para verificações de oscilação quando necessário, gerenciando a evolução da linha de base e o ciclo de vida em todas as iterações de treinamento do modelo. 

O diagrama a seguir ilustra uma model-version-centric visão da evolução básica e do ciclo de vida.

![\[Uma model-version-centric visão da evolução básica e do ciclo de vida.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/pipelines/Baseline-Lifecycle.png)


# Programar execuções de pipeline
<a name="pipeline-eventbridge"></a>

[Você pode programar suas execuções do Amazon SageMaker Pipelines usando a Amazon. EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) O Amazon SageMaker Pipelines é suportado como alvo na [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html). Isso permite que você inicie a execução do seu pipeline de construção de modelos com base em qualquer evento em seu barramento de eventos. Com EventBridge, você pode automatizar suas execuções de pipeline e responder automaticamente a eventos, como tarefas de treinamento ou mudanças no status do endpoint. Os eventos incluem um novo arquivo sendo carregado para seu bucket do Amazon S3, uma alteração no status do seu endpoint do Amazon SageMaker AI devido à deriva e tópicos do *Amazon Simple Notification Service* (SNS).

As seguintes ações do Pipelines podem ser iniciadas automaticamente:  
+  `StartPipelineExecution` 

Para obter mais informações sobre o agendamento de trabalhos de SageMaker IA, consulte [Automatização da IA SageMaker com a Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/automating-sagemaker-with-eventbridge.html). EventBridge 

**Topics**
+ [Agende um pipeline com a Amazon EventBridge](#pipeline-eventbridge-schedule)
+ [Agende um pipeline com o SDK do SageMaker Python](#build-and-manage-scheduling)

## Agende um pipeline com a Amazon EventBridge
<a name="pipeline-eventbridge-schedule"></a>

Para iniciar a execução de um pipeline com o Amazon CloudWatch Events, você deve criar uma EventBridge [regra](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_Rule.html). Ao criar uma regra para eventos, você especifica uma ação de destino a ser tomada ao EventBridge receber um evento que corresponda à regra. Quando um evento corresponde à regra, EventBridge envia o evento para o destino especificado e inicia a ação definida na regra. 

 Os tutoriais a seguir mostram como agendar a execução de um pipeline EventBridge usando o EventBridge console ou o. AWS CLI  

### Pré-requisitos
<a name="pipeline-eventbridge-schedule-prerequisites"></a>
+ Uma função que EventBridge pode ser assumida com a `SageMaker::StartPipelineExecution` permissão. Essa função pode ser criada automaticamente se você criar uma regra no EventBridge console; caso contrário, você mesmo precisará criar essa função. Para obter informações sobre como criar uma função de SageMaker IA, consulte [SageMaker Funções](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html).
+ Um Amazon SageMaker AI Pipeline para programar. Para criar um pipeline de SageMaker IA da Amazon, consulte [Definir um pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/define-pipeline.html).

### Crie uma EventBridge regra usando o EventBridge console
<a name="pipeline-eventbridge-schedule-console"></a>

 O procedimento a seguir mostra como criar uma EventBridge regra usando o EventBridge console.  

1. Navegue até o [console do EventBridge ](https://console.aws.amazon.com/events). 

1. Selecione **Regras** no lado esquerdo. 

1.  Selecione `Create Rule`. 

1. Insira um nome e uma descrição para a regra.

1.  Selecione como deseja iniciar essa regra. Você tem as seguintes opções para sua regra: 
   + **Padrão de evento**: sua regra é iniciada quando ocorre um evento correspondente ao padrão. Você pode escolher um padrão predefinido que corresponda a um determinado tipo de evento ou criar um padrão personalizado. Se você selecionar um padrão predefinido, poderá editar o padrão para personalizá-lo. Para obter mais informações sobre padrões de eventos, consulte [Padrões de CloudWatch eventos em eventos](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html). 
   + **Programação**: sua regra é iniciada regularmente em uma programação especificada. Você pode usar uma programação de taxa fixa que inicia regularmente por um número específico de minutos, horas ou semanas. Você também pode usar uma [expressão cron](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions) para criar uma programação mais refinada, como “a primeira segunda-feira de cada mês, às 8h”. A programação não é compatível com um barramento de eventos parceiro ou personalizado. 

1. Selecione o barramento de eventos desejado. 

1. Selecione as metas a serem invocadas quando um evento corresponder ao seu padrão de eventos ou quando a programação for iniciada. Você pode adicionar até cinco destinos por regra. Selecione `SageMaker Pipeline` na lista suspensa destino. 

1. Selecione o pipeline que você deseja iniciar na lista suspensa do pipeline. 

1. Adicione parâmetros para passar para a execução do pipeline usando um par de nome e valor. Os valores dos parâmetros podem ser estáticos ou dinâmicos. Para obter mais informações sobre os parâmetros do Amazon SageMaker AI Pipeline, consulte [AWS::Events::Rule SagemakerPipelineParameters](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-pipeline.html#aws-resource-sagemaker-pipeline-properties).
   + Valores estáticos são passados para a execução do pipeline toda vez que o pipeline é iniciado. Por exemplo, se `{"Name": "Instance_type", "Value": "ml.4xlarge"}` for especificado na lista de parâmetros, ele será passado como um parâmetro `StartPipelineExecutionRequest` sempre que EventBridge iniciar o pipeline. 
   + Os valores dinâmicos são especificados usando um caminho JSON. EventBridge analisa o valor da carga útil de um evento e o passa para a execução do pipeline. Por exemplo: *`$.detail.param.value`* 

1. Selecione a função a ser usada para essa regra. Você pode usar uma função existente ou criar uma nova. 

1. (Opcional) Adicionar tag. 

1. Selecione `Create` para finalizar sua regra. 

 Sua regra agora está em vigor e pronta para iniciar suas execuções de pipeline. 

### Crie uma EventBridge regra usando o [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/events/index.html)
<a name="pipeline-eventbridge-schedule-cli"></a>

 O procedimento a seguir mostra como criar uma EventBridge regra usando AWS CLI o. 

1. Crie uma regra a ser iniciada. Ao criar uma EventBridge regra usando o AWS CLI, você tem duas opções de como sua regra é iniciada: padrão de evento e programação.
   +  **Padrão de evento**: sua regra é iniciada quando ocorre um evento correspondente ao padrão. Você pode escolher um padrão predefinido que corresponda a um determinado tipo de evento ou criar um padrão personalizado. Se você selecionar um padrão predefinido, poderá editar o padrão para personalizá-lo.  Você pode criar uma regra com padrão de evento usando o seguinte comando: 

     ```
     aws events put-rule --name <RULE_NAME> ----event-pattern <YOUR_EVENT_PATTERN> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
     ```
   +  **Programação**: sua regra é iniciada regularmente em uma programação especificada. Você pode usar uma programação de taxa fixa que inicia regularmente por um número específico de minutos, horas ou semanas. Você também pode usar uma expressão cron para criar uma programação mais refinada, como “a primeira segunda-feira de cada mês, às 8h”. A programação não é compatível com um barramento de eventos parceiro ou personalizado. Você pode criar um cluster usando a programação com o seguinte comando: 

     ```
     aws events put-rule --name <RULE_NAME> --schedule-expression <YOUR_CRON_EXPRESSION> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
     ```

1. Adicione metas a serem invocadas quando um evento corresponder ao seu padrão de eventos ou quando a programação for iniciada. Você pode adicionar até cinco destinos por regra.  Para cada destino, você deve especificar:  
   +  ARN: o ARN do recurso do seu pipeline. 
   +  ARN da função: o ARN da função EventBridge deve ser assumida para executar o pipeline. 
   +  Parâmetros: parâmetros do pipeline de SageMaker IA da Amazon a serem transmitidos. 

1. Execute o comando a seguir para passar um pipeline de SageMaker IA da Amazon como alvo para sua regra usando [put-targets:](https://docs.aws.amazon.com/cli/latest/reference/events/put-targets.html) 

   ```
   aws events put-targets --rule <RULE_NAME> --event-bus-name <EVENT_BUS_NAME> --targets "[{\"Id\": <ID>, \"Arn\": <RESOURCE_ARN>, \"RoleArn\": <ROLE_ARN>, \"SageMakerPipelineParameter\": { \"SageMakerParameterList\": [{\"Name\": <NAME>, \"Value\": <VALUE>}]} }]"] 
   ```

## Agende um pipeline com o SDK do SageMaker Python
<a name="build-and-manage-scheduling"></a>

As seções a seguir mostram como configurar permissões para acessar EventBridge recursos e criar seu cronograma de pipeline usando o SDK do SageMaker Python. 

### Permissões obrigatórias
<a name="build-and-manage-scheduling-permissions"></a>

Você precisa ter as permissões necessárias para usar o programador de pipeline. Conclua as seguintes etapas para configurar suas permissões:

1. Anexe a seguinte política de privilégios mínimos à função do IAM usada para criar os acionadores do pipeline ou use a AWS política gerenciada. `AmazonEventBridgeSchedulerFullAccess`

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement":
       [
           {
               "Action":
               [
                   "scheduler:ListSchedules",
                   "scheduler:GetSchedule",
                   "scheduler:CreateSchedule",
                   "scheduler:UpdateSchedule",
                   "scheduler:DeleteSchedule"
               ],
               "Effect": "Allow",
               "Resource":
               [
                   "*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*", 
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": "scheduler.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

1. Estabeleça uma relação de confiança EventBridge adicionando o diretor de serviço `scheduler.amazonaws.com` à política de confiança dessa função. Certifique-se de anexar a seguinte política de confiança à função de execução se você iniciar o notebook no SageMaker Studio.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "scheduler.amazonaws.com",
                    "sagemaker.amazonaws.com"
                ]
            },
        "Action": "sts:AssumeRole"
        }
    ]
}
```

------

### Criar e programar um pipeline
<a name="build-and-manage-scheduling-create"></a>

Usando o construtor `PipelineSchedule`, você pode programar um pipeline para ser executado uma vez ou em um intervalo predeterminado. Um cronograma de pipeline deve ser do tipo `at`, `rate` ou `cron`. Esse conjunto de tipos de agendamento é uma extensão das opções de [EventBridge agendamento.](https://docs.aws.amazon.com/scheduler/latest/UserGuide/schedule-types.html) Para obter mais informações sobre como usar a `PipelineSchedule` classe, consulte [sagemaker.workflow.triggers. PipelineSchedule](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#pipeline-schedule). O exemplo a seguir demonstra como criar cada tipo de agendamento com `PipelineSchedule`.

```
from sagemaker.workflow.triggers import PipelineSchedule

# schedules a pipeline run for 12/13/2023 at time 10:15:20 UTC
my_datetime_schedule = PipelineSchedule(
    name="<schedule-name>", 
    at=datetime(2023, 12, 13, 10, 15, 20)
)

# schedules a pipeline run every 5 minutes
my_rate_schedule = PipelineSchedule(
    name="<schedule-name>", 
    rate=(5, "minutes")
)

# schedules a pipeline run at 10:15am UTC on the last Friday of each month during the years 2022 to 2023
my_cron_schedule = PipelineSchedule(
    name="<schedule-name>", 
    cron="15 10 ? * 6L 2022-2023"
)
```

**nota**  
Se você criar um agendamento único e precisar acessar a hora atual, use `datetime.utcnow()` em vez de `datetime.now()`. O último não armazena o contexto da zona atual e resulta em um tempo incorreto passado para EventBridge.

### Anexar o acionador ao seu pipeline
<a name="build-and-manage-scheduling-attach"></a>

Para anexar seu `PipelineSchedule` ao seu pipeline, invoque a chamada `put_triggers` no objeto de pipeline criado com uma lista de acionadores. Se você receber um ARN de resposta, você criou com sucesso o cronograma em sua conta e EventBridge começa a invocar o funil de destino no horário ou na taxa especificada. Você deve especificar uma função com as permissões corretas para anexar acionadores a um pipeline principal. Se você não fornecer nenhuma, o Pipelines busca a função padrão usada para criar o pipeline a partir do [arquivo de configuração](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator-config.html).

O exemplo a seguir demonstra como anexar um cronograma a um pipeline.

```
scheduled_pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[...],
    sagemaker_session=<sagemaker-session>,
)
custom_schedule = PipelineSchedule(
    name="<schedule-name>", 
    at=datetime(year=2023, month=12, date=25, hour=10, minute=30, second=30)
)
scheduled_pipeline.put_triggers(triggers=[custom_schedule], role_arn=<role>)
```

### Descrever os acionadores atuais
<a name="build-and-manage-scheduling-describe"></a>

Para recuperar informações sobre os acionadores do pipeline criado, você pode invocar a API `describe_trigger()` com o nome do acionador. Esse comando retorna detalhes sobre a expressão de agendamento criada, como horário de início, estado ativado e outras informações úteis. O trecho a seguir mostra um exemplo de invocação:

```
scheduled_pipeline.describe_trigger(name="<schedule-name>")
```

### Recursos de remoção de acionador
<a name="build-and-manage-scheduling-clean"></a>

Antes de excluir seu pipeline, limpe os acionadores existentes para evitar um vazamento de recursos em sua conta. Você deve excluir os acionadores antes de destruir o pipeline principal. Você pode excluir seus acionadores passando uma lista de nomes de acionadores para a API `delete_triggers`. O trecho a seguir demonstra como excluir acionadores.

```
pipeline.delete_triggers(trigger_names=["<schedule-name>"])
```

**nota**  
Lembre-se das seguintes limitações ao excluir os acionadores:  
A opção de excluir os gatilhos especificando os nomes dos acionadores só está disponível no SDK do Python SageMaker . Excluir o pipeline na CLI ou em uma chamada de API `DeletePipeline` não exclui seus acionadores. Como resultado, os gatilhos se tornam órfãos e a SageMaker IA tenta iniciar a execução de um pipeline inexistente.
[Além disso, se você estiver usando outra sessão do notebook ou já tiver excluído o destino do pipeline, limpe os agendamentos órfãos por meio da CLI ou do console do agendador.](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/scheduler/delete-schedule.html) EventBridge 

# Integração SageMaker com Amazon Experiments
<a name="pipelines-experiments"></a>

O Amazon SageMaker Pipelines está estreitamente integrado com o Amazon SageMaker Experiments. Por padrão, quando o Pipelines cria e executa um pipeline, as seguintes entidades SageMaker Experiments são criadas, caso não existam:
+ Um experimento para o pipeline.
+ Um grupo de execução para cada execução do pipeline.
+ Uma execução que é adicionada ao grupo de execução para cada trabalho de SageMaker IA criado em uma etapa de execução do pipeline

Você pode comparar métricas, como a precisão do treinamento de modelos, em várias execuções de pipeline, da mesma forma que pode comparar essas métricas em vários grupos de execução de um experimento de treinamento de modelos de SageMaker IA.

O exemplo a seguir mostra os parâmetros relevantes da classe [Pipeline](https://github.com/aws/sagemaker-python-sdk/blob/v2.41.0/src/sagemaker/workflow/pipeline.py) no SDK do [Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable).

```
Pipeline(
    name="MyPipeline",
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      ExecutionVariables.PIPELINE_NAME,
      ExecutionVariables.PIPELINE_EXECUTION_ID
    ),
    steps=[...]
)
```

Se você não quiser criar um grupo de experimentos e execuções para o pipeline, defina `pipeline_experiment_config` como `None`.

**nota**  
A integração de experimentos foi introduzida no Amazon SageMaker Python SDK v2.41.0.

As regras de nomenclatura a seguir se aplicam com base no que você especifica para os parâmetros `ExperimentName` e `TrialName` de `pipeline_experiment_config`:
+ Se você não especificar o `ExperimentName`, o pipeline `name` será usado para o nome do experimento.

  Se você especificar o `ExperimentName`, ele será usado para o nome do experimento. Se existir um experimento com esse nome, os grupos de execução criados pelo pipeline serão adicionados ao experimento existente. Se um experimento com esse nome não existir, um novo experimento será criado.
+ Se você não especificar o `TrialName`, o ID de execução do pipeline será usado para o nome do grupo de execução.

  Se você especificar o `TrialName`, ele será usado para o nome do grupo de execução. Se existir um grupo de execução com esse nome, as execuções criadas pelo pipeline serão adicionadas ao grupo de execução existente. Se um grupo de execução com esse nome não existir, um novo grupo de execução será criado.

**nota**  
As entidades do experimento não são excluídas quando o pipeline que criou as entidades é excluído. Você pode usar a API SageMaker Experiments para excluir as entidades.

Para obter informações sobre como visualizar as entidades do SageMaker AI Experiment associadas a um pipeline, consulte[Acessar dados do experimento a partir de um pipeline](pipelines-studio-experiments.md). Para obter mais informações sobre SageMaker experimentos, consulte[SageMaker Experiências da Amazon no Studio Classic](experiments.md).

As seções a seguir mostram exemplos das regras anteriores e como elas são representadas no arquivo de definição de pipeline. Para obter mais informações sobre os arquivos de definição de pipeline, consulte [Visão geral do Pipelines](pipelines-overview.md).

**Topics**
+ [Comportamento padrão](pipelines-experiments-default.md)
+ [Desabilitar a integração de experimentos](pipelines-experiments-none.md)
+ [Especifique um nome de experimento personalizado](pipelines-experiments-custom-experiment.md)
+ [Especificar um nome de grupo de execução personalizado](pipelines-experiments-custom-trial.md)

# Comportamento padrão
<a name="pipelines-experiments-default"></a>

**Criar um pipeline**

O comportamento padrão ao criar um pipeline de SageMaker IA é integrá-lo automaticamente aos SageMaker Experimentos. Se você não especificar nenhuma configuração personalizada, a SageMaker IA cria um experimento com o mesmo nome do pipeline, um grupo de execução para cada execução do pipeline usando o ID de execução do pipeline como nome e execuções individuais dentro de cada grupo de execução para cada trabalho de SageMaker IA lançado como parte das etapas do pipeline. Você pode acompanhar e comparar facilmente métricas em diferentes execuções de pipeline, da mesma forma que analisaria um experimento de treinamento de modelo. A seção a seguir demonstra esse comportamento padrão ao definir um pipeline sem configurar explicitamente a integração do experimento.

A `pipeline_experiment_config` é omitida. O `ExperimentName` é padrão para o pipeline `name`. O `TrialName` é padrão para o ID da execução.

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    steps=[step_train]
)
```

**Arquivo de definição de pipeline**

```
{
  "Version": "2020-12-01",
  "Parameters": [
    {
      "Name": "InputDataSource"
    },
    {
      "Name": "InstanceCount",
      "Type": "Integer",
      "DefaultValue": 1
    }
  ],
  "PipelineExperimentConfig": {
    "ExperimentName": {"Get": "Execution.PipelineName"},
    "TrialName": {"Get": "Execution.PipelineExecutionId"}
  },
  "Steps": [...]
}
```

# Desabilitar a integração de experimentos
<a name="pipelines-experiments-none"></a>

**Criar um pipeline**

Você pode desativar a integração do seu pipeline com o SageMaker Experiments definindo o `pipeline_experiment_config` parâmetro para `None` quando você define seu pipeline. Dessa forma, a SageMaker IA não criará automaticamente um experimento, executará grupos ou execuções individuais para rastrear métricas e artefatos associados às execuções do seu pipeline. O exemplo a seguir define o parâmetro de configuração do pipeline como `None`.

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=None,
    steps=[step_train]
)
```

**Arquivo de definição de pipeline**

É o mesmo do exemplo padrão anterior, sem a `PipelineExperimentConfig`.

# Especifique um nome de experimento personalizado
<a name="pipelines-experiments-custom-experiment"></a>

Embora o comportamento padrão seja usar o nome do pipeline como nome do experimento em SageMaker Experimentos, você pode substituí-lo e especificar um nome de experimento personalizado. Isso pode ser útil se você quiser agrupar várias execuções de pipeline no mesmo experimento para facilitar a análise e a comparação. O nome do grupo de execução ainda usará como padrão o ID de execução do pipeline, a menos que você também defina explicitamente um nome personalizado para isso. A seção a seguir demonstra como criar um pipeline com um nome de experimento personalizado, deixando o nome do grupo de execução como o ID de execução padrão.

**Criar um pipeline**

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      "CustomExperimentName",
      ExecutionVariables.PIPELINE_EXECUTION_ID
    ),
    steps=[step_train]
)
```

**Arquivo de definição de pipeline**

```
{
  ...,
  "PipelineExperimentConfig": {
    "ExperimentName": "CustomExperimentName",
    "TrialName": {"Get": "Execution.PipelineExecutionId"}
  },
  "Steps": [...]
}
```

# Especificar um nome de grupo de execução personalizado
<a name="pipelines-experiments-custom-trial"></a>

Além de definir um nome de experimento personalizado, você também pode especificar um nome personalizado para os grupos de execução criados por SageMaker Experiments durante a execução do pipeline. Esse nome é anexado ao ID de execução do pipeline para garantir a exclusividade. Você pode especificar um nome de grupo de execução personalizado para identificar e analisar execuções de pipeline relacionadas no mesmo experimento. A seção a seguir mostra como definir um pipeline com um nome de grupo de execução personalizado usando o nome padrão do pipeline para o nome do experimento.

**Criar um pipeline**

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      ExecutionVariables.PIPELINE_NAME,
      Join(on="-", values=["CustomTrialName", ExecutionVariables.PIPELINE_EXECUTION_ID])
    ),
    steps=[step_train]
)
```

**Arquivo de definição de pipeline**

```
{
  ...,
  "PipelineExperimentConfig": {
    "ExperimentName": {"Get": "Execution.PipelineName"},
    "TrialName": {
      "On": "-",
      "Values": [
         "CustomTrialName",
         {"Get": "Execution.PipelineExecutionId"}
       ]
    }
  },
  "Steps": [...]
}
```

# Executar pipelines usando o modo local
<a name="pipelines-local-mode"></a>

SageMaker O modo local dos pipelines é uma maneira fácil de testar seus scripts de treinamento, processamento e inferência, bem como a compatibilidade de tempo de execução dos [parâmetros do pipeline](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#pipeline-parameters) antes de executá-lo no serviço gerenciado de SageMaker IA. Ao usar o modo local, você pode testar seu pipeline de SageMaker IA localmente usando um conjunto de dados menor. Isso permite a depuração rápida e fácil de erros nos scripts do usuário e na própria definição do pipeline, sem incorrer nos custos de uso do serviço gerenciado. O tópico a seguir mostra como definir e executar pipelines localmente.

O modo local do Pipelines aproveita o [modo local de trabalhos de SageMaker IA](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode) nos bastidores. Esse é um recurso do SDK do SageMaker Python que permite executar imagens personalizadas ou incorporadas de SageMaker IA localmente usando contêineres do Docker. O modo local do Pipelines é construído sobre o modo local de trabalhos de SageMaker IA. Portanto, você pode esperar ver os mesmos resultados como se estivesse executando esses trabalhos separadamente. Por exemplo, o modo local ainda usa o Amazon S3 para carregar artefatos do modelo e saídas de processamento. Se quiser que os dados gerados pelos trabalhos locais residam no disco local, você pode usar a configuração mencionada no [Modo Local](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode).

Atualmente, o modo local do pipeline é compatível com os seguintes tipos de etapas:
+ [Etapa de treinamento](build-and-manage-steps-types.md#step-type-training)
+ [Processamento de etapas](build-and-manage-steps-types.md#step-type-processing)
+ [Etapa de transformação](build-and-manage-steps-types.md#step-type-transform)
+ [Etapa do modelo](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-model-create) (somente com argumentos de criação de modelo)
+ [Etapa de condição](build-and-manage-steps-types.md#step-type-condition)
+ [Etapa de falha](build-and-manage-steps-types.md#step-type-fail)

Ao contrário do serviço gerenciado do Pipelines, que permite que várias etapas sejam executadas em paralelo usando a [Configuração de Paralelismo](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#parallelism-configuration), o executor local do pipeline executa as etapas sequencialmente. Portanto, o desempenho geral da execução de um pipeline local pode ser inferior à de um executada na nuvem. Isso depende principalmente do tamanho do conjunto de dados, do algoritmo e da potência do computador local. Observe também que os Pipelines executados no modo local não são registrados nos [SageMaker Experimentos](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-experiments.html).

**nota**  
O modo local dos pipelines não é compatível com algoritmos de SageMaker IA, como XGBoost. Caso queira usar esses algoritmos, você deve usá-los no [modo script](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-script-mode/sagemaker-script-mode.html).

Para executar um pipeline localmente, os campos `sagemaker_session` associados às etapas do pipeline e ao próprio pipeline precisam ser do tipo `LocalPipelineSession`. O exemplo a seguir mostra como você pode definir um pipeline de SageMaker IA para ser executado localmente.

```
from sagemaker.workflow.pipeline_context import LocalPipelineSession
from sagemaker.pytorch import PyTorch
from sagemaker.workflow.steps import TrainingStep
from sagemaker.workflow.pipeline import Pipeline

local_pipeline_session = LocalPipelineSession()

pytorch_estimator = PyTorch(
    sagemaker_session=local_pipeline_session,
    role=sagemaker.get_execution_role(),
    instance_type="ml.c5.xlarge",
    instance_count=1,
    framework_version="1.8.0",
    py_version="py36",
    entry_point="./entry_point.py",
)

step = TrainingStep(
    name="MyTrainingStep",
    step_args=pytorch_estimator.fit(
        inputs=TrainingInput(s3_data="s3://amzn-s3-demo-bucket/my-data/train"),
    )
)

pipeline = Pipeline(
    name="MyPipeline",
    steps=[step],
    sagemaker_session=local_pipeline_session
)

pipeline.create(
    role_arn=sagemaker.get_execution_role(), 
    description="local pipeline example"
)

// pipeline will execute locally
execution = pipeline.start()

steps = execution.list_steps()

training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']

step_outputs = pipeline_session.sagemaker_client.describe_training_job(TrainingJobName = training_job_name)
```

Quando estiver pronto para executar o pipeline no serviço gerenciado de SageMaker Pipelines, você pode fazer isso `LocalPipelineSession` substituindo o trecho de código anterior por `PipelineSession` (conforme mostrado no exemplo de código a seguir) e executando novamente o código.

```
from sagemaker.workflow.pipeline_context import PipelineSession

pipeline_session = PipelineSession()
```

# Solução de problemas do Amazon SageMaker Pipelines
<a name="pipelines-troubleshooting"></a>

Ao usar o Amazon SageMaker Pipelines, você pode ter problemas por vários motivos. Este tópico fornece informações sobre erros comuns e como resolvê-los. 

 **Problemas de definição de pipeline** 

Sua definição de pipeline pode não estar formatada corretamente. Isso pode resultar na falha de execução  ou na imprecisão do trabalho. Esses erros podem ser detectados quando o pipeline é criado ou quando ocorre uma execução. Se sua definição não for validada, o Pipelines retornará uma mensagem de erro identificando o caractere em que o arquivo JSON está malformado. Para corrigir esse problema, revise as etapas criadas usando o SDK do SageMaker AI Python para verificar a precisão. 

Você só pode incluir etapas em uma definição de pipeline uma vez. Por esse motivo, as etapas não podem existir como parte de uma etapa de condição *e* de um pipeline no mesmo pipeline. 

 **Examinar logs de pipeline** 

Você pode visualizar o status das suas etapas usando o seguinte comando: 

```
execution.list_steps()
```

Cada etapa inclui as seguintes informações:
+ O ARN da entidade lançada pelo pipeline, como o ARN do trabalho de SageMaker IA, o ARN do modelo ou o ARN do pacote de modelos. 
+ O motivo da falha inclui uma breve explicação da falha na etapa.
+ Se a etapa for uma etapa de condição, ela indicará se a condição foi avaliada como verdadeira ou falsa.  
+ Se a execução reutilizar uma execução de trabalho anterior, o `CacheHit` listará a execução de origem.  

Você também pode visualizar as mensagens de erro e os registros na interface do Amazon SageMaker Studio. Para obter informações sobre como ver os logs no Studio, consulte [Visualizar os detalhes de uma execução de pipeline](pipelines-studio-view-execution.md).

 **Permissões ausentes** 

As permissões corretas são necessárias para o perfil que cria a execução do pipeline e as etapas que criam cada um dos trabalhos na execução do pipeline. Sem essas permissões, talvez você não consiga enviar a execução do pipeline ou executar seus trabalhos de SageMaker IA conforme o esperado. Para garantir que suas permissões sejam configuradas corretamente, consulte [Gerenciamento de acesso do IAM](build-and-manage-access.md). 

 **Erros de execução do trabalho** 

Você pode ter problemas ao executar suas etapas devido a problemas nos scripts que definem a funcionalidade de suas tarefas de SageMaker IA. Cada trabalho tem um conjunto de CloudWatch registros. Para ver esses registros do Studio, consulte[Visualizar os detalhes de uma execução de pipeline](pipelines-studio-view-execution.md). Para obter informações sobre o uso de CloudWatch registros com SageMaker IA, consulte[CloudWatch Registros para Amazon SageMaker AI](logging-cloudwatch.md). 

 **Erros do arquivo de propriedade** 

Você pode ter problemas ao implantar incorretamente os arquivos de propriedades com seu pipeline. Para garantir que sua implantação de arquivos de propriedades funcione conforme o esperado, consulte [Passe dados entre etapas](build-and-manage-propertyfile.md). 

 **Problemas ao copiar o script para o contêiner no Dockerfile** 

Você pode copiar o script para o contêiner ou passá-lo por meio do argumento `entry_point` (da entidade estimadora) ou do argumento `code` (da entidade processadora), conforme demonstrado no exemplo de código a seguir.

```
step_process = ProcessingStep(
    name="PreprocessAbaloneData",
    processor=sklearn_processor,
    inputs = [
        ProcessingInput(
            input_name='dataset',
            source=...,
            destination="/opt/ml/processing/code",
        )
    ],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train", destination = processed_data_path),
        ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation", destination = processed_data_path),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test", destination = processed_data_path),
    ],
    code=os.path.join(BASE_DIR, "process.py"), ## Code is passed through an argument
    cache_config = cache_config,
    job_arguments = ['--input', 'arg1']
)

sklearn_estimator = SKLearn(
    entry_point=os.path.join(BASE_DIR, "train.py"), ## Code is passed through the entry_point
    framework_version="0.23-1",
    instance_type=training_instance_type,
    role=role,
    output_path=model_path, # New
    sagemaker_session=sagemaker_session, # New
    instance_count=1, # New
    base_job_name=f"{base_job_prefix}/pilot-train",
    metric_definitions=[
        {'Name': 'train:accuracy', 'Regex': 'accuracy_train=(.*?);'},
        {'Name': 'validation:accuracy', 'Regex': 'accuracy_validation=(.*?);'}
    ],
)
```

# Ações de pipelines
<a name="pipelines-build"></a>

Você pode usar o Amazon SageMaker Pipelines Python SDK ou drag-and-drop o designer visual no SageMaker Amazon Studio para criar, visualizar, editar, executar e monitorar seus fluxos de trabalho de ML.

A captura de tela a seguir mostra o designer visual que você pode usar para criar e gerenciar seus Amazon SageMaker Pipelines.

![\[Captura de tela da drag-and-drop interface visual do Pipelines no Studio.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


Depois que seu pipeline for implantado, você poderá visualizar o gráfico acíclico direcionado (DAG) do seu pipeline e gerenciar suas execuções usando o Amazon Studio. SageMaker Usando o SageMaker Studio, você pode obter informações sobre seus pipelines atuais e históricos, comparar execuções, ver o DAG de suas execuções, obter informações de metadados e muito mais. Para saber como visualizar pipelines a partir do Studio, consulte [Visualizar os detalhes de um pipeline](pipelines-studio-list.md). 

**Topics**
+ [Definir um pipeline](define-pipeline.md)
+ [Editar um pipeline](edit-pipeline-before-execution.md)
+ [Execute um pipeline](run-pipeline.md)
+ [Interromper um pipeline](pipelines-studio-stop.md)
+ [Visualizar os detalhes de um pipeline](pipelines-studio-list.md)
+ [Visualizar os detalhes de uma execução de pipeline](pipelines-studio-view-execution.md)
+ [Faça o download de um arquivo de definição de pipeline](pipelines-studio-download.md)
+ [Acessar dados do experimento a partir de um pipeline](pipelines-studio-experiments.md)
+ [Rastrear a linhagem de um pipeline](pipelines-lineage-tracking.md)

# Definir um pipeline
<a name="define-pipeline"></a>

Para orquestrar seus fluxos de trabalho com o Amazon SageMaker Pipelines, você deve gerar um gráfico acíclico direcionado (DAG) na forma de uma definição de pipeline JSON. O DAG especifica as diferentes etapas envolvidas em seu processo de ML, como pré-processamento de dados, treinamento de modelos, avaliação de modelos e implantação de modelos, bem como as dependências e o fluxo de dados entre essas etapas. O tópico a seguir mostra como gerar uma definição de pipeline.

Você pode gerar sua definição de pipeline JSON usando o SageMaker Python SDK ou o recurso drag-and-drop visual Pipeline Designer no Amazon Studio. SageMaker A imagem a seguir é uma representação do DAG de pipeline que você cria neste tutorial:

![\[Captura de tela da drag-and-drop interface visual do Pipelines no Studio.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


O pipeline que você define nas seções a seguir resolve um problema de regressão para determinar a idade de um abalone com base em suas medidas físicas. Para um notebook Jupyter executável que inclui o conteúdo deste tutorial, consulte [Orquestração de trabalhos com](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.html) o Amazon Model Building Pipelines. SageMaker 

**nota**  
Você pode referenciar a localização do modelo como uma propriedade da etapa de treinamento, conforme mostrado no end-to-end exemplo de [CustomerChurn pipeline](https://github.com/aws-samples/customer-churn-sagemaker-pipelines-sample/blob/main/pipelines/customerchurn/pipeline.py) no Github.

**Topics**

## Definir um pipeline (Pipeline Designer)
<a name="create-pipeline-designer"></a>

O passo a passo a seguir orienta você pelas etapas para criar um pipeline básico usando o Pipeline Designer. drag-and-drop Se você precisar pausar ou encerrar sua sessão de edição do Pipeline no designer visual a qualquer momento, clique na opção **Exportar**. Isso permite que você baixe a definição atual do seu Pipeline para o seu ambiente local. Posteriormente, quando quiser retomar o processo de edição do Pipeline, você pode importar o mesmo arquivo de definição JSON para o designer visual.

### Criar uma etapa de processamento
<a name="create-processing-step"></a>

Para criar uma etapa do trabalho de processamento de dados, faça o seguinte:

1. Abra o console do Studio seguindo as instruções em [Inicie o Amazon SageMaker Studio](studio-updated-launch.md).

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

1. Escolha **Criar**.

1. Escolha **Em branco**.

1. Na barra lateral esquerda, escolha **Processar dados** e arraste-o para o canvas.

1. No canvas, escolha a etapa **Processar dados** que você adicionou.

1. Para adicionar um conjunto de dados de entrada, escolha **Adicionar** em **Dados (entrada)** na barra lateral direita e selecione um conjunto de dados.

1. Para adicionar um local para salvar conjuntos de dados de saída, escolha **Adicionar** em **Dados (saída)** na barra lateral direita e navegue até o destino.

1. Preencha os campos restantes na barra lateral direita. Para obter informações sobre os campos nessas guias, consulte [sagemaker.workflow.steps. ProcessingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep).

### Criar uma etapa de treinamento
<a name="create-training-step"></a>

Para configurar uma etapa de treinamento de modelo, faça o seguinte:

1. Na barra lateral esquerda, escolha **Treinar modelo** e arraste-o até o canvas.

1. No canvas, escolha a etapa **Treinar modelo** que você adicionou.

1. Para adicionar um conjunto de dados de entrada, escolha **Adicionar** em **Dados (entrada)** na barra lateral direita e selecione um conjunto de dados.

1. Para escolher um local para salvar seus artefatos de modelo, insira um URI do Amazon S3 no campo **Localização (URI do S3**) ou escolha **Procurar no S3** para navegar até o local de destino.

1. Preencha os campos restantes na barra lateral direita. Para obter informações sobre os campos nessas guias, consulte [sagemaker.workflow.steps. TrainingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep).

1. Clique e arraste o cursor da etapa **Processar dados** que você adicionou na seção anterior à etapa **Treinar modelo** para criar uma borda conectando as duas etapas.

### Criar um pacote de modelo com a etapa de registro de modelo
<a name="create-register-model-step"></a>

Para criar um pacote de modelo com uma etapa de registro de modelo, faça o seguinte:

1. Na barra lateral esquerda, escolha **Registrar modelo** e arraste-o para o canvas.

1. No canvas, escolha a etapa **Registrar modelo** que você adicionou.

1. Para selecionar um modelo para registrar, escolha **Adicionar** em **Modelo (entrada)**.

1. Escolha **Criar um grupo de modelos** para adicionar seu modelo a um novo grupo de modelos.

1. Preencha os campos restantes na barra lateral direita. Para obter informações sobre os campos nessas guias, consulte [sagemaker.workflow.step\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel).

1. Clique e arraste o cursor da etapa **Treinar modelo** que você adicionou na seção anterior à etapa **Registrar modelo** para criar uma borda conectando as duas etapas.

### Implante o modelo em um endpoint com uma etapa de implantação de modelo (endpoint)
<a name="create-deploy-endpoint-step"></a>

Para implantar seu modelo usando uma etapa de implantação de modelo, faça o seguinte:

1. Na barra lateral esquerda, escolha **Implantar modelo (endpoint)** e arraste-o até o canvas.

1. No canvas, escolha a etapa **Implantar modelo (endpoint)** que você adicionou.

1. Para escolher um modelo para implantar, escolha **Adicionar** em **Modelo (entrada)**.

1. Escolha o botão de opção **Criar endpoint** para criar um novo endpoint.

1. Insira um **Nome** e uma **Descrição** para o endpoint.

1. Clique e arraste o cursor da etapa **Registrar modelo** que você adicionou na seção anterior à etapa **Implantar modelo (endpoint)** para criar uma borda conectando as duas etapas.

1. Preencha os campos restantes na barra lateral direita.

### Definir os parâmetros do Pipeline
<a name="define-pipeline-parameters"></a>

Você pode configurar um conjunto de parâmetros do Pipeline cujos valores podem ser atualizados para cada execução. Para definir os parâmetros de pipeline e configurar os valores padrão, clique no ícone de engrenagem na parte inferior do designer visual.

### Salvar pipeline
<a name="save-pipeline"></a>

Depois de inserir todas as informações necessárias para criar seu pipeline, clique em **Salvar** na parte inferior do designer visual. Isso valida seu pipeline quanto a possíveis erros em runtime e notifica você. A operação **Salvar** não será bem-sucedida até que você resolva todos os erros sinalizados pelas verificações de validação automatizadas. Se quiser continuar a edição posteriormente, você pode salvar seu pipeline em andamento como uma definição JSON em seu ambiente local. Você pode exportar seu Pipeline como um arquivo de definição JSON clicando no botão **Exportar** na parte inferior do designer visual. Posteriormente, para continuar a atualização do Pipeline, faça o upload desse arquivo de definição JSON clicando no botão **Importar**.

## Definir um pipeline (SageMaker Python SDK)
<a name="create-pipeline-wrap"></a>

### Pré-requisitos
<a name="define-pipeline-prereq"></a>

 Para executar o tutorial a seguir, faça o seguinte: 
+ Configure sua instância de caderno conforme descrito em [Criar uma instância de caderno](https://docs.aws.amazon.com/sagemaker/latest/dg/howitworks-create-ws.html). Isso dá à sua função permissões para ler e gravar no Amazon S3 e criar trabalhos de treinamento, transformação em lote e processamento em SageMaker IA. 
+ Conceda ao seu caderno permissões para obter e transmitir seu próprio perfil, conforme mostrado em [Modificar uma política de permissões de perfil](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy). Adicione o seguinte trecho de código do JSON para anexar essa política ao seu perfil: Substitua `<your-role-arn>` pelo ARN usado para criar sua instância de caderno. 

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iam:GetRole",
                  "iam:PassRole"
              ],
              "Resource": "arn:aws:iam::111122223333:role/role-name"
          }
      ]
  }
  ```

------
+  Confie no diretor do serviço de SageMaker IA seguindo as etapas em [Modificar a política de confiança de uma função](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-cli.html#roles-managingrole_edit-trust-policy-cli). Adicione o seguinte fragmento de declaração à relação de confiança do seu perfil: 

  ```
  {
        "Sid": "",
        "Effect": "Allow",
        "Principal": {
          "Service": "sagemaker.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
  ```

#### Configure o ambiente.
<a name="define-pipeline-prereq-setup"></a>

Crie uma nova sessão de SageMaker IA usando o bloco de código a seguir. Isso retorna o ARN do perfil para a sessão. Esse ARN do perfil deve ser o ARN do perfil de execução que você configura como pré-requisito. 

```
import boto3
import sagemaker
import sagemaker.session
from sagemaker.workflow.pipeline_context import PipelineSession

region = boto3.Session().region_name
sagemaker_session = sagemaker.session.Session()
role = sagemaker.get_execution_role()
default_bucket = sagemaker_session.default_bucket()

pipeline_session = PipelineSession()

model_package_group_name = f"AbaloneModelPackageGroupName"
```

### Criar um pipeline
<a name="define-pipeline-create"></a>

**Importante**  
Políticas personalizadas do IAM que permitem que o Amazon SageMaker SageMaker Studio ou o Amazon Studio Classic criem SageMaker recursos da Amazon também devem conceder permissões para adicionar tags a esses recursos. A permissão para adicionar tags aos recursos é necessária porque o Studio e o Studio Classic marcam automaticamente todos os recursos que eles criam. Se uma política do IAM permitir que o Studio e o Studio Classic criem recursos, mas não permitisse a marcação, erros AccessDenied "" podem ocorrer ao tentar criar recursos. Para obter mais informações, consulte [Forneça permissões para marcar recursos de SageMaker IA](security_iam_id-based-policy-examples.md#grant-tagging-permissions).  
[AWS políticas gerenciadas para Amazon SageMaker AI](security-iam-awsmanpol.md)que dão permissões para criar SageMaker recursos já incluem permissões para adicionar tags ao criar esses recursos.

Execute as etapas a seguir em sua instância de notebook de SageMaker IA para criar um pipeline que inclua etapas para:
+ pré-processamento
+ treinamento
+ evaluation (avaliação)
+ avaliação condicional
+ registro de modelo

**nota**  
Você pode usar [ExecutionVariables](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#execution-variables)a função [Join](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#execution-variables) para especificar seu local de saída. `ExecutionVariables`é resolvido em tempo de execução. Por exemplo, `ExecutionVariables.PIPELINE_EXECUTION_ID` é resolvido com o ID da execução atual, que pode ser usado como um identificador exclusivo em diferentes execuções.

#### Etapa 1: baixe o conjunto de dados
<a name="define-pipeline-data-download"></a>

Este caderno usa o conjunto de dados do UCI Machine Learning Abalone. O conjunto de dados contém os seguintes atributos: 
+ `length`: A medida de concha mais longa do abalone.
+ `diameter`: O diâmetro do abalone perpendicular ao seu comprimento.
+ `height`: A altura do abalone com carne na concha.
+ `whole_weight`: O peso do abalone inteiro.
+ `shucked_weight`: O peso da carne retirada do abalone.
+ `viscera_weight`: O peso das vísceras do abalone após o sangramento.
+ `shell_weight`: O peso da concha do abalone após a remoção e secagem da carne.
+ `sex`: O gênero do abalone. Entre 'M', 'F' ou 'I', em que 'I' é um abalone infantil.
+ `rings`: O número de anéis na concha do abalone.

O número de anéis na concha do abalone é uma boa aproximação de sua idade usando a fórmula `age=rings + 1.5`. No entanto, obter esse número é uma tarefa demorada. Você deve cortar a concha pelo cone, marcar a seção e contar o número de anéis com um microscópio. No entanto, as outras medidas físicas são mais fáceis de conseguir. Este caderno usa o conjunto de dados para criar um modelo preditivo dos anéis variáveis usando as outras medidas físicas.

**Para fazer download do conjunto de dados**

1. Faça o download do conjunto de dados no bucket do Amazon S3 padrão da sua conta.

   ```
   !mkdir -p data
   local_path = "data/abalone-dataset.csv"
   
   s3 = boto3.resource("s3")
   s3.Bucket(f"sagemaker-servicecatalog-seedcode-{region}").download_file(
       "dataset/abalone-dataset.csv",
       local_path
   )
   
   base_uri = f"s3://{default_bucket}/abalone"
   input_data_uri = sagemaker.s3.S3Uploader.upload(
       local_path=local_path, 
       desired_s3_uri=base_uri,
   )
   print(input_data_uri)
   ```

1. Faça o download de um segundo conjunto de dados para transformação em lote após a criação do modelo.

   ```
   local_path = "data/abalone-dataset-batch.csv"
   
   s3 = boto3.resource("s3")
   s3.Bucket(f"sagemaker-servicecatalog-seedcode-{region}").download_file(
       "dataset/abalone-dataset-batch",
       local_path
   )
   
   base_uri = f"s3://{default_bucket}/abalone"
   batch_data_uri = sagemaker.s3.S3Uploader.upload(
       local_path=local_path, 
       desired_s3_uri=base_uri,
   )
   print(batch_data_uri)
   ```

#### Etapa 2: definir parâmetros do pipeline
<a name="define-pipeline-parameters"></a>

 Esse bloco de código define os seguintes parâmetros para seu pipeline: 
+  `processing_instance_count`: A contagem de instâncias do trabalho de processamento. 
+  `input_data`: O local dos dados de entrada no Amazon S3. 
+  `batch_data`: O local dos dados de entrada do Amazon S3 para transformação em lote. 
+  `model_approval_status`: O status de aprovação com o qual registrar o modelo treinado para CI/CD. Para obter mais informações, consulte [MLOps Automação com SageMaker projetos](sagemaker-projects.md).

```
from sagemaker.workflow.parameters import (
    ParameterInteger,
    ParameterString,
)

processing_instance_count = ParameterInteger(
    name="ProcessingInstanceCount",
    default_value=1
)
model_approval_status = ParameterString(
    name="ModelApprovalStatus",
    default_value="PendingManualApproval"
)
input_data = ParameterString(
    name="InputData",
    default_value=input_data_uri,
)
batch_data = ParameterString(
    name="BatchData",
    default_value=batch_data_uri,
)
```

#### Etapa 3: defina uma etapa de processamento para engenharia de atributos
<a name="define-pipeline-processing-feature"></a>

Esta seção mostra como criar uma etapa de processamento para preparar os dados do conjunto de dados para treinamento.

**Para criar uma etapa de processamento**

1.  Crie um diretório para o script de processamento.

   ```
   !mkdir -p abalone
   ```

1. No diretório `/abalone`, crie um arquivo denominado `preprocessing.py` com o conteúdo a seguir. O script de pré-processamento é transmitido para a etapa de processamento para execução nos dados de entrada. Depois, a etapa de treinamento usa os rótulos e atributos de treinamento pré-processados para treinar um modelo. A etapa de avaliação usa o modelo treinado e os atributos e rótulos de teste pré-processados para avaliar o modelo. O script usa `scikit-learn` para fazer o seguinte:
   +  Preencha os dados categóricos `sex` ausentes e codifique-os para que sejam adequados para treinamento. 
   +  Dimensione e normalize todos os campos numéricos, exceto `rings` e `sex`. 
   +  Divida os dados em conjuntos de dados de treinamento, teste e validação. 

   ```
   %%writefile abalone/preprocessing.py
   import argparse
   import os
   import requests
   import tempfile
   import numpy as np
   import pandas as pd
   
   
   from sklearn.compose import ColumnTransformer
   from sklearn.impute import SimpleImputer
   from sklearn.pipeline import Pipeline
   from sklearn.preprocessing import StandardScaler, OneHotEncoder
   
   
   # Because this is a headerless CSV file, specify the column names here.
   feature_columns_names = [
       "sex",
       "length",
       "diameter",
       "height",
       "whole_weight",
       "shucked_weight",
       "viscera_weight",
       "shell_weight",
   ]
   label_column = "rings"
   
   feature_columns_dtype = {
       "sex": str,
       "length": np.float64,
       "diameter": np.float64,
       "height": np.float64,
       "whole_weight": np.float64,
       "shucked_weight": np.float64,
       "viscera_weight": np.float64,
       "shell_weight": np.float64
   }
   label_column_dtype = {"rings": np.float64}
   
   
   def merge_two_dicts(x, y):
       z = x.copy()
       z.update(y)
       return z
   
   
   if __name__ == "__main__":
       base_dir = "/opt/ml/processing"
   
       df = pd.read_csv(
           f"{base_dir}/input/abalone-dataset.csv",
           header=None, 
           names=feature_columns_names + [label_column],
           dtype=merge_two_dicts(feature_columns_dtype, label_column_dtype)
       )
       numeric_features = list(feature_columns_names)
       numeric_features.remove("sex")
       numeric_transformer = Pipeline(
           steps=[
               ("imputer", SimpleImputer(strategy="median")),
               ("scaler", StandardScaler())
           ]
       )
   
       categorical_features = ["sex"]
       categorical_transformer = Pipeline(
           steps=[
               ("imputer", SimpleImputer(strategy="constant", fill_value="missing")),
               ("onehot", OneHotEncoder(handle_unknown="ignore"))
           ]
       )
   
       preprocess = ColumnTransformer(
           transformers=[
               ("num", numeric_transformer, numeric_features),
               ("cat", categorical_transformer, categorical_features)
           ]
       )
       
       y = df.pop("rings")
       X_pre = preprocess.fit_transform(df)
       y_pre = y.to_numpy().reshape(len(y), 1)
       
       X = np.concatenate((y_pre, X_pre), axis=1)
       
       np.random.shuffle(X)
       train, validation, test = np.split(X, [int(.7*len(X)), int(.85*len(X))])
   
       
       pd.DataFrame(train).to_csv(f"{base_dir}/train/train.csv", header=False, index=False)
       pd.DataFrame(validation).to_csv(f"{base_dir}/validation/validation.csv", header=False, index=False)
       pd.DataFrame(test).to_csv(f"{base_dir}/test/test.csv", header=False, index=False)
   ```

1.  Crie uma instância de um `SKLearnProcessor` para transmitir para a etapa de processamento. 

   ```
   from sagemaker.sklearn.processing import SKLearnProcessor
   
   
   framework_version = "0.23-1"
   
   sklearn_processor = SKLearnProcessor(
       framework_version=framework_version,
       instance_type="ml.m5.xlarge",
       instance_count=processing_instance_count,
       base_job_name="sklearn-abalone-process",
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1. Crie uma etapa de processamento. Essa etapa inclui o `SKLearnProcessor`, os canais de entrada e saída e o script `preprocessing.py` que você criou. Isso é muito semelhante ao `run` método de uma instância de processador no SDK SageMaker AI Python. O parâmetro `input_data` transmitido para `ProcessingStep` são os dados de entrada da própria etapa. Esses dados de entrada são usados pela instância do processador quando ela é executada. 

    Observe os canais denominados `"train`, `"validation` e `"test"` especificados na configuração de saída do trabalho de processamento. A etapa `Properties`, como essas, pode ser usada em etapas subsequentes e resolução para seus valores de runtime no runtime. 

   ```
   from sagemaker.processing import ProcessingInput, ProcessingOutput
   from sagemaker.workflow.steps import ProcessingStep
      
   
   processor_args = sklearn_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="abalone/preprocessing.py",
   ) 
   
   step_process = ProcessingStep(
       name="AbaloneProcess",
       step_args=processor_args
   )
   ```

#### Etapa 4: defina uma etapa de treinamento
<a name="define-pipeline-training"></a>

Esta seção mostra como usar o [XGBoostalgoritmo](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) de SageMaker IA para treinar um modelo na saída de dados de treinamento das etapas de processamento. 

**Para definir uma etapa de treinamento**

1.  Especifique o caminho do modelo em que você deseja salvar os modelos do treinamento. 

   ```
   model_path = f"s3://{default_bucket}/AbaloneTrain"
   ```

1. Configure um estimador para o XGBoost algoritmo e o conjunto de dados de entrada. O tipo de instância de treinamento é transmitido para o estimador. Um roteiro de treinamento típico:
   + carrega dados dos canais de entrada
   + configura o treinamento com hiperparâmetros
   + treina um modelo
   + salva um modelo em `model_dir` para que ele possa ser hospedado posteriormente

   SageMaker A IA carrega o modelo para o Amazon S3 na forma de `model.tar.gz` um no final do trabalho de treinamento.

   ```
   from sagemaker.estimator import Estimator
   
   
   image_uri = sagemaker.image_uris.retrieve(
       framework="xgboost",
       region=region,
       version="1.0-1",
       py_version="py3",
       instance_type="ml.m5.xlarge"
   )
   xgb_train = Estimator(
       image_uri=image_uri,
       instance_type="ml.m5.xlarge",
       instance_count=1,
       output_path=model_path,
       sagemaker_session=pipeline_session,
       role=role,
   )
   xgb_train.set_hyperparameters(
       objective="reg:linear",
       num_round=50,
       max_depth=5,
       eta=0.2,
       gamma=4,
       min_child_weight=6,
       subsample=0.7,
       silent=0
   )
   ```

1. Crie um `TrainingStep` usando a instância do estimador e as propriedades de `ProcessingStep`. Passe `S3Uri` do `"train"` e o canal de saída `"validation"` para `TrainingStep`.  

   ```
   from sagemaker.inputs import TrainingInput
   from sagemaker.workflow.steps import TrainingStep
   
   
   train_args = xgb_train.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="AbaloneTrain",
       step_args = train_args
   )
   ```

#### Etapa 5: defina uma etapa de processamento para avaliação do modelo
<a name="define-pipeline-processing-model"></a>

Esta seção mostra como criar uma etapa de processamento para avaliar a precisão do modelo. O resultado dessa avaliação de modelo é usado na etapa de condição para determinar qual caminho de execução seguir.

**Para definir uma etapa de processamento para avaliação do modelo**

1. Crie um arquivo denominado `evaluation.py` no diretório `/abalone`. Esse script é usado em uma etapa de processamento para realizar a avaliação do modelo. Ele usa um modelo treinado e o conjunto de dados de teste como entrada e, em seguida, produz um arquivo JSON contendo métricas de avaliação de classificação.

   ```
   %%writefile abalone/evaluation.py
   import json
   import pathlib
   import pickle
   import tarfile
   import joblib
   import numpy as np
   import pandas as pd
   import xgboost
   
   
   from sklearn.metrics import mean_squared_error
   
   
   if __name__ == "__main__":
       model_path = f"/opt/ml/processing/model/model.tar.gz"
       with tarfile.open(model_path) as tar:
           tar.extractall(path=".")
       
       model = pickle.load(open("xgboost-model", "rb"))
   
       test_path = "/opt/ml/processing/test/test.csv"
       df = pd.read_csv(test_path, header=None)
       
       y_test = df.iloc[:, 0].to_numpy()
       df.drop(df.columns[0], axis=1, inplace=True)
       
       X_test = xgboost.DMatrix(df.values)
       
       predictions = model.predict(X_test)
   
       mse = mean_squared_error(y_test, predictions)
       std = np.std(y_test - predictions)
       report_dict = {
           "regression_metrics": {
               "mse": {
                   "value": mse,
                   "standard_deviation": std
               },
           },
       }
   
       output_dir = "/opt/ml/processing/evaluation"
       pathlib.Path(output_dir).mkdir(parents=True, exist_ok=True)
       
       evaluation_path = f"{output_dir}/evaluation.json"
       with open(evaluation_path, "w") as f:
           f.write(json.dumps(report_dict))
   ```

1.  Crie uma instância de um `ScriptProcessor` que seja usada para criar uma `ProcessingStep`. 

   ```
   from sagemaker.processing import ScriptProcessor
   
   
   script_eval = ScriptProcessor(
       image_uri=image_uri,
       command=["python3"],
       instance_type="ml.m5.xlarge",
       instance_count=1,
       base_job_name="script-abalone-eval",
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1.  Crie um `ProcessingStep` usando a instância do processador, os canais de entrada e saída e o script `evaluation.py`. Transmita:
   + a propriedade `S3ModelArtifacts` da etapa de treinamento `step_train`
   + o `S3Uri` do canal de saída `"test"` da etapa de processamento `step_process` 

   Isso é muito semelhante ao `run` método de uma instância de processador no SDK SageMaker AI Python.  

   ```
   from sagemaker.workflow.properties import PropertyFile
   
   
   evaluation_report = PropertyFile(
       name="EvaluationReport",
       output_name="evaluation",
       path="evaluation.json"
   )
   
   eval_args = script_eval.run(
           inputs=[
           ProcessingInput(
               source=step_train.properties.ModelArtifacts.S3ModelArtifacts,
               destination="/opt/ml/processing/model"
           ),
           ProcessingInput(
               source=step_process.properties.ProcessingOutputConfig.Outputs[
                   "test"
               ].S3Output.S3Uri,
               destination="/opt/ml/processing/test"
           )
       ],
       outputs=[
           ProcessingOutput(output_name="evaluation", source="/opt/ml/processing/evaluation"),
       ],
       code="abalone/evaluation.py",
   )
   
   step_eval = ProcessingStep(
       name="AbaloneEval",
       step_args=eval_args,
       property_files=[evaluation_report],
   )
   ```

#### Etapa 6: Definir uma CreateModelStep para transformação em lote
<a name="define-pipeline-create-model"></a>

**Importante**  
Recomendamos usar [Etapa do modelo](build-and-manage-steps-types.md#step-type-model) para criar modelos a partir da versão 2.90.0 do SDK do Python SageMaker . `CreateModelStep`continuará funcionando nas versões anteriores do SDK do SageMaker Python, mas não tem mais suporte ativo.

Esta seção mostra como criar um modelo de SageMaker IA a partir do resultado da etapa de treinamento. Esse modelo é usado para transformação em lote em um novo conjunto de dados. Essa etapa é transmitida para a etapa de condição e só é executada se a etapa de condição for avaliada como `true`.

**Para definir uma CreateModelStep para transformação em lote**

1.  Crie um modelo de SageMaker IA. Transmita a propriedade `S3ModelArtifacts` a partir da etapa de treinamento `step_train`.

   ```
   from sagemaker.model import Model
   
   
   model = Model(
       image_uri=image_uri,
       model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1. Defina a entrada do modelo para seu modelo de SageMaker IA.

   ```
   from sagemaker.inputs import CreateModelInput
   
   
   inputs = CreateModelInput(
       instance_type="ml.m5.large",
       accelerator_type="ml.eia1.medium",
   )
   ```

1. Crie sua `CreateModelStep` usando a `CreateModelInput` instância do modelo de SageMaker IA que você definiu.

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

#### Etapa 7: Definir uma TransformStep para realizar a transformação em lote
<a name="define-pipeline-transform"></a>

Esta seção mostra como criar uma `TransformStep` para realizar a transformação em lote em um conjunto de dados após o treinamento do modelo. Essa etapa é transmitida para a etapa de condição e só é executada se a etapa de condição for avaliada como `true`.

**Para definir uma TransformStep para realizar a transformação em lote**

1. Crie uma instância transformadora com o tipo de instância de computação apropriado, a contagem de instâncias e o URI de saída desejado do bucket Amazon S3. Transmita a propriedade `ModelName` a partir das etapas `step_create_model` e `CreateModel`. 

   ```
   from sagemaker.transformer import Transformer
   
   
   transformer = Transformer(
       model_name=step_create_model.properties.ModelName,
       instance_type="ml.m5.xlarge",
       instance_count=1,
       output_path=f"s3://{default_bucket}/AbaloneTransform"
   )
   ```

1. Crie uma `TransformStep` usando a instância do transformador que você definiu e o parâmetro do pipeline `batch_data`.

   ```
   from sagemaker.inputs import TransformInput
   from sagemaker.workflow.steps import TransformStep
   
   
   step_transform = TransformStep(
       name="AbaloneTransform",
       transformer=transformer,
       inputs=TransformInput(data=batch_data)
   )
   ```

#### Etapa 8: Definir uma RegisterModel etapa para criar um pacote de modelo
<a name="define-pipeline-register"></a>

**Importante**  
Recomendamos usar [Etapa do modelo](build-and-manage-steps-types.md#step-type-model) para registrar modelos a partir da versão 2.90.0 do SDK do Python SageMaker . `RegisterModel`continuará funcionando nas versões anteriores do SDK do SageMaker Python, mas não tem mais suporte ativo.

Esta seção mostra como criar uma instância de `RegisterModel`. O resultado da execução do `RegisterModel` em um pipeline é um pacote de modelo. Um pacote de modelo é uma abstração de artefatos de modelo reutilizável que empacota todos os ingredientes necessários para a inferência. Ele consiste em uma especificação de inferência que define a imagem de inferência a ser usada junto com uma localização opcional de pesos do modelo. Um grupo de pacotes de modelos é uma coleção de pacotes de modelos. Você pode usar um `ModelPackageGroup` para que o Pipelines adicione uma nova versão e pacote de modelo ao grupo para cada execução de pipeline. Para obter mais informações sobre registro de modelos, consulte [Implantação do registro do modelo com o Model Registry](model-registry.md).

Essa etapa é transmitida para a etapa de condição e só é executada se a etapa de condição for avaliada como `true`.

**Para definir uma RegisterModel etapa para criar um pacote de modelo**
+  Construa uma etapa `RegisterModel` usando a instância do estimador que você usou para a etapa de treinamento. Transmita a propriedade `S3ModelArtifacts` a partir da etapa de treinamento `step_train` e especifique um `ModelPackageGroup`. O Pipelines cria o `ModelPackageGroup` para você.

  ```
  from sagemaker.model_metrics import MetricsSource, ModelMetrics 
  from sagemaker.workflow.step_collections import RegisterModel
  
  
  model_metrics = ModelMetrics(
      model_statistics=MetricsSource(
          s3_uri="{}/evaluation.json".format(
              step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"]
          ),
          content_type="application/json"
      )
  )
  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
  )
  ```

#### Etapa 9: defina uma etapa de condição para verificar a precisão do modelo
<a name="define-pipeline-condition"></a>

O `ConditionStep` permite que o Pipelines ofereça compatibilidade com a execução condicional em seu DAG de pipeline com base na condição das propriedades da etapa. Nesse caso, você só registra um pacote de modelo se a precisão desse modelo exceder o valor necessário. A precisão do modelo é determinada pela etapa de avaliação de modelo. Se a precisão exceder o valor exigido, o pipeline também cria um modelo de SageMaker IA e executa a transformação em lote em um conjunto de dados. Esta seção mostra como definir a etapa de Condição.

**Para definir uma etapa de condição para verificar a precisão do modelo**

1.  Defina uma condição `ConditionLessThanOrEqualTo` usando o valor de precisão encontrado na saída da etapa de processamento da avaliação do modelo, `step_eval`. Obtenha essa saída usando o arquivo de propriedades que você indexou na etapa de processamento e o respectivo valor médio JSONPath do erro quadrático,. `"mse"`

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

1.  Construa uma `ConditionStep`. Transmita a condição `ConditionEquals` e, em seguida, defina as etapas de registro do pacote modelo e de transformação em lote como as próximas etapas, caso a condição seja aprovada. 

   ```
   step_cond = ConditionStep(
       name="AbaloneMSECond",
       conditions=[cond_lte],
       if_steps=[step_register, step_create_model, step_transform],
       else_steps=[], 
   )
   ```

#### Etapa 10: criar um pipeline
<a name="define-pipeline-pipeline"></a>

Agora que você criou todas as etapas, combine-as em um pipeline.

**Para criar um pipeline**

1.  Defina o seguinte para seu pipeline: `name`, `parameters` e `steps`. Os nomes devem ser exclusivos dentro de um par `(account, region)`.
**nota**  
Uma etapa só pode aparecer uma vez na lista de etapas do pipeline ou nas listas de etapas hipotéticas da etapa de condição. Ela não pode aparecer em ambas. 

   ```
   from sagemaker.workflow.pipeline import Pipeline
   
   
   pipeline_name = f"AbalonePipeline"
   pipeline = Pipeline(
       name=pipeline_name,
       parameters=[
           processing_instance_count,
           model_approval_status,
           input_data,
           batch_data,
       ],
       steps=[step_process, step_train, step_eval, step_cond],
   )
   ```

1.  (Opcional) Examine a definição do pipeline JSON para garantir que ela esteja bem formada.

   ```
   import json
   
   json.loads(pipeline.definition())
   ```

 Essa definição de pipeline está pronta para ser enviada à SageMaker IA. No próximo tutorial, você envia esse pipeline para a SageMaker IA e inicia uma execução. 

## Definir um pipeline (JSON)
<a name="collapsible-section-1"></a>

Você também pode usar o [boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_pipeline) ou [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-pipeline.html) para criar um pipeline. A criação de um pipeline requer uma definição de pipeline, que é um objeto JSON que define cada etapa do pipeline. O SageMaker SDK oferece uma maneira simples de criar a definição do pipeline, que você pode usar com qualquer uma das mencionadas APIs anteriormente para criar o próprio pipeline. Sem usar o SDK, os usuários precisam escrever a definição bruta do JSON para criar o pipeline sem nenhuma das verificações de erro fornecidas pelo SDK do Python SageMaker . Para ver o esquema da definição JSON do pipeline, consulte Esquema JSON de definição do [pipeline do SageMaker AI Pipeline](https://aws-sagemaker-mlops.github.io/sagemaker-model-building-pipeline-definition-JSON-schema/). O exemplo de código a seguir mostra um exemplo de um objeto JSON de definição de pipeline de SageMaker IA:

```
{'Version': '2020-12-01',
 'Metadata': {},
 'Parameters': [{'Name': 'ProcessingInstanceType',
   'Type': 'String',
   'DefaultValue': 'ml.m5.xlarge'},
  {'Name': 'ProcessingInstanceCount', 'Type': 'Integer', 'DefaultValue': 1},
  {'Name': 'TrainingInstanceType',
   'Type': 'String',
   'DefaultValue': 'ml.m5.xlarge'},
  {'Name': 'ModelApprovalStatus',
   'Type': 'String',
   'DefaultValue': 'PendingManualApproval'},
  {'Name': 'ProcessedData',
   'Type': 'String',
   'DefaultValue': 'S3_URL',
{'Name': 'InputDataUrl',
   'Type': 'String',
   'DefaultValue': 'S3_URL',
 'PipelineExperimentConfig': {'ExperimentName': {'Get': 'Execution.PipelineName'},
  'TrialName': {'Get': 'Execution.PipelineExecutionId'}},
 'Steps': [{'Name': 'ReadTrainDataFromFS',
   'Type': 'Processing',
   'Arguments': {'ProcessingResources': {'ClusterConfig': {'InstanceType': 'ml.m5.4xlarge',
      'InstanceCount': 2,
      'VolumeSizeInGB': 30}},
    'AppSpecification': {'ImageUri': 'IMAGE_URI',
     'ContainerArguments': [....]},
    'RoleArn': 'ROLE',
      'ProcessingInputs': [...],
    'ProcessingOutputConfig': {'Outputs': [.....]},
    'StoppingCondition': {'MaxRuntimeInSeconds': 86400}},
   'CacheConfig': {'Enabled': True, 'ExpireAfter': '30d'}},
   ...
   ...
   ...
  }
```

 **Próxima etapa:** [Execute um pipeline](run-pipeline.md) 

# Editar um pipeline
<a name="edit-pipeline-before-execution"></a>

Para fazer alterações em um pipeline antes de executá-lo, faça o seguinte:

1. Abra o SageMaker Studio seguindo as instruções em [Iniciar o Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. No painel de navegação à esquerda do Studio, selecione **Pipelines**.

1. Selecione um nome de pipeline para visualizar detalhes sobre ele.

1. Escolha a guia **Execuções**.

1. Selecione o nome da execução de um pipeline.

1. Escolha **Editar** para abrir o Pipeline Designer.

1. Atualize as bordas entre as etapas ou a configuração da etapa conforme necessário e clique em **Salvar**. 

   Salvar um pipeline após a edição gera automaticamente um novo número de versão.

1. Escolha **Executar**.

# Execute um pipeline
<a name="run-pipeline"></a>

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 .

## Executar um pipeline (Pipeline Designer)
<a name="run-pipeline-designer"></a>

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](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

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

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

1. Selecione um nome de pipeline para abrir a respectiva visualização de detalhes.

1. Escolha **Editor visual** no canto superior direito.

1. Para iniciar uma execução por meio da versão mais recente, escolha **Execuções**.

1. Para iniciar a execução por meio de uma versão específica, siga estas etapas:
   + Escolha o ícone da versão na barra de ferramentas inferior para abrir o painel da versão.
   + Escolha a versão do pipeline que deseja executar.
   + Passe o mouse sobre o item da versão para revelar o menu de três pontos e escolha **Executar**.
   + (Opcional) Para visualizar uma versão anterior do pipeline, escolha **Visualizar** no menu de três pontos no painel de versão. Você também pode editar a versão escolhendo **Editar** na barra de notificação.

**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](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Na barra lateral do Studio Classic, escolha o ícone **Início** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Selecione **Pipelines** no menu.

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

1. Selecione um nome de pipeline.

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

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

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

------

## Execute um pipeline (SageMaker Python SDK)
<a name="run-pipeline-sdk"></a>

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. 

**Topics**
+ [Pré-requisitos](#run-pipeline-prereq)
+ [Etapa 1: iniciar o pipeline](#run-pipeline-submit)
+ [Etapa 2: examinar a execução de um pipeline](#run-pipeline-examine)
+ [Etapa 3: substituir parâmetros padrão para a execução de um pipeline](#run-pipeline-parametrized)
+ [Etapa 4: interromper e excluir a execução de um pipeline](#run-pipeline-delete)

### Pré-requisitos
<a name="run-pipeline-prereq"></a>

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](define-pipeline.md). 

### Etapa 1: iniciar o pipeline
<a name="run-pipeline-submit"></a>

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())
   ```

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

1. Inicie a execução de um pipeline.

   ```
   execution = pipeline.start()
   ```

### Etapa 2: examinar a execução de um pipeline
<a name="run-pipeline-examine"></a>

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()
   ```

1. Aguarde o término da execução. 

   ```
   execution.wait()
   ```

1. 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'}}}]
   ```

1. 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
<a name="run-pipeline-parametrized"></a>

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 CI/CD pipelines, como com SageMaker Projetos. Para obter mais informações, consulte [MLOps Automação com SageMaker projetos](sagemaker-projects.md).

   ```
   execution = pipeline.start(
       parameters=dict(
           ModelApprovalStatus="Approved",
       )
   )
   ```

1. Aguarde o término da execução. 

   ```
   execution.wait()
   ```

1. Liste as etapas de execução e seu status.

   ```
   execution.list_steps()
   ```

1. 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
<a name="run-pipeline-delete"></a>

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()
   ```

1. Exclua o pipeline.

   ```
   pipeline.delete()
   ```

# Interromper um pipeline
<a name="pipelines-studio-stop"></a>

Você pode interromper a execução de um pipeline no console do Amazon SageMaker Studio.

Para interromper a execução de um pipeline no console do Amazon SageMaker Studio, conclua as etapas a seguir com base no uso do Studio ou do Studio Classic.

------
#### [ Studio ]

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

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

1. Selecione um nome de pipeline.

1. Escolha a guia **Execuções**.

1. Selecione a execução a ser interrompida.

1. Escolha **Parar**. Para retomar a execução de onde ela foi interrompida, escolha **Retomar**.

------
#### [ Studio Classic ]

1. Faça login no Amazon SageMaker Studio Classic. Para obter mais informações, consulte [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Na barra lateral do Studio Classic, escolha o ícone **Início** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Selecione **Pipelines** no menu.

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

1. Para interromper a execução de um pipeline, escolha **Exibir detalhes** no banner de status do pipeline e, em seguida, escolha **Parar**. Para retomar a execução de onde ela foi interrompida, escolha **Retomar** .

------

# Visualizar os detalhes de um pipeline
<a name="pipelines-studio-list"></a>

Você pode visualizar os detalhes de um pipeline de SageMaker IA para entender seus parâmetros, as dependências de suas etapas ou monitorar seu progresso e status. Isso pode ajudar você a solucionar problemas ou otimizar seu fluxo de trabalho. Você pode acessar os detalhes de um determinado pipeline usando o console do Amazon SageMaker Studio e explorar seu histórico de execução, definição, parâmetros e metadados.

Como alternativa, se seu pipeline estiver associado a um projeto de SageMaker IA, você poderá acessar os detalhes do pipeline na página de detalhes do projeto. Para obter mais informações, consulte [Visualizar recursos do projeto](sagemaker-projects-resources.md).

Para ver os detalhes de um pipeline de SageMaker IA, conclua as etapas a seguir com base no uso do Studio ou do Studio Classic.

**nota**  
O reempacotamento do modelo acontece quando o pipeline precisa incluir um script personalizado no arquivo de modelo compactado (model.tar.gz) para ser carregado no Amazon S3 e usado para implantar um modelo em um endpoint de IA. SageMaker Quando o SageMaker AI Pipeline treina um modelo e o registra no registro do modelo, ele introduz uma etapa de reembalagem *se* a saída do modelo treinado do trabalho de treinamento precisar incluir um script de inferência personalizado. A etapa de reembalagem descompacta o modelo, adiciona um novo script e recomprime o modelo. A execução do pipeline adiciona a etapa de reembalagem como um trabalho de treinamento.

------
#### [ Studio ]

1. Abra o console do SageMaker Studio seguindo as instruções em [Iniciar o Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

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

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

1. Selecione um nome de pipeline para visualizar detalhes sobre ele.

1. Escolha uma das guias a seguir para visualizar detalhes do pipeline:
   + **Execuções**: Detalhes sobre as execuções.
   + **Gráfico**: O gráfico do pipeline, incluindo todas as etapas.
   + **Parâmetros**: Os parâmetros e métricas de execução relacionados ao pipeline.
   + **Informações**: Os metadados associados ao pipeline, como tags, o nome de recurso da Amazon (ARN) do pipeline e o ARN da função. Também é possível editar a descrição do pipeline a partir dessa página.

------
#### [ Studio Classic ]

1. Faça login no Amazon SageMaker Studio Classic. Para obter mais informações, consulte [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Na barra lateral do Studio Classic, escolha o ícone **Início** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Selecione **Pipelines** no menu.

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

1. Selecione um nome de pipeline para visualizar detalhes sobre ele. A aba de detalhes do pipeline abrirá e exibirá uma lista das execuções do pipeline. Você pode iniciar uma execução ou escolher uma das outras abas para obter mais informações sobre o pipeline. Use o ícone do **Inspetor de propriedades** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/studio/icons/gears.png)) para escolher quais colunas exibir.

1. Na página de detalhes do pipeline, escolha uma das abas a seguir para ver detalhes sobre o pipeline:
   + **Execuções**: Detalhes sobre as execuções. Você pode criar uma execução nessa aba ou na aba **Gráfico**.
   + **Gráfico**: O DAG do pipeline.
   + **Parâmetros**: Inclui o status de aprovação do modelo.
   + **Configurações**: Os metadados associados ao pipeline. Você pode baixar o arquivo de definição do pipeline e editar o nome e a descrição do pipeline nessa aba.

------

# Visualizar os detalhes de uma execução de pipeline
<a name="pipelines-studio-view-execution"></a>

Você pode analisar os detalhes da execução de um determinado pipeline de SageMaker IA. Isso pode ajudá-lo a:
+ Identificar e resolver problemas que possam ter ocorrido durante a execução, como etapas com falha ou erros inesperados.
+ Compare os resultados de diferentes execuções de pipeline para entender como as mudanças nos dados ou parâmetros de entrada afetam o fluxo de trabalho geral.
+ Identifique gargalos e oportunidades de otimização.

Para visualizar os detalhes de uma execução de pipeline, conclua as etapas a seguir com base no uso do Studio ou do Studio Classic.

------
#### [ Studio ]

1. Abra o console do SageMaker Studio seguindo as instruções em [Iniciar o Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

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

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

1. Selecione um nome de pipeline para visualizar detalhes sobre ele.

1. Escolha a guia **Execuções**.

1. Selecione o nome da execução de um pipeline para visualizar. O gráfico do pipeline dessa execução é exibido.

1. Escolha qualquer uma das etapas de pipeline no gráfico para visualizar as configurações da etapa na barra lateral direita.

1. Escolha uma das guias a seguir para visualizar mais detalhes do pipeline:
   + **Definição**: O gráfico do pipeline, incluindo todas as etapas.
   + **Parâmetros**: Inclui o status de aprovação do modelo.
   + **Detalhes**: Os metadados associados ao pipeline, como tags, o nome de recurso da Amazon (ARN) do pipeline e o ARN da função. Também é possível editar a descrição do pipeline a partir dessa página.

------
#### [ Studio Classic ]

1. Faça login no Amazon SageMaker Studio Classic. Para obter mais informações, consulte [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Na barra lateral do Studio Classic, escolha o ícone **Início** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Selecione **Pipelines** no menu.

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

1. Selecione um nome de pipeline. A página **Execuções** do pipeline é aberta.

1. Na página **Execuções**, selecione um nome de execução para ver os detalhes sobre ela. A aba de detalhes da execução abrirá e exibirá um gráfico das etapas do pipeline.

1. Para pesquisar uma etapa por nome, digite caracteres que correspondam ao nome da etapa no campo de pesquisa. Use os ícones de redimensionamento no lado inferior direito do gráfico para ampliar e reduzir o gráfico, ajustá-lo à tela e expandi-lo para tela cheia. Para focar em uma parte específica do gráfico, você pode selecionar uma área em branco do gráfico e arrastar o gráfico para centrar nessa área.   
![\[\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/yosemite/execution-graph-w-input.png)

1. Escolha uma das etapas de pipeline no gráfico para ver detalhes sobre ela. Na captura de tela anterior, uma etapa de treinamento é escolhida e exibe as seguintes abas:
   + **Entrada**: As entradas de treinamento. Se uma fonte de entrada for do Amazon Simple Storage Service (Amazon S3), escolha o link para visualizar o arquivo no console do Amazon S3.
   + **Saída**: Os resultados do treinamento, como métricas, gráficos, arquivos e resultados da avaliação. Os gráficos são produzidos usando o [ APIsTracker](https://sagemaker-experiments.readthedocs.io/en/latest/tracker.html#smexperiments.tracker.Tracker.log_precision_recall).
   + **Registros** — Os CloudWatch registros da Amazon produzidos por etapa.
   + **Informações**: Os parâmetros e metadados associados à etapa.  
![\[\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/yosemite/execution-graph-info.png)

------

# Faça o download de um arquivo de definição de pipeline
<a name="pipelines-studio-download"></a>

Você pode baixar o arquivo de definição do seu pipeline de SageMaker IA diretamente da interface do usuário do Amazon SageMaker Studio. Você pode usar o arquivo de definição de pipeline para:
+ Backup e restauração: use o arquivo baixado para criar um backup da configuração do pipeline, que você pode restaurar em caso de falhas na infraestrutura ou alterações acidentais.
+ Controle de versão: armazene o arquivo de definição do pipeline em um sistema de controle de origem para rastrear as alterações no pipeline e reverter para as versões anteriores, se necessário.
+ Interações programáticas: use o arquivo de definição do pipeline como entrada para o SageMaker SDK ou. AWS CLI
+ Integração com processos de automação: integre a definição do pipeline em seus CI/CD fluxos de trabalho ou outros processos de automação.

Para baixar o arquivo de definição de um pipeline, conclua as etapas a seguir com base no uso do Studio ou do Studio Classic.

------
#### [ Studio ]

1. Abra o console do SageMaker Studio seguindo as instruções em [Iniciar o Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

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

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

1. Selecione um nome de pipeline. A página **Execuções** abrirá e exibirá uma lista das execuções de pipeline.

1. Fique na página **Execuções** ou escolha a página **Gráfico**, **Informações** ou **Parâmetros** à esquerda da tabela de execuções de pipeline. Você pode baixar a definição do pipeline em qualquer uma dessas páginas.

1. Na parte superior direita da página, escolha as reticências verticais e escolha **Baixar definição de pipeline (JSON)**.

------
#### [ Studio Classic ]

1. Faça login no Amazon SageMaker Studio Classic. Para obter mais informações, consulte [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Na barra lateral do Studio Classic, escolha o ícone **Início** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Selecione **Pipelines** no menu.

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

1. Selecione um nome de pipeline.

1. Escolha a guia **Configurações**.

1. Escolha **Baixar arquivo de definição de pipeline**.

------

# Acessar dados do experimento a partir de um pipeline
<a name="pipelines-studio-experiments"></a>

**nota**  
SageMaker Experimentos é um recurso fornecido somente no Studio Classic.

Quando você cria um pipeline e especifica [pipeline\$1experiment\$1config](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.pipeline_experiment_config), o Pipelines cria as seguintes entidades SageMaker Experiments por padrão, caso elas não existam:
+ Um experimento para o pipeline.
+ Um grupo de execução para cada execução do pipeline.
+ Uma execução para cada trabalho de SageMaker IA criado em uma etapa do pipeline

Para obter informações sobre como os experimentos são integrados aos pipelines, consulte [Integração SageMaker com Amazon Experiments](pipelines-experiments.md). Para obter mais informações sobre SageMaker experimentos, consulte[SageMaker Experiências da Amazon no Studio Classic](experiments.md).

Você pode acessar a lista de execuções associadas a um pipeline na lista de execuções do pipeline ou na lista de experimentos.

**Para visualizar a lista de execuções a partir da lista de execuções do pipeline**

1. Para visualizar a lista de execuções de pipeline, siga as cinco primeiras etapas na aba *Studio Classic* de [Visualizar os detalhes de um pipeline](pipelines-studio-list.md).

1. No canto superior direito da tela, escolha o ícone **Filtro** (![\[Funnel or filter icon representing data filtering or narrowing down options.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/jumpstart/jumpstart-filter-icon.png)).

1. Escolha a guia **Experimento**. Se a integração do experimento não foi desativada quando o pipeline foi criado, o nome do experimento será exibido na lista de execuções. 
**nota**  
A integração de experimentos foi introduzida na versão 2.41.0 do SDK do Amazon [Python SageMaker ](https://sagemaker.readthedocs.io/en/stable). Os pipelines criados com uma versão anterior do SDK não são integrados aos experimentos por padrão.

1. Selecione o experimento de sua preferência para visualizar grupos de execução e execuções relacionados a esse experimento.

**Para ver a lista de execuções a partir da lista de experimentos**

1. Na barra lateral esquerda do Studio Classic, escolha o ícone **Início** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Selecione **Experimentos** no menu.

1. Use a barra de pesquisa ou o ícone **Filtro** (![\[Funnel or filter icon representing data filtering or narrowing down options.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/jumpstart/jumpstart-filter-icon.png)) para filtrar a lista de experimentos criados por um pipeline.

1. Abra o nome de um experimento e visualize uma lista das execuções criadas pelo pipeline.

# Rastrear a linhagem de um pipeline
<a name="pipelines-lineage-tracking"></a>

Neste tutorial, você usa o Amazon SageMaker Studio para rastrear a linhagem de um pipeline do Amazon SageMaker AI ML.

O pipeline foi criado pelo notebook [Orchestrating Jobs with Amazon SageMaker Model Building Pipelines no repositório](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.html) de exemplos da [Amazon SageMaker ](https://github.com/awslabs/amazon-sagemaker-examples). GitHub Para obter informações detalhadas sobre como o pipeline foi criado, consulte [Definir um pipeline](define-pipeline.md).

O rastreamento de linhagem no Studio é centrado em torno de um gráfico acíclico dirigido (DAG). O DAG representa as etapas em um pipeline. No DAG, você pode rastrear a linhagem de qualquer etapa para qualquer outra etapa. O diagrama a seguir mostra as etapas do pipeline. Essas etapas aparecem como um DAG no Studio.

![\[\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/yosemite/pipeline-tutorial-steps.png)


Para rastrear a linhagem de um pipeline no console do Amazon SageMaker Studio, conclua as etapas a seguir com base no uso do Studio ou do Studio Classic.

------
#### [ Studio ]

**Para rastrear a linhagem de um pipeline**

1. Abra o console do SageMaker Studio seguindo as instruções em [Iniciar o Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

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

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

1. Na coluna **Nome**, selecione um nome de pipeline para visualizar detalhes sobre ele.

1. Escolha a guia **Execuções**.

1. Na coluna **Nome** da tabela **Execuções**, selecione o nome de uma execução de pipeline para visualizar.

1. No canto superior direito da página **Execuções**, escolha as reticências verticais e escolha **Baixar definição de pipeline (JSON)**. Você pode visualizar o arquivo para ver como o gráfico do pipeline foi definido. 

1. Escolha **Editar** para abrir o Pipeline Designer.

1. Use os controles de redimensionamento e zoom no canto superior direito da tela para ampliar e reduzir o gráfico, ajustar o gráfico à tela ou expandir o gráfico para tela cheia.

1. Para visualizar seus conjuntos de dados de treinamento, validação e teste, conclua as seguintes etapas:

   1. Escolha a etapa de processamento no gráfico do pipeline.

   1. Na barra lateral direita, escolha a guia **Visão geral**.

   1. Na seção **Arquivos**, encontre os caminhos do Amazon S3 para os conjuntos de dados de treinamento, validação e teste.

1. Para visualizar os artefatos do modelo, conclua as seguintes etapas:

   1. Escolha a etapa de treinamento no gráfico do seu pipeline.

   1. Na barra lateral direita, escolha a guia **Visão geral**.

   1. Na seção **Arquivos**, encontre os caminhos do Amazon S3 para o artefato do modelo.

1. Para encontrar o ARN do pacote de modelos, conclua as seguintes etapas:

   1. Escolha a etapa “Registrar modelo”.

   1. Na barra lateral direita, escolha a guia **Visão geral**.

   1. Na seção **Arquivos**, encontre o ARN do pacote do modelo.

------
#### [ Studio Classic ]

**Para rastrear a linhagem de um pipeline**

1. Faça login no Amazon SageMaker Studio Classic. Para obter mais informações, consulte [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Na barra lateral esquerda do Studio, escolha o ícone **Início** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/studio/icons/house.png)).

1. No menu, selecione **Pipelines**.

1. Use a caixa de **Pesquisa** para filtrar a lista de pipelines.

1. Escolha o pipeline `AbalonePipeline` para visualizar a lista de execução e outros detalhes sobre o pipeline.

1. Escolha o ícone do **Inspetor de propriedades** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/studio/icons/gears.png)) na barra lateral direita para abrir o painel **PROPRIEDADES DA TABELA**, onde você pode escolher quais propriedades exibir.

1. Escolha a aba **Configurações** e, em seguida, escolha **Baixar arquivo de definição de pipeline**. Você pode visualizar o arquivo para ver como o gráfico do pipeline foi definido.

1. Na aba **Execução**, selecione a primeira linha na lista de execução para ver seu gráfico de execução e outros detalhes sobre ela. Observe que o gráfico corresponde ao diagrama exibido no início do tutorial.

   Use os ícones de redimensionamento no lado inferior direito do gráfico para ampliar e reduzir o gráfico, ajustá-lo à tela ou expandi-lo para tela cheia. Para focar em uma parte específica do gráfico, você pode selecionar uma área em branco do gráfico e arrastar o gráfico para centrar nessa área. A inserção no lado inferior direito do gráfico mostra o local do gráfico.  
![\[\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/yosemite/pipeline-tutorial-execution-graph.png)

1. Na aba **Gráfico**, escolha a etapa `AbaloneProcess` para visualizar detalhes sobre ela.

1. Encontre os caminhos do Amazon S3 para os conjuntos de dados de treinamento, validação e teste na aba **Saída**, em **Arquivos**.
**nota**  
Para obter os caminhos completos, clique com o botão direito do mouse no caminho e escolha **Copiar conteúdo da célula**.

   ```
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/train
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/validation
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/test
   ```

1. Escolha a etapa `AbaloneTrain`.

1. Encontre o caminho do Amazon S3 para o artefato do modelo na aba **Saída**, em **Arquivos**:

   ```
   s3://sagemaker-eu-west-1-acct-id/AbaloneTrain/pipelines-6locnsqz4bfu-AbaloneTrain-NtfEpI0Ahu/output/model.tar.gz
   ```

1. Escolha a etapa `AbaloneRegisterModel`.

1. Encontre o ARN do pacote do modelo na aba **Saída**, em **Arquivos**:

   ```
   arn:aws:sagemaker:eu-west-1:acct-id:model-package/abalonemodelpackagegroupname/2
   ```

------

# Orquestração do Kubernetes
<a name="kubernetes-workflows"></a>

Você pode orquestrar seus trabalhos de SageMaker treinamento e inferência com operadores de IA para Kubernetes e SageMaker componentes de SageMaker IA para pipelines do Kubeflow. SageMaker Os operadores de IA para Kubernetes facilitam que desenvolvedores e cientistas de dados que usam o Kubernetes treinem, ajustem e implantem modelos de aprendizado de máquina (ML) em IA. SageMaker SageMaker Os componentes de IA para o Kubeflow Pipelines permitem que você mova suas tarefas de processamento e treinamento de dados do cluster Kubernetes para o serviço gerenciado otimizado para aprendizado de máquina da SageMaker IA.

**Topics**
+ [SageMaker Operadores de IA para Kubernetes](kubernetes-sagemaker-operators.md)
+ [SageMaker Componentes de IA para pipelines Kubeflow](kubernetes-sagemaker-components-for-kubeflow-pipelines.md)

# SageMaker Operadores de IA para Kubernetes
<a name="kubernetes-sagemaker-operators"></a>

SageMaker Os operadores de IA para Kubernetes facilitam que desenvolvedores e cientistas de dados que usam o Kubernetes treinem, ajustem e implantem modelos de aprendizado de máquina (ML) em IA. SageMaker Você pode instalar esses operadores de SageMaker IA em seu cluster Kubernetes no Amazon Elastic Kubernetes Service (Amazon EKS SageMaker ) para criar trabalhos de IA de forma nativa usando a API do Kubernetes e ferramentas de linha de comando do Kubernetes, como. `kubectl` Este guia mostra como configurar e usar os operadores para executar treinamento de modelos, ajuste de hiperparâmetros ou inferência (em tempo real e em lote) na SageMaker IA a partir de um cluster Kubernetes. Os procedimentos e diretrizes deste capítulo pressupõem que você esteja familiarizado com o Kubernetes e seus comandos básicos.

**Importante**  
Estamos interrompendo o desenvolvimento e o suporte técnico da versão original do [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master).  
Se você estiver usando atualmente a versão `v1.2.2` ou inferior do [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), recomendamos migrar seus recursos para o [controlador de serviço ACK da Amazon](https://github.com/aws-controllers-k8s/sagemaker-controller). SageMaker O controlador de serviço ACK é uma nova geração de SageMaker operadores para Kubernetes com base em [AWS controladores para Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).  
Para obter informações sobre as etapas de migração, consulte [Migre recursos para os operadores mais recentes](kubernetes-sagemaker-operators-migrate.md).  
Para obter respostas às perguntas frequentes sobre o fim do suporte da versão original do SageMaker Operators for Kubernetes, consulte [Anunciando o fim do suporte da versão original do SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

**nota**  
Não há custo adicional para o uso desses operadores. Você incorre em cobranças por todos os recursos de SageMaker IA usados por meio desses operadores.

## O que é um operador?
<a name="kubernetes-sagemaker-operators-overview"></a>

Um operador do Kubernetes é um controlador de aplicações que gerencia aplicações em nome de um usuário do Kubernetes. Os controladores do ambiente de gerenciamento abrangem vários circuitos de controle que atendem a um gerenciador central de estado (ETCD) para regular o estado da aplicação que eles controlam. Exemplos de tais aplicações incluem [C loud-controller-manager](https://kubernetes.io/docs/concepts/architecture/cloud-controller/) `[kube-controller-manager](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/)` e. Os operadores normalmente fornecem uma abstração de nível mais alto do que a API bruta do Kubernetes, facilitando a implantação e o gerenciamento de aplicações pelos usuários. Para adicionar novos recursos ao Kubernetes, os desenvolvedores podem estender a API do Kubernetes criando um **recurso personalizado** que contém a lógica e os componentes específicos da aplicação ou do domínio. Os operadores no Kubernetes permitem que os usuários invoquem esses recursos personalizados de forma nativa e automatizem os fluxos de trabalho associados.

### Como funcionam AWS os Controllers for Kubernetes (ACK)?
<a name="kubernetes-sagemaker-operators-explained"></a>

Os operadores de SageMaker IA para Kubernetes permitem que você gerencie trabalhos em SageMaker IA a partir do seu cluster Kubernetes. A versão mais recente do SageMaker AI Operators for Kubernetes é baseada nos AWS Controllers for Kubernetes (ACK). O ACK inclui um tempo de execução de controlador comum, um gerador de código e um conjunto de controladores AWS específicos do serviço, um dos quais é o SageMaker controlador de IA.

O diagrama a seguir mostra como o ACK funciona.

![\[Explicação do operador de SageMaker IA baseado em ACK para Kubernetes.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-ack-controller.png)


Neste diagrama, um usuário do Kubernetes quer executar um treinamento de modelo em SageMaker IA de dentro do cluster Kubernetes usando a API Kubernetes. O usuário faz uma chamada para`kubectl apply`, transmitindo um arquivo que descreve um recurso personalizado do Kubernetes descrevendo o SageMaker trabalho de treinamento. `kubectl apply`passa esse arquivo, chamado de manifesto, para o servidor da API Kubernetes em execução no nó controlador do Kubernetes (etapa *1* no diagrama do fluxo de trabalho). *O servidor da API Kubernetes recebe o manifesto com a especificação do trabalho de SageMaker treinamento e determina se o usuário tem permissão para criar um recurso personalizado do tipo `sageMaker.services.k8s.aws/TrainingJob` e se o recurso personalizado está formatado corretamente (Etapa 2).* Se o usuário for autorizado e o recurso personalizado for válido, o servidor da API do Kubernetes grava (Etapa *3*) o recurso personalizado em seu armazenamento de dados etcd e, em seguida, responde (Etapa *4*) ao usuário informando que o recurso personalizado foi criado. O controlador de SageMaker IA, que está sendo executado em um nó de trabalho do Kubernetes dentro do contexto de um pod normal do Kubernetes, é notificado (etapa *5*) de que um novo recurso personalizado do tipo foi criado. `sageMaker.services.k8s.aws/TrainingJob` O controlador de SageMaker IA então se comunica (Etapa *6*) com a SageMaker API, chamando a `CreateTrainingJob` API de SageMaker IA para criar o trabalho de treinamento em AWS. Depois de se comunicar com a SageMaker API, o controlador de SageMaker IA chama o servidor da API Kubernetes para atualizar (Etapa *7*) o status do recurso personalizado com as informações recebidas da IA. SageMaker Portanto, o controlador de SageMaker IA fornece aos desenvolvedores as mesmas informações que eles teriam recebido usando o AWS SDK.

### Visão geral das permissões
<a name="kubernetes-sagemaker-operators-authentication"></a>

Os operadores acessam os recursos de SageMaker IA em seu nome. A função do IAM que o operador assume para interagir com os AWS recursos é diferente das credenciais que você usa para acessar o cluster do Kubernetes. A função também difere da função que AWS assume ao executar seus trabalhos de aprendizado de máquina. 

A imagem a seguir explica as várias camadas de autenticação.

![\[SageMaker Operador de IA para várias camadas de autenticação do Kubernetes.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-authentication.png)


# Operadores de SageMaker IA mais recentes para Kubernetes
<a name="kubernetes-sagemaker-operators-ack"></a>

Esta seção é baseada na versão mais recente dos operadores de SageMaker IA para Kubernetes usando AWS controladores para Kubernetes (ACK).

**Importante**  
Se você estiver usando atualmente a versão `v1.2.2` ou inferior do [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), recomendamos migrar seus recursos para o [controlador de serviço ACK da Amazon](https://github.com/aws-controllers-k8s/sagemaker-controller). SageMaker O controlador de serviço ACK é uma nova geração de SageMaker operadores para Kubernetes com base em [AWS controladores para Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).  
Para obter informações sobre as etapas de migração, consulte [Migre recursos para os operadores mais recentes](kubernetes-sagemaker-operators-migrate.md).  
Para obter respostas às perguntas frequentes sobre o fim do suporte da versão original do SageMaker Operators for Kubernetes, consulte [Anunciando o fim do suporte da versão original do SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

A versão mais recente do [SageMaker AI Operators for Kubernetes](https://github.com/aws-controllers-k8s/sagemaker-controller) é baseada nos [AWS Controllers for Kubernetes (ACK), uma estrutura para criar controladores personalizados do Kubernetes](https://aws-controllers-k8s.github.io/community/ ) em que cada controlador se comunica com uma API de serviço. AWS Esses controladores permitem que os usuários do Kubernetes provisionem recursos AWS como bancos de dados ou filas de mensagens usando a API do Kubernetes.

Use as etapas a seguir para instalar e usar o ACK para treinar, ajustar e implantar modelos de aprendizado de máquina com a Amazon SageMaker AI.

**Topics**
+ [Instale operadores de SageMaker IA para Kubernetes](#kubernetes-sagemaker-operators-ack-install)
+ [Use operadores de SageMaker IA para Kubernetes](#kubernetes-sagemaker-operators-ack-use)
+ [Referência](#kubernetes-sagemaker-operators-ack-reference)

## Instale operadores de SageMaker IA para Kubernetes
<a name="kubernetes-sagemaker-operators-ack-install"></a>

Para configurar a versão mais recente disponível dos operadores de SageMaker IA para Kubernetes, consulte a seção *Configuração* em [Machine Learning com o ACK SageMaker ](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup) AI Controller.

## Use operadores de SageMaker IA para Kubernetes
<a name="kubernetes-sagemaker-operators-ack-use"></a>

Para ver um tutorial sobre como treinar um modelo de aprendizado de máquina com o controlador de serviço ACK para Amazon SageMaker AI usando o Amazon EKS, consulte [Machine Learning with the ACK SageMaker AI Controller](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/).

Para ver um exemplo de escalonamento automático, consulte [Dimensionar cargas de trabalho de SageMaker IA com](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/) Application Auto Scaling

## Referência
<a name="kubernetes-sagemaker-operators-ack-reference"></a>

Veja também o [controlador de serviço ACK para o GitHub repositório Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller) ou leia a documentação de [AWS Controllers for Kubernetes](https://aws-controllers-k8s.github.io/community/docs/community/overview/). 

# Operadores de SageMaker IA antigos para Kubernetes
<a name="kubernetes-sagemaker-operators-end-of-support"></a>

Esta seção é baseada na versão original dos [operadores de SageMaker IA para Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s).

**Importante**  
Estamos interrompendo o desenvolvimento e o suporte técnico da versão original do [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master).  
Se você estiver usando atualmente a versão `v1.2.2` ou inferior do [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), recomendamos migrar seus recursos para o [controlador de serviço ACK da Amazon](https://github.com/aws-controllers-k8s/sagemaker-controller). SageMaker O controlador de serviço ACK é uma nova geração de SageMaker operadores para Kubernetes com base em [AWS controladores para Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).  
Para obter informações sobre as etapas de migração, consulte [Migre recursos para os operadores mais recentes](kubernetes-sagemaker-operators-migrate.md).  
Para obter respostas às perguntas frequentes sobre o fim do suporte da versão original do SageMaker Operators for Kubernetes, consulte [Anunciando o fim do suporte da versão original do SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

**Topics**
+ [Instale operadores de SageMaker IA para Kubernetes](#kubernetes-sagemaker-operators-eos-install)
+ [Use Amazon SageMaker AI Jobs](kubernetes-sagemaker-jobs.md)
+ [Migre recursos para os operadores mais recentes](kubernetes-sagemaker-operators-migrate.md)
+ [Anunciando o fim do suporte da versão original do SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

## Instale operadores de SageMaker IA para Kubernetes
<a name="kubernetes-sagemaker-operators-eos-install"></a>

Use as etapas a seguir para instalar e usar operadores de SageMaker IA para Kubernetes para treinar, ajustar e implantar modelos de aprendizado de máquina com a Amazon AI. SageMaker 

**Topics**
+ [Configuração baseada em perfil do IAM e implantação de operadores](#iam-role-based-setup-and-operator-deployment)
+ [Limpar os recursos](#cleanup-operator-resources)
+ [Excluir operadores](#delete-operators)
+ [Solução de problemas](#troubleshooting)
+ [Imagens e SMlogs em cada região](#images-and-smlogs-in-each-region)

### Configuração baseada em perfil do IAM e implantação de operadores
<a name="iam-role-based-setup-and-operator-deployment"></a>

As seções a seguir descrevem as etapas para configurar e implantar a versão original do operador.

**Atenção**  
**Lembrete:** as etapas a seguir não instalam a versão mais recente do SageMaker AI Operators for Kubernetes. Para instalar os novos operadores de SageMaker IA baseados em ACK para Kubernetes, consulte. [Operadores de SageMaker IA mais recentes para Kubernetes](kubernetes-sagemaker-operators-ack.md)

#### Pré-requisitos
<a name="prerequisites"></a>

Este guia pressupõe que você concluiu os seguintes pré-requisitos: 
+ Instale as seguintes ferramentas na máquina cliente usada para acessar seu cluster do Kubernetes: 
  + Versão 1.13 ou posterior do [https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html). Use a versão do `kubectl` que esteja em uma versão secundária do ambiente de gerenciamento do cluster do Amazon EKS. Por exemplo, um cliente `kubectl` 1.13 funciona com clusters do Kubernetes 1.13 e 1.14. O OpenID Connect (OIDC) não é compatível com as versões anteriores à 1.13. 
  + [https://github.com/weaveworks/eksctl](https://github.com/weaveworks/eksctl) versão 0.7.0 ou posterior 
  + [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) versão 1.16.232 ou posterior 
  + (opcional) [Helm](https://helm.sh/docs/intro/install/) versão 3.0 ou posterior 
  + [aws-iam-authenticator](https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html) 
+ Obtenha permissões do IAM para criar perfis e anexar políticas a eles.
+ Criou um cluster do Kubernetes no qual executar os operadores. Deve ser a versão 1.13 ou 1.14 do Kubernetes. Para criar clusters automatizados usando `eksctl`, consulte [Introdução ao eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html). Leva de 20 a 30 minutos para provisionar o cluster. 

#### Implantação no escopo do cluster
<a name="cluster-scoped-deployment"></a>

Antes de implantar seu operador usando um perfil do IAM, associe um provedor de identidade (IdP) do OpenID Connect (OIDC) ao seu perfil para se autenticar com o serviço IAM.

##### Criar um provedor OIDC para o cluster
<a name="create-an-openid-connect-provider-for-your-cluster"></a>

As instruções a seguir mostram como criar e associar um provedor OIDC ao seu cluster do Amazon EKS.

1. Defina as variáveis ambientais locais `CLUSTER_NAME` e `AWS_REGION` da seguinte forma:

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="<your cluster name>"
   export AWS_REGION="<your region>"
   ```

1. Use o comando a seguir para associar o provedor do OIDC ao seu cluster. Para obter mais informações, consulte [Habilitar perfis do IAM para contas de serviço em seu cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
         --region ${AWS_REGION} --approve
   ```

   A saída será semelhante a: 

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Agora que o cluster tem um provedor de identidade OIDC, você pode criar uma função e dar ServiceAccount permissão ao Kubernetes para assumir a função.

##### Obtenha o ID do OIDC
<a name="get-the-oidc-id"></a>

Para configurar o ServiceAccount, obtenha a URL do emissor do OIDC usando o seguinte comando:

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

O comando retorna um URL como o seguinte: 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

Nesse URL, o valor `D48675832CA65BD10A532F597OIDCID` é o ID do OIDC. O ID do OIDC para seu cluster é diferente. Você precisa desse valor de ID do OIDC para criar um perfil. 

 Se sua saída for `None`, significa que a versão do seu cliente é antiga. Para contornar esse problema, execute o comando apresentado a seguir: 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

O URL do OIDC é retornado da seguinte forma: 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Criar um perfil do IAM
<a name="create-an-iam-role"></a>

1. Crie um arquivo chamado `trust.json` e insira o seguinte bloco de código de relação de confiança nele: Certifique-se de substituir todos os espaços reservados `<OIDC ID>`, `<AWS account number>` e `<EKS Cluster region>` por valores correspondentes ao seu cluster. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Execute o comando a seguir para criar um perfil com a relação de confiança definida no `trust.json`. Esse perfil permite que o cluster do Amazon EKS obtenha e atualize as credenciais do IAM. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name <role name> --assume-role-policy-document file://trust.json --output=text
   ```

   A saída será semelhante a: 

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
   ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
   STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
   STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default
   PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

    Anote o `ROLE ARN`; você transmitirá esse valor para seu operador. 

##### Anexe a AmazonSageMakerFullAccess política à função
<a name="attach-the-amazonsagemakerfullaccess-policy-to-the-role"></a>

Para dar acesso à função à SageMaker IA, anexe a [AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)política. Se quiser limitar as permissões para o operador, você pode criar sua própria política personalizada e anexá-la. 

 Para anexar a `AmazonSageMakerFullAccess`, execute o seguinte comando: 

```
aws iam attach-role-policy --role-name <role name>  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

O Kubernetes ServiceAccount `sagemaker-k8s-operator-default` deve ter permissões. `AmazonSageMakerFullAccess` Confirme isso ao instalar o operador. 

##### Implantar o operador
<a name="deploy-the-operator"></a>

Ao implantar seu operador, você pode usar um arquivo YAML ou charts do Helm. 

##### Implantar o operador usando YAML
<a name="deploy-the-operator-using-yaml"></a>

Essa é a maneira mais simples implantar seus operadores. O processo é o seguinte: 

1. Faça download da instrução do instalador usando o seguinte comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/installer.yaml
   ```

1. Edite o arquivo `installer.yaml` para substituir `eks.amazonaws.com/role-arn`. Substitua o ARN aqui pelo nome do recurso da Amazon (ARN) para o perfil baseado no OIDC que você criou. 

1. Use o seguinte comando para implantar o cluster: 

   ```
   kubectl apply -f installer.yaml
   ```

##### Implante o operador usando charts do Helm
<a name="deploy-the-operator-using-helm-charts"></a>

Use o chart do Helm fornecido para instalar o operador. 

1. Clone o diretório do instalador do Helm usando o seguinte comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Navegue para a pasta `amazon-sagemaker-operator-for-k8s/hack/charts/installer`. Edite o arquivo `rolebased/values.yaml`, que inclui parâmetros de alto nível para o gráfico. Substitua o ARN do perfil aqui pelo nome do recurso da Amazon (ARN) para o perfil baseado no OIDC que você criou. 

1. Instale o chart do Helm usando o seguinte comando: 

   ```
   kubectl create namespace sagemaker-k8s-operator-system
     helm install --namespace sagemaker-k8s-operator-system sagemaker-operator rolebased/
   ```

   Se você decidir instalar o operador em um namespace diferente do especificado, precisará ajustar o namespace definido no arquivo de perfil do IAM `trust.json` para que corresponda. 

1. Depois de um momento, o gráfico será instalado com um nome gerado aleatoriamente. Verifique se a instalação teve êxito executando o seguinte comando: 

   ```
   helm ls
   ```

   A saída será semelhante a: 

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
     sagemaker-operator      sagemaker-k8s-operator-system   1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Verificar a implantação do operador
<a name="verify-the-operator-deployment"></a>

1. Você deve conseguir ver as definições de recursos personalizados de SageMaker IA (CRDs) de cada operador implantado em seu cluster executando o seguinte comando: 

   ```
   kubectl get crd | grep sagemaker
   ```

   A saída será semelhante a: 

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Verifique se o pod do operador está sendo executado com êxito. Use o seguinte comando para listar todos os pods: 

   ```
   kubectl -n sagemaker-k8s-operator-system get pods
   ```

   Você deve ver um pod chamado `sagemaker-k8s-operator-controller-manager-*****` no namespace `sagemaker-k8s-operator-system` da seguinte forma: 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Implantação no escopo do Namespace
<a name="namespace-scoped-deployment"></a>

Você tem a opção de instalar seu operador dentro do escopo de um namespace individual do Kubernetes. Nesse modo, o controlador só monitora e reconcilia recursos com SageMaker IA se os recursos forem criados dentro desse namespace. Isso permite um controle mais refinado sobre qual controlador está gerenciando quais recursos. Isso é útil para implantar em várias AWS contas ou controlar quais usuários têm acesso a tarefas específicas. 

Este guia descreve como instalar um operador em um namespace predefinido específico. Para implantar um controlador em um segundo namespace, siga o guia do início ao fim e altere o namespace em cada etapa. 

##### Criar um provedor OIDC para o cluster Amazon EKS
<a name="create-an-openid-connect-provider-for-your-eks-cluster"></a>

As instruções a seguir mostram como criar e associar um provedor OIDC ao seu cluster do Amazon EKS. 

1. Defina as variáveis ambientais locais `CLUSTER_NAME` e `AWS_REGION` da seguinte forma: 

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="<your cluster name>"
   export AWS_REGION="<your region>"
   ```

1. Use o comando a seguir para associar o provedor do OIDC ao seu cluster. Para obter mais informações, consulte [Habilitar perfis do IAM para contas de serviço em seu cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
         --region ${AWS_REGION} --approve
   ```

   A saída será semelhante a: 

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Agora que o cluster tem um provedor de identidade OIDC, crie uma função e dê ServiceAccount permissão ao Kubernetes para assumir a função. 

##### Obtenha ID do OIDC
<a name="get-your-oidc-id"></a>

Para configurar o ServiceAccount, primeiro obtenha a URL do emissor do OpenID Connect usando o seguinte comando: 

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

O comando retorna um URL como o seguinte: 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

Nesse URL, o valor D48675832 CA65 BD10 A532F597OIDCID é o ID do OIDC. O ID do OIDC para seu cluster é diferente. Você precisa desse valor de ID do OIDC para criar um perfil. 

 Se sua saída for `None`, significa que a versão do seu cliente é antiga. Para contornar esse problema, execute o comando apresentado a seguir: 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

O URL do OIDC é retornado da seguinte forma: 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Criar seu perfil do IAM
<a name="create-your-iam-role"></a>

1. Crie um arquivo chamado `trust.json` e insira o seguinte bloco de código de relação de confiança nele: Certifique-se de substituir todos os espaços reservados `<OIDC ID>`, `<AWS account number>`, `<EKS Cluster region>` e `<Namespace>` por valores correspondentes ao seu cluster. Para os fins deste guia, `my-namespace` é usado para o valor `<Namespace>`. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
           "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:<Namespace>:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:<Namespace>:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Execute o comando a seguir para criar um perfil com a relação de confiança definida no `trust.json`. Esse perfil permite que o cluster do Amazon EKS obtenha e atualize as credenciais do IAM. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name <role name> --assume-role-policy-document file://trust.json --output=text
   ```

   A saída será semelhante a: 

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
     ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
     STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
     STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:my-namespace:sagemaker-k8s-operator-default
     PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

Anote o `ROLE ARN`. Você transmitirá esse valor para seu operador. 

##### Vincule a AmazonSageMakerFullAccess política à sua função
<a name="attach-the-amazonsagemakerfullaccess-policy-to-your-role"></a>

Para dar acesso à função à SageMaker IA, anexe a [https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)política. Se quiser limitar as permissões para o operador, você pode criar sua própria política personalizada e anexá-la. 

 Para anexar a `AmazonSageMakerFullAccess`, execute o seguinte comando: 

```
aws iam attach-role-policy --role-name <role name>  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

O Kubernetes ServiceAccount `sagemaker-k8s-operator-default` deve ter permissões. `AmazonSageMakerFullAccess` Confirme isso ao instalar o operador. 

##### Implantar o operador em seu namespace
<a name="deploy-the-operator-to-your-namespace"></a>

Ao implantar seu operador, você pode usar um arquivo YAML ou gráficos do Helm. 

##### Implantar o operador em seu namespace usando o YAML
<a name="deploy-the-operator-to-your-namespace-using-yaml"></a>

Há duas partes na implantação de um operador dentro do escopo de um namespace. O primeiro é o conjunto dos CRDs que estão instalados em um nível de cluster. Essas definições de recursos só precisam ser instaladas uma vez por cluster do Kubernetes. A segunda parte são as permissões do operador e a implantação em si. 

 Se você ainda não instalou o CRDs no cluster, aplique o instalador do CRD YAML usando o seguinte comando: 

```
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
```

Para instalar o operador no cluster: 

1. Faça download do instalador de operador do YAML usando o seguinte comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/operator.yaml
   ```

1. Atualize o instalador YAML para colocar os recursos no namespace especificado usando o seguinte comando: 

   ```
   sed -i -e 's/PLACEHOLDER-NAMESPACE/<YOUR NAMESPACE>/g' operator.yaml
   ```

1. Edite o arquivo `operator.yaml` para colocar recursos em seu `eks.amazonaws.com/role-arn`. Substitua o ARN aqui pelo nome do recurso da Amazon (ARN) para o perfil baseado no OIDC que você criou. 

1. Use o seguinte comando para implantar o cluster: 

   ```
   kubectl apply -f operator.yaml
   ```

##### Implantar o operador em seu namespace usando os charts do Helm
<a name="deploy-the-operator-to-your-namespace-using-helm-charts"></a>

Há duas partes necessárias para implantar um operador dentro do escopo de um namespace. O primeiro é o conjunto dos CRDs que estão instalados em um nível de cluster. Essas definições de recursos só precisam ser instaladas uma vez por cluster do Kubernetes. A segunda parte são as permissões do operador e a implantação em si. Ao usar os charts do Helm, você deve primeiro criar o namespace usando o `kubectl`. 

1. Clone o diretório do instalador do Helm usando o seguinte comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Navegue para a pasta `amazon-sagemaker-operator-for-k8s/hack/charts/installer/namespaced`. Edite o arquivo `rolebased/values.yaml`, que inclui parâmetros de alto nível para o gráfico. Substitua o ARN do perfil aqui pelo nome do recurso da Amazon (ARN) para o perfil baseado no OIDC que você criou. 

1. Instale o chart do Helm usando o seguinte comando: 

   ```
   helm install crds crd_chart/
   ```

1. Crie o namespace necessário e instale o operador usando o seguinte comando: 

   ```
   kubectl create namespace <namespace>
   helm install --n <namespace> op operator_chart/
   ```

1. Depois de um momento, o gráfico será instalado com o nome `sagemaker-operator`. Verifique se a instalação teve êxito executando o seguinte comando: 

   ```
   helm ls
   ```

   A saída será semelhante a: 

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
   sagemaker-operator      my-namespace                    1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Verificar a implantação do operador em seu namespace
<a name="verify-the-operator-deployment-to-your-namespace"></a>

1. Você deve conseguir ver as definições de recursos personalizados de SageMaker IA (CRDs) de cada operador implantado em seu cluster executando o seguinte comando: 

   ```
   kubectl get crd | grep sagemaker
   ```

   A saída será semelhante a: 

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Verifique se o pod do operador está sendo executado com êxito. Use o seguinte comando para listar todos os pods: 

   ```
   kubectl -n my-namespace get pods
   ```

   Você deve ver um pod chamado `sagemaker-k8s-operator-controller-manager-*****` no namespace `my-namespace` da seguinte forma: 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Instale o `kubectl` plug-in SageMaker AI logs
<a name="install-the-amazon-sagemaker-logs-kubectl-plugin"></a>

 [Como parte dos operadores de SageMaker IA para Kubernetes, você pode usar o `smlogs` plug-in para.](https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/) `kubectl` Isso permite que CloudWatch os registros de SageMaker IA sejam transmitidos com`kubectl`. `kubectl`deve ser instalado em seu [PATH](http://www.linfo.org/path_env_var.html). Os comandos a seguir colocam o binário no diretório `sagemaker-k8s-bin` do seu diretório inicial e adicionam esse diretório ao seu `PATH`. 

```
export os="linux"
  
wget https://amazon-sagemaker-operator-for-k8s-us-east-1.s3.amazonaws.com/kubectl-smlogs-plugin/v1/${os}.amd64.tar.gz
tar xvzf ${os}.amd64.tar.gz
  
# Move binaries to a directory in your homedir.
mkdir ~/sagemaker-k8s-bin
cp ./kubectl-smlogs.${os}.amd64/kubectl-smlogs ~/sagemaker-k8s-bin/.
  
# This line adds the binaries to your PATH in your .bashrc.
  
echo 'export PATH=$PATH:~/sagemaker-k8s-bin' >> ~/.bashrc
  
# Source your .bashrc to update environment variables:
source ~/.bashrc
```

Use o seguinte comando para verificar se o plug-in do `kubectl` está instalado corretamente: 

```
kubectl smlogs
```

Se o plug-in `kubectl` estiver instalado corretamente, sua saída deverá ter a seguinte aparência: 

```
View SageMaker AI logs via Kubernetes
  
Usage:
  smlogs [command]
  
Aliases:
  smlogs, SMLogs, Smlogs
  
Available Commands:
  BatchTransformJob       View BatchTransformJob logs via Kubernetes
  TrainingJob             View TrainingJob logs via Kubernetes
  help                    Help about any command
  
Flags:
   -h, --help   help for smlogs
  
Use "smlogs [command] --help" for more information about a command.
```

### Limpar os recursos
<a name="cleanup-operator-resources"></a>

Para desinstalar o operador do seu cluster, você deve primeiro excluir todos os recursos de SageMaker IA do cluster. Não fazer isso causa a interrupção da operação de exclusão do operador. Execute os seguintes comandos para encerrar todos os trabalhos: 

```
# Delete all SageMaker AI jobs from Kubernetes
kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
```

Você deve ver uma saída semelhante a: 

```
$ kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
trainingjobs.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
  
$ kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
  
$ kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
  
$ kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
```

Depois de excluir todos os trabalhos de SageMaker IA, consulte [Excluir operadores](#delete-operators) para excluir o operador do seu cluster.

### Excluir operadores
<a name="delete-operators"></a>

#### Excluir operadores baseados em cluster
<a name="delete-cluster-based-operators"></a>

##### Operadores instalados usando o YAML
<a name="operators-installed-using-yaml"></a>

Para desinstalar o operador do seu cluster, certifique-se de que todos os recursos de SageMaker IA tenham sido excluídos do cluster. Não fazer isso causa a interrupção da operação de exclusão do operador.

**nota**  
Antes de excluir seu cluster, certifique-se de excluir todos os recursos de SageMaker IA do cluster. Consulte [Limpar os recursos](#cleanup-operator-resources) para obter mais informações.

Depois de excluir todos os trabalhos de SageMaker IA, use `kubectl` para excluir o operador do cluster:

```
# Delete the operator and its resources
kubectl delete -f /installer.yaml
```

Você deve ver uma saída semelhante a: 

```
$ kubectl delete -f raw-yaml/installer.yaml
namespace "sagemaker-k8s-operator-system" deleted
customresourcedefinition.apiextensions.k8s.io "batchtransformjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "endpointconfigs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hostingdeployments.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hyperparametertuningjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "models.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "trainingjobs.sagemaker.aws.amazon.com" deleted
role.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-role" deleted
rolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-rolebinding" deleted
service "sagemaker-k8s-operator-controller-manager-metrics-service" deleted
deployment.apps "sagemaker-k8s-operator-controller-manager" deleted
secrets "sagemaker-k8s-operator-abcde" deleted
```

##### Operadores instalados usando os charts do Helm
<a name="operators-installed-using-helm-charts"></a>

Para excluir o operador CRDs, primeiro exclua todos os trabalhos em execução. Em seguida, exclua o chart do Helm que foi usado para implantar os operadores usando os seguintes comandos: 

```
# get the helm charts
helm ls
  
# delete the charts
helm delete <chart_name>
```

#### Excluir operadores baseados em namespace
<a name="delete-namespace-based-operators"></a>

##### Operadores instalados com o YAML
<a name="operators-installed-with-yaml"></a>

Para desinstalar o operador do seu cluster, primeiro certifique-se de que todos os recursos de SageMaker IA tenham sido excluídos do cluster. Não fazer isso causa a interrupção da operação de exclusão do operador.

**nota**  
Antes de excluir seu cluster, certifique-se de excluir todos os recursos de SageMaker IA do cluster. Consulte [Limpar os recursos](#cleanup-operator-resources) para obter mais informações.

Depois de excluir todos os trabalhos de SageMaker IA, use `kubectl` para excluir primeiro o operador do namespace e depois o CRDs do cluster. Execute os seguintes comandos para excluir o operador do cluster: 

```
# Delete the operator using the same yaml file that was used to install the operator
kubectl delete -f operator.yaml
  
# Now delete the CRDs using the CRD installer yaml
kubectl delete -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
  
# Now you can delete the namespace if you want
kubectl delete namespace <namespace>
```

##### Operadores instalados com os charts do Helm
<a name="operators-installed-with-helm-charts"></a>

Para excluir o operador CRDs, primeiro exclua todos os trabalhos em execução. Em seguida, exclua o chart do Helm que foi usado para implantar os operadores usando os seguintes comandos: 

```
# Delete the operator
helm delete <chart_name>
  
# delete the crds
helm delete crds
  
# optionally delete the namespace
kubectl delete namespace <namespace>
```

### Solução de problemas
<a name="troubleshooting"></a>

#### Depurar um trabalho com falha
<a name="debugging-a-failed-job"></a>

Use essas etapas para depurar um trabalho com falha.
+ Verifique o status do trabalho executando o seguinte: 

  ```
  kubectl get <CRD Type> <job name>
  ```
+ Se o trabalho foi criado no SageMaker AI, você pode usar o comando a seguir para ver o `STATUS` e o`SageMaker Job Name`: 

  ```
  kubectl get <crd type> <job name>
  ```
+ Você pode usar o `smlogs` para encontrar a causa do problema usando o seguinte comando: 

  ```
  kubectl smlogs <crd type> <job name>
  ```
+  Você também pode usar o comando `describe` para obter mais detalhes sobre o trabalho usando o comando a seguir. A saída tem um campo `additional` com mais informações sobre o status do trabalho. 

  ```
  kubectl describe <crd type> <job name>
  ```
+ Se o trabalho não foi criado no SageMaker AI, use os registros do pod do operador para encontrar a causa do problema da seguinte maneira: 

  ```
  $ kubectl get pods -A | grep sagemaker
  # Output:
  sagemaker-k8s-operator-system   sagemaker-k8s-operator-controller-manager-5cd7df4d74-wh22z   2/2     Running   0          3h33m
    
  $ kubectl logs -p <pod name> -c manager -n sagemaker-k8s-operator-system
  ```

#### Excluir um CRD de operador
<a name="deleting-an-operator-crd"></a>

Se a exclusão de um trabalho não estiver funcionando, verifique se o operador está em execução. Se o operador não estiver em execução, você precisará excluir o finalizador usando as seguintes etapas: 

1. Em um novo terminal, abra o trabalho em um editor usando o `kubectl edit` da seguinte maneira: 

   ```
   kubectl edit <crd type> <job name>
   ```

1. Edite o trabalho para excluir o finalizador removendo as duas linhas a seguir do arquivo. Salve o arquivo e o trabalho será excluído. 

   ```
   finalizers:
     - sagemaker-operator-finalizer
   ```

### Imagens e SMlogs em cada região
<a name="images-and-smlogs-in-each-region"></a>

A tabela a seguir lista as imagens do operador disponíveis e SMLogs em cada região. 


|  Região  |  Imagem do controlador  |  Linux SMLogs  | 
| --- | --- | --- | 
|  us-east-1  |  957583890962.dkr.ecr.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-east-2  |  922499468684.dkr.ecr.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-west-2  |  640106867763.dkr.ecr.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  eu-west-1  |  613661167059.dkr.ecr.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 

# Use Amazon SageMaker AI Jobs
<a name="kubernetes-sagemaker-jobs"></a>

Esta seção é baseada na versão original dos [operadores de SageMaker IA para Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s).

**Importante**  
Estamos interrompendo o desenvolvimento e o suporte técnico da versão original do [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master).  
Se você estiver usando atualmente a versão `v1.2.2` ou inferior do [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), recomendamos migrar seus recursos para o [controlador de serviço ACK da Amazon](https://github.com/aws-controllers-k8s/sagemaker-controller). SageMaker O controlador de serviço ACK é uma nova geração de SageMaker operadores para Kubernetes com base em [AWS controladores para Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).  
Para obter informações sobre as etapas de migração, consulte [Migre recursos para os operadores mais recentes](kubernetes-sagemaker-operators-migrate.md).  
Para obter respostas às perguntas frequentes sobre o fim do suporte da versão original do SageMaker Operators for Kubernetes, consulte [Anunciando o fim do suporte da versão original do SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

Para executar um trabalho do Amazon SageMaker AI usando os Operadores para Kubernetes, você pode aplicar um arquivo YAML ou usar os Helm Charts fornecidos. 

Todos os trabalhos de operador de amostra nos tutoriais a seguir usam dados de amostra retirados de um conjunto de dados público do MNIST. Para executar essas amostras, baixe o conjunto de dados em seu bucket do Amazon S3. Você pode encontrar o conjunto de dados em [Baixar o conjunto de dados do MNIST](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-preprocess-data-pull-data.html). 

**Topics**
+ [O TrainingJob operador](#trainingjob-operator)
+ [O HyperParameterTuningJob operador](#hyperparametertuningjobs-operator)
+ [O BatchTransformJob operador](#batchtransformjobs-operator)
+ [O HostingDeployment operador](#hosting-deployment-operator)
+ [O ProcessingJob operador](#kubernetes-processing-job-operator)
+ [HostingAutoscalingPolicy Operador (HAP)](#kubernetes-hap-operator)

## O TrainingJob operador
<a name="trainingjob-operator"></a>

Os operadores de trabalho de treinamento reconciliam sua especificação de trabalho de treinamento especificada com a SageMaker IA, lançando-a para você na IA. SageMaker Você pode aprender mais sobre trabalhos SageMaker de treinamento na [documentação da CreateTrainingJob API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html) de SageMaker IA. 

**Topics**
+ [Crie um TrainingJob usando um arquivo YAML](#create-a-trainingjob-using-a-simple-yaml-file)
+ [Crie um TrainingJob usando um gráfico de leme](#create-a-trainingjob-using-a-helm-chart)
+ [Lista TrainingJobs](#list-training-jobs)
+ [Descreva um TrainingJob](#describe-a-training-job)
+ [Exibir registros de TrainingJobs](#view-logs-from-training-jobs)
+ [Excluir TrainingJobs](#delete-training-jobs)

### Crie um TrainingJob usando um arquivo YAML
<a name="create-a-trainingjob-using-a-simple-yaml-file"></a>

1. Faça download do arquivo YAML de exemplo para treinamento usando o seguinte comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
   ```

1. Edite o `xgboost-mnist-trainingjob.yaml` arquivo para substituir o `roleArn` parâmetro pelo seu `<sagemaker-execution-role>` e `outputPath` pelo seu bucket do Amazon S3 ao qual a função de execução de SageMaker IA tem acesso de gravação. Eles `roleArn` devem ter permissões para que a SageMaker IA possa acessar o Amazon S3 CloudWatch, o Amazon e outros serviços em seu nome. Para obter mais informações sobre como criar uma SageMaker IA ExecutionRole, consulte [Funções de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms). Aplique o arquivo YAML utilizando o seguinte comando: 

   ```
   kubectl apply -f xgboost-mnist-trainingjob.yaml
   ```

### Crie um TrainingJob usando um gráfico de leme
<a name="create-a-trainingjob-using-a-helm-chart"></a>

Você pode usar o Helm Charts para executar TrainingJobs. 

1. Clone o GitHub repositório para obter a fonte usando o seguinte comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Navegue até a pasta `amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/` e edite o arquivo `values.yaml` para substituir valores como `rolearn` e `outputpath` por valores que correspondam à sua conta. O RoLearn deve ter permissões para que a SageMaker IA possa acessar o Amazon S3, o CloudWatch Amazon e outros serviços em seu nome. Para obter mais informações sobre como criar uma SageMaker IA ExecutionRole, consulte [Funções de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms). 

#### Crie o TrainingJob
<a name="create-the-training-job"></a>

Com os perfis e os buckets do Amazon S3 substituídos pelos valores apropriados no `values.yaml`, você pode criar um trabalho de treinamento usando o seguinte comando: 

```
helm install . --generate-name
```

A saída será semelhante a: 

```
NAME: chart-12345678
LAST DEPLOYED: Wed Nov 20 23:35:49 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thanks for installing the sagemaker-k8s-trainingjob.
```

#### Verifique seu chart do Helm de treinamento
<a name="verify-your-training-helm-chart"></a>

Para verificar se o chart do Helm foi criado com êxito, execute: 

```
helm ls
```

A saída será semelhante a: 

```
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
chart-12345678        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
rolebased-12345678    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
```

O `helm install`cria um recurso do `TrainingJob` do Kubernetes. O operador inicia o trabalho de treinamento real em SageMaker IA e atualiza o recurso `TrainingJob` Kubernetes para refletir o status do trabalho em IA. SageMaker Você incorre em cobranças pelos recursos de SageMaker IA usados durante a duração do seu trabalho. Você não incorre em nenhuma cobrança quando seu trabalho for concluído ou interrompido. 

**Observação**: a SageMaker IA não permite que você atualize um trabalho de treinamento em execução. Você não pode editar nenhum parâmetro e reaplicar o arquivo de configuração. Altere o nome dos metadados ou exclua o trabalho existente e crie um novo. Semelhante aos operadores de trabalho de treinamento existentes, como TFJob no Kubeflow, não `update` é suportado. 

### Lista TrainingJobs
<a name="list-training-jobs"></a>

Use o seguinte comando para listar todos os trabalhos criados usando o operador do Kubernetes: 

```
kubectl get TrainingJob
```

A saída que lista todos os trabalhos deve ser a seguinte: 

```
kubectl get trainingjobs
NAME                        STATUS       SECONDARY-STATUS   CREATION-TIME          SAGEMAKER-JOB-NAME
xgboost-mnist-from-for-s3   InProgress   Starting           2019-11-20T23:42:35Z   xgboost-mnist-from-for-s3-examplef11eab94e0ed4671d5a8f
```

Um trabalho de treinamento continua sendo listado após a conclusão ou falha do trabalho. Você pode remover um trabalho `TrainingJob` da lista seguindo as etapas [Excluir TrainingJobs](#delete-training-jobs). Os trabalhos concluídos ou interrompidos não incorrem em nenhuma cobrança pelos recursos de SageMaker IA. 

#### TrainingJob valores de status
<a name="training-job-status-values"></a>

O campo `STATUS` pode ter um dos seguintes valores: 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

Esses status vêm diretamente da [documentação oficial da API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-TrainingJobStatus) de SageMaker IA. 

Além do status oficial de SageMaker IA, é possível `STATUS` que seja`SynchronizingK8sJobWithSageMaker`. Isso significa que o operador ainda não processou o trabalho. 

#### Valores de status secundários
<a name="secondary-status-values"></a>

Os status secundários vêm diretamente da [documentação oficial da API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-SecondaryStatus) de SageMaker IA. Eles contêm informações mais granulares sobre o status do trabalho. 

### Descreva um TrainingJob
<a name="describe-a-training-job"></a>

Você pode obter mais detalhes sobre o trabalho de treinamento usando o comando `describe` do `kubectl`. Isso geralmente é usado para depurar um problema ou verificar os parâmetros de um trabalho de treinamento. Para obter informações sobre o trabalho de treinamento, use o seguinte comando: 

```
kubectl describe trainingjob xgboost-mnist-from-for-s3
```

A saída do trabalho de treinamento será semelhante a: 

```
Name:         xgboost-mnist-from-for-s3
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  sagemaker.aws.amazon.com/v1
Kind:         TrainingJob
Metadata:
  Creation Timestamp:  2019-11-20T23:42:35Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  23119
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/trainingjobs/xgboost-mnist-from-for-s3
  UID:               6d7uiui-0bef-11ea-b94e-0ed467example
Spec:
  Algorithm Specification:
    Training Image:       8256416981234.dkr.ecr.us-east-2.amazonaws.com/xgboost:1
    Training Input Mode:  File
  Hyper Parameters:
    Name:   eta
    Value:  0.2
    Name:   gamma
    Value:  4
    Name:   max_depth
    Value:  5
    Name:   min_child_weight
    Value:  6
    Name:   num_class
    Value:  10
    Name:   num_round
    Value:  10
    Name:   objective
    Value:  multi:softmax
    Name:   silent
    Value:  0
  Input Data Config:
    Channel Name:      train
    Compression Type:  None
    Content Type:      text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Distribution Type:  FullyReplicated
        S 3 Data Type:               S3Prefix
        S 3 Uri:                     https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/
    Channel Name:                    validation
    Compression Type:                None
    Content Type:                    text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Distribution Type:  FullyReplicated
        S 3 Data Type:               S3Prefix
        S 3 Uri:                     https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/
  Output Data Config:
    S 3 Output Path:  s3://amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost/
  Region:             us-east-2
  Resource Config:
    Instance Count:     1
    Instance Type:      ml.m4.xlarge
    Volume Size In GB:  5
  Role Arn:             arn:aws:iam::12345678910:role/service-role/AmazonSageMaker-ExecutionRole
  Stopping Condition:
    Max Runtime In Seconds:  86400
  Training Job Name:         xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0example
Status:
  Cloud Watch Log URL:           https://us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logStream:group=/aws/sagemaker/TrainingJobs;prefix=<example>;streamFilter=typeLogStreamPrefix
  Last Check Time:               2019-11-20T23:44:29Z
  Sage Maker Training Job Name:  xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94eexample
  Secondary Status:              Downloading
  Training Job Status:           InProgress
Events:                          <none>
```

### Exibir registros de TrainingJobs
<a name="view-logs-from-training-jobs"></a>

Use o seguinte comando para visualizar os logs em log do trabalho de treinamento `kmeans-mnist`: 

```
kubectl smlogs trainingjob xgboost-mnist-from-for-s3
```

O resultado deve ser semelhante ao seguinte: Os logs em log das instâncias são ordenados cronologicamente. 

```
"xgboost-mnist-from-for-s3" has SageMaker TrainingJobName "xgboost-mnist-from-for-s3-123456789" in region "us-east-2", status "InProgress" and secondary status "Starting"
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC Arguments: train
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Running standalone xgboost training.
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] File size need to be processed in the node: 1122.95mb. Available memory size in the node: 8586.0mb
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Determined delimiter of CSV input is ','
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [23:45:22] S3DistributionType set as FullyReplicated
```

### Excluir TrainingJobs
<a name="delete-training-jobs"></a>

Use o comando a seguir para interromper um trabalho de treinamento na Amazon SageMaker AI: 

```
kubectl delete trainingjob xgboost-mnist-from-for-s3
```

Esse comando remove o trabalho de SageMaker treinamento do Kubernetes. Esse comando retorna a seguinte saída: 

```
trainingjob.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
```

Se o trabalho ainda estiver em andamento na SageMaker IA, o trabalho será interrompido. Você não incorre em nenhuma cobrança por recursos de SageMaker IA após o término ou conclusão do trabalho. 

**Observação**: a SageMaker IA não exclui trabalhos de treinamento. Os trabalhos interrompidos continuam aparecendo no console de SageMaker IA. O `delete` comando leva cerca de 2 minutos para limpar os recursos da SageMaker IA. 

## O HyperParameterTuningJob operador
<a name="hyperparametertuningjobs-operator"></a>

Os operadores da tarefa de ajuste de hiperparâmetros reconciliam sua especificação de tarefa de ajuste de hiperparâmetros especificada com a SageMaker IA, iniciando-a na IA. SageMaker Você pode aprender mais sobre os trabalhos de ajuste de hiperparâmetros de SageMaker IA na [documentação da CreateHyperParameterTuningJob API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateHyperParameterTuningJob.html) de SageMaker IA. 

**Topics**
+ [Crie um HyperparameterTuningJob usando um arquivo YAML](#create-a-hyperparametertuningjob-using-a-simple-yaml-file)
+ [Crie um HyperparameterTuningJob usando um Helm Chart](#create-a-hyperparametertuningjob-using-a-helm-chart)
+ [Lista HyperparameterTuningJobs](#list-hyperparameter-tuning-jobs)
+ [Descreva um HyperparameterTuningJob](#describe-a-hyperparameter-tuning-job)
+ [Exibir registros de HyperparameterTuningJobs](#view-logs-from-hyperparametertuning-jobs)
+ [Excluir um HyperparameterTuningJob](#delete-hyperparametertuning-jobs)

### Crie um HyperparameterTuningJob usando um arquivo YAML
<a name="create-a-hyperparametertuningjob-using-a-simple-yaml-file"></a>

1. Faça download do arquivo YAML de exemplo para o trabalho de ajuste de hiperparâmetros usando o seguinte comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
   ```

1. Edite o arquivo `xgboost-mnist-hpo.yaml` para substituir o parâmetro `roleArn` pelo seu `sagemaker-execution-role`. Para que o trabalho de ajuste de hiperparâmetros seja bem-sucedido, você também deve alterar os valores de `s3InputPath` e `s3OutputPath` para que correspondem à sua conta. Aplique a atualização do arquivo YAML utilizando o seguinte comando: 

   ```
   kubectl apply -f xgboost-mnist-hpo.yaml
   ```

### Crie um HyperparameterTuningJob usando um Helm Chart
<a name="create-a-hyperparametertuningjob-using-a-helm-chart"></a>

Você pode usar charts do Helm para executar trabalhos de ajuste de hiperparâmetros. 

1. Clone o GitHub repositório para obter a fonte usando o seguinte comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Navegue para a pasta `amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/`. 

1. Edite o arquivo `values.yaml` para substituir o parâmetro `roleArn` pelo seu `sagemaker-execution-role`. Para que o trabalho de ajuste de hiperparâmetros seja bem-sucedido, você também deve alterar os valores de `s3InputPath` e `s3OutputPath` para que correspondem à sua conta. 

#### Crie o HyperparameterTuningJob
<a name="create-the-hpo-job"></a>

Com os perfis e os caminhos do Amazon S3 substituídos pelos valores apropriados no `values.yaml`, você pode criar um trabalho de ajuste de hiperparâmetros usando o seguinte comando: 

```
helm install . --generate-name
```

O resultado deve ser semelhante ao seguinte: 

```
NAME: chart-1574292948
LAST DEPLOYED: Wed Nov 20 23:35:49 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thanks for installing the sagemaker-k8s-hyperparametertuningjob.
```

#### Verificar a instalação do gráfico
<a name="verify-chart-installation"></a>

Para verificar se o chart do Helm foi criado com êxito, execute o seguinte comando: 

```
helm ls
```

A saída será semelhante a: 

```
NAME                    NAMESPACE       REVISION        UPDATED
chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-hyperparametertuningjob-0.1.0                               STATUS          CHART                           APP VERSION
chart-1574292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
rolebased-1574291698    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
```

O `helm install`cria um recurso do `HyperParameterTuningJob` do Kubernetes. O operador inicia o trabalho real de otimização de hiperparâmetros na SageMaker IA e atualiza o recurso `HyperParameterTuningJob` Kubernetes para refletir o status do trabalho na IA. SageMaker Você incorre em cobranças pelos recursos de SageMaker IA usados durante a duração do seu trabalho. Você não incorre em nenhuma cobrança quando seu trabalho for concluído ou interrompido. 

**Observação**: a SageMaker IA não permite que você atualize um trabalho de ajuste de hiperparâmetros em execução. Você não pode editar nenhum parâmetro e reaplicar o arquivo de configuração. Você pode alterar o nome dos metadados ou excluir o trabalho existente e crie um novo. Semelhante aos operadores de trabalho de treinamento existentes, como o `TFJob` no Kubeflow, a `update` não é compatível. 

### Lista HyperparameterTuningJobs
<a name="list-hyperparameter-tuning-jobs"></a>

Use o seguinte comando para listar todos os trabalhos criados usando o operador do Kubernetes: 

```
kubectl get hyperparametertuningjob
```

A saída será semelhante a: 

```
NAME         STATUS      CREATION-TIME          COMPLETED   INPROGRESS   ERRORS   STOPPED   BEST-TRAINING-JOB                               SAGEMAKER-JOB-NAME
xgboost-mnist-hpo   Completed   2019-10-17T01:15:52Z   10          0            0        0         xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a123   xgboostha92f5e3cf07b11e9bf6c123
```

Um trabalho de ajuste de hiperparâmetros continua sendo listado após a conclusão ou falha do trabalho. Você pode remover um `hyperparametertuningjob` da lista seguindo as etapas em [Excluir um HyperparameterTuningJob](#delete-hyperparametertuning-jobs). Os trabalhos concluídos ou interrompidos não incorrem em nenhuma cobrança pelos recursos de SageMaker IA.

#### Valores de status de trabalho de ajuste de hiperparâmetros
<a name="hyperparameter-tuning-job-status-values"></a>

O campo `STATUS` pode ter um dos seguintes valores: 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

Esses status vêm diretamente da [documentação oficial da API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus) de SageMaker IA. 

Além do status oficial de SageMaker IA, é possível `STATUS` que seja`SynchronizingK8sJobWithSageMaker`. Isso significa que o operador ainda não processou o trabalho. 

#### Contadores de status
<a name="status-counters"></a>

A saída tem vários contadores, como `COMPLETED` e `INPROGRESS`. Eles representam quantos trabalhos de treinamento foram concluídos e quantos estão em andamento, respectivamente. Para obter mais informações sobre como elas são determinadas, consulte [TrainingJobStatusCounters](https://docs.aws.amazon.com/sagemaker/latest/dg/API_TrainingJobStatusCounters.html)a documentação SageMaker da API. 

#### Melhor TrainingJob
<a name="best-training-job"></a>

Essa coluna contém o nome do `TrainingJob` que melhor otimizou a métrica selecionada. 

Para ver um resumo dos hiperparâmetros ajustados, execute: 

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

Para ver informações detalhadas sobre o `TrainingJob`, execute: 

```
kubectl describe trainingjobs <job name>
```

#### Desovado TrainingJobs
<a name="spawned-training-jobs"></a>

Você também pode acompanhar todos os 10 trabalhos de treinamento no Kubernetes iniciados pelo `HyperparameterTuningJob` executando o seguinte comando: 

```
kubectl get trainingjobs
```

### Descreva um HyperparameterTuningJob
<a name="describe-a-hyperparameter-tuning-job"></a>

Você pode obter detalhes de depuração usando o comando `describe` do `kubectl`.

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

Além das informações sobre o trabalho de ajuste, o operador de SageMaker IA para Kubernetes também expõe o [melhor trabalho de treinamento encontrado pelo trabalho](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-monitor.html#automatic-model-tuning-best-training-job) de ajuste de hiperparâmetros na saída, da seguinte forma: `describe` 

```
Name:         xgboost-mnist-hpo
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HyperparameterTuningJob","metadata":{"annotations":{},"name":"xgboost-mnist-hpo","namespace":...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         HyperparameterTuningJob
Metadata:
  Creation Timestamp:  2019-10-17T01:15:52Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  8167
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hyperparametertuningjobs/xgboost-mnist-hpo
  UID:               a92f5e3c-f07b-11e9-bf6c-06d6f303uidu
Spec:
  Hyper Parameter Tuning Job Config:
    Hyper Parameter Tuning Job Objective:
      Metric Name:  validation:error
      Type:         Minimize
    Parameter Ranges:
      Integer Parameter Ranges:
        Max Value:     20
        Min Value:     10
        Name:          num_round
        Scaling Type:  Linear
    Resource Limits:
      Max Number Of Training Jobs:     10
      Max Parallel Training Jobs:      10
    Strategy:                          Bayesian
    Training Job Early Stopping Type:  Off
  Hyper Parameter Tuning Job Name:     xgboostha92f5e3cf07b11e9bf6c06d6
  Region:                              us-east-2
  Training Job Definition:
    Algorithm Specification:
      Training Image:       12345678910.dkr.ecr.us-east-2.amazonaws.com/xgboost:1
      Training Input Mode:  File
    Input Data Config:
      Channel Name:  train
      Content Type:  text/csv
      Data Source:
        s3DataSource:
          s3DataDistributionType:  FullyReplicated
          s3DataType:              S3Prefix
          s3Uri:                   https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/
      Channel Name:                validation
      Content Type:                text/csv
      Data Source:
        s3DataSource:
          s3DataDistributionType:  FullyReplicated
          s3DataType:              S3Prefix
          s3Uri:                   https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/
    Output Data Config:
      s3OutputPath:  https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost
    Resource Config:
      Instance Count:     1
      Instance Type:      ml.m4.xlarge
      Volume Size In GB:  5
    Role Arn:             arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
    Static Hyper Parameters:
      Name:   base_score
      Value:  0.5
      Name:   booster
      Value:  gbtree
      Name:   csv_weights
      Value:  0
      Name:   dsplit
      Value:  row
      Name:   grow_policy
      Value:  depthwise
      Name:   lambda_bias
      Value:  0.0
      Name:   max_bin
      Value:  256
      Name:   max_leaves
      Value:  0
      Name:   normalize_type
      Value:  tree
      Name:   objective
      Value:  reg:linear
      Name:   one_drop
      Value:  0
      Name:   prob_buffer_row
      Value:  1.0
      Name:   process_type
      Value:  default
      Name:   rate_drop
      Value:  0.0
      Name:   refresh_leaf
      Value:  1
      Name:   sample_type
      Value:  uniform
      Name:   scale_pos_weight
      Value:  1.0
      Name:   silent
      Value:  0
      Name:   sketch_eps
      Value:  0.03
      Name:   skip_drop
      Value:  0.0
      Name:   tree_method
      Value:  auto
      Name:   tweedie_variance_power
      Value:  1.5
    Stopping Condition:
      Max Runtime In Seconds:  86400
Status:
  Best Training Job:
    Creation Time:  2019-10-17T01:16:14Z
    Final Hyper Parameter Tuning Job Objective Metric:
      Metric Name:        validation:error
      Value:
    Objective Status:     Succeeded
    Training End Time:    2019-10-17T01:20:24Z
    Training Job Arn:     arn:aws:sagemaker:us-east-2:123456789012:training-job/xgboostha92f5e3cf07b11e9bf6c06d6-009-4sample
    Training Job Name:    xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a3059
    Training Job Status:  Completed
    Training Start Time:  2019-10-17T01:18:35Z
    Tuned Hyper Parameters:
      Name:                                    num_round
      Value:                                   18
  Hyper Parameter Tuning Job Status:           Completed
  Last Check Time:                             2019-10-17T01:21:01Z
  Sage Maker Hyper Parameter Tuning Job Name:  xgboostha92f5e3cf07b11e9bf6c06d6
  Training Job Status Counters:
    Completed:            10
    In Progress:          0
    Non Retryable Error:  0
    Retryable Error:      0
    Stopped:              0
    Total Error:          0
Events:                   <none>
```

### Exibir registros de HyperparameterTuningJobs
<a name="view-logs-from-hyperparametertuning-jobs"></a>

Os trabalhos de ajuste hiperparâmetros não têm logs, mas todos os trabalhos de treinamento lançados por eles têm logs. Esses logs podem ser acessados como se fossem um trabalho normal de treinamento. Para obter mais informações, consulte [Exibir registros de TrainingJobs](#view-logs-from-training-jobs).

### Excluir um HyperparameterTuningJob
<a name="delete-hyperparametertuning-jobs"></a>

Use o comando a seguir para interromper um trabalho de hiperparâmetros na SageMaker IA. 

```
kubectl delete hyperparametertuningjob xgboost-mnist-hpo
```

Esse comando remove o trabalho de ajuste de hiperparâmetros e os trabalhos de treinamento associados do seu cluster Kubernetes e os interrompe na IA. SageMaker Os trabalhos que foram interrompidos ou concluídos não incorrem em nenhuma cobrança pelos recursos de SageMaker IA. SageMaker A IA não exclui trabalhos de ajuste de hiperparâmetros. Os trabalhos interrompidos continuam aparecendo no console de SageMaker IA. 

A saída será semelhante a: 

```
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
```

**Observação**: o comando delete leva cerca de 2 minutos para limpar os recursos da SageMaker IA. 

## O BatchTransformJob operador
<a name="batchtransformjobs-operator"></a>

Os operadores de trabalho de transformação em lote reconciliam sua especificação de trabalho de transformação em lote especificada com a SageMaker IA, iniciando-a na IA. SageMaker Você pode aprender mais sobre o SageMaker trabalho de transformação em lote da SageMaker IA na [documentação da CreateTransformJob API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html) de IA. 

**Topics**
+ [Crie um BatchTransformJob usando um arquivo YAML](#create-a-batchtransformjob-using-a-simple-yaml-file)
+ [Crie um BatchTransformJob usando um Helm Chart](#create-a-batchtransformjob-using-a-helm-chart)
+ [Lista BatchTransformJobs](#list-batch-transform-jobs)
+ [Descreva um BatchTransformJob](#describe-a-batch-transform-job)
+ [Exibir registros de BatchTransformJobs](#view-logs-from-batch-transform-jobs)
+ [Excluir um BatchTransformJob](#delete-a-batch-transform-job)

### Crie um BatchTransformJob usando um arquivo YAML
<a name="create-a-batchtransformjob-using-a-simple-yaml-file"></a>

1. Faça download do arquivo YAML de exemplo para o trabalho de transformação de lotes usando o seguinte comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
   ```

1. Edite o arquivo `xgboost-mnist-batchtransform.yaml` para alterar os parâmetros necessários para substituí-los `inputdataconfig` pelos dados de entrada e pelos `s3OutputPath` buckets do Amazon S3 aos quais a função de execução de SageMaker IA tem acesso de gravação. 

1. Aplique o arquivo YAML utilizando o seguinte comando: 

   ```
   kubectl apply -f xgboost-mnist-batchtransform.yaml
   ```

### Crie um BatchTransformJob usando um Helm Chart
<a name="create-a-batchtransformjob-using-a-helm-chart"></a>

Você pode usar gráficos de Helm para executar trabalhos de transformação de lote. 

#### Obtenha o diretório do instalador de Helm
<a name="get-the-helm-installer-directory"></a>

Clone o GitHub repositório para obter a fonte usando o seguinte comando: 

```
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
```

#### Configurar o gráfico de Helm
<a name="configure-the-helm-chart"></a>

Navegue para a pasta `amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/`. 

Edite o `values.yaml` arquivo para `inputdataconfig` substituir o pelos dados de entrada e o OutputPath pelos buckets do S3 aos quais a função de execução de SageMaker IA tem acesso de gravação. 

#### Crie um BatchTransformJob
<a name="create-a-batch-transform-job"></a>

1. Use o seguinte comando para criar um trabalho de transformação de lote: 

   ```
   helm install . --generate-name
   ```

   A saída será semelhante a: 

   ```
   NAME: chart-1574292948
   LAST DEPLOYED: Wed Nov 20 23:35:49 2019
   NAMESPACE: default
   STATUS: deployed
   REVISION: 1
   TEST SUITE: None
   NOTES:
   Thanks for installing the sagemaker-k8s-batch-transform-job.
   ```

1. Para verificar se o chart do Helm foi criado com êxito, execute o seguinte comando: 

   ```
   helm ls
   NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
   chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-batchtransformjob-0.1.0
   chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-hyperparametertuningjob-0.1.0
   chart-1574292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
   rolebased-1574291698    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

   O comando cria um recurso `BatchTransformJob` do Kubernetes. O operador inicia o trabalho de transformação real em SageMaker IA e atualiza o recurso `BatchTransformJob` Kubernetes para refletir o status do trabalho em IA. SageMaker Você incorre em cobranças pelos recursos de SageMaker IA usados durante a duração do seu trabalho. Você não incorre em nenhuma cobrança quando seu trabalho for concluído ou interrompido. 

**Observação**: a SageMaker IA não permite que você atualize um trabalho de transformação em lote em execução. Você não pode editar nenhum parâmetro e reaplicar o arquivo de configuração. Você pode alterar o nome dos metadados ou excluir o trabalho existente e crie um novo. Semelhante aos operadores de trabalho de treinamento existentes, como o `TFJob` no Kubeflow, a `update` não é compatível. 

### Lista BatchTransformJobs
<a name="list-batch-transform-jobs"></a>

Use o seguinte comando para listar todos os trabalhos criados usando o operador do Kubernetes: 

```
kubectl get batchtransformjob
```

A saída será semelhante a: 

```
NAME                                STATUS      CREATION-TIME          SAGEMAKER-JOB-NAME
xgboost-mnist-batch-transform       Completed   2019-11-18T03:44:00Z   xgboost-mnist-a88fb19809b511eaac440aa8axgboost
```

Um trabalho de transformação de lote continua sendo listado após a conclusão ou falha do trabalho. Você pode remover um `hyperparametertuningjob` da lista seguindo as etapas [Excluir um BatchTransformJob](#delete-a-batch-transform-job). Os trabalhos concluídos ou interrompidos não incorrem em nenhuma cobrança pelos recursos de SageMaker IA. 

#### Valores de status da transformação em lote
<a name="batch-transform-status-values"></a>

O campo `STATUS` pode ter um dos seguintes valores: 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

Esses status vêm diretamente da [documentação oficial da API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus) de SageMaker IA. 

Além do status oficial de SageMaker IA, é possível `STATUS` que seja`SynchronizingK8sJobWithSageMaker`. Isso significa que o operador ainda não processou o trabalho.

### Descreva um BatchTransformJob
<a name="describe-a-batch-transform-job"></a>

Você pode obter detalhes de depuração usando o comando `describe` do `kubectl`.

```
kubectl describe batchtransformjob xgboost-mnist-batch-transform
```

A saída será semelhante a: 

```
Name:         xgboost-mnist-batch-transform
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"BatchTransformJob","metadata":{"annotations":{},"name":"xgboost-mnist","namespace"...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         BatchTransformJob
Metadata:
  Creation Timestamp:  2019-11-18T03:44:00Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  21990924
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/batchtransformjobs/xgboost-mnist
  UID:               a88fb198-09b5-11ea-ac44-0aa8a9UIDNUM
Spec:
  Model Name:  TrainingJob-20190814SMJOb-IKEB
  Region:      us-east-1
  Transform Input:
    Content Type:  text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Type:  S3Prefix
        S 3 Uri:        s3://amzn-s3-demo-bucket/mnist_kmeans_example/input
  Transform Job Name:   xgboost-mnist-a88fb19809b511eaac440aa8a9SMJOB
  Transform Output:
    S 3 Output Path:  s3://amzn-s3-demo-bucket/mnist_kmeans_example/output
  Transform Resources:
    Instance Count:  1
    Instance Type:   ml.m4.xlarge
Status:
  Last Check Time:                2019-11-19T22:50:40Z
  Sage Maker Transform Job Name:  xgboost-mnist-a88fb19809b511eaac440aaSMJOB
  Transform Job Status:           Completed
Events:                           <none>
```

### Exibir registros de BatchTransformJobs
<a name="view-logs-from-batch-transform-jobs"></a>

Use o seguinte comando para visualizar os logs em log do trabalho de transformação de lote `xgboost-mnist`: 

```
kubectl smlogs batchtransformjob xgboost-mnist-batch-transform
```

### Excluir um BatchTransformJob
<a name="delete-a-batch-transform-job"></a>

Use o comando a seguir para interromper um trabalho de transformação em lote na SageMaker IA. 

```
kubectl delete batchTransformJob xgboost-mnist-batch-transform
```

A saída será semelhante a: 

```
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
```

Esse comando remove o trabalho de transformação em lote do seu cluster Kubernetes e o interrompe na IA. SageMaker Os trabalhos que foram interrompidos ou concluídos não incorrem em nenhuma cobrança pelos recursos de SageMaker IA. A exclusão leva cerca de 2 minutos para limpar os recursos da SageMaker IA. 

**Observação**: a SageMaker IA não exclui trabalhos de transformação em lote. Os trabalhos interrompidos continuam aparecendo no console de SageMaker IA. 

## O HostingDeployment operador
<a name="hosting-deployment-operator"></a>

HostingDeployment os operadores oferecem suporte à criação e exclusão de um endpoint, bem como à atualização de um endpoint existente, para inferência em tempo real. O operador de implantação de hospedagem reconcilia sua especificação de trabalho de implantação de hospedagem especificada com a SageMaker IA criando modelos, configurações de endpoints e endpoints na IA. SageMaker Você pode aprender mais sobre inferência de SageMaker IA na [documentação da CreateEndpoint API](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html) de SageMaker IA. 

**Topics**
+ [Configurar um HostingDeployment recurso](#configure-a-hostingdeployment-resource)
+ [Crie um HostingDeployment](#create-a-hostingdeployment)
+ [Lista HostingDeployments](#list-hostingdeployments)
+ [Descreva um HostingDeployment](#describe-a-hostingdeployment)
+ [Invocar o endpoint](#invoking-the-endpoint)
+ [Atualizar HostingDeployment](#update-hostingdeployment)
+ [Exclua o HostingDeployment](#delete-the-hostingdeployment)

### Configurar um HostingDeployment recurso
<a name="configure-a-hostingdeployment-resource"></a>

Faça download do arquivo YAML de exemplo para o trabalho de implantação de hospedagem usando o seguinte comando: 

```
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hostingdeployment.yaml
```

O `xgboost-mnist-hostingdeployment.yaml` arquivo tem os seguintes componentes que podem ser editados conforme necessário: 
+ *ProductionVariants*. Uma variante de produção é um conjunto de instâncias que atendem a um único modelo. SageMaker A IA equilibra a carga entre todas as variantes de produção de acordo com os pesos definidos. 
+ *Modelos*. Um modelo são os contêineres e o ARN da função de execução necessários para servir a um modelo. Isso requer pelo menos um único contêiner. 
+ *Contêineres*. Um contêiner especifica o conjunto de dados e a imagem de veiculação. Se você estiver usando seu próprio algoritmo personalizado em vez de um algoritmo fornecido pela SageMaker IA, o código de inferência deve atender aos requisitos de SageMaker IA. Para obter mais informações, consulte [Usando seus próprios algoritmos com SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html). 

### Crie um HostingDeployment
<a name="create-a-hostingdeployment"></a>

Para criar um HostingDeployment, use `kubectl` para aplicar o arquivo `hosting.yaml` com o seguinte comando: 

```
kubectl apply -f hosting.yaml
```

SageMaker A IA cria um endpoint com a configuração especificada. Você incorre em cobranças pelos recursos de SageMaker IA usados durante a vida útil do seu endpoint. Você não incorre em nenhuma cobrança depois que seu endpoint é excluído. 

A criação do processo leva aproximadamente 10 minutos. 

### Lista HostingDeployments
<a name="list-hostingdeployments"></a>

Para verificar se o HostingDeployment foi criado, use o seguinte comando: 

```
kubectl get hostingdeployments
```

A saída será semelhante a: 

```
NAME           STATUS     SAGEMAKER-ENDPOINT-NAME
host-xgboost   Creating   host-xgboost-def0e83e0d5f11eaaa450aSMLOGS
```

#### HostingDeployment valores de status
<a name="hostingdeployment-status-values"></a>

O campo de status pode ser um dos vários valores: 
+ `SynchronizingK8sJobWithSageMaker`: o operador está se preparando para criar o endpoint. 
+ `ReconcilingEndpoint`: o operador está criando, atualizando ou excluindo recursos do endpoint. Se HostingDeployment permanecer nesse estado, use `kubectl describe` para ver o motivo no `Additional` campo. 
+ `OutOfService`: o endpoint não está disponível para receber solicitações. 
+ `Creating`: [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html)está em execução. 
+ `Updating`: [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpoint.html)ou [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)está em execução. 
+ `SystemUpdating`: o endpoint está passando por manutenção e não pode ser atualizado, excluído ou redimensionado até que seja concluído. Essa operação de manutenção não altera nenhum valor especificado pelo cliente, como configuração de VPC, AWS KMS criptografia, modelo, tipo de instância ou contagem de instâncias. 
+ `RollingBack`: o endpoint não consegue diminuir ou aumentar a escala verticalmente ou alterar o peso da variante e está voltando à configuração anterior. Depois que a reversão for concluída, o endpoint retornará a um status `InService`. Esse status de transição só se aplica a um endpoint que tem o escalonamento automático ativado e está passando por alterações de peso ou capacidade de variantes como parte de uma [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)chamada ou quando a [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)operação é chamada explicitamente. 
+ `InService`: o endpoint não está disponível para receber solicitações. 
+ `Deleting`: [DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html)está em execução. 
+ `Failed`: o endpoint não pôde ser criado, atualizado ou redimensionado. Uso [DescribeEndpoint: FailureReason](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html#SageMaker-DescribeEndpoint-response-FailureReason) para obter informações sobre a falha. [DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html)é a única operação que pode ser executada em um endpoint com falha. 

### Descreva um HostingDeployment
<a name="describe-a-hostingdeployment"></a>

Você pode obter detalhes de depuração usando o comando `describe` do `kubectl`.

```
kubectl describe hostingdeployment
```

A saída será semelhante a: 

```
Name:         host-xgboost
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HostingDeployment","metadata":{"annotations":{},"name":"host-xgboost","namespace":"def..."
API Version:  sagemaker.aws.amazon.com/v1
Kind:         HostingDeployment
Metadata:
  Creation Timestamp:  2019-11-22T19:40:00Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        1
  Resource Version:  4258134
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hostingdeployments/host-xgboost
  UID:               def0e83e-0d5f-11ea-aa45-0a3507uiduid
Spec:
  Containers:
    Container Hostname:  xgboost
    Image:               123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
    Model Data URL:      s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz
  Models:
    Containers:
      xgboost
    Execution Role Arn:  arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
    Name:                xgboost-model
    Primary Container:   xgboost
  Production Variants:
    Initial Instance Count:  1
    Instance Type:           ml.c5.large
    Model Name:              xgboost-model
    Variant Name:            all-traffic
  Region:                    us-east-2
Status:
  Creation Time:         2019-11-22T19:40:04Z
  Endpoint Arn:          arn:aws:sagemaker:us-east-2:123456789012:endpoint/host-xgboost-def0e83e0d5f11eaaaexample
  Endpoint Config Name:  host-xgboost-1-def0e83e0d5f11e-e08f6c510d5f11eaaa450aexample
  Endpoint Name:         host-xgboost-def0e83e0d5f11eaaa450a350733ba06
  Endpoint Status:       Creating
  Endpoint URL:          https://runtime.sagemaker.us-east-2.amazonaws.com/endpoints/host-xgboost-def0e83e0d5f11eaaaexample/invocations
  Last Check Time:       2019-11-22T19:43:57Z
  Last Modified Time:    2019-11-22T19:40:04Z
  Model Names:
    Name:   xgboost-model
    Value:  xgboost-model-1-def0e83e0d5f11-df5cc9fd0d5f11eaaa450aexample
Events:     <none>
```

O campo de status fornece mais informações usando os seguintes campos: 
+ `Additional`: informações adicionais sobre o status da implantação da hospedagem. Esse campo é opcional e só é preenchido em caso de erro. 
+ `Creation Time`: quando o endpoint foi criado na SageMaker IA. 
+ `Endpoint ARN`: O ARN do endpoint de SageMaker IA. 
+ `Endpoint Config Name`: o nome da SageMaker IA da configuração do endpoint. 
+ `Endpoint Name`: o nome da SageMaker IA do endpoint. 
+ `Endpoint Status`: o status do endpoint. 
+ `Endpoint URL`: o URL HTTPS que pode ser usado para acessar o endpoint. Para obter mais informações, consulte [Implantar um modelo em serviços de hospedagem de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html). 
+ `FailureReason`: se um comando de criação, atualização ou exclusão falhar, a causa será mostrada aqui. 
+ `Last Check Time`: a última vez que o operador verificou o status do endpoint. 
+ `Last Modified Time`: a última vez que o endpoint foi modificado. 
+ `Model Names`: um par de valores-chave de nomes de HostingDeployment modelos com nomes de modelos de SageMaker IA. 

### Invocar o endpoint
<a name="invoking-the-endpoint"></a>

Quando o status do endpoint for`InService`, você poderá invocar o endpoint de duas maneiras: usando a AWS CLI, que faz a autenticação e a assinatura da solicitação de URL, ou usando um cliente HTTP como cURL. Se você usa seu próprio cliente, precisa fazer a assinatura e a autenticação de URL AWS v4 por conta própria. 

Para invocar o endpoint usando a AWS CLI, execute o comando a seguir. Certifique-se de substituir o nome da região e do endpoint pelo nome da região e do endpoint de SageMaker IA do seu endpoint. Essas informações podem ser obtidas na saída de `kubectl describe`. 

```
# Invoke the endpoint with mock input data.
aws sagemaker-runtime invoke-endpoint \
  --region us-east-2 \
  --endpoint-name <endpoint name> \
  --body $(seq 784 | xargs echo | sed 's/ /,/g') \
  >(cat) \
  --content-type text/csv > /dev/null
```

Por exemplo, se sua região for `us-east-2` e o nome de configuração do endpoint for`host-xgboost-f56b6b280d7511ea824b129926example`, o seguinte comando invocaria o endpoint: 

```
aws sagemaker-runtime invoke-endpoint \
  --region us-east-2 \
  --endpoint-name host-xgboost-f56b6b280d7511ea824b1299example \
  --body $(seq 784 | xargs echo | sed 's/ /,/g') \
  >(cat) \
  --content-type text/csv > /dev/null
4.95847082138
```

Aqui `4.95847082138` está a predição de modelo para os dados simulados. 

### Atualizar HostingDeployment
<a name="update-hostingdeployment"></a>

1. Quando a HostingDeployment tem um status de`InService`, ele pode ser atualizado. Pode levar cerca de 10 minutos HostingDeployment para entrar em serviço. Para verificar se o status é `InService`, use o seguinte comando: 

   ```
   kubectl get hostingdeployments
   ```

1. Eles HostingDeployment podem ser atualizados antes que o status seja`InService`. O operador espera até que o endpoint de SageMaker IA esteja pronto `InService` antes de aplicar a atualização. 

   Para aplicar uma atualização, modifique o `hosting.yaml` arquivo. Por exemplo, altere o campo `initialInstanceCount` de 1 para 2 da seguinte forma: 

   ```
   apiVersion: sagemaker.aws.amazon.com/v1
   kind: HostingDeployment
   metadata:
     name: host-xgboost
   spec:
       region: us-east-2
       productionVariants:
           - variantName: all-traffic
             modelName: xgboost-model
             initialInstanceCount: 2
             instanceType: ml.c5.large
       models:
           - name: xgboost-model
             executionRoleArn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
             primaryContainer: xgboost
             containers:
               - xgboost
       containers:
           - containerHostname: xgboost
             modelDataUrl: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz
             image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
   ```

1. Salve o arquivo e use `kubectl` para aplicar sua atualização da seguinte maneira: Você deve ver o status mudar de `InService` para `ReconcilingEndpoint`, então `Updating`. 

   ```
   $ kubectl apply -f hosting.yaml
   hostingdeployment.sagemaker.aws.amazon.com/host-xgboost configured
   
   $ kubectl get hostingdeployments
   NAME           STATUS                SAGEMAKER-ENDPOINT-NAME
   host-xgboost   ReconcilingEndpoint   host-xgboost-def0e83e0d5f11eaaa450a350abcdef
   
   $ kubectl get hostingdeployments
   NAME           STATUS     SAGEMAKER-ENDPOINT-NAME
   host-xgboost   Updating   host-xgboost-def0e83e0d5f11eaaa450a3507abcdef
   ```

SageMaker A IA implanta um novo conjunto de instâncias com seus modelos, troca o tráfego para usar as novas instâncias e drena as instâncias antigas. Assim que esse processo começa, o status se torna `Updating`. Depois que a atualização for concluída, seu endpoint se tornará `InService`. Este processo leva aproximadamente 10 minutos. 

### Exclua o HostingDeployment
<a name="delete-the-hostingdeployment"></a>

1. Use `kubectl` para excluir um HostingDeployment com o seguinte comando: 

   ```
   kubectl delete hostingdeployments host-xgboost
   ```

   A saída será semelhante a: 

   ```
   hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
   ```

1. Para verificar se a implantação da hospedagem foi excluída, use o seguinte comando: 

   ```
   kubectl get hostingdeployments
   No resources found.
   ```

Os endpoints que foram excluídos não incorrem em nenhuma cobrança pelos recursos de SageMaker IA. 

## O ProcessingJob operador
<a name="kubernetes-processing-job-operator"></a>

ProcessingJob operadores são usados para iniciar trabalhos de SageMaker processamento da Amazon. Para obter mais informações sobre SageMaker processamento de trabalhos, consulte [CreateProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html). 

**Topics**
+ [Crie um ProcessingJob usando um arquivo YAML](#kubernetes-processing-job-yaml)
+ [Lista ProcessingJobs](#kubernetes-processing-job-list)
+ [Descreva um ProcessingJob](#kubernetes-processing-job-description)
+ [Excluir um ProcessingJob](#kubernetes-processing-job-delete)

### Crie um ProcessingJob usando um arquivo YAML
<a name="kubernetes-processing-job-yaml"></a>

Siga estas etapas para criar um trabalho de SageMaker processamento da Amazon usando um arquivo YAML:

1. Baixe o script de `kmeans_preprocessing.py` pré-processamento.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
   ```

1. Em um de seus buckets do Amazon Simple Storage Service (Amazon S3), crie `mnist_kmeans_example/processing_code` uma pasta e carregue o script na pasta.

1. Faça download do arquivo `kmeans-mnist-processingjob.yaml`.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
   ```

1. Edite o arquivo YAML para especificar sua `sagemaker-execution-role` e substituir todas as instâncias do pelo seu `amzn-s3-demo-bucket` bucket do S3.

   ```
   ...
   metadata:
     name: kmeans-mnist-processing
   ...
     roleArn: arn:aws:iam::<acct-id>:role/service-role/<sagemaker-execution-role>
     ...
     processingOutputConfig:
       outputs:
         ...
             s3Output:
               s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/output/
     ...
     processingInputs:
       ...
           s3Input:
             s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
   ```

   Eles `sagemaker-execution-role` devem ter permissões para que a SageMaker IA possa acessar seu bucket do S3, a Amazon CloudWatch e outros serviços em seu nome. Para obter mais informações sobre como criar uma função de execução, consulte [Funções de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms).

1. Aplique o arquivo YAML utilizando um dos seguintes comandos:

   Para instalação com escopo de cluster:

   ```
   kubectl apply -f kmeans-mnist-processingjob.yaml
   ```

   Para instalação com escopo de namespace:

   ```
   kubectl apply -f kmeans-mnist-processingjob.yaml -n <NAMESPACE>
   ```

### Lista ProcessingJobs
<a name="kubernetes-processing-job-list"></a>

Use um dos comandos a seguir para listar todos os trabalhos criados usando o ProcessingJob operador. `SAGEMAKER-JOB-NAME `vem da `metadata` seção do arquivo YAML.

Para instalação com escopo de cluster:

```
kubectl get ProcessingJob kmeans-mnist-processing
```

Para instalação com escopo de namespace:

```
kubectl get ProcessingJob -n <NAMESPACE> kmeans-mnist-processing
```

O resultado deve ser semelhante ao seguinte:

```
NAME                    STATUS     CREATION-TIME        SAGEMAKER-JOB-NAME
kmeans-mnist-processing InProgress 2020-09-22T21:13:25Z kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385
```

A saída lista todos os trabalhos, independentemente de seu status. Para remover um trabalho da lista, consulte [Excluir um trabalho de processamento](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-processing-job-operator.html#kubernetes-processing-job-delete).

**ProcessingJob Status**
+ `SynchronizingK8sJobWithSageMaker`: o trabalho é enviado primeiro ao cluster. O operador recebeu a solicitação e está se preparando para criar o trabalho de processamento.
+ `Reconciling`: o operador está inicializando ou se recuperando de erros transitórios, junto com outros. Se o trabalho de processamento permanecer nesse estado, use o comando `describe` do `kubectl` para ver o motivo no campo `Additional`.
+ `InProgress | Completed | Failed | Stopping | Stopped`— Status do trabalho SageMaker de processamento. Para obter mais informações, consulte [DescribeProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html#sagemaker-DescribeProcessingJob-response-ProcessingJobStatus).
+ `Error`: o operador não pode se recuperar por meio da reconciliação.

Trabalhos concluídos, interrompidos ou falhados não incorrem em cobranças adicionais pelos recursos de SageMaker IA.

### Descreva um ProcessingJob
<a name="kubernetes-processing-job-description"></a>

Use um dos comandos a seguir para obter mais detalhes sobre um trabalho de processamento. Esses comandos são normalmente usados para depurar um problema ou verificar os parâmetros de um trabalho de processamento.

Para instalação com escopo de cluster:

```
kubectl describe processingjob kmeans-mnist-processing
```

Para instalação com escopo de namespace:

```
kubectl describe processingjob kmeans-mnist-processing -n <NAMESPACE>
```

A saída do seu trabalho de processamento deve ser semelhante à seguinte:

```
$ kubectl describe ProcessingJob kmeans-mnist-processing
Name:         kmeans-mnist-processing
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"ProcessingJob","metadata":{"annotations":{},"name":"kmeans-mnist-processing",...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         ProcessingJob
Metadata:
  Creation Timestamp:  2020-09-22T21:13:25Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  21746658
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/processingjobs/kmeans-mnist-processing
  UID:               7410ed52-fd18-11ea-b19a-165ae9f9e385
Spec:
  App Specification:
    Container Entrypoint:
      python
      /opt/ml/processing/code/kmeans_preprocessing.py
    Image Uri:  763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:1.5.0-cpu-py36-ubuntu16.04
  Environment:
    Name:   MYVAR
    Value:  my_value
    Name:   MYVAR2
    Value:  my_value2
  Network Config:
  Processing Inputs:
    Input Name:  mnist_tar
    s3Input:
      Local Path:   /opt/ml/processing/input
      s3DataType:   S3Prefix
      s3InputMode:  File
      s3Uri:        s3://<s3bucket>-us-west-2/algorithms/kmeans/mnist/mnist.pkl.gz
    Input Name:     source_code
    s3Input:
      Local Path:   /opt/ml/processing/code
      s3DataType:   S3Prefix
      s3InputMode:  File
      s3Uri:        s3://<s3bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
  Processing Output Config:
    Outputs:
      Output Name:  train_data
      s3Output:
        Local Path:    /opt/ml/processing/output_train/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
      Output Name:     test_data
      s3Output:
        Local Path:    /opt/ml/processing/output_test/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
      Output Name:     valid_data
      s3Output:
        Local Path:    /opt/ml/processing/output_valid/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
  Processing Resources:
    Cluster Config:
      Instance Count:     1
      Instance Type:      ml.m5.xlarge
      Volume Size In GB:  20
  Region:                 us-west-2
  Role Arn:               arn:aws:iam::<acct-id>:role/m-sagemaker-role
  Stopping Condition:
    Max Runtime In Seconds:  1800
  Tags:
    Key:    tagKey
    Value:  tagValue
Status:
  Cloud Watch Log URL:             https://us-west-2.console.aws.amazon.com/cloudwatch/home?region=us-west-2#logStream:group=/aws/sagemaker/ProcessingJobs;prefix=kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385;streamFilter=typeLogStreamPrefix
  Last Check Time:                 2020-09-22T21:14:29Z
  Processing Job Status:           InProgress
  Sage Maker Processing Job Name:  kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385
Events:                            <none>
```

### Excluir um ProcessingJob
<a name="kubernetes-processing-job-delete"></a>

Quando você exclui uma tarefa de processamento, a tarefa SageMaker de processamento é removida do Kubernetes, mas a tarefa não é excluída da IA. SageMaker Se o status do trabalho na SageMaker IA for, `InProgress` o trabalho será interrompido. Os trabalhos de processamento que são interrompidos não incorrem em nenhuma cobrança pelos recursos de SageMaker IA. Use um dos comandos a seguir para excluir um trabalho de processamento. 

Para instalação com escopo de cluster:

```
kubectl delete processingjob kmeans-mnist-processing
```

Para instalação com escopo de namespace:

```
kubectl delete processingjob kmeans-mnist-processing -n <NAMESPACE>
```

A saída do seu trabalho de processamento deve ser semelhante à seguinte:

```
processingjob.sagemaker.aws.amazon.com "kmeans-mnist-processing" deleted
```



**nota**  
SageMaker A IA não exclui a tarefa de processamento. Os trabalhos interrompidos continuam aparecendo no console de SageMaker IA. O `delete` comando leva alguns minutos para limpar os recursos da SageMaker IA.

## HostingAutoscalingPolicy Operador (HAP)
<a name="kubernetes-hap-operator"></a>

O operador HostingAutoscalingPolicy (HAP) usa uma lista de recursos IDs como entrada e aplica a mesma política a cada um deles. Cada ID de recurso é uma combinação de um nome de endpoint e um nome de variante. O operador do HAP executa duas etapas: registra o recurso IDs e, em seguida, aplica a política de escalabilidade a cada ID do recurso. `Delete`desfaz as duas ações. [Você pode aplicar o HAP a um endpoint de SageMaker IA existente ou criar um novo endpoint de SageMaker IA usando o operador. HostingDeployment ](https://docs.aws.amazon.com/sagemaker/latest/dg/hosting-deployment-operator.html#create-a-hostingdeployment) Você pode ler mais sobre o escalonamento automático de SageMaker IA na documentação da política de [escalonamento automático de aplicativos](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html).

**nota**  
Em seus comandos `kubectl`, você pode usar a forma abreviada, `hap`, no lugar de `hostingautoscalingpolicy`.

**Topics**
+ [Crie um HostingAutoscalingPolicy usando um arquivo YAML](#kubernetes-hap-job-yaml)
+ [Lista HostingAutoscalingPolicies](#kubernetes-hap-list)
+ [Descreva um HostingAutoscalingPolicy](#kubernetes-hap-describe)
+ [Atualizar um HostingAutoscalingPolicy](#kubernetes-hap-update)
+ [Excluir um HostingAutoscalingPolicy](#kubernetes-hap-delete)
+ [Atualizar ou excluir um endpoint com um HostingAutoscalingPolicy](#kubernetes-hap-update-delete-endpoint)

### Crie um HostingAutoscalingPolicy usando um arquivo YAML
<a name="kubernetes-hap-job-yaml"></a>

Use um arquivo YAML para criar um HostingAutoscalingPolicy (HAP) que aplique uma métrica predefinida ou personalizada a um ou vários SageMaker endpoints de IA.

A Amazon SageMaker AI exige valores específicos para aplicar o escalonamento automático à sua variante. Se esses valores não forem especificados na especificação YAML, o operador HAP aplicará os seguintes valores padrão:

```
# Do not change
Namespace                    = "sagemaker"
# Do not change
ScalableDimension            = "sagemaker:variant:DesiredInstanceCount"
# Only one supported
PolicyType                   = "TargetTrackingScaling"
# This is the default policy name but can be changed to apply a custom policy
DefaultAutoscalingPolicyName = "SageMakerEndpointInvocationScalingPolicy"
```

Use os exemplos a seguir para criar um HAP que aplique uma métrica predefinida ou personalizada a um ou vários endpoints.

#### Exemplo 1: aplicar uma métrica predefinida a uma única variante de endpoint
<a name="kubernetes-hap-predefined-metric"></a>

1. Faça download do arquivo YAML de exemplo para uma métrica predefinida usando o seguinte comando:

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. Edite o arquivo YAML para especificar seu `endpointName`, `variantName` e `Region`.

1. Use um dos comandos a seguir para aplicar uma métrica predefinida a uma única ID de recurso (combinação de nome do endpoint e nome da variante).

   Para instalação com escopo de cluster:

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

   Para instalação com escopo de namespace:

   ```
   kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>
   ```

#### Exemplo 2: aplicar uma métrica personalizada a uma única variante de endpoint
<a name="kubernetes-hap-custom-metric"></a>

1. Faça download do arquivo YAML de exemplo para uma métrica personalizada usando o seguinte comando:

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
   ```

1. Edite o arquivo YAML para especificar seu `endpointName`, `variantName` e `Region`.

1. Use um dos comandos a seguir para aplicar uma métrica personalizada a um único ID de recurso (combinação de nome do endpoint e nome da variante) no lugar do `SageMakerVariantInvocationsPerInstance` recomendado.
**nota**  
A Amazon SageMaker AI não verifica a validade da sua especificação YAML.

   Para instalação com escopo de cluster:

   ```
   kubectl apply -f hap-custom-metric.yaml
   ```

   Para instalação com escopo de namespace:

   ```
   kubectl apply -f hap-custom-metric.yaml -n <NAMESPACE>
   ```

#### Exemplo 3: aplicar uma política de escalabilidade a vários endpoints e variantes
<a name="kubernetes-hap-scaling-policy"></a>

Você pode usar o operador HAP para aplicar a mesma política de escalabilidade a vários recursos. IDs Uma `scaling_policy` solicitação separada é criada para cada ID de recurso (combinação de nome do endpoint e nome da variante).

1. Faça download do arquivo YAML de exemplo para uma métrica predefinida usando o seguinte comando:

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. Edite o arquivo YAML para especificar seus `Region`, vários `endpointName` e valores `variantName`.

1. Use um dos comandos a seguir para aplicar uma métrica predefinida a vários recursos IDs (combinações de nome de endpoint e nome de variante).

   Para instalação com escopo de cluster:

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

   Para instalação com escopo de namespace:

   ```
   kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>
   ```

#### Considerações HostingAutoscalingPolicies para vários endpoints e variantes
<a name="kubernetes-hap-scaling-considerations"></a>

As considerações a seguir se aplicam quando você usa vários recursos IDs:
+ Se você aplicar uma única política em vários recursos IDs, um PolicyArn será criado por ID de recurso. Cinco endpoints têm cinco políticasARNs. Quando você executa o comando `describe` na política, as respostas aparecem como um trabalho e incluem um único status de trabalho.
+ Se você aplicar uma métrica personalizada a vários recursos IDs, a mesma dimensão ou valor será usado para todos os valores de ID do recurso (variante). Por exemplo, se você aplicar uma métrica de cliente para as instâncias 1 a 5 e a dimensão da variante do endpoint for mapeada para a variante 1, quando a variante 1 exceder as métricas, todos os endpoints terão a escala aumentada ou reduzida verticalmente.
+ O operador HAP suporta a atualização da lista de recursos IDs. Se você modificar, adicionar ou excluir recursos da especificação, IDs a política de escalonamento automático será removida da lista anterior de variantes e aplicada às combinações de IDs de recursos recém-especificadas. Use o [https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe)comando para listar o recurso IDs ao qual a política está atualmente aplicada.

### Lista HostingAutoscalingPolicies
<a name="kubernetes-hap-list"></a>

Use um dos comandos a seguir para listar tudo HostingAutoscalingPolicies (HAPs) criado usando o operador HAP.

Para instalação com escopo de cluster:

```
kubectl get hap
```

Para instalação com escopo de namespace:

```
kubectl get hap -n <NAMESPACE>
```

O resultado deve ser semelhante ao seguinte:

```
NAME             STATUS   CREATION-TIME
hap-predefined   Created  2021-07-13T21:32:21Z
```

Use o comando a seguir para verificar o status do seu HostingAutoscalingPolicy (HAP).

```
kubectl get hap <job-name>
```

Ele tem um dos seguintes valores:
+ `Reconciling`: certos tipos de erros mostram o status como `Reconciling` em vez de `Error`. Alguns exemplos são erros do lado do servidor e endpoints no estado `Creating` ou `Updating`. Verifique o campo `Additional` no status ou nos logs do operador para obter mais detalhes.
+ `Created`
+ `Error`

**Para visualizar o endpoint de ajuste de escala automático ao qual você aplicou a política**

1. Abra o console do Amazon SageMaker AI em [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. No painel do lado esquerdo, expanda **Inferência**.

1. Selecione **Endpoints**.

1. Selecione o nome do endpoint de interesse.

1. Role até a seção **Definições de runtime do endpoint**.

### Descreva um HostingAutoscalingPolicy
<a name="kubernetes-hap-describe"></a>

Use o comando a seguir para obter mais detalhes sobre um HostingAutoscalingPolicy (HAP). Esses comandos são normalmente usados para depurar um problema ou verificar o recurso IDs (combinações de nome de endpoint e nome de variante) de um HAP.

```
kubectl describe hap <job-name>
```

### Atualizar um HostingAutoscalingPolicy
<a name="kubernetes-hap-update"></a>

O operador HostingAutoscalingPolicy (HAP) oferece suporte a atualizações. Você pode editar sua especificação YAML para alterar os valores e depois reaplicar a política. O operador do HAP exclui a política existente e aplica a nova política.

### Excluir um HostingAutoscalingPolicy
<a name="kubernetes-hap-delete"></a>

Use um dos comandos a seguir para excluir uma política HostingAutoscalingPolicy (HAP).

Para instalação com escopo de cluster:

```
kubectl delete hap hap-predefined
```

Para instalação com escopo de namespace:

```
kubectl delete hap hap-predefined -n <NAMESPACE>
```

Esse comando exclui a política de escalabilidade e cancela o registro do alvo de escalabilidade do Kubernetes. Este comando retorna a seguinte saída:

```
hostingautoscalingpolicies.sagemaker.aws.amazon.com "hap-predefined" deleted
```

### Atualizar ou excluir um endpoint com um HostingAutoscalingPolicy
<a name="kubernetes-hap-update-delete-endpoint"></a>

Para atualizar um endpoint que tenha um HostingAutoscalingPolicy (HAP), use o `kubectl` `delete` comando para remover o HAP, atualizar o endpoint e reaplicar o HAP.

Para excluir um endpoint que tenha um HAP, use o comando `kubectl` `delete` para remover o HAP antes de excluir o endpoint.

# Migre recursos para os operadores mais recentes
<a name="kubernetes-sagemaker-operators-migrate"></a>

Estamos interrompendo o desenvolvimento e o suporte técnico da versão original do [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master).

Se você estiver usando atualmente a versão `v1.2.2` ou inferior do [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), recomendamos migrar seus recursos para o [controlador de serviço ACK da Amazon](https://github.com/aws-controllers-k8s/sagemaker-controller). SageMaker O controlador de serviço ACK é uma nova geração de SageMaker operadores para Kubernetes com base em [AWS controladores para Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).

Para obter respostas às perguntas frequentes sobre o fim do suporte da versão original do SageMaker Operators for Kubernetes, consulte [Anunciando o fim do suporte da versão original do SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

Use as etapas a seguir para migrar seus recursos e usar o ACK para treinar, ajustar e implantar modelos de aprendizado de máquina com a Amazon SageMaker AI.

**nota**  
Os operadores de SageMaker IA mais recentes para Kubernetes não são compatíveis com versões anteriores.

**Topics**
+ [Pré-requisitos](#migrate-resources-to-new-operators-prerequisites)
+ [Adote recursos](#migrate-resources-to-new-operators-steps)
+ [Limpe os recursos antigos](#migrate-resources-to-new-operators-cleanup)
+ [Use os novos operadores de SageMaker IA para Kubernetes](#migrate-resources-to-new-operators-tutorials)

## Pré-requisitos
<a name="migrate-resources-to-new-operators-prerequisites"></a>

Para migrar com sucesso os recursos para os operadores de SageMaker IA mais recentes do Kubernetes, você deve fazer o seguinte:

1. Instale os operadores de SageMaker IA mais recentes para Kubernetes. Consulte [Configuração](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup) no *Machine Learning com o ACK SageMaker AI Controller* para step-by-step obter instruções.

1. Se você estiver usando [HostingAutoscalingPolicy recursos](#migrate-resources-to-new-operators-hap), instale o novo Application Auto Scaling Operators. Consulte [Configuração](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/#setup) em *escala de cargas de trabalho de SageMaker IA com Application Auto* Scaling step-by-step para obter instruções. Essa etapa é opcional se você não estiver usando HostingAutoScalingPolicy recursos.

Se as permissões forem configuradas corretamente, o controlador de serviço ACK SageMaker AI poderá determinar a especificação e o status do AWS recurso e reconciliar o recurso como se o controlador ACK o tivesse criado originalmente.

## Adote recursos
<a name="migrate-resources-to-new-operators-steps"></a>

Os novos operadores de SageMaker IA para Kubernetes oferecem a capacidade de adotar recursos que não foram originalmente criados pelo controlador de serviço ACK. Para obter mais informações, consulte [Adotar AWS recursos existentes](https://aws-controllers-k8s.github.io/community/docs/user-docs/adopted-resource/) na documentação do ACK.

As etapas a seguir mostram como os novos operadores de SageMaker IA para Kubernetes podem adotar um endpoint de IA existente SageMaker . Salve o código de amostra a seguir em um arquivo chamado `adopt-endpoint-sample.yaml`. 

```
apiVersion: services.k8s.aws/v1alpha1
kind: AdoptedResource
metadata:
  name: adopt-endpoint-sample
spec:  
  aws:
    # resource to adopt, not created by ACK
    nameOrID: xgboost-endpoint
  kubernetes:
    group: sagemaker.services.k8s.aws
    kind: Endpoint
    metadata:
      # target K8s CR name
      name: xgboost-endpoint
```

Envie o recurso personalizado (CR) usando `kubectl apply`:

```
kubectl apply -f adopt-endpoint-sample.yaml
```

Use `kubectl describe` para verificar as condições de status do seu recurso adotado.

```
kubectl describe adoptedresource adopt-endpoint-sample
```

Verifique se a condição `ACK.Adopted` é `True`. A saída deve ser semelhante ao seguinte exemplo:

```
---
kind: AdoptedResource
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"services.k8s.aws/v1alpha1","kind":"AdoptedResource","metadata":{"annotations":{},"name":"xgboost-endpoint","namespace":"default"},"spec":{"aws":{"nameOrID":"xgboost-endpoint"},"kubernetes":{"group":"sagemaker.services.k8s.aws","kind":"Endpoint","metadata":{"name":"xgboost-endpoint"}}}}'
  creationTimestamp: '2021-04-27T02:49:14Z'
  finalizers:
  - finalizers.services.k8s.aws/AdoptedResource
  generation: 1
  name: adopt-endpoint-sample
  namespace: default
  resourceVersion: '12669876'
  selfLink: "/apis/services.k8s.aws/v1alpha1/namespaces/default/adoptedresources/adopt-endpoint-sample"
  uid: 35f8fa92-29dd-4040-9d0d-0b07bbd7ca0b
spec:
  aws:
    nameOrID: xgboost-endpoint
  kubernetes:
    group: sagemaker.services.k8s.aws
    kind: Endpoint
    metadata:
      name: xgboost-endpoint
status:
  conditions:
  - status: 'True'
    type: ACK.Adopted
```

Verifique se seu recurso existe em seu cluster:

```
kubectl describe endpoints.sagemaker xgboost-endpoint
```

### HostingAutoscalingPolicy recursos
<a name="migrate-resources-to-new-operators-hap"></a>

O recurso `HostingAutoscalingPolicy` (HAP) consiste em vários recursos do Application Auto Scaling: `ScalableTarget` e `ScalingPolicy`. Ao adotar um recurso HAP com ACK, primeiro instale o [controlador Application Autox Scaling](https://github.com/aws-controllers-k8s/applicationautoscaling-controller). Para adotar os recursos do HAP, você precisa adotar tanto o recurso `ScalableTarget` como o `ScalingPolicy`. Você pode encontrar o identificador de recursos para esses recursos no status do `HostingAutoscalingPolicy` recurso ()`status.ResourceIDList`.

### HostingDeployment recursos
<a name="migrate-resources-to-new-operators-hosting-deployment"></a>

O `HostingDeployment` recurso consiste em vários recursos de SageMaker IA: `Endpoint``EndpointConfig`, e cada um`Model`. Se você adotar um endpoint de SageMaker IA no ACK, precisará adotar o `Endpoint``EndpointConfig`, e cada um `Model` separadamente. Os nomes `Endpoint`, `EndpointConfig` e `Model`, podem ser encontrados no status do recurso `HostingDeployment` (`status.endpointName`, `status.endpointConfigName` e`status.modelNames`).

Para obter uma lista de todos os recursos de SageMaker IA compatíveis, consulte a [Referência da API ACK](https://aws-controllers-k8s.github.io/community/reference/).

## Limpe os recursos antigos
<a name="migrate-resources-to-new-operators-cleanup"></a>

Depois que os novos operadores de SageMaker IA para Kubernetes adotarem seus recursos, você poderá desinstalar os operadores antigos e limpar os recursos antigos.

### Etapa 1: desinstalar o operador antigo
<a name="migrate-resources-to-new-operators-uninstall"></a>

Para desinstalar o operador antigo, consulte [Excluir operadores](kubernetes-sagemaker-operators-end-of-support.md#delete-operators).

**Atenção**  
Desinstale o operador antigo antes de excluir qualquer recurso antigo.

### Etapa 2: remover finalizadores e excluir recursos antigos
<a name="migrate-resources-to-new-operators-delete-resources"></a>

**Atenção**  
Antes de excluir recursos antigos, certifique-se de ter desinstalado o operador antigo.

Depois de desinstalar o operador antigo, você deve remover explicitamente os finalizadores para excluir os recursos antigos do operador. O exemplo de script a seguir mostra como excluir todos os trabalhos de treinamento gerenciados pelo operador antigo em um determinado namespace. Você pode usar um padrão semelhante para excluir recursos adicionais depois que eles forem adotados pelo novo operador.

**nota**  
Você deve usar nomes completos de recursos para obter recursos. Por exemplo, use `kubectl get trainingjobs.sagemaker.aws.amazon.com` em vez de `kubectl get trainingjob`.

```
namespace=sagemaker_namespace
training_jobs=$(kubectl get trainingjobs.sagemaker.aws.amazon.com -n $namespace -ojson | jq -r '.items | .[] | .metadata.name')
 
for job in $training_jobs
do
    echo "Deleting $job resource in $namespace namespace"
    kubectl patch trainingjobs.sagemaker.aws.amazon.com $job -n $namespace -p '{"metadata":{"finalizers":null}}' --type=merge
    kubectl delete trainingjobs.sagemaker.aws.amazon.com $job -n $namespace
done
```

## Use os novos operadores de SageMaker IA para Kubernetes
<a name="migrate-resources-to-new-operators-tutorials"></a>

Para obter guias detalhados sobre como usar os novos operadores de SageMaker IA para Kubernetes, consulte [Use operadores de SageMaker IA para Kubernetes](kubernetes-sagemaker-operators-ack.md#kubernetes-sagemaker-operators-ack-use)

# Anunciando o fim do suporte da versão original do SageMaker AI Operators for Kubernetes
<a name="kubernetes-sagemaker-operators-eos-announcement"></a>

Esta página anuncia o fim do suporte para a versão original do [SageMaker AI Operators for Kubernetes e fornece respostas para](https://github.com/aws/amazon-sagemaker-operator-for-k8s) perguntas frequentes, bem como informações de migração sobre o [controlador de serviços ACK para Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller), uma nova geração de operadores de SageMaker IA totalmente compatíveis para Kubernetes. Para obter informações gerais sobre os novos operadores de SageMaker IA para Kubernetes, consulte. [Operadores de SageMaker IA mais recentes para Kubernetes](kubernetes-sagemaker-operators-ack.md) 

## Perguntas frequentes sobre o Fim do suporte
<a name="kubernetes-sagemaker-operators-eos-faq"></a>

**Topics**
+ [Por que estamos encerrando o suporte para a versão original do SageMaker AI Operators for Kubernetes?](#kubernetes-sagemaker-operators-eos-faq-why)
+ [Onde posso encontrar mais informações sobre os novos operadores de SageMaker IA para Kubernetes e ACK?](#kubernetes-sagemaker-operators-eos-faq-more)
+ [O que significa fim da compatibilidade (EOS)?](#kubernetes-sagemaker-operators-eos-faq-definition)
+ [Como posso migrar minha carga de trabalho para os novos operadores de SageMaker IA para Kubernetes para treinamento e inferência?](#kubernetes-sagemaker-operators-eos-faq-how)
+ [Para qual versão do ACK devo migrar?](#kubernetes-sagemaker-operators-eos-faq-version)
+ [Os operadores de SageMaker IA iniciais para Kubernetes e os novos operadores (controlador de serviço ACK para Amazon SageMaker AI) são funcionalmente equivalentes?](#kubernetes-sagemaker-operators-eos-faq-parity)

### Por que estamos encerrando o suporte para a versão original do SageMaker AI Operators for Kubernetes?
<a name="kubernetes-sagemaker-operators-eos-faq-why"></a>

Agora, os usuários podem aproveitar o [controlador de serviço ACK para Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller). O controlador de serviço ACK é uma nova geração de operadores de SageMaker IA para Kubernetes com base em [AWS Controllers for Kubernetes (ACK), um projeto orientado pela comunidade otimizado para](https://aws-controllers-k8s.github.io/community/) produção, padronizando a forma de expor serviços por meio de um operador Kubernetes. AWS Portanto, estamos anunciando o fim do suporte (EOS) para a versão original (não baseada em ACK) do [ SageMaker AI Operators](https://github.com/aws/amazon-sagemaker-operator-for-k8s) for Kubernetes. O suporte termina em **15 de fevereiro de 2023** junto com o [Amazon Elastic Kubernetes Service Kubernetes 1.21](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-release-calendar). 

Para obter mais informações sobre o ACK, consulte o [histórico e os princípios do ACK](https://aws-controllers-k8s.github.io/community/docs/community/background/).

### Onde posso encontrar mais informações sobre os novos operadores de SageMaker IA para Kubernetes e ACK?
<a name="kubernetes-sagemaker-operators-eos-faq-more"></a>
+ Para obter mais informações sobre os novos operadores de SageMaker IA para Kubernetes, consulte o controlador de [serviço ACK para o GitHub repositório Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller) ou leia a documentação de [AWS Controllers](https://aws-controllers-k8s.github.io/community/docs/community/overview/) for Kubernetes.
+ Para ver um tutorial sobre como treinar um modelo de aprendizado de máquina com o controlador de serviço ACK para Amazon SageMaker AI usando o Amazon EKS, veja este [exemplo de SageMaker IA](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/).

  Para ver um exemplo de escalonamento automático, consulte [Dimensionar cargas de trabalho de SageMaker IA com Application Auto Scaling.](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/)
+ Para obter informações sobre o Controlador da AWS para Kubernetes (ACK), consulte a documentação dos [Controladores da AWS para Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).
+ Para ver uma lista dos recursos de SageMaker IA compatíveis, consulte a [Referência da API ACK](https://aws-controllers-k8s.github.io/community/reference/).

### O que significa fim da compatibilidade (EOS)?
<a name="kubernetes-sagemaker-operators-eos-faq-definition"></a>

Embora os usuários possam continuar usando suas operadoras atuais, não estamos mais desenvolvendo novos recursos para as operadoras, nem lançaremos patches ou atualizações de segurança para os problemas encontrados. `v1.2.2`é a última versão do [SageMaker AI Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master). Os usuários devem migrar suas cargas de trabalho para usar o [controlador de serviço ACK para Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller).

### Como posso migrar minha carga de trabalho para os novos operadores de SageMaker IA para Kubernetes para treinamento e inferência?
<a name="kubernetes-sagemaker-operators-eos-faq-how"></a>

Para obter informações sobre como migrar recursos dos antigos para os novos operadores de SageMaker IA do Kubernetes, siga. [Migre recursos para os operadores mais recentes](kubernetes-sagemaker-operators-migrate.md)

### Para qual versão do ACK devo migrar?
<a name="kubernetes-sagemaker-operators-eos-faq-version"></a>

Os usuários devem migrar para a versão mais recente do [controlador de serviço ACK para Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller/tags).

### Os operadores de SageMaker IA iniciais para Kubernetes e os novos operadores (controlador de serviço ACK para Amazon SageMaker AI) são funcionalmente equivalentes?
<a name="kubernetes-sagemaker-operators-eos-faq-parity"></a>

Sim, eles estão em paridade de atributos.

Alguns destaques das principais diferenças notáveis entre as duas versões incluem:
+ As definições de recursos personalizados (CRD) usadas pelos operadores de SageMaker IA baseados em ACK para Kubernetes seguem a definição da AWS API, tornando-a incompatível com as especificações de recursos personalizados dos operadores de SageMaker IA para Kubernetes em sua versão original. Consulte o [CRDs](https://github.com/aws-controllers-k8s/sagemaker-controller/tree/main/helm/crds)novo controlador ou use o guia de migração para adotar os recursos e usar o novo controlador. 
+ A `Hosting Autoscaling` política não faz mais parte dos novos operadores de SageMaker IA para Kubernetes e foi migrada para o controlador ACK de escalonamento automático de [aplicativos](https://github.com/aws-controllers-k8s/applicationautoscaling-controller). [Para saber como usar o controlador de escalonamento automático do aplicativo para configurar o escalonamento automático nos SageMaker AI Endpoints, siga este exemplo de escalonamento automático.](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/) 
+ O `HostingDeployment` recurso foi usado para criar modelos, configurações de endpoints e endpoints em um CRD. Os novos operadores de SageMaker IA para Kubernetes têm um CRD separado para cada um desses recursos. 

# SageMaker Componentes de IA para pipelines Kubeflow
<a name="kubernetes-sagemaker-components-for-kubeflow-pipelines"></a>

Com os componentes de SageMaker IA para o Kubeflow Pipelines, você pode criar e monitorar trabalhos nativos SageMaker de treinamento, ajuste, implantação de endpoints e transformação em lote de seus pipelines do Kubeflow. Ao executar trabalhos do Kubeflow Pipeline na SageMaker IA, você move os trabalhos de processamento e treinamento de dados do cluster Kubernetes para o serviço gerenciado otimizado para aprendizado de máquina da SageMaker IA. Este documento pressupõe conhecimento prévio do Kubernetes e do Kubeflow. 

**Topics**
+ [O que são pipelines Kubeflow?](#what-is-kubeflow-pipelines)
+ [Quais são os componentes do Kubeflow Pipeline?](#kubeflow-pipeline-components)
+ [Por que usar componentes de SageMaker IA para pipelines do Kubeflow?](#why-use-sagemaker-components)
+ [SageMaker Componentes de IA para versões do Kubeflow Pipelines](#sagemaker-components-versions)
+ [Lista de componentes de SageMaker IA para pipelines Kubeflow](#sagemaker-components-list)
+ [permissões do IAM](#iam-permissions)
+ [Conversão de pipelines para usar IA SageMaker](#converting-pipelines-to-use-amazon-sagemaker)
+ [Instalar Pipelines do Kubeflow](kubernetes-sagemaker-components-install.md)
+ [Use componentes de SageMaker IA](kubernetes-sagemaker-components-tutorials.md)

## O que são pipelines Kubeflow?
<a name="what-is-kubeflow-pipelines"></a>

O Kubeflow Pipelines (KFP) é uma plataforma para criar e implantar fluxos de trabalho de machine learning (ML) portáteis e escaláveis com base em contêineres do Docker. A plataforma Kubeflow Pipelines consiste no seguinte:
+ Uma interface de usuário (UI) para gerenciar e rastrear experimentos, trabalhos e execuções. 
+ Um mecanismo (Argo) para programar fluxos de trabalho de ML em várias etapas.
+ Um SDK para definir e manipular pipelines e componentes.
+ Notebooks para interagir com o sistema usando o SDK.

Um pipeline é uma descrição de um fluxo de trabalho de ML expressa como um [gráfico acíclico direcionado](https://www.kubeflow.org/docs/pipelines/concepts/graph/). Cada etapa do fluxo de trabalho é expressa como um [componente](https://www.kubeflow.org/docs/pipelines/overview/concepts/component/) do Kubeflow Pipeline, que é um AWS SDK para Python (Boto3) módulo.

Para obter mais informações sobre o Kubeflow Pipelines, consulte a [documentação do Kubeflow Pipelines](https://www.kubeflow.org/docs/pipelines/). 

## Quais são os componentes do Kubeflow Pipeline?
<a name="kubeflow-pipeline-components"></a>

Um componente do Kubeflow Pipeline é um conjunto de código usado para executar uma etapa de um pipeline do Kubeflow. Os componentes são representados por um módulo Python incorporado em uma imagem do Docker. Quando o pipeline é executado, o contêiner do componente é instanciado em um dos nós de processamento no cluster Kubernetes que executa o Kubeflow, e sua lógica é executada. Os componentes do pipeline podem ler as saídas dos componentes anteriores e criar saídas que o próximo componente do pipeline possa consumir. Esses componentes facilitam e agilizam a criação de pipelines para ambientes de experimentação e produção sem precisar interagir com a infraestrutura subjacente do Kubernetes.

Você pode usar componentes de SageMaker IA em seu pipeline do Kubeflow. Em vez de encapsular sua lógica em um contêiner personalizado, basta carregar os componentes e descrever seu pipeline usando o SDK do Kubeflow Pipelines. Quando o pipeline é executado, suas instruções são traduzidas em um trabalho ou implantação de SageMaker IA. Em seguida, a carga de trabalho é executada na infraestrutura totalmente gerenciada da SageMaker IA. 

## Por que usar componentes de SageMaker IA para pipelines do Kubeflow?
<a name="why-use-sagemaker-components"></a>

SageMaker Os componentes de IA para o Kubeflow Pipelines oferecem uma alternativa ao lançamento de seus trabalhos de computação intensiva a partir da IA. SageMaker Os componentes integram a SageMaker IA com a portabilidade e a orquestração do Kubeflow Pipelines. Usando os componentes de SageMaker IA para o Kubeflow Pipelines, você pode criar e monitorar seus recursos de SageMaker IA como parte de um fluxo de trabalho do Kubeflow Pipelines. Cada um dos trabalhos em seus pipelines é executado em SageMaker IA em vez do cluster Kubernetes local, permitindo que você aproveite os principais recursos de SageMaker IA, como rotulagem de dados, ajuste de hiperparâmetros em grande escala e trabalhos de treinamento distribuídos, ou implantação de modelo seguro e escalável com um clique. Os parâmetros, o status, os registros e as saídas do trabalho da SageMaker IA ainda podem ser acessados na interface do usuário do Kubeflow Pipelines. 

Os componentes de SageMaker IA integram os principais recursos de SageMaker IA em seus fluxos de trabalho de ML, desde a preparação de dados até a criação, o treinamento e a implantação de modelos de ML. Você pode criar um Kubeflow Pipeline construído inteiramente usando esses componentes ou integrar componentes individuais ao seu fluxo de trabalho conforme necessário. Os componentes estão disponíveis em uma ou duas versões. Cada versão de um componente utiliza um backend diferente. Para obter mais informações sobre essas versões, consulte [SageMaker Componentes de IA para versões do Kubeflow Pipelines](#sagemaker-components-versions).

Não há cobrança adicional pelo uso de componentes de SageMaker IA para pipelines do Kubeflow. Você incorre em cobranças por todos os recursos de SageMaker IA usados por meio desses componentes.

## SageMaker Componentes de IA para versões do Kubeflow Pipelines
<a name="sagemaker-components-versions"></a>

SageMaker Os componentes de IA para o Kubeflow Pipelines vêm em duas versões. Cada versão utiliza um back-end diferente para criar e gerenciar recursos em SageMaker IA.
+ Os componentes de SageMaker IA do Kubeflow Pipelines versão 1 (v1.x ou inferior) usam **[Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html)** () como back-end.AWS SDK para Python (Boto3)
+ [A versão 2 (v2.0.0-alpha2 e superior) do SageMaker AI Components for Kubeflow Pipelines usa o AI Operator for Kubernetes (ACK). SageMaker ](https://github.com/aws-controllers-k8s/sagemaker-controller) 

  AWS introduziu o [ACK](https://aws-controllers-k8s.github.io/community/) para facilitar uma forma nativa do Kubernetes de gerenciar recursos em nuvem. AWS O ACK inclui um conjunto de controladores AWS específicos de serviço, um dos quais é o SageMaker controlador de IA. O controlador de SageMaker IA facilita que desenvolvedores de aprendizado de máquina e cientistas de dados que usam o Kubernetes como plano de controle treinem, ajustem e implantem modelos de aprendizado de máquina (ML) na IA. SageMaker Para obter mais informações, consulte [Operadores de SageMaker IA para Kubernetes](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/) 

Ambas as versões do SageMaker AI Components for Kubeflow Pipelines são compatíveis. No entanto, a versão 2 oferece algumas vantagens adicionais. Especificamente, ela oferece: 

1. Uma experiência consistente para gerenciar seus recursos de SageMaker IA a partir de qualquer aplicativo, esteja você usando pipelines do Kubeflow, CLI (`kubectl`) do Kubernetes ou outros aplicativos do Kubeflow, como Notebooks. 

1. A flexibilidade de gerenciar e monitorar seus recursos de SageMaker IA fora do fluxo de trabalho do pipeline do Kubeflow. 

1. Tempo de configuração zero para usar os componentes de SageMaker IA se você implantou o [Kubeflow completo no AWS](https://awslabs.github.io/kubeflow-manifests/docs/about/) lançamento, já que o operador de SageMaker IA faz parte de sua implantação. 

## Lista de componentes de SageMaker IA para pipelines Kubeflow
<a name="sagemaker-components-list"></a>

Veja a seguir uma lista de todos os componentes de SageMaker IA para o Kubeflow Pipelines e suas versões disponíveis. Como alternativa, você pode encontrar todos os [componentes de SageMaker IA para pipelines do Kubeflow](https://github.com/kubeflow/pipelines/tree/master/components/aws/sagemaker#versioning) em. GitHub

**nota**  
Incentivamos os usuários a utilizar a versão 2 de um componente de SageMaker IA onde quer que esteja disponível.

### Componentes do Ground Truth
<a name="ground-truth-components"></a>
+ **Ground Truth**

  O componente Ground Truth permite que você envie trabalhos de rotulagem do SageMaker AI Ground Truth diretamente de um fluxo de trabalho do Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Equipe de trabalho**

  O componente Workteam permite que você crie trabalhos de equipe de trabalho privados de SageMaker IA diretamente de um fluxo de trabalho do Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Componentes de processamento de dados
<a name="data-processing-components"></a>
+ **Processamento**

  O componente Processing permite que você envie trabalhos de processamento para a SageMaker IA diretamente de um fluxo de trabalho do Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Componentes de treinamento
<a name="training-components"></a>
+ **Treinamento**

  O componente de treinamento permite que você envie trabalhos de SageMaker treinamento diretamente de um fluxo de trabalho do Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Otimização de hiperparâmetros**

  O componente Hyperparameter Optimization permite que você envie trabalhos de ajuste de hiperparâmetros para a SageMaker IA diretamente de um fluxo de trabalho do Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Componentes de inferência
<a name="inference-components-kfp"></a>
+ **Implantação de hospedagem**

  Os componentes de hospedagem permitem que você implante um modelo usando serviços de hospedagem de SageMaker IA a partir de um fluxo de trabalho do Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Transformação em lote**

  O componente Batch Transform permite que você execute trabalhos de inferência para um conjunto de dados inteiro em SageMaker IA a partir de um fluxo de trabalho do Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Model Monitor**

  Os componentes do Model Monitor permitem monitorar a qualidade dos modelos de aprendizado de máquina de SageMaker IA na produção a partir de um fluxo de trabalho do Kubeflow Pipelines.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

## permissões do IAM
<a name="iam-permissions"></a>

A implantação do Kubeflow Pipelines com componentes de SageMaker IA requer as três camadas de autenticação a seguir: 
+ Umo perfil do IAM que concede ao seu nó de gateway (que pode ser sua máquina local ou uma instância remota) acesso ao cluster do Amazon Elastic Kubernetes Service (Amazon EKS).

  O usuário que acessa o nó do gateway assume essa função para:
  + Crie um cluster do Amazon EKS e instale o KFP
  + Criar perfil do IAM
  + Crie buckets do Amazon S3 para seus dados de entrada de amostra

  A função requer as seguintes permissões:
  + CloudWatchLogsFullAccess 
  + [https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess](https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess) 
  + IAMFullAcesso
  + Amazon S3 FullAccess
  + Amazon EC2 FullAccess
  + EKSAdminPolítica da Amazon (crie essa política usando o esquema dos exemplos de políticas [baseadas em identidade do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/security_iam_id-based-policy-examples.html)) 
+ Uma função de execução do Kubernetes IAM assumida pelos pods de pipeline do Kubernetes (**kfp-example-pod-role**) ou pelo pod controlador SageMaker AI Operator for Kubernetes para acessar a IA. SageMaker Essa função é usada para criar e monitorar trabalhos de SageMaker IA do Kubernetes.

  A função requer as seguintes permissões:
  + AmazonSageMakerFullAccess 

  Você pode limitar as permissões para os pods do KFP e do controlador criando e anexando sua própria política personalizada.
+ **Uma função de execução do SageMaker AI IAM assumida por trabalhos de SageMaker IA para acessar AWS recursos como Amazon S3 ou Amazon ECR (kfp-example-sagemaker-execution-role).**

  SageMaker Os trabalhos de IA usam essa função para:
  + Acesse recursos de SageMaker IA
  + Obter dados de entrada do Amazon S3.
  + Armazenar seu modelo de saída no Amazon S3.

  A função requer as seguintes permissões:
  + AmazonSageMakerFullAccess 
  + Amazon S3 FullAccess 

## Conversão de pipelines para usar IA SageMaker
<a name="converting-pipelines-to-use-amazon-sagemaker"></a>

Você pode converter um pipeline existente para usar a SageMaker IA portando seus contêineres genéricos de [processamento e contêineres de](https://docs.aws.amazon.com/sagemaker/latest/dg/amazon-sagemaker-containers.html) [treinamento](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html) do Python. Se você estiver usando SageMaker IA para inferência, também precisará anexar permissões do IAM ao seu cluster e converter um artefato em um modelo.

# Instalar Pipelines do Kubeflow
<a name="kubernetes-sagemaker-components-install"></a>

[O Kubeflow Pipelines (KFP)](https://www.kubeflow.org/docs/components/pipelines/v2/introduction/) é o componente de orquestração de pipeline do Kubeflow.

Você pode implantar o Kubeflow Pipelines (KFP) em um Amazon Elastic Kubernetes Service (Amazon EKS) existente ou criar um novo cluster do Amazon EKS. Use um nó de gateway para interagir com seu cluster. O nó do gateway pode ser sua máquina local ou uma instância do Amazon EC2.

A seção a seguir orienta você pelas etapas de instalação e configuração desses recursos.

**Topics**
+ [Escolha uma opção de instalação](#choose-install-option)
+ [Configure suas permissões de pipeline para acessar a SageMaker IA](#configure-permissions-for-pipeline)
+ [Acesse a interface do usuário do KFP (painel do Kubeflow)](#access-the-kfp-ui)

## Escolha uma opção de instalação
<a name="choose-install-option"></a>

O Kubeflow Pipelines está disponível como um componente principal da distribuição completa do Kubeflow em AWS ou como uma instalação independente.

Selecione a opção que se aplica ao seu caso de uso:

1. [Kubeflow completo na implantação AWS](#full-kubeflow-deployment)

   Para usar outros componentes do Kubeflow além dos Pipelines do Kubeflow, escolha a [distribuição completa AWS da implantação do Kubeflow](https://awslabs.github.io/kubeflow-manifests). 

1. [Implantação autônoma do Kubeflow Pipelines](#kubeflow-pipelines-standalone)

   Para usar os pipelines do Kubeflow sem os outros componentes do Kubeflow, instale os pipelines do Kubeflow de forma independente. 

### Kubeflow completo na implantação AWS
<a name="full-kubeflow-deployment"></a>

Para instalar a versão completa do Kubeflow on AWS, escolha a opção de implantação básica no [guia de implantação do Kubeflow on ou qualquer outra opção de AWS implantação](https://awslabs.github.io/kubeflow-manifests/docs/deployment/) que ofereça suporte a integrações com vários serviços ( AWS Amazon S3, Amazon RDS, Amazon Cognito).

### Implantação autônoma do Kubeflow Pipelines
<a name="kubeflow-pipelines-standalone"></a>

Esta seção pressupõe que seu usuário tenha permissões para criar funções e definir políticas para a função.

#### Configurar um nó de gateway
<a name="set-up-a-gateway-node"></a>

Você pode usar sua máquina local ou uma instância do Amazon EC2 como seu nó de gateway. Um nó de gateway é usado para criar um cluster do Amazon EKS e acessar a interface do usuário do Kubeflow Pipelines. 

Concluir as etapas a seguir para configurar seu nó. 

1. 

**Criar um nó de gateway.**

   Você pode usar uma instância existente do Amazon EC2 ou criar uma nova instância com a versão mais recente da DLAMI do Ubuntu 18.04 usando as etapas em [Iniciar e configurar uma DLAMI](https://docs.aws.amazon.com/dlami/latest/devguide/launch-config.html).

1. 

**Crie uma função do IAM para conceder acesso aos AWS recursos do nó do gateway.**

   Crie uma função do IAM com permissões para os seguintes recursos: CloudWatch,, IAM CloudFormation, Amazon EC2, Amazon S3, Amazon EKS.

   Anexe as políticas a seguir à perfil do IAM:
   + CloudWatchLogsFullAccess 
   + [https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess](https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess)
   + IAMFullAcesso 
   + Amazon S3 FullAccess 
   + Amazon EC2 FullAccess 
   + EKSAdminPolítica da Amazon (crie essa política usando o esquema dos exemplos de políticas [baseadas em identidade do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/security_iam_id-based-policy-examples.html)) 

   Para obter informações sobre como adicionar Permissões do IAM a um perfil do IAM consulte [Adicionando e removendo permissões de identidade do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).

1. 

**Instale as seguintes ferramentas e clientes**

   Instale e configure as seguintes ferramentas e recursos em seu nó de gateway para acessar o cluster do Amazon EKS e a interface de usuário (UI) do KFP: 
   + [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html): A ferramenta de linha de comando para trabalhar com AWS serviços. Para obter informações de AWS CLI configuração, consulte [Configurando o AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html). 
   + [aws-iam-authenticator](https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html)versão 0.1.31 e superior: uma ferramenta para usar credenciais AWS do IAM para se autenticar em um cluster Kubernetes.
   + A versão [https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html) acima de 0,15: a ferramenta de linha de comando para trabalhar com clusters do Amazon EKS.
   + [https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl): a ferramenta de linha de comando para trabalhar com clusters do Kubernetes. A versão precisa corresponder à sua versão do Kubernetes em uma versão secundária.
   + [https://aws.amazon.com/sdk-for-python/](https://aws.amazon.com/sdk-for-python/).

     ```
     pip install boto3
     ```

#### Configuração de um cluster do Amazon EKS
<a name="set-up-anamazon-eks-cluster"></a>

1. Se você não tiver um cluster do Amazon EKS existente, execute as seguintes etapas na linha de comando do seu nó de gateway; caso contrário, pule essa etapa:

   1. Execute o comando a seguir para criar um cluster do Amazon EKS com a versão 1.17 ou superior. Substitua `<clustername>` por qualquer nome para seu cluster. 

      ```
      eksctl create cluster --name <clustername> --region us-east-1 --auto-kubeconfig --timeout=50m --managed --nodes=1
      ```

   1. Quando a criação do cluster estiver concluída, certifique-se de ter acesso ao seu cluster listando os nós do cluster. 

      ```
      kubectl get nodes
      ```

1. Certifique-se de que o `kubectl` contexto atual aponte para seu cluster com o seguinte comando: O contexto atual é marcado com um asterisco (\$1) na saída.

   ```
   kubectl config get-contexts
   
   CURRENT NAME     CLUSTER
   *   <username>@<clustername>.us-east-1.eksctl.io   <clustername>.us-east-1.eksctl.io
   ```

1. Se o cluster desejado não estiver configurado como padrão atual, atualize o padrão com o comando a seguir. 

   ```
   aws eks update-kubeconfig --name <clustername> --region us-east-1
   ```

#### Instalar Pipelines do Kubeflow
<a name="install-kubeflow-pipelines"></a>

Execute as etapas a seguir no terminal do seu nó de gateway para instalar o Kubeflow Pipelines em seu cluster.

1. Instale todos os [componentes do cert-manager](https://cert-manager.io/docs/installation/kubectl/).

   ```
   kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.yaml
   ```

1. Instale os pipelines do Kubeflow.

   ```
   export PIPELINE_VERSION=2.0.0-alpha.5
   kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/cluster-scoped-resources?ref=$KFP_VERSION"
   kubectl wait --for condition=established --timeout=60s crd/applications.app.k8s.io
   kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/dev?ref=$KFP_VERSION"
   ```

1. Certifique-se de que o serviço Kubeflow Pipelines e outros recursos relacionados estejam em execução.

   ```
   kubectl -n kubeflow get all | grep pipeline
   ```

   A saída será semelhante à seguinte:

   ```
   pod/ml-pipeline-6b88c67994-kdtjv                      1/1     Running            0          2d
   pod/ml-pipeline-persistenceagent-64d74dfdbf-66stk     1/1     Running            0          2d
   pod/ml-pipeline-scheduledworkflow-65bdf46db7-5x9qj    1/1     Running            0          2d
   pod/ml-pipeline-ui-66cc4cffb6-cmsdb                   1/1     Running            0          2d
   pod/ml-pipeline-viewer-crd-6db65ccc4-wqlzj            1/1     Running            0          2d
   pod/ml-pipeline-visualizationserver-9c47576f4-bqmx4   1/1     Running            0          2d
   service/ml-pipeline                       ClusterIP   10.100.170.170   <none>        8888/TCP,8887/TCP   2d
   service/ml-pipeline-ui                    ClusterIP   10.100.38.71     <none>        80/TCP              2d
   service/ml-pipeline-visualizationserver   ClusterIP   10.100.61.47     <none>        8888/TCP            2d
   deployment.apps/ml-pipeline                       1/1     1            1           2d
   deployment.apps/ml-pipeline-persistenceagent      1/1     1            1           2d
   deployment.apps/ml-pipeline-scheduledworkflow     1/1     1            1           2d
   deployment.apps/ml-pipeline-ui                    1/1     1            1           2d
   deployment.apps/ml-pipeline-viewer-crd            1/1     1            1           2d
   deployment.apps/ml-pipeline-visualizationserver   1/1     1            1           2d
   replicaset.apps/ml-pipeline-6b88c67994                      1         1         1       2d
   replicaset.apps/ml-pipeline-persistenceagent-64d74dfdbf     1         1         1       2d
   replicaset.apps/ml-pipeline-scheduledworkflow-65bdf46db7    1         1         1       2d
   replicaset.apps/ml-pipeline-ui-66cc4cffb6                   1         1         1       2d
   replicaset.apps/ml-pipeline-viewer-crd-6db65ccc4            1         1         1       2d
   replicaset.apps/ml-pipeline-visualizationserver-9c47576f4   1         1         1       2d
   ```

## Configure suas permissões de pipeline para acessar a SageMaker IA
<a name="configure-permissions-for-pipeline"></a>

Nesta seção, você cria uma função de execução do IAM que concede aos pods do Kubeflow Pipeline acesso aos serviços de IA. SageMaker 

### Configuração para componentes de SageMaker IA versão 2
<a name="permissions-for-SM-v2"></a>

Para executar o SageMaker AI Components versão 2 para o Kubeflow Pipelines, você precisa instalar o [SageMaker AI Operator for Kubernetes](https://github.com/aws-controllers-k8s/sagemaker-controller) e configurar o Role-Based Access Control (RBAC), permitindo que os pods do Kubeflow Pipelines criem recursos personalizados de IA em seu cluster Kubernetes. SageMaker 

**Importante**  
Siga esta seção se você estiver usando a implantação autônoma do Kubeflow pipelines. Se você estiver usando a AWS distribuição do Kubeflow versão 1.6.0-aws-b1.0.0 ou superior, os componentes de IA versão 2 já estão configurados SageMaker .

1. Instale o SageMaker AI Operator for Kubernetes para usar os componentes de SageMaker IA versão 2.

   Siga a seção *Configuração* do [tutorial Machine Learning with ACK SageMaker AI Controller](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup).

1. Configure as permissões do RBAC para a função de execução (conta de serviço) usada pelos pods do Kubeflow Pipelines. Na implantação autônoma do Kubeflow Pipelines, as execuções do pipeline são executadas no namespace `kubeflow` usando a conta de serviço `pipeline-runner`.

   1. Crie um [RoleBinding](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#rolebinding-example)que dê permissão à conta de serviço para gerenciar recursos personalizados de SageMaker IA.

      ```
      cat > manage_sagemaker_cr.yaml <<EOF
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
      name: manage-sagemaker-cr  
      namespace: kubeflow
      subjects:
      - kind: ServiceAccount
      name: pipeline-runner
      namespace: kubeflow
      roleRef:
      kind: ClusterRole
      name: ack-sagemaker-controller 
      apiGroup: rbac.authorization.k8s.io
      EOF
      ```

      ```
      kubectl apply -f manage_sagemaker_cr.yaml
      ```

   1. Certifique-se de que o rolebinding foi criado executando:

      ```
      kubectl get rolebinding manage-sagemaker-cr -n kubeflow -o yaml
      ```

### Configuração para componentes de SageMaker IA versão 1
<a name="permissions-for-SM-v1"></a>

Para executar a versão 1 do SageMaker AI Components para o Kubeflow Pipelines, os pods do Kubeflow Pipeline precisam acessar a IA. SageMaker 

**Importante**  
Siga esta seção se você estiver usando o Kubeflow completo na AWS implantação ou o Kubeflow Pilepines autônomo.

Para criar uma função de execução do IAM que conceda aos pods do pipeline Kubeflow acesso à SageMaker IA, siga estas etapas:

1. Exporte o nome do cluster (por exemplo, *my-cluster-name*) e a região do cluster (por exemplo, *us-east-1*).

   ```
   export CLUSTER_NAME=my-cluster-name
   export CLUSTER_REGION=us-east-1
   ```

1. Exporte o namespace e o nome da conta de serviço de acordo com sua instalação.
   + Para obter o Kubeflow completo na AWS instalação, exporte seu perfil `namespace` (por exemplo, *kubeflow-user-example-com*) e o *editor padrão como a conta de serviço*.

     ```
     export NAMESPACE=kubeflow-user-example-com
     export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=default-editor
     ```
   + Para a implantação autônoma do Pipelines, exporte o *kubeflow* como a `namespace` e o *pipeline-runner* como a conta de serviço.

     ```
     export NAMESPACE=kubeflow
     export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=pipeline-runner
     ```

1. Criar um o provedor [IAM OIDC para o cluster do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) com o comando a seguir.

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
               --region ${CLUSTER_REGION} --approve
   ```

1. Crie uma função de execução do IAM para que os pods do KFP acessem os AWS serviços (SageMaker AI,). CloudWatch

   ```
   eksctl create iamserviceaccount \
   --name ${KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT} \
   --namespace ${NAMESPACE} --cluster ${CLUSTER_NAME} \
   --region ${CLUSTER_REGION} \
   --attach-policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess \
   --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess \
   --override-existing-serviceaccounts \
   --approve
   ```

Depois que suas permissões de pipeline estiverem configuradas para acessar a versão 1 dos componentes de SageMaker IA, siga o guia de componentes de SageMaker IA para pipelines do Kubeflow na documentação do [Kubeflow](https://awslabs.github.io/kubeflow-manifests/docs/amazon-sagemaker-integration/sagemaker-components-for-kubeflow-pipelines/) on. AWS 

## Acesse a interface do usuário do KFP (painel do Kubeflow)
<a name="access-the-kfp-ui"></a>

A interface do usuário do Kubeflow Pipelines é usada para gerenciar e monitorar experimentos, trabalhos e execuções em seu cluster. Para obter instruções sobre como acessar a interface do usuário do Kubeflow Pipelines a partir do nó do gateway, siga as etapas que se aplicam à sua opção de implantação nesta seção.

### Kubeflow completo na implantação AWS
<a name="access-kfp-ui-full-kubeflow-deployment"></a>

Siga as instruções no [AWS site do Kubeflow on](https://awslabs.github.io/kubeflow-manifests/docs/deployment/connect-kubeflow-dashboard/) para se conectar ao painel do Kubeflow e navegar até a guia Pipelines.

### Implantação autônoma do Kubeflow Pipelines
<a name="access-kfp-ui-standalone-kubeflow-pipelines-deployment"></a>

Use o encaminhamento de portas para acessar a interface do usuário do Kubeflow Pipelines a partir do nó do gateway seguindo essas etapas.

#### Configurar o encaminhamento de portas para o serviço KFP UI
<a name="set-up-port-forwarding-to-the-kfp-ui-service"></a>

Execute o comando a seguir na linha de comando do nó do gateway.

1. Verifique que o serviço KFP UI está em execução usando o comando a seguir.

   ```
   kubectl -n kubeflow get service ml-pipeline-ui
   
   NAME             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
   ml-pipeline-ui   ClusterIP   10.100.38.71   <none>        80/TCP    2d22h
   ```

1. Execute o comando a seguir para configurar o encaminhamento de portas para o serviço de interface do KFP. Isso encaminha a interface do usuário do KFP para a porta 8080 no nó do gateway e permite que você acesse a interface do KFP a partir do seu navegador. 

   ```
   kubectl port-forward -n kubeflow service/ml-pipeline-ui 8080:80
   ```

   A porta de encaminhamento da sua máquina remota é interrompida se não houver atividade. Execute esse comando novamente se o painel não conseguir obter logs ou atualizações. Se os comandos retornarem um erro, verifique se não há nenhum processo em execução na porta que você está tentando usar. 

#### Acesse o serviço KFP UI
<a name="set-up-port-forwarding-to-the-kfp-ui-service-access"></a>

Seu método de acessar a interface do usuário do KFP depende do tipo de nó do gateway.
+ Máquina local como nó do gateway:

  1. Acesse o painel em seu navegador da seguinte forma: 

     ```
     http://localhost:8080
     ```

  1. Escolha **Pipelines** para acessar a interface do usuário dos pipelines. 
+ Instância do Amazon EC2 como nó do gateway:

  1. Você precisa configurar um túnel SSH na sua instância do Amazon EC2 para acessar o painel do Kubeflow a partir do navegador da sua máquina local. 

     Em uma nova sessão de terminal em sua máquina local, execute o seguinte: Substitua `<public-DNS-of-gateway-node>` pelo endereço IP da sua instância encontrado no console do Amazon EC2. Você também pode usar o DNS público. Substitua `<path_to_key>` pelo caminho para a chave pem usada para acessar o nó do gateway. 

     ```
     public_DNS_address=<public-DNS-of-gateway-node>
     key=<path_to_key>
     
     on Ubuntu:
     ssh -i ${key} -L 9000:localhost:8080 ubuntu@${public_DNS_address}
     
     or on Amazon Linux:
     ssh -i ${key} -L 9000:localhost:8080 ec2-user@${public_DNS_address}
     ```

  1. Acesse o painel no seu navegador. 

     ```
     http://localhost:9000
     ```

  1. Escolha **Pipelines** para acessar a interface do usuário do KFP. 

#### (Opcional) Conceda às instâncias de notebook de SageMaker IA acesso ao Amazon EKS e execute pipelines do KFP a partir do seu notebook.
<a name="add-access-to-additional-iam-users-or-roles"></a>

Uma instância de SageMaker notebook é uma instância computacional totalmente gerenciada do Amazon EC2 que executa o aplicativo Jupyter Notebook. Você pode usar uma instância de caderno para criar e gerenciar cadernos Jupyter e, em seguida, definir, compilar, implantar e executar seus pipelines do KFP usando ou a CLI do KFP AWS SDK para Python (Boto3) . 

1. Siga as etapas em [Criar uma instância de SageMaker notebook para criar sua instância](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-setup-working-env.html) de notebook e, em seguida, anexe a `S3FullAccess` política à função de execução do IAM.

1. Na linha de comando do seu nó do gateway, execute o comando a seguir para recuperar o ARN da função IAM da instância do caderno que você criou. Substitua `<instance-name>` pelo nome da sua instância.

   ```
   aws sagemaker describe-notebook-instance --notebook-instance-name <instance-name> --region <region> --output text --query 'RoleArn'
   ```

   Esse comando gera o ARN do perfil do IAM no `arn:aws:iam::<account-id>:role/<role-name>` formato. Anote este ARN.

1. Execute esse comando para anexar as seguintes políticas (Amazon AmazonSageMakerFullAccess EKSWorkerNodePolicy, AmazonS3FullAccess) a essa função do IAM. Substitua `<role-name>` com `<role-name>` em seu ARN. 

   ```
   aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
   aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
   aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
   ```

1. Os clusters do Amazon EKS usam funções do IAM para controlar o acesso ao cluster. As regras são implementadas em um mapa de configuração chamado `aws-auth`. `eksctl` fornece comandos para ler e editar o mapa de configuração `aws-auth`. Somente os usuários que têm acesso ao cluster podem editar esse mapa de configuração.

   `system:masters`é um dos grupos de usuários padrão com permissões de superusuário no cluster. Adicione seu usuário a esse grupo ou crie um grupo com permissões mais restritivas.

1. Vincule a função ao seu cluster executando o comando a seguir. Substituir `<IAM-Role-arn>` pelo ARN da perfil do IAM. `<your_username>` pode ser qualquer nome de usuário exclusivo.

   ```
   eksctl create iamidentitymapping \
   --cluster <cluster-name> \
   --arn <IAM-Role-arn> \
   --group system:masters \
   --username <your-username> \
   --region <region>
   ```

1. Abra um notebook Jupyter na sua instância de SageMaker IA e execute o comando a seguir para garantir que ele tenha acesso ao cluster.

   ```
   aws eks --region <region> update-kubeconfig --name <cluster-name>
   kubectl -n kubeflow get all | grep pipeline
   ```

# Use componentes de SageMaker IA
<a name="kubernetes-sagemaker-components-tutorials"></a>

Neste tutorial, você executa um pipeline usando componentes de SageMaker IA para pipelines do Kubeflow para treinar um modelo de classificação usando o Kmeans com o conjunto de dados MNIST em IA. SageMaker O fluxo de trabalho usa o Kubeflow Pipelines como orquestrador e SageMaker IA para executar cada etapa do fluxo de trabalho. O exemplo foi retirado de um [exemplo de SageMaker IA](https://github.com/aws/amazon-sagemaker-examples/blob/8279abfcc78bad091608a4a7135e50a0bd0ec8bb/sagemaker-python-sdk/1P_kmeans_highlevel/kmeans_mnist.ipynb) existente e modificado para funcionar com componentes de SageMaker IA para pipelines do Kubeflow.

Você pode definir seu pipeline em Python usando o painel do KFP AWS SDK para Python (Boto3) , a CLI do KFP ou o Boto3 para compilar, implantar e executar seus fluxos de trabalho. O código completo do exemplo do pipeline de classificação MNIST está disponível no repositório [Kubeflow](https://github.com/kubeflow/pipelines/tree/master/samples/contrib/aws-samples/mnist-kmeans-sagemaker#mnist-classification-with-kmeans) Github. Para usá-lo, clone os arquivos Python no nó do gateway.

Você pode encontrar exemplos adicionais de [ SageMaker AI Kubeflow Pipelines](https://github.com/kubeflow/pipelines/tree/master/samples/contrib/aws-samples) em. GitHub Para obter informações sobre os componentes usados, consulte o [ GitHub repositório KubeFlow Pipelines](https://github.com/kubeflow/pipelines/tree/master/components/aws/sagemaker).

Para executar o exemplo do pipeline de classificação, crie uma função de execução do SageMaker AI IAM concedendo ao seu trabalho de treinamento a permissão para acessar AWS recursos e continue com as etapas que correspondem à sua opção de implantação.

## Crie uma função de execução de SageMaker IA
<a name="create-an-amazonsagemaker-execution-role"></a>

A função `kfp-example-sagemaker-execution-role` do IAM é uma função de tempo de execução assumida pelos trabalhos de SageMaker IA para acessar AWS recursos. No comando a seguir, você cria uma função de execução do IAM chamada`kfp-example-sagemaker-execution-role`, anexa duas políticas gerenciadas (AmazonSageMakerFullAccess, AmazonS3FullAccess) e cria uma relação de confiança com a SageMaker IA para conceder aos trabalhos de SageMaker IA acesso a esses recursos. AWS 

Você fornece essa função como um parâmetro de entrada ao executar o pipeline.

Execute o comando da a seguir para criar a função. Anote o ID do ARN retornado na saída.

```
SAGEMAKER_EXECUTION_ROLE_NAME=kfp-example-sagemaker-execution-role

TRUST="{ \"Version\": \"2012-10-17		 	 	 \", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"sagemaker.amazonaws.com\" }, \"Action\": \"sts:AssumeRole\" } ] }"
aws iam create-role --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --assume-role-policy-document "$TRUST"
aws iam attach-role-policy --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
aws iam attach-role-policy --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess

aws iam get-role --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --output text --query 'Role.Arn'
```

## Kubeflow completo na implantação AWS
<a name="run-pipelines-on-full-kubeflow-deployment"></a>

Siga as instruções do [tutorial do SageMaker Training Pipeline para classificação MNIST com K-Means](https://awslabs.github.io/kubeflow-manifests/docs/amazon-sagemaker-integration/sagemaker-components-for-kubeflow-pipelines/).

## Implantação autônoma do Kubeflow Pipelines
<a name="run-pipelines-on-standalone-kubeflow-pipelines-deployment"></a>

### Preparar conjuntos de dados
<a name="prepare-datasets"></a>

Para executar os pipelines, você precisa fazer upload do script de pré-processamento da extração de dados em um bucket do Amazon S3. Esse bucket e todos os recursos desse exemplo devem estar localizados na `us-east-1` região. Para obter informações sobre como criar um bucket, consulte [Criar um bucket](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html).

Na `mnist-kmeans-sagemaker` pasta do repositório Kubeflow que você clonou no nó do gateway, execute o comando a seguir para fazer o upload do `kmeans_preprocessing.py` arquivo no bucket do Amazon S3. Altere `<bucket-name>` para o nome do bucket do Amazon S3.

```
aws s3 cp mnist-kmeans-sagemaker/kmeans_preprocessing.py s3://<bucket-name>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
```

### Compile e implante seu pipeline
<a name="compile-and-deploy-your-pipeline"></a>

Depois de definir o pipeline, você deve compilá-lo em uma representação intermediária antes de enviá-lo ao serviço Kubeflow Pipelines em seu cluster. A representação intermediária é uma especificação de fluxo de trabalho na forma de um arquivo YAML compactado em um arquivo tar.gz. Você precisa do SDK do KFP para compilar seu pipeline.

#### Instalar o SDK do KFP
<a name="install-kfp-sdk"></a>

Execute o seguinte na linha de comando do seu nó de gateway:

1. Instale o SDK do KFP seguindo as instruções na documentação dos pipelines do [Kubeflow](https://www.kubeflow.org/docs/pipelines/sdk/install-sdk/).

1. Verifique se o SDK do KFP está instalado com o seguinte comando:

   ```
   pip show kfp
   ```

1. Verifique se `dsl-compile` foi instalado corretamente da seguinte forma:

   ```
   which dsl-compile
   ```

#### Compilar seu pipeline
<a name="compile-your-pipeline"></a>

Você tem três opções para interagir com o Kubeflow Pipelines: KFP UI, KFP CLI ou KFP SDK. As seções a seguir ilustram o fluxo de trabalho usando a interface de usuário e a CLI do KFP.

Concluir as etapas a seguir no nó do gateway.

1. Modifique seu arquivo Python com o nome do bucket do Amazon S3 e o ARN da perfil do IAM.

1. Use o comando `dsl-compile` da linha de comando para compilar seu pipeline da seguinte maneira: Substitua `<path-to-python-file>` pelo caminho para seu pipeline e `<path-to-output>` pelo local em que você deseja que seu arquivo tar.gz esteja.

   ```
   dsl-compile --py <path-to-python-file> --output <path-to-output>
   ```

#### Carregue e execute o pipeline usando a CLI do KFP
<a name="upload-and-run-the-pipeline-using-the-kfp-cli"></a>

Conclua as etapas a seguir na linha de comando do seu nó do gateway. O KFP organiza as execuções do seu pipeline como experimentos. Você tem a opção de especificar o nome do experimento. Se você não especificar uma, a execução será listada em Experimento **padrão**.

1. Faça o upload do seu pipeline da seguinte forma:

   ```
   kfp pipeline upload --pipeline-name <pipeline-name> <path-to-output-tar.gz>
   ```

   A saída será semelhante à seguinte: Anote o pipeline `ID`.

   ```
   Pipeline 29c3ff21-49f5-4dfe-94f6-618c0e2420fe has been submitted
   
   Pipeline Details
   ------------------
   ID           29c3ff21-49f5-4dfe-94f6-618c0e2420fe
   Name         sm-pipeline
   Description
   Uploaded at  2020-04-30T20:22:39+00:00
   ...
   ...
   ```

1. Criar uma execução usando o comando a seguir. Atualmente, o comando de execução da CLI do KFP não é compatível com a especificação de parâmetros de entrada ao criar a execução. Você precisa atualizar seus parâmetros no arquivo do AWS SDK para Python (Boto3) pipeline antes de compilar. Substitua `<experiment-name>` e `<job-name>` por qualquer nome. Substitua `<pipeline-id>` pelo ID do pipeline enviado. Substitua `<your-role-arn>` pelo ARN de `kfp-example-pod-role`. Substitua `<your-bucket-name>` pelo nome do bucket do Amazon S3 que você criou. 

   ```
   kfp run submit --experiment-name <experiment-name> --run-name <job-name> --pipeline-id <pipeline-id> role_arn="<your-role-arn>" bucket_name="<your-bucket-name>"
   ```

   Você também pode enviar diretamente uma execução usando o pacote de pipeline compilado criado como saída do comando `dsl-compile`.

   ```
   kfp run submit --experiment-name <experiment-name> --run-name <job-name> --package-file <path-to-output> role_arn="<your-role-arn>" bucket_name="<your-bucket-name>"
   ```

   A saída será semelhante a:

   ```
   Creating experiment aws.
   Run 95084a2c-f18d-4b77-a9da-eba00bf01e63 is submitted
   +--------------------------------------+--------+----------+---------------------------+
   | run id                               | name   | status   | created at                |
   +======================================+========+==========+===========================+
   | 95084a2c-f18d-4b77-a9da-eba00bf01e63 | sm-job |          | 2020-04-30T20:36:41+00:00 |
   +--------------------------------------+--------+----------+---------------------------+
   ```

1. Navegue até a interface do usuário para verificar o progresso do trabalho.

#### Faça o upload e execute o pipeline usando a interface do usuário do KFP
<a name="upload-and-run-the-pipeline-using-the-kfp-ui"></a>

1. No painel à esquerda, selecione a guia **Pipelines**. 

1. **No canto superior direito, escolha \$1. UploadPipeline** 

1. Inserir um nome descrição de pipeline. 

1. Escolha **Fazer upload de um arquivo** e insira o caminho para o arquivo tar.gz que você criou usando a CLI ou com AWS SDK para Python (Boto3).

1. No painel à esquerda, selecione a guia **Pipelines**.

1. Encontre o pipeline que você criou.

1. Escolha **\$1CreateRun**.

1. Insira seus parâmetros de entrada.

1. Escolha **Executar**.

### Execute predições
<a name="running-predictions"></a>

Depois que seu pipeline de classificação for implantado, você poderá executar predições de classificação em relação ao endpoint criado pelo componente Deploy. Use a interface do usuário do KFP para verificar os artefatos de saída `sagemaker-deploy-model-endpoint_name`. Faça o download do arquivo.tgz para extrair o nome do endpoint ou verifique o console de SageMaker IA na região que você usou.

#### Configurar permissões para executar predições
<a name="configure-permissions-to-run-predictions"></a>

Se você quiser executar predições a partir do nó do gateway, pule esta seção.

**Para usar qualquer outra máquina para executar predições, atribua a permissão `sagemaker:InvokeEndpoint` ao perfil do IAM usada pela máquina cliente.**

1. No nó do gateway, execute o seguinte para criar um arquivo de política do IAM:

   ```
   cat <<EoF > ./sagemaker-invoke.json
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sagemaker:InvokeEndpoint"
               ],
               "Resource": "*"
           }
       ]
   }
   EoF
   ```

1. Anexe a política ao perfil do IAM do nó do cliente.

   Execute o seguinte comando: Substitua `<your-instance-IAM-role>` pelo nome da perfil do IAM. Substitua `<path-to-sagemaker-invoke-json>` pelo caminho para o arquivo de política que você criou.

   ```
   aws iam put-role-policy --role-name <your-instance-IAM-role> --policy-name sagemaker-invoke-for-worker --policy-document file://<path-to-sagemaker-invoke-json>
   ```

#### Execute predições
<a name="run-predictions"></a>

1. Crie um AWS SDK para Python (Boto3) arquivo da sua máquina cliente chamado `mnist-predictions.py` com o conteúdo a seguir. Substitua a variável `ENDPOINT_NAME`. O script carrega o conjunto de dados MNIST, cria um CSV a partir desses dígitos e, em seguida, envia o CSV ao endpoint para predição e imprime os resultados.

   ```
   import boto3
   import gzip
   import io
   import json
   import numpy
   import pickle
   
   ENDPOINT_NAME='<endpoint-name>'
   region = boto3.Session().region_name
   
   # S3 bucket where the original mnist data is downloaded and stored
   downloaded_data_bucket = f"jumpstart-cache-prod-{region}"
   downloaded_data_prefix = "1p-notebooks-datasets/mnist"
   
   # Download the dataset
   s3 = boto3.client("s3")
   s3.download_file(downloaded_data_bucket, f"{downloaded_data_prefix}/mnist.pkl.gz", "mnist.pkl.gz")
   
   # Load the dataset
   with gzip.open('mnist.pkl.gz', 'rb') as f:
       train_set, valid_set, test_set = pickle.load(f, encoding='latin1')
   
   # Simple function to create a csv from our numpy array
   def np2csv(arr):
       csv = io.BytesIO()
       numpy.savetxt(csv, arr, delimiter=',', fmt='%g')
       return csv.getvalue().decode().rstrip()
   
   runtime = boto3.Session(region).client('sagemaker-runtime')
   
   payload = np2csv(train_set[0][30:31])
   
   response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
                                      ContentType='text/csv',
                                      Body=payload)
   result = json.loads(response['Body'].read().decode())
   print(result)
   ```

1. Execute o AWS SDK para Python (Boto3) arquivo da seguinte forma:

   ```
   python mnist-predictions.py
   ```

### Exibir resultados e logs
<a name="view-results-and-logs"></a>

Quando o pipeline está em execução, você pode escolher qualquer componente para verificar os detalhes da execução, como entradas e saídas. Isso lista os nomes dos recursos criados.

Se a solicitação do KFP for processada com sucesso e um trabalho de SageMaker IA for criado, os registros do componente na interface do usuário do KFP fornecerão um link para o trabalho criado no AI. SageMaker Os CloudWatch registros também são fornecidos se o trabalho for criado com sucesso. 

Se você executar muitos trabalhos de pipeline no mesmo cluster, poderá ver uma mensagem de erro indicando que você não tem pods suficientes disponíveis. Para corrigir isso, faça login no nó do gateway e exclua os pods criados pelos pipelines que você não está usando:

```
kubectl get pods -n kubeflow
kubectl delete pods -n kubeflow <name-of-pipeline-pod>
```

### Limpeza
<a name="cleanup"></a>

Quando você terminar seu pipeline, precisará limpar seus recursos.

1. **No painel do KFP, encerre as execuções do seu pipeline se elas não saírem corretamente, escolhendo Encerrar.**

1. Se a opção **Terminate** não funcionar, faça login no nó do gateway e encerre manualmente todos os pods criados pela execução do pipeline da seguinte maneira: 

   ```
   kubectl get pods -n kubeflow
   kubectl delete pods -n kubeflow <name-of-pipeline-pod>
   ```

1. Usando sua AWS conta, faça login no serviço de SageMaker IA. Interrompa manualmente todos os trabalhos de treinamento, transformação em lote e HPO. Exclua modelos, buckets de dados e endpoints para evitar custos adicionais. Encerrar as execuções do pipeline não interrompe os trabalhos na SageMaker IA.

# SageMaker Empregos em notebooks
<a name="notebook-auto-run"></a>

Você pode usar a Amazon SageMaker AI para criar, treinar e implantar de forma interativa modelos de aprendizado de máquina a partir do seu notebook Jupyter em qualquer ambiente. JupyterLab No entanto, existem vários cenários nos quais você pode querer executar seu caderno como um trabalho programado e não interativo. Por exemplo, talvez você queira criar relatórios de auditoria regulares que analisem todos os trabalhos de treinamento executados em um determinado período de tempo e analisem o valor comercial da implantação desses modelos na produção. Ou talvez você queira ampliar um trabalho de Feature Engineering depois de testar a lógica de transformação de dados em um pequeno subconjunto de dados. Outros os casos de uso comuns são:
+ Programação de trabalhos para monitoramento de oscilação de modelos
+ Explorando o espaço de parâmetros para modelos melhores

Nesses cenários, você pode usar SageMaker Notebook Jobs para criar um trabalho não interativo (que a SageMaker IA executa como um trabalho de treinamento subjacente) para ser executado sob demanda ou em um cronograma. SageMaker O Notebook Jobs fornece uma interface de usuário intuitiva para que você possa agendar seus trabalhos diretamente JupyterLab escolhendo o widget Notebook Jobs (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/icons/notebook-schedule.png)) em seu notebook. Você também pode agendar seus trabalhos usando o SageMaker AI Python SDK, que oferece a flexibilidade de programar vários trabalhos de notebook em um fluxo de trabalho de pipeline. Você pode executar vários cadernos em paralelo e parametrizar células em seus cadernos para personalizar os parâmetros de entrada.

Esse recurso aproveita os serviços Amazon EventBridge, SageMaker Training e Pipelines e está disponível para uso em seu notebook Jupyter em qualquer um dos seguintes ambientes:
+ Instâncias do Studio, Studio Lab, Studio Classic ou Notebook
+ Configuração local, como sua máquina local, onde você executa JupyterLab

**Pré-requisitos**

Para programar um trabalho no caderno, certifique-se de que os seguintes critérios são atendidos:
+ Certifique-se de que seu caderno Jupyter e quaisquer scripts de inicialização ou inicialização sejam independentes em relação aos pacotes de código e software. Caso contrário, seu trabalho não interativo poderá incorrer em erros.
+ Verifique [Restrições e considerações](notebook-auto-run-constraints.md) se você configurou corretamente o caderno Jupyter, as configurações de rede e as configurações do contêiner.
+ Garanta que seu caderno possa acessar os recursos externos necessários, como clusters do Amazon EMR.
+ Se você estiver configurando o Notebook Jobs em um caderno Jupyter local, conclua a instalação. Para instruções, consulte [Guia de instalação](scheduled-notebook-installation.md). 
+ Se você se conectar a um cluster do Amazon EMR em seu caderno e quiser parametrizar seu comando de conexão do Amazon EMR, deverá aplicar uma solução alternativa usando variáveis de ambiente para transmitir parâmetros. Para obter detalhes, consulte [Conectar a um cluster do Amazon EMR a partir de seu caderno](scheduled-notebook-connect-emr.md).
+ Se você se conectar a um cluster do Amazon EMR usando a autenticação Kerberos, LDAP ou HTTP Basic Auth, deverá usar o para passar suas credenciais de segurança AWS Secrets Manager para o comando de conexão do Amazon EMR. Para obter detalhes, consulte [Conectar a um cluster do Amazon EMR a partir de seu caderno](scheduled-notebook-connect-emr.md).
+ (opcional) Se você quiser que a interface do usuário pré-carregue um script para ser executado na inicialização do caderno, seu administrador deverá instalá-la com uma configuração de ciclo de vida (LCC). Para obter informações sobre como usar um script de LCC, consulte [Personalizar uma instância do caderno usando um script de configuração de ciclo de vida](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html).

# Guia de instalação
<a name="scheduled-notebook-installation"></a>

A seguir, são apresentadas informações sobre o que você precisa instalar para usar o Notebook Jobs em seu JupyterLab ambiente.

**Para Amazon SageMaker Studio e Amazon SageMaker Studio Lab**

Se o seu notebook estiver no Amazon SageMaker Studio ou no Amazon SageMaker Studio Lab, você não precisará realizar instalações adicionais. O SageMaker Notebook Jobs está incorporado à plataforma. Para configurar as permissões necessárias para o Studio, consulte [Configurar políticas e permissões para o Studio](scheduled-notebook-policies-studio.md).

**Para cadernos Jupyter locais**

Se você quiser usar o SageMaker Notebook Jobs em seu JupyterLab ambiente local, precisará realizar uma instalação adicional.

Para instalar o SageMaker Notebook Jobs, conclua as seguintes etapas:

1. Instalar o Python 3. Para obter detalhes, consulte [Instalando o Python 3 e os pacotes do Python](https://www.codecademy.com/article/install-python3).

1. Instale JupyterLab a versão 4 ou superior. Para obter detalhes, consulte a [documentação JupyterLab do SDK](https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html).

1. Instale AWS CLI o. Para obter detalhes, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Instale dois conjuntos de permissões. O usuário do IAM precisa de permissões para enviar trabalhos para a SageMaker IA e, uma vez enviado, o trabalho do notebook em si assume uma função do IAM que precisa de permissões para acessar recursos, dependendo das tarefas do trabalho.

   1. Se você ainda não criou um usuário do IAM, consulte [Criação de um usuário do IAM na sua conta da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html).

   1. Se você ainda não criou sua função de trabalho do caderno, consulte [Criar uma função para delegar permissões a um usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).

   1. Anexe as permissões e a política de confiança necessárias para vincular ao seu usuário e função. Para step-by-step obter instruções e detalhes da permissão, consulte[Instale políticas e permissões para ambientes Jupyter locais](scheduled-notebook-policies-other.md).

1. Gere AWS credenciais para seu usuário IAM recém-criado e salve-as no arquivo de credenciais (\$1/.aws/credentials) do seu ambiente. JupyterLab Isto pode ser feito com o Comando `aws configure` da CLI. Para obter instruções, consulte a seção *Definir e visualizar as configurações usando comandos* em [Configuração e configurações do arquivo de credenciais](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).

1. (opcional) Por padrão, a extensão do agendador usa uma imagem pré-criada do SageMaker AI Docker com Python 2.0. Qualquer kernel não padrão usado no caderno deve ser instalado no contêiner. Se você quiser executar seu caderno em um contêiner ou imagem do Docker, precisará criar uma imagem do Amazon Elastic Container Registry (Amazon ECR). Para obter informações sobre como enviar uma imagem do Docker para um Amazon ECR, consulte [Enviando uma](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) imagem do Docker.

1. Adicione a JupyterLab extensão para SageMaker Notebook Jobs. Você pode adicioná-lo ao seu JupyterLab ambiente com o comando:`pip install amazon_sagemaker_jupyter_scheduler`. Talvez seja necessário reiniciar o servidor Jupyter com o comando: `sudo systemctl restart jupyter-server`.

1. Comece JupyterLab com o comando:`jupyter lab`.

1. Verifique se o widget Notebook Jobs (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/icons/notebook-schedule.png)) aparece na barra de tarefas do caderno Jupyter.

# Configurar políticas e permissões para o Studio
<a name="scheduled-notebook-policies-studio"></a>

Você precisará instalar as políticas e permissões adequadas antes de agendar sua primeira execução de caderno. As seguintes instruções foram fornecidas para a configuração das seguintes permissões:
+ Relações de confiança, função de execução de trabalhos
+ Permissões adicionais do IAM anexadas à função de execução do trabalho
+ (opcional) A política de AWS KMS permissão para usar uma chave KMS personalizada

**Importante**  
Se sua AWS conta pertence a uma organização com políticas de controle de serviço (SCP) em vigor, suas permissões efetivas são a interseção lógica entre o que é permitido pelo SCPs e o que é permitido pela sua função do IAM e pelas políticas de usuário. Por exemplo, se o SCP da sua organização especificar que você só pode acessar recursos em `us-east-1` e `us-west-1`, e suas políticas só permitem que você acesse recursos em `us-west-1` e `us-west-2`, em última análise, você só pode acessar recursos em `us-west-1`. Se você quiser exercer todas as permissões permitidas em sua função e políticas de usuário, sua organização SCPs deve conceder o mesmo conjunto de permissões que suas próprias políticas de usuário e função do IAM. Para obter detalhes sobre como determinar as solicitações permitidas, consulte [Determinar se uma solicitação é permitida ou negada em uma conta](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow).

**Relações de confiança**

Para modificar as relações de confiança, conclua as seguintes etapas:

1. Abra o [console do IAM](https://console.aws.amazon.com/iam/).

1. Selecione **Funções** no painel do lado esquerdo.

1. Encontre a função de execução do trabalho para seu trabalho do caderno e escolha o nome da função. 

1. Selecione a guia **Trust relationships (Relações de confiança)**.

1. Selecione **Edit trust policy** (Editar política de confiança).

1. Copie e cole a política a seguir:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "sagemaker.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "events.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Escolha **Atualizar política**.

## Permissões do IAM adicionais
<a name="scheduled-notebook-policies-add"></a>

Talvez seja necessário incluir permissões adicionais do IAM nas seguintes situações:
+ Suas funções de execução no Studio e de caderno são diferentes
+ Você precisa acessar os recursos do Amazon S3 por meio de um endpoint da VPC do S3
+ Você deseja usar uma chave KMS personalizada para criptografar seus buckets de entrada e saída do Amazon S3

A discussão a seguir fornece as políticas necessárias para cada caso.

### Permissões necessárias se a execução do Studio e as funções de trabalho do caderno forem diferentes
<a name="scheduled-notebook-policies-add-diffrole"></a>

O trecho JSON a seguir é um exemplo de política que você deve adicionar às funções de execução do Studio e do caderno se não usar a função de execução do Studio como função de trabalho do caderno. Revise e modifique essa política se precisar restringir ainda mais os privilégios.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"iam:PassRole",
         "Resource":"arn:aws:iam::*:role/*",
         "Condition":{
            "StringLike":{
               "iam:PassedToService":[
                  "sagemaker.amazonaws.com",
                  "events.amazonaws.com"
               ]
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "events:TagResource",
            "events:DeleteRule",
            "events:PutTargets",
            "events:DescribeRule",
            "events:PutRule",
            "events:RemoveTargets",
            "events:DisableRule",
            "events:EnableRule"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "aws:ResourceTag/sagemaker:is-scheduling-notebook-job":"true"
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:CreateBucket",
            "s3:PutBucketVersioning",
            "s3:PutEncryptionConfiguration"
         ],
         "Resource":"arn:aws:s3:::sagemaker-automated-execution-*"
      },
      {
            "Sid": "S3DriverAccess",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::sagemakerheadlessexecution-*"
            ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:ListTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:user-profile/*",
            "arn:aws:sagemaker:*:*:space/*",
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:AddTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:DescribeDhcpOptions",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DescribeRouteTables",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcEndpoints",
            "ec2:DescribeVpcs",
            "ecr:BatchCheckLayerAvailability",
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer",
            "ecr:GetAuthorizationToken",
            "s3:ListBucket",
            "s3:GetBucketLocation",
            "s3:GetEncryptionConfiguration",
            "s3:PutObject",
            "s3:DeleteObject",
            "s3:GetObject",
            "sagemaker:DescribeApp",
            "sagemaker:DescribeDomain",
            "sagemaker:DescribeUserProfile",
            "sagemaker:DescribeSpace",
            "sagemaker:DescribeStudioLifecycleConfig",
            "sagemaker:DescribeImageVersion",
            "sagemaker:DescribeAppImageConfig",
            "sagemaker:CreateTrainingJob",
            "sagemaker:DescribeTrainingJob",
            "sagemaker:StopTrainingJob",
            "sagemaker:Search",
            "sagemaker:CreatePipeline",
            "sagemaker:DescribePipeline",
            "sagemaker:DeletePipeline",
            "sagemaker:StartPipelineExecution"
         ],
         "Resource":"*"
      }
   ]
}
```

------

### Permissões necessárias para acessar recursos do Amazon S3 por meio de um endpoint da VPC do S3
<a name="scheduled-notebook-policies-add-vpc"></a>

Se você executar o SageMaker Studio no modo VPC privado e acessar o S3 por meio do VPC endpoint do S3, poderá adicionar permissões à política do VPC endpoint para controlar quais recursos do S3 são acessíveis por meio do VPC endpoint. Adicione as seguintes permissões à sua política de endpoint da VPC: Você pode modificar a política se precisar restringir ainda mais as permissões: por exemplo, você pode fornecer uma especificação mais restrita para o campo `Principal`.

```
{
    "Sid": "S3DriverAccess",
    "Effect": "Allow",
    "Principal": "*",
    "Action": [
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket"
    ],
    "Resource": "arn:aws:s3:::sagemakerheadlessexecution-*"
}
```

Para obter detalhes sobre como configurar uma política de endpoint de VPC do S3, consulte [Editar a política de endpoint de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#edit-vpc-endpoint-policy-s3).

### Permissões necessárias para usar uma chave KMS personalizada (opcional)
<a name="scheduled-notebook-policies-add-kms"></a>

Por padrão, os buckets de entrada e saída do Amazon S3 são criptografados usando criptografia do lado do servidor, mas você pode especificar uma chave do KMS personalizada para criptografar seus dados no bucket de saída do Amazon S3 e no volume de armazenamento anexado ao trabalho do caderno.

Se você quiser usar uma chave KMS personalizada, anexe a política a seguir e forneça seu próprio ARN da chave KMS.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
         "Effect":"Allow",
         "Action":[
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey",
            "kms:CreateGrant"
         ],
         "Resource":"arn:aws:kms:us-east-1:111122223333:key/key-id"
      }
   ]
}
```

------

# Instale políticas e permissões para ambientes Jupyter locais
<a name="scheduled-notebook-policies-other"></a>

Você precisará configurar as permissões e políticas necessárias para programar trabalhos de cadernos em um ambiente Jupyter local. O usuário do IAM precisa de permissões para enviar trabalhos para a SageMaker IA e a função do IAM que o próprio trabalho do notebook presume precisa de permissões para acessar recursos, dependendo das tarefas do trabalho. A seguir, forneceremos instruções sobre como configurar as permissões e políticas necessárias.

Você precisará instalar dois conjuntos de permissões. O diagrama a seguir mostra a estrutura de permissão para você agendar trabalhos do caderno em um ambiente Jupyter local. O usuário do IAM precisa configurar as permissões do IAM para enviar trabalhos para a SageMaker IA. Depois que o usuário envia o trabalho do caderno, o trabalho em si assume um perfil do IAM que tem permissões para acessar recursos, dependendo das tarefas do trabalho.

![\[\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/notebook-jobs-permissions.png)


As seções a seguir ajudam você a instalar as políticas e permissões necessárias tanto para o usuário do IAM quanto para a função de execução do trabalho.

## Permissões de usuário do IAM
<a name="scheduled-notebook-policies-other-user"></a>

**Permissões para enviar trabalhos para a SageMaker IA**

Para adicionar permissões para enviar trabalhos, conclua as seguintes etapas:

1. Abra o [console do IAM](https://console.aws.amazon.com/iam/).

1. Selecione **Usuários** no painel do lado esquerdo.

1. Encontre o usuário do IAM para seu trabalho no caderno e escolha o nome do usuário.

1. Escolha **Adicionar permissões** e depois **Criar política em linha** no menu suspenso.

1. Selecione a guia **JSON**.

1. Copie e cole a política a seguir:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "EventBridgeSchedule",
               "Effect": "Allow",
               "Action": [
                   "events:TagResource",
                   "events:DeleteRule",
                   "events:PutTargets",
                   "events:DescribeRule",
                   "events:EnableRule",
                   "events:PutRule",
                   "events:RemoveTargets",
                   "events:DisableRule"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                   }
               }
           },
           {
               "Sid": "IAMPassrole",
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*",
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": [
                           "sagemaker.amazonaws.com",
                           "events.amazonaws.com"
                       ]
                   }
               }
           },
           {
               "Sid": "IAMListRoles",
               "Effect": "Allow",
               "Action": "iam:ListRoles",
               "Resource": "*"
           },
           {
               "Sid": "S3ArtifactsAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:PutEncryptionConfiguration",
                   "s3:CreateBucket",
                   "s3:PutBucketVersioning",
                   "s3:ListBucket",
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:GetEncryptionConfiguration",
                   "s3:DeleteObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemaker-automated-execution-*"
               ]
           },
           {
               "Sid": "S3DriverAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemakerheadlessexecution-*"
               ]
           },
           {
               "Sid": "SagemakerJobs",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:DescribeTrainingJob",
                   "sagemaker:StopTrainingJob",
                   "sagemaker:DescribePipeline",
                   "sagemaker:CreateTrainingJob",
                   "sagemaker:DeletePipeline",
                   "sagemaker:CreatePipeline"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                   }
               }
           },
           {
               "Sid": "AllowSearch",
               "Effect": "Allow",
               "Action": "sagemaker:Search",
               "Resource": "*"
           },
           {
               "Sid": "SagemakerTags",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:ListTags",
                   "sagemaker:AddTags"
               ],
               "Resource": [
                   "arn:aws:sagemaker:*:*:pipeline/*",
                   "arn:aws:sagemaker:*:*:space/*",
                   "arn:aws:sagemaker:*:*:training-job/*",
                   "arn:aws:sagemaker:*:*:user-profile/*"
               ]
           },
           {
               "Sid": "ECRImage",
               "Effect": "Allow",
               "Action": [
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchGetImage"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

**AWS KMS política de permissão (opcional)**

Por padrão, os buckets de entrada e saída do Amazon S3 são criptografados usando criptografia do lado do servidor, mas você pode especificar uma chave do KMS personalizada para criptografar seus dados no bucket de saída do Amazon S3 e no volume de armazenamento anexado ao trabalho do caderno.

Se você quiser usar uma chave KMS personalizada, repita as instruções anteriores, anexando a política a seguir e forneça seu próprio ARN da chave KMS.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
         "Effect":"Allow",
         "Action":[
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey",
            "kms:CreateGrant"
         ],
         "Resource":"arn:aws:kms:us-east-1:111122223333:key/key-id"
      }
   ]
}
```

------

## Permissões da função de execução de trabalhos
<a name="scheduled-notebook-policies-other-job"></a>

**Relações de confiança**

Para modificar as relações de confiança da função de execução do trabalho, conclua as seguintes etapas:

1. Abra o [console do IAM](https://console.aws.amazon.com/iam/).

1. Selecione **Funções** no painel do lado esquerdo.

1. Encontre a função de execução do trabalho para seu trabalho do caderno e escolha o nome da função.

1. Selecione a guia **Trust relationships (Relações de confiança)**.

1. Selecione **Edit trust policy** (Editar política de confiança).

1. Copie e cole a política a seguir:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "sagemaker.amazonaws.com",
                       "events.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

**Permissões adicionais**

Depois de enviado, o trabalho do caderno precisa de permissões para acessar os recursos. As instruções a seguir mostram como adicionar um conjunto mínimo de permissões. Se necessário, adicione mais permissões com base nas necessidades de trabalho do seu caderno. Para adicionar permissões à sua função de execução de trabalho, conclua as seguintes etapas:

1. Abra o [console do IAM](https://console.aws.amazon.com/iam/).

1. Selecione **Funções** no painel do lado esquerdo.

1. Encontre a função de execução do trabalho para seu trabalho do caderno e escolha o nome da função.

1. Escolha **Adicionar permissões** e depois **Criar política em linha** no menu suspenso.

1. Selecione a guia **JSON**.

1. Copie e cole a política a seguir:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PassroleForJobCreation",
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*",
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": "sagemaker.amazonaws.com"
                   }
               }
           },
           {
               "Sid": "S3ForStoringArtifacts",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::sagemaker-automated-execution-*"
           },
           {
               "Sid": "S3DriverAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemakerheadlessexecution-*"
               ]
           },
           {
               "Sid": "SagemakerJobs",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:StartPipelineExecution",
                   "sagemaker:CreateTrainingJob"
               ],
               "Resource": "*"
           },
           {
               "Sid": "ECRImage",
               "Effect": "Allow",
               "Action": [
                   "ecr:GetDownloadUrlForLayer",
                   "ecr:BatchGetImage",
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchCheckLayerAvailability"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Adicione permissões a outros recursos que seu trabalho do caderno acessa.

1. Selecione **Revisar política**.

1. Insira um nome para sua política.

1. Selecione **Criar política**.

# Onde você pode criar um trabalho de caderno
<a name="create-notebook-auto-run"></a>

Se você quer criar um trabalho de caderno, você tem várias opções. A seguir, são apresentadas as opções de SageMaker IA para você criar uma tarefa de notebook.

Você pode criar um trabalho em seu JupyterLab notebook na interface do usuário do Studio ou criar um trabalho programaticamente com o SDK do Python SageMaker :
+ Se você criar seu trabalho de caderno na interface de usuário do Studio, fornecerá detalhes sobre a imagem e o kernel, as configurações de segurança e quaisquer variáveis ou scripts personalizados, além de seu trabalho ser agendado. Para obter detalhes sobre como agendar seu trabalho usando o SageMaker Notebook Jobs, consulte[Criar um trabalho de caderno no Studio](create-notebook-auto-run-studio.md).
+ Para criar um trabalho de notebook com o SDK do SageMaker Python, você cria um pipeline com uma etapa do Notebook Job e inicia uma execução sob demanda ou, opcionalmente, usa o recurso de agendamento de pipeline para agendar execuções futuras. O SageMaker SDK oferece a flexibilidade de personalizar seu pipeline — você pode expandir seu pipeline para um fluxo de trabalho com várias etapas de trabalho do notebook. Como você cria uma etapa do SageMaker Notebook Job e um pipeline, você pode acompanhar o status de execução do pipeline no painel de trabalhos do SageMaker Notebook Jobs e também visualizar o gráfico do pipeline no Studio. Para obter detalhes sobre como agendar seu trabalho com o SDK do SageMaker Python e links para exemplos de notebooks, consulte. [Crie um trabalho de notebook com um exemplo de SDK para SageMaker AI Python](create-notebook-auto-run-sdk.md)

# Crie um trabalho de notebook com um exemplo de SDK para SageMaker AI Python
<a name="create-notebook-auto-run-sdk"></a>

Para executar um notebook independente usando o SDK do SageMaker Python, você precisa criar uma etapa do Notebook Job, anexá-la a um pipeline e usar os utilitários fornecidos pelo Pipelines para executar seu trabalho sob demanda ou, opcionalmente, agendar um ou mais trabalhos futuros. As seções a seguir descrevem as etapas básicas para criar um trabalho de caderno sob demanda ou programado e monitorar a execução. Além disso, consulte a discussão a seguir se precisar passar parâmetros para seu trabalho de caderno ou conectar-se ao Amazon EMR em seu caderno: nesses casos, é necessária uma preparação adicional do seu caderno Jupyter. Você também pode aplicar padrões para um subconjunto dos argumentos de `NotebookJobStep`, para não precisar especificá-los toda vez que criar uma etapa de trabalho de caderno.

Para ver exemplos de cadernos que demonstram como agendar trabalhos em notebooks com o SageMaker AI Python SDK, [consulte exemplos de cadernos de tarefas em notebooks](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/notebook-job-step).

**Topics**
+ [Etapas para criar um trabalho de caderno](#create-notebook-auto-run-overall)
+ [Visualizar seus trabalhos de caderno no painel da interface do Studio](#create-notebook-auto-run-dash)
+ [Visualizar seu gráfico de pipeline no Studio](#create-notebook-auto-run-graph)
+ [Como passar parâmetros para seu caderno](#create-notebook-auto-run-passparam)
+ [Como se conectar ao cluster do Amazon EMR em seu caderno de entrada](#create-notebook-auto-run-emr)
+ [Configurar opções padrão](#create-notebook-auto-run-intdefaults)

## Etapas para criar um trabalho de caderno
<a name="create-notebook-auto-run-overall"></a>

Você pode criar um trabalho de caderno que seja executado imediatamente ou de acordo com um cronograma. As instruções a seguir descrevem os dois métodos.

**Para agendar um trabalho de caderno, conclua as seguintes etapas básicas:**

1. Crie uma instância de `NotebookJobStep`. Para obter detalhes sobre os `NotebookJobStep` parâmetros, consulte [sagemaker.workflow.steps. NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep). No mínimo, você pode fornecer os seguintes argumentos, conforme mostrado no trecho de código a seguir:
**Importante**  
Se você agendar o trabalho do notebook usando o SDK do SageMaker Python, só poderá especificar determinadas imagens para executar o trabalho do notebook. Para obter mais informações, consulte [Restrições de imagem para trabalhos de notebook do SageMaker AI Python SDK](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk).

   ```
   notebook_job_step = NotebookJobStep(
       input_notebook=input-notebook,
       image_uri=image-uri,
       kernel_name=kernel-name
   )
   ```

1. Crie um pipeline com o seu `NotebookJobStep` como uma etapa única, conforme mostrado no trecho a seguir:

   ```
   pipeline = Pipeline(
       name=pipeline-name,
       steps=[notebook_job_step],
       sagemaker_session=sagemaker-session,
   )
   ```

1. Execute o pipeline sob demanda ou, opcionalmente, agende futuras execuções de pipeline. Para iniciar uma execução imediata, use o seguinte comando:

   ```
   execution = pipeline.start(
       parameters={...}
   )
   ```

   Opcionalmente, você pode programar uma única execução futura de pipeline ou várias execuções em um intervalo predeterminado. Você especifica sua programação `PipelineSchedule` e, em seguida, passa o objeto de programação para seu pipeline com `put_triggers`. Para obter mais informações sobre como programar o pipeline, consulte [Agende um pipeline com o SDK do SageMaker Python](pipeline-eventbridge.md#build-and-manage-scheduling).

   O seguinte exemplo agenda seu pipeline para ser executado uma vez em 12 de dezembro de 2023, às 10:31:32 UTC.

   ```
   my_schedule = PipelineSchedule(  
       name="my-schedule“,  
       at=datetime(year=2023, month=12, date=25, hour=10, minute=31, second=32) 
   )  
   pipeline.put_triggers(triggers=[my_schedule])
   ```

   O seguinte exemplo agenda seu pipeline para ser executado às 10:15 UTC, na última sexta-feira de cada mês, durante os anos de 2022 e 2023. Para obter detalhes sobre o agendamento baseado em cron, consulte [Cronogramas baseado em cron](https://docs.aws.amazon.com/scheduler/latest/UserGuide/schedule-types.html#cron-based).

   ```
   my_schedule = PipelineSchedule(  
       name="my-schedule“,  
       cron="15 10 ? * 6L 2022-2023"
   )  
   pipeline.put_triggers(triggers=[my_schedule])
   ```

1. (Opcional) Visualize suas tarefas do notebook no painel de tarefas do SageMaker notebook. Os valores que você fornece para o argumento `tags` da etapa de trabalho do caderno controlam como a interface do Studio captura e exibe o trabalho. Para obter mais informações, consulte [Visualizar seus trabalhos de caderno no painel da interface do Studio](#create-notebook-auto-run-dash).

## Visualizar seus trabalhos de caderno no painel da interface do Studio
<a name="create-notebook-auto-run-dash"></a>

Os trabalhos de caderno que você cria como etapas de pipeline aparecem no painel do Studio Caderno Job se você especificar determinadas tags.

**nota**  
Somente trabalhos de notebook criados no Studio ou em JupyterLab ambientes locais criam definições de trabalhos. Portanto, se você criar seu trabalho no notebook com o SDK do SageMaker Python, não verá as definições do trabalho no painel Notebook Jobs. No entanto, você pode visualizar seus trabalhos de caderno conforme descrito em [Visualizar os trabalhos do caderno](view-notebook-jobs.md). 

Você pode controlar quais membros da equipe podem visualizar seus trabalhos de caderno com as seguintes tags:
+ Para exibir o caderno para todos os perfis de usuário ou [espaços](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl-user-guide.html) em um domínio, adicione a tag de domínio com o nome do seu domínio. Um exemplo é mostrado conforme a seguir:
  + chave: `sagemaker:domain-name`, valor: `d-abcdefghij5k`
+ Para exibir o trabalho do caderno para um determinado perfil de usuário em um domínio, adicione o perfil do usuário e as tags de domínio. Um exemplo de tag de perfil de usuário é mostrado a seguir:
  + chave: `sagemaker:user-profile-name`, valor: `studio-user`
+ Para exibir o trabalho do caderno em um [espaço](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl-user-guide.html), adicione as tags de espaço e de domínio. Um exemplo de tag de espaço é mostrado a seguir:
  + chave: `sagemaker:shared-space-name`, valor: `my-space-name`
+ Se você não anexar nenhum domínio, perfil de usuário ou tags de espaço, a interface de usuário do Studio não mostrará o trabalho do caderno criado pela etapa de pipeline. Nesse caso, você pode visualizar o trabalho de treinamento subjacente no console do trabalho de treinamento ou pode ver o status na [lista de execuções de pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-studio-view-execution.html).

Depois de configurar as tags necessárias para visualizar seus trabalhos no painel, consulte [Visualizar os trabalhos do caderno](view-notebook-jobs.md) para obter instruções sobre como visualizar seus trabalhos e baixar os resultados.

## Visualizar seu gráfico de pipeline no Studio
<a name="create-notebook-auto-run-graph"></a>

Como a etapa de trabalho do caderno faz parte de um pipeline, você pode visualizar o gráfico do pipeline (DAG) no Studio. No gráfico do pipeline, você pode visualizar o status da execução do pipeline e rastrear a linhagem. Para obter detalhes, consulte [Visualizar os detalhes de uma execução de pipeline](pipelines-studio-view-execution.md).

## Como passar parâmetros para seu caderno
<a name="create-notebook-auto-run-passparam"></a>

Se você quiser passar parâmetros para o trabalho do seu caderno (usando o argumento `parameters` de `NotebookJobStep`), precisa preparar seu caderno de entrada para receber os parâmetros. 

O executor de trabalho de caderno baseado em Papermill pesquisa uma célula Jupyter marcada com a tag `parameters` e aplica os novos parâmetros ou substituições de parâmetros imediatamente após a célula. Para obter detalhes, consulte [Parametrize seu caderno](notebook-auto-run-troubleshoot-override.md). 

Depois de realizar essa etapa, passe seus parâmetros para o seu `NotebookJobStep`, conforme mostrado no seguinte exemplo:

```
notebook_job_parameters = {
    "company": "Amazon"
}

notebook_job_step = NotebookJobStep(
    image_uri=image-uri,
    kernel_name=kernel-name,
    role=role-name,
    input_notebook=input-notebook,
    parameters=notebook_job_parameters,
    ...
)
```

## Como se conectar ao cluster do Amazon EMR em seu caderno de entrada
<a name="create-notebook-auto-run-emr"></a>

Se você se conectar a um cluster do Amazon EMR a partir do seu caderno Jupyter no Studio, talvez seja necessário modificar ainda mais o caderno Jupyter. Veja [Conectar a um cluster do Amazon EMR a partir de seu caderno](scheduled-notebook-connect-emr.md) se você precisar realizar alguma das seguintes tarefas em seu caderno:
+ **Passe parâmetros para o comando de conexão do Amazon EMR.** O Studio usa o Papermill para executar cadernos. Nos SparkMagic kernels, os parâmetros que você passa para o comando de conexão do Amazon EMR podem não funcionar conforme o esperado devido à forma como o Papermill passa as informações. SparkMagic
+ **Transmissão de credenciais de usuário para clusters do Amazon EMR autenticados por Kerberos, LDAP ou HTTP Basic Auth**. Você precisa passar as credenciais do usuário por meio do AWS Secrets Manager.

## Configurar opções padrão
<a name="create-notebook-auto-run-intdefaults"></a>

O SageMaker SDK oferece a opção de definir padrões para um subconjunto de parâmetros para que você não precise especificar esses parâmetros toda vez que criar uma instância. `NotebookJobStep` Os parâmetros são `role`, `s3_root_uri`, `s3_kms_key`, `volume_kms_key`, `subnets` e `security_group_ids`. Use o arquivo de configuração do SageMaker AI para definir os padrões para a etapa. Para obter informações sobre o arquivo de configuração do SageMaker AI, consulte [Como configurar e usar padrões com o SDK do Python SageMaker ](https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk). .

Para configurar os padrões de trabalho do caderno, aplique seus novos padrões na seção de trabalho do caderno do arquivo de configuração, conforme mostrado no trecho a seguir:

```
SageMaker:
  PythonSDK:
    Modules:
      NotebookJob:
        RoleArn: 'arn:aws:iam::555555555555:role/IMRole'
        S3RootUri: 's3://amzn-s3-demo-bucket/my-project'
        S3KmsKeyId: 's3kmskeyid'
        VolumeKmsKeyId: 'volumekmskeyid1'
        VpcConfig:
          SecurityGroupIds:
            - 'sg123'
          Subnets:
            - 'subnet-1234'
```

# Criar um trabalho de caderno no Studio
<a name="create-notebook-auto-run-studio"></a>

**nota**  
O agendador de notebooks é criado a partir dos serviços Amazon EventBridge, SageMaker Training e Pipelines. Se os trabalhos do seu caderno falharem, você poderá ver erros relacionados a esses serviços. A seguir, são apresentadas informações sobre como criar um trabalho de caderno na interface de usuário do Studio.

SageMaker O Notebook Jobs fornece as ferramentas para criar e gerenciar seus trabalhos de notebook não interativos usando o widget Notebook Jobs. Você pode criar trabalhos, visualizar os trabalhos que você criou e pausar, parar ou retomar trabalhos existentes. Você também pode modificar as programações do caderno.

Quando você cria seu trabalho de caderno programado com o widget, o programador tenta inferir uma seleção de opções padrão e preenche automaticamente o formulário para ajudar você a começar rapidamente. Se você estiver usando o Studio, no mínimo poderá enviar um trabalho sob demanda sem definir nenhuma opção. Você também pode enviar uma definição de trabalho de caderno (programada) fornecendo apenas as informações de programação específicas do horário. No entanto, você pode personalizar outros campos se seu trabalho programado exigir configurações especializadas. Se você estiver executando um caderno Jupyter local, a extensão do agendador fornece um atributo para você especificar seus próprios padrões (para um subconjunto de opções) para que você não precise inserir manualmente os mesmos valores todas as vezes.

Ao criar um trabalho no caderno, você pode incluir arquivos adicionais, como conjuntos de dados, imagens e scripts locais. Para fazer isso, escolha **Executar trabalho com pasta de entrada**. O Notebook Job agora terá acesso a todos os arquivos na pasta do arquivo de entrada. Enquanto o trabalho do caderno está em execução, a estrutura de arquivos do diretório permanece inalterada.

Para executar o caderno em uma programação fixa, conclua as seguintes etapas:

1. Abra o formulário **Criar trabalho**.

   Em JupyterLab ambientes locais, escolha o ícone **Criar um trabalho no notebook** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/icons/notebook-schedule.png)) na barra de tarefas. Se você não vir o ícone, siga as instruções para instalar em [Guia de instalação](scheduled-notebook-installation.md).

   No Studio, abra o formulário de duas formas:
   + Usando o **Navegador de Arquivos**

     1. No **Navegador de arquivos** no painel esquerdo, clique com o botão direito do mouse no caderno que você deseja executar como um trabalho programado.

     1. Selecione **Criar trabalho de caderno**.
   + Com o caderno do Studio
     + Dentro do caderno do Studio que você deseja executar como um trabalho programado, escolha o ícone **Criar um trabalho do caderno** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/icons/notebook-schedule.png)) na barra de ferramentas do Studio.

1. Preencha o formulário popup. O formulário exibe os seguintes campos:
   + **Nome do trabalho**: um nome descritivo que você especifica para seu trabalho.
   + **Arquivo de entrada**: o nome do caderno que você está programando para ser executado no modo não interativo.
   + **Tipo de computação**: o tipo de instância do Amazon EC2 na qual você deseja executar seu caderno.
   + **Parâmetros**: parâmetros personalizados que você pode especificar opcionalmente como entradas para seu caderno. Para usar esse atributo, você pode, opcionalmente, marcar uma célula específica em seu caderno Jupyter com a tag **parameters** para controlar onde os parâmetros são aplicados. Consulte mais detalhes em [Parametrize seu caderno](notebook-auto-run-troubleshoot-override.md).
   + (Opcional) **Executar trabalho com pasta de entrada**: se selecionada, o trabalho agendado terá acesso a todos os arquivos encontrados na mesma pasta do **arquivo de entrada**.
   + **Opções adicionais**: você pode especificar personalizações adicionais para seu trabalho. Por exemplo, você pode especificar uma imagem ou kernel, pastas de entrada e saída, opções de repetição e tempo limite de trabalho, detalhes de criptografia e scripts de inicialização personalizados. Para ver a lista completa das personalizações que você pode aplicar, consulte [Opções disponíveis](create-notebook-auto-execution-advanced.md).

1. Programe seu trabalho. Você pode executar seu caderno sob demanda ou em uma programação fixa.
   + Para executar o caderno sob demanda, conclua as seguintes etapas:
     + Selecione **Executar agora**.
     + Escolha **Criar**.
     + A guia **Notebook Jobs** é exibida. Escolha **Recarregar** para carregar seu trabalho no painel.
   + Para executar o caderno em uma programação fixa, conclua as seguintes etapas:
     + Escolha **Executar de acordo com uma programação**.
     + Escolha a lista suspensa **Intervalo** e selecione um intervalo. Os intervalos variam de cada minuto a mensalmente. Também é possível selecionar **Programação personalizada**.
     + Com base no intervalo escolhido, campos adicionais aparecem para ajudá-lo a especificar melhor o dia e a hora de execução desejados. Por exemplo, se você selecionar **Dia** para uma corrida diária, um campo adicional será exibido para você especificar o horário desejado. Observe que qualquer momento especificado está no formato UTC. Observe também que, se você escolher um intervalo pequeno, como um minuto, seus trabalhos se sobreporão se o trabalho anterior não for concluído quando o próximo trabalho for iniciado.

       Se você selecionar uma programação personalizada, use a sintaxe cron na caixa de expressão para especificar a data e a hora exatas da execução. A sintaxe cron é uma lista de dígitos separados por espaços, cada um representando uma unidade de tempo de segundos a anos. Para obter ajuda com a sintaxe cron, você pode escolher **Obter ajuda com a sintaxe cron na caixa** de expressão.
     + Escolha **Criar**.
     + A guia **Definições de trabalho do caderno** é exibida. Escolha **Recarregar** para carregar sua definição de trabalho no painel.

# Configurar opções padrão para cadernos locais
<a name="create-notebook-auto-execution-advanced-default"></a>

**Importante**  
Em 30 de novembro de 2023, a experiência anterior do Amazon SageMaker Studio agora se chama Amazon SageMaker Studio Classic. A seção a seguir é específica ao uso da aplicação Studio Classic. Para obter informações sobre como usar a experiência atualizada do Studio, consulte [SageMaker Estúdio Amazon](studio-updated.md).  
O Studio Classic ainda é mantido para cargas de trabalho existentes, mas não está mais disponível para integração. Você só pode parar ou excluir aplicativos do Studio Classic existentes e não pode criar novos. Recomendamos que você [migre sua carga de trabalho para a nova experiência do Studio](studio-updated-migrate.md).

Você pode configurar as opções padrão ao criar um trabalho no caderno. Isso pode economizar seu tempo caso planeje criar vários trabalhos de caderno com opções diferentes dos padrões fornecidos. As informações a seguir mostram como configurar as opções padrão para cadernos locais.

Se você precisar digitar (ou colar) manualmente valores personalizados no formulário **Criar um trabalho**, poderá armazenar novos valores padrão e a extensão do agendador inserirá seus novos valores sempre que você criar uma nova definição de trabalho. Este atributo está disponível nas seguintes opções:
+ **ARN de função**
+ **Pasta de entrada S3**
+ **Pasta de saída do S3**
+ **Chave do KMS de criptografia de saída** (se você ativar o **Configurar criptografia de trabalho**)
+ **Chave do KMS de criptografia de volume da instância de trabalho** (se você ativar o **Configurar criptografia de trabalho**)

Esse atributo economiza tempo se você inserir valores diferentes dos padrões fornecidos e continuar a usar esses valores para futuras execuções de trabalhos. As configurações de usuário escolhidas são armazenadas na máquina que executa seu JupyterLab servidor e são recuperadas com a ajuda da API nativa. Se você fornecer novos valores padrão para uma ou mais opções, mas não para todas as cinco opções, os padrões anteriores serão usados para aquelas que você não personalizou.

As instruções a seguir mostram como pré-visualizar os valores padrão existentes, definir novos valores padrão e redefinir seus valores padrão para seus trabalhos de caderno.

**Para pré-visualizar os valores padrão existentes para os trabalhos do caderno, conclua as seguintes etapas:**

1. Abra o console do Amazon SageMaker Studio Classic seguindo as instruções em[Inicie o Amazon SageMaker Studio Classic](studio-launch.md).

1. No **Navegador de arquivos** no painel esquerdo, clique com o botão direito do mouse no caderno que você deseja executar como um trabalho programado.

1. Selecione **Criar trabalho de caderno**.

1. Escolha **Opções adicionais** para expandir a guia das configurações de trabalho do caderno. Você pode ver as configurações padrão aqui. 

**Para definir novos valores padrão para seus trabalhos de caderno futuros, conclua as seguintes etapas:**

1. Abra o console do Amazon SageMaker Studio Classic seguindo as instruções em[Inicie o Amazon SageMaker Studio Classic](studio-launch.md).

1. No menu superior do Studio Classic, escolha **Configurações** e, em seguida, escolha **Editor de configurações avançadas**.

1. Escolha **Amazon SageMaker Scheduler** na lista abaixo de **Configurações**. É possível que já esteja aberto por padrão.

1. Você pode atualizar as configurações padrão diretamente da página da interface do usuário ou usando o editor JSON.
   + Na interface de usuário, você pode inserir novos valores para **ARN da função**, **Pasta de entrada do S3**, **Pasta de saída do S3**, **Chave do KMS de criptografia de saída** ou **Chave do KMS de criptografia de volume da instância de trabalho**. Se você alterar esses valores, verá os novos padrões para esses campos ao criar seu próximo trabalho no caderno em **Opções adicionais**.
   + (Opcional) Para atualizar os padrões do usuário usando o **Editor de configurações JSON**, conclua as seguintes etapas:

     1. No canto superior direito, escolha **Editor de configurações JSON**.

     1. Na barra lateral esquerda de **Configurações**, escolha **Amazon SageMaker AI Scheduler**. É possível que já esteja aberto por padrão.

        Você pode ver seus valores padrão atuais no painel **Preferências do usuário**.

        Você pode ver os valores padrão do sistema no painel **Padrões do sistema**.

     1. Para atualizar seus valores padrão, copie e cole o trecho JSON do painel **Padrões do sistema** no painel **Preferências do usuário** e atualize os campos.

     1. Se você atualizou os valores padrão, escolha o ícone **Salvar configurações do usuário** (![\[Icon of a cloud with an arrow pointing upward, representing cloud upload functionality.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/icons/Notebook_save.png)) no canto superior direito. Fechar o editor não salva as alterações.

**Se você alterou anteriormente e agora deseja redefinir os valores padrão definidos pelo usuário, conclua as seguintes etapas:**

1. No menu superior do Studio Classic, escolha **Configurações** e, em seguida, escolha **Editor de configurações avançadas**.

1. Escolha **Amazon SageMaker Scheduler** na lista abaixo de **Configurações**. É possível que já esteja aberto por padrão.

1. Você pode restaurar os padrões usando essa página de interface do usuário diretamente ou usando o editor JSON.
   + Na interface do usuário, você pode escolher **Restaurar padrões** no canto superior direito. Seus padrões são restaurados para strings vazias. Você só verá essa opção se tiver alterado anteriormente seus valores padrão.
   + (Opcional) Para restaurar as configurações padrão usando o **Editor de configurações JSON**, conclua as seguintes etapas:

     1. No canto superior direito, escolha **Editor de configurações JSON**.

     1. Na barra lateral esquerda de **Configurações**, escolha **Amazon SageMaker AI Scheduler**. É possível que já esteja aberto por padrão.

        Você pode ver seus valores padrão atuais no painel **Preferências do usuário**.

        Você pode ver os valores padrão do sistema no painel **Padrões do sistema**.

     1. Para restaurar as configurações padrão atuais, copie o conteúdo do painel **Padrões do sistema** para o painel **Preferências do usuário**.

     1. Escolha o ícone **Salvar configurações do usuário** (![\[Icon of a cloud with an arrow pointing upward, representing cloud upload functionality.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/icons/Notebook_save.png)) no canto superior direito. Fechar o editor não salva as alterações.

# Fluxos de trabalho do caderno
<a name="create-notebook-auto-run-dag"></a>

Como um trabalho do caderno executa seu código personalizado, você pode criar um pipeline que inclua uma ou mais etapas de trabalho do caderno. Os fluxos de trabalho de ML geralmente contêm várias etapas, como uma etapa de processamento para pré-processar dados, uma etapa de treinamento para criar seu modelo e uma etapa de avaliação do modelo, entre outras. Um possível uso dos trabalhos do caderno é lidar com o pré-processamento: você pode ter um caderno que executa a transformação ou ingestão de dados, uma etapa do EMR que executa a limpeza dos dados e outro trabalho do caderno que realiza a adição dos atributos de suas entradas antes de iniciar uma etapa de treinamento. Um trabalho no caderno pode exigir informações das etapas anteriores do pipeline ou da personalização especificada pelo usuário como parâmetros no caderno de entrada. Para obter exemplos que mostram como passar variáveis e parâmetros de ambiente para seu caderno e recuperar informações de etapas anteriores, consulte [Passar informações de e para a etapa do caderno](create-notebook-auto-run-dag-seq.md).

Em outro caso de uso, um dos seus trabalhos do caderno pode chamar outro caderno para realizar algumas tarefas durante a execução do caderno: nesse cenário, você precisa especificar esses cadernos de origem como dependências com a etapa de trabalho do caderno. Para obter mais informações sobre como chamar outro caderno, consulte [Invoque outro caderno em seu trabalho de caderno](create-notebook-auto-run-dag-call.md).

Para ver exemplos de cadernos que demonstram como agendar trabalhos em notebooks com o SageMaker AI Python SDK, [consulte exemplos de cadernos de tarefas em notebooks](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/notebook-job-step).

# Passar informações de e para a etapa do caderno
<a name="create-notebook-auto-run-dag-seq"></a>

As seções a seguir descrevem maneiras de passar informações para seu caderno como variáveis e parâmetros de ambiente.

## Passar variáveis de ambiente
<a name="create-notebook-auto-run-dag-seq-env-var"></a>

Passe variáveis de ambiente como um dicionário para o argumento `environment_variable` do seu `NotebookJobStep`, conforme mostrado no seguinte exemplo:

```
environment_variables = {"RATE": 0.0001, "BATCH_SIZE": 1000}

notebook_job_step = NotebookJobStep(
    ...
    environment_variables=environment_variables,
    ...
)
```

Você pode usar as variáveis de ambiente no caderno usando `os.getenv()`, conforme mostrado no seguinte exemplo:

```
# inside your notebook
import os
print(f"ParentNotebook: env_key={os.getenv('env_key')}")
```

## Passar parâmetros
<a name="create-notebook-auto-run-dag-seq-param"></a>

Ao passar parâmetros para a primeira etapa do Notebook Job em sua instância `NotebookJobStep`, você pode, opcionalmente, marcar uma célula em seu caderno Jupyter para indicar onde aplicar novos parâmetros ou substituições de parâmetros. Para obter instruções sobre como adicionar uma tag a uma célula em seu caderno Jupyter, consulte [Parametrize seu caderno](notebook-auto-run-troubleshoot-override.md).

Você passa parâmetros por meio do parâmetro `parameters` da etapa do Notebook Job, conforme mostrado no seguinte trecho:

```
notebook_job_parameters = {
    "company": "Amazon",
}

notebook_job_step = NotebookJobStep(
    ...
    parameters=notebook_job_parameters,
    ...
)
```

Dentro do seu caderno de entrada, seus parâmetros são aplicados após a célula marcada com `parameters` ou no início do caderno, se você não tiver uma célula com tag.

```
# this cell is in your input notebook and is tagged with 'parameters'
# your parameters and parameter overrides are applied after this cell
company='default'
```

```
# in this cell, your parameters are applied
# prints "company is Amazon"
print(f'company is {company}')
```

## Recuperar informações de uma etapa anterior
<a name="create-notebook-auto-run-dag-seq-interstep"></a>

A discussão a seguir explica como você pode extrair dados de uma etapa anterior para passar para a etapa do Notebook Job.

**Use o atributo `properties`**

Você pode usar as seguintes propriedades com o atributo `properties` da etapa anterior:
+ `ComputingJobName`: O nome do trabalho de treinamento
+ `ComputingJobStatus`: O status do trabalho de treinamento
+ `NotebookJobInputLocation`: O local de entrada do Amazon S3
+ `NotebookJobOutputLocationPrefix`: O caminho para as saídas do seu trabalho de treinamento, mais especificamente `{NotebookJobOutputLocationPrefix}/{training-job-name}/output/output.tar.gz`. contendo saídas
+ `InputNotebookName`: O nome do arquivo do caderno de entrada
+ `OutputNotebookName`: O nome do arquivo do caderno de saída (que pode não existir na pasta de saída do trabalho de treinamento se o trabalho falhar)

O trecho de código a seguir mostra como extrair parâmetros do atributo de propriedades.

```
notebook_job_step2 = NotebookJobStep(
    ....
    parameters={
        "step1_JobName": notebook_job_step1.properties.ComputingJobName,
        "step1_JobStatus": notebook_job_step1.properties.ComputingJobStatus,
        "step1_NotebookJobInput": notebook_job_step1.properties.NotebookJobInputLocation,
        "step1_NotebookJobOutput": notebook_job_step1.properties.NotebookJobOutputLocationPrefix,
    }
```

**Use JsonGet**

Se você quiser passar parâmetros diferentes dos mencionados anteriormente e as saídas JSON da etapa anterior residirem no Amazon S3, use `JsonGet`. `JsonGet` é um mecanismo geral que pode extrair dados de arquivos JSON no Amazon S3 diretamente.

Para extrair arquivos JSON no Amazon S3 com `JsonGet`, conclua as seguintes etapas:

1. Faça upload de seu arquivo JSON no Amazon S3. Se seus dados já tiverem sido carregados no Amazon S3, pule essa etapa. O exemplo a seguir demonstra o upload de um arquivo JSON no Amazon S3.

   ```
   import json
   from sagemaker.s3 import S3Uploader
   
   output = {
       "key1": "value1", 
       "key2": [0,5,10]
   }
               
   json_output = json.dumps(output)
   
   with open("notebook_job_params.json", "w") as file:
       file.write(json_output)
   
   S3Uploader.upload(
       local_path="notebook_job_params.json",
       desired_s3_uri="s3://path/to/bucket"
   )
   ```

1. Forneça seu URI do S3 e o caminho JSON para o valor que você deseja extrair. No exemplo a seguir, `JsonGet` retorna um objeto representando o “index 2” do valor associado à chave do `key2` (`10`).

   ```
   NotebookJobStep(
       ....
       parameters={
           # the key job_key1 returns an object representing the value 10
           "job_key1": JsonGet(
               s3_uri=Join(on="/", values=["s3:/", ..]),
               json_path="key2[2]" # value to reference in that json file
           ), 
           "job_key2": "Amazon" 
       }
   )
   ```

# Invoque outro caderno em seu trabalho de caderno
<a name="create-notebook-auto-run-dag-call"></a>

Você pode configurar um pipeline no qual um trabalho do caderno chama outro caderno. Veja a seguir um exemplo de um pipeline com uma etapa do Notebook Job na qual o caderno chama outros dois cadernos. O caderno de entrada contém as seguintes linhas:

```
%run 'subfolder/notebook_to_call_in_subfolder.ipynb'
%run 'notebook_to_call.ipynb'
```

Passe esses cadernos para suas instâncias `NotebookJobStep` com `additional_dependencies`, conforme mostrado no trecho a seguir. Observe que os caminhos fornecidos para os cadernos em `additional_dependencies` são fornecidos a partir da localização raiz. Para obter informações sobre como a SageMaker IA carrega seus arquivos e pastas dependentes para o Amazon S3 para que você possa fornecer corretamente os caminhos para suas dependências, consulte a descrição em. `additional_dependencies` [NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep)

```
input_notebook = "inputs/input_notebook.ipynb"
simple_notebook_path = "inputs/notebook_to_call.ipynb"
folder_with_sub_notebook = "inputs/subfolder"

notebook_job_step = NotebookJobStep(
    image_uri=image-uri,
    kernel_name=kernel-name,
    role=role-name,
    input_notebook=input_notebook,
    additional_dependencies=[simple_notebook_path, folder_with_sub_notebook],
    tags=tags,
)
```

# Opções disponíveis
<a name="create-notebook-auto-execution-advanced"></a>

A tabela a seguir mostra todas as opções disponíveis que você pode usar para personalizar seu trabalho no notebook, independentemente de você executar o Notebook Job no Studio, em um ambiente Jupyter local ou usando o SDK do Python SageMaker . A tabela inclui o tipo de opção personalizada, uma descrição, diretrizes adicionais sobre como usar a opção, um nome de campo para a opção no Studio (se disponível) e o nome do parâmetro para a etapa de trabalho do notebook no SDK do SageMaker Python (se disponível).

Para algumas opções, você também pode predefinir valores padrão personalizados para não precisar especificá-los toda vez que configurar um trabalho no caderno. Para o Studio, as opções são **Função**, **Pasta de entrada**, **Pasta de saída** e **ID da chave do KMS**, e são especificadas na tabela a seguir. Se você predefinir padrões personalizados para essas opções, esses campos serão pré-preenchidos no formulário **Criar trabalho** quando você criar seu trabalho no caderno. Para obter detalhes sobre como criar padrões personalizados no Studio e nos ambientes locais do Jupyter, consulte [Configurar opções padrão para cadernos locais](create-notebook-auto-execution-advanced-default.md).

O SageMaker SDK também oferece a opção de definir padrões inteligentes para que você não precise especificar esses parâmetros ao criar um. `NotebookJobStep` Os parâmetros são `role`, `s3_root_uri`, `s3_kms_key`, `volume_kms_key`, `subnets` e `security_group_ids`, e são especificados na tabela a seguir. Para obter informações sobre como definir padrões inteligentes, consulte [Configurar opções padrão](create-notebook-auto-run-sdk.md#create-notebook-auto-run-intdefaults).


| Opções personalizadas | Description | Diretriz específica para estúdios | Diretriz ambiental local do Jupyter | SageMaker Diretriz do SDK para Python | 
| --- | --- | --- | --- | --- | 
| Nome do trabalho | O nome do seu trabalho, como deveria aparecer no painel do Notebook Jobs. | Campo Nome do trabalho. | O mesmo que o Studio. | Parâmetro notebook\$1job\$1name. O padrão é None. | 
| Imagem | A imagem do contêiner usada para executar o caderno de forma não interativa no tipo de computação escolhido. | Campo Imagem. Esse campo é padronizado para a imagem atual do seu caderno. Altere esse campo do padrão para um valor personalizado, se necessário. Se o Studio não puder inferir esse valor, o formulário exibirá um erro de validação exigindo que você o especifique. Essa imagem pode ser personalizada, [bring-your-own imagem](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html) ou uma SageMaker imagem disponível da Amazon. Para obter uma lista das SageMaker imagens disponíveis suportadas pelo agendador do notebook, consulte[SageMaker Imagens da Amazon disponíveis para uso com notebooks Studio Classic](notebooks-available-images.md). | Campo Imagem. Esse campo requer um URI ECR de uma imagem do Docker que possa executar o caderno fornecido no tipo de computação selecionado. Por padrão, a extensão do agendador usa um Python 2.0 pré-construído baseado em imagens do SageMaker AI Docker. Esta é a imagem oficial do Python 3.8 DockerHub com boto3 AWS CLI e o kernel do Python 3. Você também pode fornecer qualquer URI de ECR que atenda à especificação de imagem personalizada do caderno. Para obter detalhes, consulte [Especificações de SageMaker imagem personalizadas para o Amazon SageMaker Studio Classic](studio-byoi-specs.md). Essa imagem deve ter todos os kernels e bibliotecas necessários para a execução do caderno. | Obrigatório. Parâmetro image\$1uri. Localização do URI de uma imagem do Docker no ECR. Você pode usar imagens de SageMaker distribuição específicas ou imagens personalizadas com base nessas imagens, ou sua própria imagem pré-instalada com dependências de trabalho do notebook que atendam a requisitos adicionais. Para obter detalhes, consulte [Restrições de imagem para trabalhos de notebook do SageMaker AI Python SDK](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk). | 
| Tipo de instância | O tipo de instância da EC2 a ser usado para executar o trabalho do caderno. O trabalho do notebook usa um SageMaker Training Job como camada de computação, portanto, o tipo de instância especificado deve ser um tipo de instância suportado pelo SageMaker Training. | Campo Tipo de computação. O padrão é ml.m5.large. | O mesmo que o Studio. | Parâmetro instance\$1type. O padrão é ml.m5.large. | 
| Kernel | O kernel do Jupyter usado para executar o trabalho do caderno. | Campo Kernel. Esse campo é padronizado para o kernel atual do seu caderno. Altere esse campo do padrão para um valor personalizado, se necessário. Se o Studio não puder inferir esse valor, o formulário exibirá um erro de validação exigindo que você o especifique. | Campo Kernel. Esse kernel deve estar presente na imagem e seguir as especificações do kernel do Jupyter. Esse campo é padronizado para o kernel Python3 encontrado na imagem base do Python 2.0. SageMaker Altere esse campo para um valor personalizado, se necessário. | Obrigatório. Parâmetro kernel\$1name. Esse kernel deve estar presente na imagem e seguir as especificações do kernel do Jupyter. Para ver os identificadores do kernel da sua imagem, consulte (LINK). | 
| SageMaker Sessão de IA | A sessão de SageMaker IA subjacente à qual as chamadas de serviço de SageMaker IA são delegadas. | N/D | N/D | Parâmetro sagemaker\$1session. Se não for especificada, uma será criada usando uma cadeia de configuração padrão. | 
| ARN de função | O nome do recurso da Amazon (ARN) da função usado com o trabalho do caderno. | Campo ARN da função. Esse campo é padronizado para a função de execução do Studio. Altere esse campo para um valor personalizado, se necessário.  Se o Studio não puder inferir esse valor, o campo **ARN da função** ficará em branco. Nesse caso, insira o ARN que você deseja usar.  | Campo ARN da função. Esse campo é padronizado para qualquer função prefixada com SagemakerJupyterScheduler. Se você tiver várias funções com o prefixo, a extensão escolherá uma. Altere esse campo para um valor personalizado, se necessário. Para esse campo, você pode definir seu próprio padrão de usuário, que é pré-preenchido sempre que você cria uma nova definição de trabalho. Para obter detalhes, consulte [Configurar opções padrão para cadernos locais](create-notebook-auto-execution-advanced-default.md). | Parâmetro role. O padrão é a função IAM padrão do SageMaker AI se o SDK estiver sendo executado em SageMaker Notebooks ou Studio Notebooks. SageMaker Caso contrário, ele emite um ValueError. Permite padrões inteligentes. | 
| Notebook de entrada | O nome do caderno que você está programando para ser executado. | Obrigatório. Campo Arquivo de entrada. | O mesmo que o Studio. | Obrigatório. Parâmetro input\$1notebook. | 
| Pasta de entrada | A pasta que contém suas entradas. As entradas do trabalho, incluindo o caderno de entrada e quaisquer scripts opcionais de inicialização ou inicialização, são colocadas nessa pasta. | Campo Pasta de entrada. Se você não fornecer uma pasta, o agendador cria um bucket padrão do Amazon S3 para suas entradas. | O mesmo que o Studio. Para esse campo, você pode definir seu próprio padrão de usuário, que é pré-preenchido sempre que você cria uma nova definição de trabalho. Para obter detalhes, consulte [Configurar opções padrão para cadernos locais](create-notebook-auto-execution-advanced-default.md). | N/D. A pasta de entrada é colocada dentro do local especificado pelo parâmetro s3\$1root\$1uri. | 
| Pasta de saída | A pasta que contém suas saídas. As saídas do trabalho, incluindo o caderno de saída e os logs, são colocadas nessa pasta. | Campo Pasta de saída. Se você não fornecer uma pasta, o agendador cria um bucket padrão do Amazon S3 para suas entradas. | O mesmo que o Studio. Para esse campo, você pode definir seu próprio padrão de usuário, que é pré-preenchido sempre que você cria uma nova definição de trabalho. Para obter detalhes, consulte [Configurar opções padrão para cadernos locais](create-notebook-auto-execution-advanced-default.md). | N/D. A pasta de saída é colocada dentro do local especificado pelo parâmetro s3\$1root\$1uri. | 
| Parâmetros | Um dicionário de variáveis e valores para passar para o trabalho do seu caderno. | Campo Parâmetros. Você precisa [parametrizar seu caderno](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-auto-run-troubleshoot-override.html) para aceitar parâmetros. | O mesmo que o Studio. | Parâmetro parameters. Você precisa [parametrizar seu caderno](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-auto-run-troubleshoot-override.html) para aceitar parâmetros. | 
| Dependências adicionais (arquivo ou pasta) | A lista de dependências de arquivos ou pastas que o trabalho do caderno carrega para a pasta preparada do S3. | Sem compatibilidade. | Sem compatibilidade. | Parâmetro additional\$1dependencies. O trabalho do caderno carrega essas dependências em uma pasta preparada do S3 para que possam ser consumidas durante a execução. | 
| URI raiz do S3 | A pasta que contém suas entradas. As entradas do trabalho, incluindo o caderno de entrada e quaisquer scripts opcionais de inicialização ou inicialização, são colocadas nessa pasta. Esse bucket do S3 deve estar na mesma Conta da AWS que você está usando para executar o trabalho de caderno. | N/D. Use a Pasta de entrada e a Pasta de saída. | O mesmo que o Studio. | Parâmetro s3\$1root\$1uri. O padrão é um bucket padrão do S3. Permite padrões inteligentes. | 
| Variáveis de ambiente | Qualquer variável de ambiente existente que você queira substituir ou novas variáveis de ambiente que você queira introduzir e usar em seu caderno. | Campo Variáveis de ambiente. | O mesmo que o Studio. | Parâmetro environment\$1variables. O padrão é None. | 
| Tags | Uma lista de tags a serem anexadas ao trabalho. | N/D | N/D | Parâmetro tags. O padrão é None. Suas tags controlam como a interface de usuário do Studio captura e exibe o trabalho criado pelo pipeline. Para obter detalhes, consulte [Visualizar seus trabalhos de caderno no painel da interface do Studio](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash). | 
| Script de inicialização | Um script pré-carregado no menu de inicialização do caderno que você pode optar por executar antes de executar o caderno. | Campo Script de startup. Selecione um script de Configuração do Ciclo de Vida (LCC) que seja executado na imagem na inicialização. Um script de inicialização é executado em um shell fora do ambiente do Studio. Portanto, esse script não pode depender do armazenamento local do Studio, das variáveis de ambiente ou dos metadados da aplicação (em `/opt/ml/metadata`). Além disso, se você usar um script de inicialização e um script de inicialização, o script de inicialização será executado primeiro.   | Sem compatibilidade. | Sem compatibilidade. | 
| Script de inicialização | Um caminho para um script local que você pode executar quando o caderno é inicializado. | Campo Script de inicialização. Insira o caminho do arquivo EFS em que um script local ou um script de Configuração do Ciclo de Vida (LCC) está localizado. Se você usar um script de inicialização e um script de inicialização, o script de inicialização será executado primeiro. Um script de inicialização é originado do mesmo shell do trabalho do caderno. Esse não é o caso de um script de inicialização descrito anteriormente. Além disso, se você usar um script de inicialização e um script de inicialização, o script de inicialização será executado primeiro.    | Campo Script de inicialização. Insira o caminho do arquivo local onde um script local ou um script de Configuração do Ciclo de Vida (LCC) está localizado.  | Parâmetro initialization\$1script. O padrão é None. | 
| Máximo de tentativas de repetição | O número de vezes que o Studio tenta executar novamente uma execução de trabalho com falha. | Campo Máximo de tentativas de repetição. Padronizado como 1. | O mesmo que o Studio. | Parâmetro max\$1retry\$1attempts. Padronizado como 1. | 
| Tempo máximo de execução (em segundos) | O tempo máximo, em segundos, que um trabalho de caderno pode ser executado antes de ser interrompido. Se você configurar o tempo de execução máximo e as tentativas de repetição máximas, o tempo de execução se aplicará a cada nova tentativa. Se um trabalho não for concluído nesse período, seu status será definido como Failed. | Campo Tempo máximo de execução (em segundos). O padrão é 172800 seconds (2 days). | O mesmo que o Studio. | Parâmetro max\$1runtime\$1in\$1seconds. O padrão é 172800 seconds (2 days). | 
| Política de novas tentativas | Uma lista de políticas de repetição, que regem as ações a serem tomadas em caso de falha. | Sem compatibilidade. | Sem compatibilidade. | Parâmetro retry\$1policies. O padrão é None. | 
| Adicionar as dependências Step ou StepCollection  | Uma lista de instâncias ou nomes de Step ou StepCollection das quais o trabalho depende. | Sem compatibilidade. | Sem compatibilidade. | Parâmetro depends\$1on. O padrão é None. Use isso para definir dependências explícitas entre as etapas no gráfico do pipeline. | 
| Tamanho do volume | O tamanho em GB do volume de armazenamento para armazenar dados de entrada e saída durante o treinamento. | Sem compatibilidade. | Sem compatibilidade. | Parâmetro volume\$1size. O padrão é 30 GB. | 
| Criptografar o tráfego entre contêineres | Um sinalizador que especifica se o tráfego entre os contêineres de treinamento está criptografado para o trabalho de treinamento. | N/D. Habilitado por padrão. | N/D. Habilitado por padrão. | Parâmetro encrypt\$1inter\$1container\$1traffic. O padrão é True. | 
| Configurar a criptografia de trabalhos | Um indicador de que você deseja criptografar as saídas de trabalho do caderno, o volume da instância de trabalho ou ambos. | Campo Configurar criptografia do trabalho. Marque essa caixa para escolher a criptografia. Se não for marcada, as saídas do trabalho serão criptografadas com a chave KMS padrão da conta e o volume da instância do trabalho não será criptografado. | O mesmo que o Studio. | Sem compatibilidade. | 
| Chave de criptografia de saída do KMS | Uma chave KMS a ser usada se você quiser personalizar a chave de criptografia usada nas saídas de trabalho do caderno. Esse campo só é aplicável se você tiver marcado Configurar criptografia de trabalhos. | Campo Chave do KMS de criptografia de saída. Se você não especificar esse campo, as saídas de trabalho do seu caderno serão criptografadas com SSE-KMS usando a chave KMS padrão do Amazon S3. Além disso, se você mesmo criar o bucket do Amazon S3 e usar criptografia, seu método de criptografia será preservado. | O mesmo que o Studio. Para esse campo, você pode definir seu próprio padrão de usuário, que é pré-preenchido sempre que você cria uma nova definição de trabalho. Para obter detalhes, consulte [Configurar opções padrão para cadernos locais](create-notebook-auto-execution-advanced-default.md). | Parâmetro s3\$1kms\$1key. O padrão é None. Permite padrões inteligentes. | 
| Chave KMS de criptografia de volume da instância de trabalho | Uma chave KMS para usar se você quiser criptografar o volume da sua instância de trabalho. Esse campo só é aplicável se você tiver marcado Configurar criptografia de trabalhos. | Campo Chave do KMS de criptografia de volume da instância de trabalho. | Campo Chave do KMS de criptografia de volume da instância de trabalho. Para esse campo, você pode definir seu próprio padrão de usuário, que é pré-preenchido sempre que você cria uma nova definição de trabalho. Para obter detalhes, consulte [Configurar opções padrão para cadernos locais](create-notebook-auto-execution-advanced-default.md). | Parâmetro volume\$1kms\$1key. O padrão é None. Permite padrões inteligentes. | 
| Use uma nuvem privada virtual para executar esse trabalho (para usuários de VPC) | Um indicador de que você deseja executar esse trabalho em uma nuvem privada virtual (VPC). Para maior segurança, é recomendável usar uma VPC privada. | Campo Usar uma nuvem privada virtual para executar este trabalho. Marque essa caixa se quiser usar uma VPC. No mínimo, crie os seguintes VPC endpoints para permitir que sua tarefa de notebook se conecte de forma privada a esses recursos: AWS [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/create-notebook-auto-execution-advanced.html)Se você optar por usar uma VPC, precisará especificar pelo menos uma sub-rede privada e pelo menos um grupo de segurança nas opções a seguir. Se você não usa nenhuma sub-rede privada, precisa considerar outras opções de configuração. Para obter detalhes, consulte Sub-redes públicas de VPC não é compatível comdas em [Restrições e considerações](notebook-auto-run-constraints.md). | O mesmo que o Studio. | N/D | 
| Sub-rede (s) (para usuários de VPC) | Suas sub-redes. Esse campo deve conter pelo menos uma e no máximo cinco, e todas as sub-redes fornecidas devem ser privadas. Para obter detalhes, consulte Sub-redes públicas de VPC não é compatível comdas em [Restrições e considerações](notebook-auto-run-constraints.md). | Campo Sub-rede(s). Esse campo usa como padrão as sub-redes associadas ao domínio do Studio, mas você pode alterar esse campo se necessário. | Campo Sub-rede(s). O agendador não consegue detectar suas sub-redes, então você precisa inserir todas as sub-redes que você configurou para sua VPC. | Parâmetro subnets. O padrão é None. Permite padrões inteligentes. | 
| Grupos de segurança (para usuários de VPC) | Seus grupos de segurança. Esse campo deve conter pelo menos um e no máximo 15. Para obter detalhes, consulte Sub-redes públicas de VPC não é compatível comdas em [Restrições e considerações](notebook-auto-run-constraints.md). | Campo Grupos de segurança. Esse campo usa como padrão os grupos de segurança associados ao domínio VPC, mas você pode alterar esse campo se necessário. | Campo Grupos de segurança. O agendador não consegue detectar seus grupos de segurança, então você precisa inserir todos os grupos de segurança que você configurou para sua VPC. | Parâmetro security\$1group\$1ids. O padrão é None. Permite padrões inteligentes. | 
| Nome | O nome da etapa de trabalho do caderno. | N/D | N/D | Parâmetro name. Se não for especificado, é derivado do nome do arquivo do caderno. | 
| Nome de exibição | O nome do seu trabalho, como deveria aparecer na sua lista de execuções de pipeline. | N/D | N/D | Parâmetro display\$1name. O padrão é None. | 
| Description | Uma descrição do seu trabalho. | N/D | N/D | Parâmetro description. | 

# Parametrize seu caderno
<a name="notebook-auto-run-troubleshoot-override"></a>

Para passar novos parâmetros ou substituições de parâmetros para o trabalho programado do caderno, talvez você queira modificar o caderno Jupyter se desejar que os valores dos novos parâmetros sejam aplicados após uma célula. Quando você passa um parâmetro, o executor de trabalho de caderno usa a metodologia aplicada pelo Papermill. O executor de trabalho do caderno pesquisa uma célula do Jupyter marcada com a tag `parameters` e aplica os novos parâmetros ou substituições de parâmetros imediatamente após a célula. Se você não tiver nenhuma célula marcada com `parameters`, os parâmetros são aplicados no início do caderno. Se você tiver mais de uma célula marcada com `parameters`, os parâmetros são aplicados após a primeira célula marcada com `parameters`.

Para marcar uma célula do seu caderno com a `parameters` tag, conclua as seguintes etapas:

1. Selecione a célula a ser parametrizada.

1. Escolha o ícone do **Inspetor de propriedades** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/studio/icons/gears.png)), na barra lateral direita.

1. Digite **parameters** na caixa **Adicionar tag**.

1. Escolha o sinal **\$1**.

1. A `parameters` tag aparece em **Cell Tags** com uma marca de seleção, o que significa que a tag é aplicada à célula.

# Conectar a um cluster do Amazon EMR a partir de seu caderno
<a name="scheduled-notebook-connect-emr"></a>

Se você se conectar a um cluster do Amazon EMR a partir do seu caderno Jupyter no Studio, talvez seja necessário realizar uma configuração adicional. Em particular, a discussão a seguir aborda duas questões:
+ **Passando parâmetros para o comando de conexão do Amazon EMR.** Nos SparkMagic kernels, os parâmetros que você passa para o comando de conexão do Amazon EMR podem não funcionar conforme o esperado devido às diferenças na forma como o Papermill passa os parâmetros e como os recebe. SparkMagic A solução alternativa para lidar com essa limitação é passar parâmetros como variáveis de ambiente. Para obter mais detalhes sobre o problema e a solução alternativa, consulte [Passe parâmetros para o comando de conexão do EMR](#scheduled-notebook-connect-emr-pass-param).
+ **Transmissão de credenciais de usuário para clusters do Amazon EMR autenticados por Kerberos, LDAP ou HTTP Basic Auth**. No modo interativo, o Studio solicita credenciais em um formulário pop-up onde você pode inserir suas credenciais de login. Em seu caderno programado não interativo, você tem que passá-los pelo AWS Secrets Manager. Para obter mais detalhes sobre como usar o AWS Secrets Manager em seus trabalhos de notebook agendados, consulte[Passe as credenciais do usuário para seu cluster Amazon EMR autenticado por Kerberos, LDAP ou HTTP Basic Auth](#scheduled-notebook-connect-emr-credentials).

## Passe parâmetros para o comando de conexão do EMR
<a name="scheduled-notebook-connect-emr-pass-param"></a>

**Se você estiver usando imagens com os kernels SparkMagic PySpark e Spark e quiser parametrizar seu comando de conexão do EMR, forneça seus parâmetros no campo Variáveis de **ambiente em vez do** campo Parâmetros no formulário Create Job (no menu suspenso Additional Options).** Certifique-se de que seu comando de conexão do EMR no caderno Jupyter transmita esses parâmetros como variáveis de ambiente. Por exemplo, suponha que você passe `cluster-id` como uma variável de ambiente ao criar seu trabalho. Seu comando de conexão EMR deve ser semelhante ao seguinte:

```
%%local
import os
```

```
%sm_analytics emr connect —cluster-id {os.getenv('cluster_id')} --auth-type None
```

Você precisa dessa solução alternativa para atender aos requisitos da SparkMagic Papermill. Para o contexto em segundo plano, o SparkMagic kernel espera que o comando `%%local` mágico acompanhe todas as variáveis locais que você definir. No entanto, o Papermill não passa o comando mágico `%%local` com suas substituições. Para contornar essa limitação do Papermill, você deve fornecer seus parâmetros como variáveis de ambiente no campo **Variáveis de ambiente**.

## Passe as credenciais do usuário para seu cluster Amazon EMR autenticado por Kerberos, LDAP ou HTTP Basic Auth
<a name="scheduled-notebook-connect-emr-credentials"></a>

Para estabelecer uma conexão segura com um cluster do Amazon EMR que usa autenticação Kerberos, LDAP ou HTTP Basic Auth, você usa o AWS Secrets Manager para passar as credenciais do usuário para o seu comando de conexão. Para obter informações sobre como criar um segredo no Secrets Manager, consulte [Criar um segredo do AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). O segredo deve conter seu nome de usuário e senha. Você passa o segredo com o `--secrets` argumento, conforme mostrado no seguinte exemplo:

```
%sm_analytics emr connect --cluster-id j_abcde12345 
    --auth Kerberos 
    --secret aws_secret_id_123
```

Seu administrador pode configurar uma política de acesso flexível usando um método attribute-based-access-control (ABAC), que atribui acesso com base em tags especiais. Você pode configurar o acesso flexível para criar um único segredo para todos os usuários da conta ou um segredo para cada usuário. Os exemplos de código a seguir demonstram esses cenários:

**Crie um único segredo para todos os usuários da conta**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes123-1a2b3c",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes456-4d5e6f",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes789-7g8h9i"
            ]
        }
    ]
}
```

------

**Crie um segredo diferente para cada usuário**

É possível criar um segredo diferente para cada usuário usando a `PrincipleTag` tag, conforme mostrado no seguinte exemplo:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"
            },
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/user-identity": "${aws:PrincipalTag/user-identity}"
                }
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes123-1a2b3c",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes456-4d5e6f",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes789-7g8h9i"
            ]
        }
    ]
}
```

------

# Detalhes de trabalhos em notebooks no Amazon SageMaker Studio
<a name="track-jobs-jobdefs"></a>

SageMaker Os painéis do Notebook Jobs ajudam a organizar as definições de tarefas que você agenda e também acompanham as tarefas reais que são executadas a partir de suas definições de tarefas. Há dois conceitos importantes a serem entendidos ao programar trabalhos no caderno: *definições de trabalhos* e *execuções de trabalhos*. As definições de trabalho são programações que você define para executar cadernos específicos. Por exemplo, você pode criar uma definição de trabalho que execute o caderno xyz.ipynb toda quarta-feira. Essa definição de trabalho inicia as execuções reais de trabalhos que ocorrem na próxima quarta-feira, na próxima quarta-feira, na quarta-feira seguinte e assim por diante: 

**nota**  
A etapa de trabalho do notebook SageMaker Python SDK não cria definições de tarefas. No entanto, você pode visualizar seus trabalhos no painel do Notebook Jobs. Tanto as tarefas quanto as definições de tarefas estão disponíveis se você agendar sua tarefa em um JupyterLab ambiente.

A interface fornece duas guias principais que ajudam você a rastrear suas definições e execuções de trabalhos existentes:
+ Guia **Notebook Jobs**: essa guia exibe uma lista de todas as suas execuções de trabalhos sob demanda e definições de trabalhos. Nessa guia, você pode acessar diretamente os detalhes da execução de um único trabalho. Por exemplo, você pode ver uma única execução de trabalho que ocorreu há duas quartas-feiras.
+ Guia **Definições de trabalho do Notebook**: essa guia exibe uma lista de todas as suas definições de trabalhos. Nessa guia, você pode acessar diretamente os detalhes de uma única definição de trabalho. Por exemplo, você pode ver a programação criada para executar XYZ.ipynb toda quarta-feira.

Para obter detalhes sobre a guia **Notebook Jobs**, consulte [Visualizar os trabalhos do caderno](view-notebook-jobs.md).

Para obter detalhes sobre a guia **Definições de trabalhos do Notebook**, consulte [Exibir definições de trabalho do caderno](view-def-detail-notebook-auto-run.md).

# Visualizar os trabalhos do caderno
<a name="view-notebook-jobs"></a>

**nota**  
Você pode visualizar automaticamente os trabalhos do caderno se tiver agendado seu trabalho do caderno a partir da interface de usuário do Studio. Se você usou o SDK do SageMaker Python para agendar seu trabalho no notebook, precisará fornecer tags adicionais ao criar a etapa do trabalho no notebook. Para obter detalhes, consulte [Visualizar seus trabalhos de caderno no painel da interface do Studio](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash).

O tópico a seguir fornece informações sobre a guia **Notebook Jobs** e como visualizar os detalhes de um único trabalho no caderno. A guia **Notebook Jobs** (que você acessa escolhendo o ícone **Criar um trabalho no caderno** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/icons/notebook-schedule.png)) na barra de ferramentas do Studio) mostra um histórico de seus trabalhos sob demanda e todos os trabalhos executados a partir das definições de trabalho que você criou. Essa guia é aberta depois que você cria um trabalho sob demanda, ou você mesmo pode visualizar essa guia para ver um histórico de trabalhos anteriores e atuais. Se você selecionar o **Nome do trabalho** para qualquer trabalho, poderá visualizar os detalhes de um único trabalho na página **Detalhes do trabalho**. Para mais informações sobre a página de **detalhes do trabalho**, consulte a seção [Exibir um único trabalho](#view-jobs-detail-notebook-auto-run) a seguir.

A guia **Notebook Jobs** inclui as seguintes informações para cada trabalho:
+ **Arquivos de saída**: exibe a disponibilidade dos arquivos de saída. Essa coluna pode conter um dos seguintes:
  + Um ícone de download (![\[Cloud icon with downward arrow, representing download or cloud storage functionality.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/icons/File_download.png)): o caderno de saída e o log estão disponíveis para download; escolha esse botão para baixá-los. Observe que um trabalho com falha ainda pode gerar arquivos de saída se a falha ocorrer após a criação dos arquivos. Nesse caso, é útil visualizar o caderno de saída para identificar o ponto de falha.
  + Links para o **Caderno** e o **Log de saída**: o caderno e o log de saída são baixados. Escolha os links para visualizar seu conteúdo.
  + (em branco): o trabalho foi interrompido pelo usuário ou ocorreu uma falha na execução do trabalho antes que ele pudesse gerar arquivos de saída. Por exemplo, falhas na rede podem impedir que o trabalho seja iniciado.

  O caderno de saída é o resultado da execução de todas as células no caderno e também incorpora quaisquer parâmetros ou variáveis de ambiente novos ou substitutivos que você incluiu. O log de saída captura os detalhes da execução do trabalho para ajudá-lo a solucionar problemas de trabalhos com falha.
+ **Criado em**: o momento em que o trabalho sob demanda ou o trabalho programado foi criado.
+ **Status**: o status atual do trabalho, que pode ter um dos seguintes valores:
  + **Em andamento**: o trabalho está em execução
  + **Falha**: o trabalho falhou devido a erros de configuração ou lógica do caderno
  + **Interrompido**: o trabalho foi interrompido pelo usuário
  + **Concluído**: o trabalho foi concluído
+ **Ações**: essa coluna fornece atalhos para ajudá-lo a interromper ou remover qualquer trabalho diretamente na interface.

## Exibir um único trabalho
<a name="view-jobs-detail-notebook-auto-run"></a>

Na guia **Notebook Jobs**, você pode selecionar um nome do trabalho para visualizar a página **Detalhes do Trabalho** de um trabalho específico. A página **Detalhes do trabalho **inclui todos os detalhes fornecidos no formulário **Criar trabalho**. Use esta página para confirmar as configurações especificadas ao criar a definição de trabalho. 

Além disso, você pode acessar atalhos para ajudá-lo a realizar as seguintes ações na própria página:
+ **Excluir trabalho**: remova o trabalho da guia **Notebook Jobs**.
+ **Interromper trabalho**: pare seu trabalho em execução.

# Exibir definições de trabalho do caderno
<a name="view-def-detail-notebook-auto-run"></a>

**nota**  
Se você agendou seu trabalho no notebook com o SDK do SageMaker Python, pule esta seção. Somente trabalhos de notebook criados no Studio ou em JupyterLab ambientes locais criam definições de trabalhos. Portanto, se você criou seu trabalho no notebook com o SDK do SageMaker Python, não verá as definições do trabalho no painel Notebook Jobs. No entanto, você pode visualizar seus trabalhos de caderno conforme descrito em [Visualizar os trabalhos do caderno](view-notebook-jobs.md). 

Ao criar uma definição de trabalho, você cria uma programação para um trabalho. A guia **Definições de trabalho do caderno** lista esses agendamentos, bem como informações sobre definições específicas de trabalho no caderno. Por exemplo, você pode criar uma definição de trabalho que execute um caderno específico a cada minuto. Quando essa definição de trabalho estiver ativa, você verá uma novo trabalho a cada minuto na guia **Notebook Jobs**. A página a seguir fornece informações sobre a guia **Definições de trabalho no caderno**, bem como sobre como visualizar uma definição de tarefa do caderno.

A guia **Definições de trabalhos do Notebook** exibe um painel com todas as suas definições de trabalho e inclui o caderno de entrada, a hora de criação, a programação e o status de cada definição de trabalho. O valor da coluna **Status** é um dos seguintes valores:
+ **Pausado**: você pausou a definição do trabalho. O Studio não inicia nenhum trabalho até que você retome a definição.
+ **Ativo**: a programação está ativada e o Studio pode executar o caderno de acordo com a programação especificada.

Além disso, a coluna **Ações** fornece atalhos para ajudá-lo a realizar as seguintes tarefas diretamente na interface:
+ Pausa: pausa a definição do trabalho. O Studio não criará nenhum trabalho até que você retome a definição.
+ Excluir: remove a definição do trabalho da guia **Definições de trabalho do Notebook**.
+ Retomar: continua uma definição de trabalho pausada para que ela possa iniciar trabalhos.

Se você criou uma definição de trabalho, mas ela não inicia trabalhos, veja [A definição de trabalho não cria trabalhos](notebook-auto-run-troubleshoot.md#notebook-auto-run-troubleshoot-no-jobs) no [Guia de solução de problemas](notebook-auto-run-troubleshoot.md).

## Exibir uma definição de trabalho única
<a name="view-job-definition-detail-page"></a>

Se você selecionar um nome de definição de trabalho na guia **Definições de trabalho do Notebook**, verá a página **Definição de trabalho**, na qual poderá visualizar detalhes específicos de uma definição de trabalho. Use esta página para confirmar as configurações especificadas ao criar a definição de trabalho. Se você não encontrar nenhum trabalho criada a partir de sua definição de trabalho., veja [A definição de trabalho não cria trabalhos](notebook-auto-run-troubleshoot.md#notebook-auto-run-troubleshoot-no-jobs) no [Guia de solução de problemas](notebook-auto-run-troubleshoot.md).

Essa página também contém uma seção listando os trabalhos que são executados a partir dessa definição de trabalho. Visualizar seus trabalhos na página **Definição de Trabalhos** pode ser uma forma mais produtiva de ajudá-lo a organizar seus trabalhos em vez de visualizá-los na guia **Notebook Jobs**, que combina todos os trabalhos de todas as suas definições de trabalhos.

Além disso, essa página fornece atalhos para as seguintes ações:
+ **Pausa/Retomar**: pause sua definição de trabalho ou retome uma definição pausada. Observe que, se um trabalho estiver sendo executado atualmente para essa definição, o Studio não o interromperá.
+ **Executar**: execute um único trabalho sob demanda a partir dessa definição de trabalho. Essa opção também permite que você especifique diferentes parâmetros de entrada para o seu caderno antes de iniciar o trabalho.
+ **Editar definição de trabalho**: altere a programação de sua definição de trabalho. Você pode selecionar um intervalo de tempo diferente ou optar por uma programação personalizada usando a sintaxe cron.
+ **Excluir definição de trabalho**: remova a definição de trabalho da guia **Definições de trabalho do Notebook**. Observe que, se um trabalho estiver sendo executado atualmente para essa definição, o Studio não o interromperá.

# Guia de solução de problemas
<a name="notebook-auto-run-troubleshoot"></a>

Consulte este guia de solução de problemas para ajudá-lo a depurar falhas que podem ocorrer quando o trabalho programado do caderno é executado.

## A definição de trabalho não cria trabalhos
<a name="notebook-auto-run-troubleshoot-no-jobs"></a>

Se sua definição de trabalho não iniciar nenhum trabalho, o caderno ou o trabalho de treinamento pode não ser exibido na seção **Trabalhos** na barra de navegação esquerda do Amazon SageMaker Studio. Se for esse o caso, você pode encontrar mensagens de erro na seção **Pipelines**, na barra de navegação esquerda do Studio. Cada caderno ou definição de trabalho de treinamento pertence a um pipeline de execução. A seguir, veja as causas comuns para a falha na inicialização de trabalhos de caderno.

**Permissões ausentes**
+ A função atribuída à definição do cargo não tem uma relação de confiança com a Amazon EventBridge. Ou seja, EventBridge não pode assumir o papel.
+ A função atribuída à definição de trabalho não tem permissão para chamar `SageMaker AI:StartPipelineExecution`.
+ A função atribuída à definição de trabalho não tem permissão para chamar `SageMaker AI:CreateTrainingJob`.

**EventBridge cota excedida**

Se você ver um `Put*` erro como o exemplo a seguir, você excedeu uma EventBridge cota. Para resolver isso, você pode limpar EventBridge execuções não utilizadas ou pedir AWS Support para aumentar sua cota.

```
LimitExceededException) when calling the PutRule operation: 
The requested resource exceeds the maximum number allowed
```

Para obter mais informações sobre EventBridge cotas, consulte [ EventBridge Cotas da Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html).

**Limite de cota de gasoduto excedido**

Se você receber um erro como o exemplo a seguir, excedeu o número de pipelines que podem ser executados. Para resolver isso, você pode limpar os pipelines não utilizados na sua conta ou pedir AWS Support para aumentar sua cota.

```
ResourceLimitExceeded: The account-level service limit 
'Maximum number of pipelines allowed per account' is XXX Pipelines, 
with current utilization of XXX Pipelines and a request delta of 1 Pipelines.
```

Para obter mais informações sobre cotas de pipeline, consulte os [endpoints e cotas do Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

**Limite de trabalho de treinamento excedido**

Se você ver um erro como o exemplo a seguir, você excedeu o número de trabalhos de treinamento que podem ser executados. Para resolver isso, reduza o número de vagas de treinamento em sua conta ou peça AWS Support para aumentar sua cota.

```
ResourceLimitExceeded: The account-level service limit 
'ml.m5.2xlarge for training job usage' is 0 Instances, with current 
utilization of 0 Instances and a request delta of 1 Instances. 
Please contact AWS support to request an increase for this limit.
```

Para obter mais informações sobre cotas de trabalho de treinamento, consulte os [endpoints e cotas do Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

## Visualizações automáticas desativadas em notebooks SparkMagic
<a name="notebook-auto-run-troubleshoot-visualization"></a>

Se o seu notebook usa o SparkMagic PySpark kernel e você executa o notebook como um Notebook Job, você pode ver que suas visualizações automáticas estão desativadas na saída. Ativar a visualização automática faz com que o kernel trave, então o executor de trabalhos do caderno desativa as visualizações automáticas como uma solução alternativa.

# Restrições e considerações
<a name="notebook-auto-run-constraints"></a>

Analise as restrições a seguir para garantir que os trabalhos do caderno sejam concluídos com êxito. O Studio usa o Papermill para executar cadernos. Talvez seja necessário atualizar os cadernos Jupyter para se alinharem aos requisitos do Papermill. Também há restrições no conteúdo dos scripts da LCC e detalhes importantes a serem entendidos em relação à configuração da VPC.

## JupyterLab versão
<a name="notebook-auto-run-constraints-jpt"></a>

JupyterLab a versão 4.0 é suportada.

## Instalação de pacotes que exigem a reinicialização do kernel
<a name="notebook-auto-run-constraints-pmill-pkg"></a>

O Papermill não é compatível com chamadas `pip install` para instalar pacotes que exijam a reinicialização do kernel. Nessa situação, use `pip install` em um script de inicialização. Para uma instalação de pacote que não exija a reinicialização do kernel, você ainda pode `pip install` incluí-la no caderno. 

## Nomes de kernel e idioma registrados no Jupyter
<a name="notebook-auto-run-constraints-pmill-names"></a>

O Papermill registra um tradutor para kernels e idiomas específicos. Se você trouxer sua própria instância (BYOI), use um nome de kernel padrão, conforme mostrado no seguinte trecho:

```
papermill_translators.register("python", PythonTranslator)
papermill_translators.register("R", RTranslator)
papermill_translators.register("scala", ScalaTranslator)
papermill_translators.register("julia", JuliaTranslator)
papermill_translators.register("matlab", MatlabTranslator)
papermill_translators.register(".net-csharp", CSharpTranslator)
papermill_translators.register(".net-fsharp", FSharpTranslator)
papermill_translators.register(".net-powershell", PowershellTranslator)
papermill_translators.register("pysparkkernel", PythonTranslator)
papermill_translators.register("sparkkernel", ScalaTranslator)
papermill_translators.register("sparkrkernel", RTranslator)
papermill_translators.register("bash", BashTranslator)
```

## Parâmetros e limites variáveis de ambiente
<a name="notebook-auto-run-constraints-var-limits"></a>

**Parâmetros e limites variáveis de ambiente**. Quando você cria seu trabalho de caderno, ele recebe os parâmetros e as variáveis de ambiente que você especifica. É possível passar até 100 parâmetros. Cada nome de parâmetro pode ter até 256 caracteres e o valor associado pode ter até 2500 caracteres. Se você passar variáveis de ambiente, poderá transmitir até 28 variáveis. O nome da variável e o valor associado podem ter até 512 caracteres. Se você precisar de mais de 28 variáveis de ambiente, use variáveis de ambiente adicionais em um script de inicialização que não tenha limite no número de variáveis de ambiente que você pode usar.

## Como visualizar trabalhos e suas definições
<a name="notebook-auto-run-constraints-view-job"></a>

**Como visualizar trabalhos e suas definições.** Se você agendar o trabalho do notebook na interface do Studio no JupyterLab notebook, poderá [visualizar os trabalhos do notebook](https://docs.aws.amazon.com/sagemaker/latest/dg/view-notebook-jobs.html) e [as definições do trabalho do notebook](https://docs.aws.amazon.com/sagemaker/latest/dg/view-def-detail-notebook-auto-run.html) na interface do usuário do Studio. Se você agendou seu trabalho do notebook com o SDK do SageMaker Python, poderá visualizar somente seus trabalhos. A etapa do trabalho do notebook do SDK do SageMaker Python não cria definições de trabalhos. Para visualizar seus trabalhos, você também precisa fornecer tags adicionais à instância da etapa de trabalho do caderno. Para obter detalhes, consulte [Visualizar seus trabalhos de caderno no painel da interface do Studio](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash).

## Imagem
<a name="notebook-auto-run-constraints-image"></a>

Você precisa gerenciar as restrições de imagem, dependendo se você executa trabalhos de notebook no Studio ou a etapa de trabalho de notebook do SageMaker Python SDK em um pipeline.

### Restrições de imagem para trabalhos do SageMaker AI Notebook (Studio)
<a name="notebook-auto-run-constraints-image-studio"></a>

**Compatibilidade com imagem e kernel**. O driver que inicia seu trabalho no caderno pressupõe o seguinte:
+ Um ambiente de execução básico do Python é instalado nas imagens Studio ou bring-your-own (BYO) e é o padrão no shell.
+ O ambiente de execução básico do Python inclui o cliente Jupyter com as especificações do kernel configuradas corretamente.
+ O ambiente de execução básico do Python inclui a função `pip` para que o trabalho do caderno possa instalar dependências do sistema.
+ Para imagens com vários ambientes, seu script de inicialização deve mudar para o ambiente adequado específico do kernel antes de instalar pacotes específicos do caderno. Você deve voltar para o ambiente de runtime padrão do Python, se for diferente do ambiente de runtime do kernel, depois de configurar o ambiente de runtime do Python do kernel.

O driver que inicia seu trabalho no caderno é um script bash, e o Bash v4 deve estar disponível em /bin/bash. 

**Privilégios de root ativados bring-your-own-images (BYOI).** Você deve ter privilégios de root em suas próprias imagens do Studio, seja como usuário root ou por meio de `sudo` acesso. Se você não for um usuário root, mas estiver acessando os privilégios de root por meio de `sudo`, use **1000/100** como o `UID/GID`.

### Restrições de imagem para trabalhos de notebook do SageMaker AI Python SDK
<a name="notebook-auto-run-constraints-image-sdk"></a>

A etapa de trabalho do caderno é compatível com as seguintes imagens:
+ SageMaker Imagens de distribuição listadas em[SageMaker Imagens da Amazon disponíveis para uso com notebooks Studio Classic](notebooks-available-images.md).
+ Uma imagem personalizada com base nas imagens de SageMaker distribuição na lista anterior. Use uma [imagem de SageMaker distribuição](https://github.com/aws/sagemaker-distribution) como base.
+ Uma imagem personalizada (BYOI) pré-instalada com dependências de trabalho do notebook (ou seja,. [sagemaker-headless-execution-driver](https://pypi.org/project/sagemaker-headless-execution-driver/) Sua imagem deve atender aos seguintes requisitos:
  + A imagem vem pré-instalada com dependências de trabalho do caderno.
  + Um ambiente de runtime básico do Python está instalado e é padrão no ambiente shell.
  + O ambiente de execução básico do Python inclui o cliente Jupyter com as especificações do kernel configuradas corretamente.
  + Você tem privilégios de raiz, seja como usuário-raiz ou por meio de acesso `sudo`. Se você não for um usuário root, mas estiver acessando os privilégios de root por meio de `sudo`, use **1000/100** como o `UID/GID`.

## Sub-redes da VPC usadas durante a criação de trabalhos
<a name="notebook-auto-run-constraints-vpc"></a>

Se você usa uma VPC, o Studio usa suas sub-redes privadas para criar seu trabalho. Especifique de uma a cinco sub-redes privadas (e de 1 a 15 grupos de segurança).

Se você usa uma VPC com sub-redes privadas, deve escolher uma das seguintes opções para garantir que o trabalho do caderno possa se conectar a serviços ou recursos dependentes:
+ Se o trabalho precisar acessar um AWS serviço que ofereça suporte a endpoints VPC de interface, crie um endpoint para se conectar ao serviço. Para obter uma lista de serviços que oferecem suporte a endpoints de interface, consulte [AWS serviços que se integram com AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html). Para obter informações sobre como criar uma interface VPC endpoint, consulte [Acessar um AWS serviço usando uma interface VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) endpoint. No mínimo, um gateway de endpoint da VPC do Amazon S3 deve ser fornecido.
+ Se uma tarefa de notebook precisar acessar um AWS serviço que não ofereça suporte a endpoints de interface VPC ou a um recurso externo AWS, crie um gateway NAT e configure seus grupos de segurança para permitir conexões de saída. Para obter informações sobre como configurar um gateway NAT para sua VPC, consulte *VPC com sub-redes públicas e privadas (NAT)* no [Guia do usuário da Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html).

## Limites do serviço
<a name="notebook-auto-run-constraints-service-limit"></a>

Como o agendador de tarefas do notebook é criado a partir dos EventBridge serviços Pipelines, SageMaker Training e Amazon, seus trabalhos de notebook estão sujeitos às cotas específicas do serviço. Se você exceder essas cotas, poderá ver mensagens de erro relacionadas a esses serviços. Por exemplo, há limites para quantos pipelines você pode executar ao mesmo tempo e quantas regras você pode configurar para um único barramento de eventos. Para obter mais informações sobre cotas de SageMaker IA, consulte [Amazon SageMaker AI Endpoints and](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html) Quotas. Para obter mais informações sobre EventBridge cotas, consulte [Amazon EventBridge Quotas](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html).

# Preços para trabalhos em SageMaker notebooks
<a name="notebook-auto-run-pricing"></a>

Quando você agenda trabalhos em notebooks, seus notebooks Jupyter são executados em SageMaker instâncias de treinamento. Depois de selecionar uma **imagem** e um **kernel** no formulário **Criar trabalho**, o formulário fornece uma lista dos tipos de computação disponíveis. Você é cobrado pelo tipo de computação escolhido, com base na duração combinada de uso de todos os trabalhos do caderno executados a partir da definição do trabalho. Se você não especificar um tipo de computação, a SageMaker IA atribuirá a você um tipo de instância padrão do Amazon EC2 de. `ml.m5.large` Para obter um detalhamento dos preços de SageMaker IA por tipo de computação, consulte [Amazon SageMaker AI Pricing](https://aws.amazon.com/sagemaker/pricing).

# Programe seus fluxos de trabalho de ML
<a name="workflow-scheduling"></a>

Com a Amazon SageMaker AI, você pode gerenciar todo o seu fluxo de trabalho de ML ao criar conjuntos de dados, realizar transformações de dados, criar modelos a partir de dados e implantar seus modelos em endpoints para inferência. Se você executar qualquer subconjunto de etapas do seu fluxo de trabalho periodicamente, também poderá optar por executar essas etapas com um cronograma. Por exemplo, você pode querer agendar um trabalho no SageMaker Canvas para executar uma transformação em novos dados a cada hora. Em outro cenário, talvez você queira agendar um trabalho semanal para monitorar o desvio do modelo implantado. Você pode especificar uma programação recorrente de qualquer intervalo de tempo: você pode iterar a cada segundo, minuto, diariamente, semanalmente, mensalmente ou na terceira sexta-feira de cada mês, às 15h.

**Os cenários a seguir resumem as opções disponíveis para você, dependendo do seu caso de uso.**
+ Caso de uso 1: **Criar e agendar seu fluxo de trabalho de ML em um ambiente sem código**. Para iniciantes ou iniciantes em SageMaker IA, você pode usar o Amazon SageMaker Canvas para criar seu fluxo de trabalho de ML e criar execuções programadas usando o agendador baseado em interface de usuário do Canvas.
+ Caso de uso 2: **Criar seu fluxo de trabalho em um único caderno Jupyter e usar um programador sem código**. Profissionais experientes de ML podem usar código para criar o fluxo de trabalho de ML em um caderno Jupyter e usar a opção de agendamento sem código disponível com o widget do Notebook Jobs. Se seu fluxo de trabalho de ML consistir em vários cadernos Jupyter, você poderá usar o atributo de agendamento no Pipelines Python SDK descrito no caso de uso 3.
+ Caso de uso 3: **Criar e agendar seu fluxo de trabalho de ML usando o Pipelines**. Usuários avançados podem usar o [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable), o editor visual do Amazon SageMaker Pipelines ou as opções de EventBridge agendamento da Amazon disponíveis com o Pipelines. Você pode criar um fluxo de trabalho de ML composto por etapas que incluem operações com vários recursos e AWS serviços de SageMaker IA, como o Amazon EMR.


| Descritor | Caso de uso 1 | Caso de uso 2 | Caso de uso 3 | 
| --- | --- | --- | --- | 
| SageMaker Recurso de IA | Processamento de dados do Amazon SageMaker Canvas e agendamento de fluxo de trabalho de ML | Widget de agendamento do Notebook Jobs (UI) | Opções de agendamento do Pipelines Python SDK | 
| Description | Com o Amazon SageMaker Canvas, você pode programar execuções automáticas das etapas de processamento de dados e, em um procedimento separado, atualizações automáticas do conjunto de dados. Você também pode programar indiretamente todo o fluxo de trabalho de ML definindo uma configuração que executa uma predição em lote sempre que um conjunto de dados específico for atualizado. Tanto para processamento automatizado de dados quanto para atualizações de conjuntos de dados, o SageMaker Canvas fornece um formulário básico em que você seleciona uma hora e data de início e um intervalo de tempo entre as execuções (ou uma expressão cron se você agendar uma etapa de processamento de dados). Para obter mais informações sobre como programar etapas de processamento de dados, consulte [Crie um cronograma para processar automaticamente novos dados](canvas-data-export-schedule-job.md). Para obter mais informações sobre como agendar atualizações de predição de conjuntos de dados e lotes, consulte [Como gerenciar automações](canvas-manage-automations.md). | Se você criou seu fluxo de trabalho de pipeline e processamento de dados em um único caderno Jupyter, você pode usar o widget do Notebook Jobs para executar seu caderno sob demanda ou de acordo com um cronograma. O widget do Notebook Jobs exibe um formulário básico em que você especifica o tipo de computação, o cronograma de execução e as configurações personalizadas opcionais. Você define sua programação de execução selecionando um intervalo baseado no tempo ou inserindo uma expressão cron. O widget é instalado automaticamente no Studio, ou você pode realizar uma instalação adicional para usar esse recurso em seu JupyterLab ambiente local. Para obter mais informações sobre o Notebook Jobs, consulte [SageMaker Empregos em notebooks](notebook-auto-run.md). | Você pode usar os recursos de agendamento no SageMaker SDK se tiver implementado seu fluxo de trabalho de ML com Pipelines. Seu pipeline pode incluir etapas como ajuste fino, processamento de dados e implantação. O Pipelines oferece apoio a duas maneiras de programar seu pipeline. Você pode criar uma EventBridge regra da Amazon ou usar o [PipelineSchedule](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.triggers.PipelineSchedule)construtor do SageMaker SDK ou o editor visual do Amazon SageMaker Pipelines para definir um cronograma. Para obter mais informações sobre as opções de programação disponíveis no Pipelines, consulte [Programar execuções de pipeline](pipeline-eventbridge.md). | 
| Otimizado para | Fornece uma opção de agendamento para um fluxo de trabalho do SageMaker Canvas ML | Fornece uma opção de agendamento baseada na interface de usuário para fluxos de trabalho de ML baseados em cadernos Jupyter | Fornece uma opção de SageMaker SDK ou EventBridge agendamento para fluxos de trabalho de ML | 
| Considerações | Você pode agendar seu fluxo de trabalho com a estrutura sem código do Canvas, mas as atualizações do conjunto de dados e as atualizações de transformação em lote podem lidar com até 5 GB de dados. | Você pode agendar um caderno usando o formulário de agendamento baseado em interface de usuário, mas não vários cadernos, no mesmo trabalho. Para programar vários cadernos, use a solução baseada em código do SDK do Pipelines descrita no caso de uso 3. | Você pode usar os recursos de agendamento mais avançados (baseados em SDK) fornecidos pelo Pipelines, mas precisa consultar a documentação da API para especificar as opções corretas, em vez de selecionar em um menu de opções baseado em UI. | 
| Ambiente recomendado | Amazon SageMaker Canvas | Estúdio, JupyterLab ambiente local | Estúdio, JupyterLab ambiente local, qualquer editor de código | 

## Recursos adicionais do
<a name="workflow-scheduling-addit"></a>

**SageMaker A IA oferece as seguintes opções adicionais para programar seus fluxos de trabalho.**
+ [O que é o Amazon EventBridge Scheduler?](https://docs.aws.amazon.com/scheduler/latest/UserGuide/what-is-scheduler.html) . As opções de agendamento discutidas nesta seção incluem opções pré-criadas disponíveis no SageMaker Canvas, no Studio e no SDK AI SageMaker Python. Todas as opções ampliam os recursos da Amazon EventBridge, e você também pode criar sua própria solução de agendamento personalizada com EventBridge.
+ [Execuções programadas e baseadas em eventos para pipelines do Processador de atributos](feature-store-feature-processor-schedule-pipeline.md). Com o processamento de SageMaker recursos da Amazon Feature Store, você pode configurar seus pipelines de processamento de recursos para serem executados de acordo com uma programação ou como resultado de outro evento de AWS serviço.

# AWS Batch suporte para trabalhos de treinamento em SageMaker IA
<a name="training-job-queues"></a>

Uma [fila de trabalhos do AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/job_queues.html) armazena e prioriza os trabalhos enviados antes de serem executados em recursos de computação. Você pode enviar trabalhos de treinamento de SageMaker IA para uma fila de trabalhos para aproveitar as ferramentas de agendamento e priorização de tarefas sem servidor fornecidas pela. AWS Batch

## Como funciona
<a name="training-job-queues-how-it-works"></a>

As etapas a seguir descrevem o fluxo de trabalho de como usar uma AWS Batch fila de trabalhos com trabalhos de treinamento de SageMaker IA. Para ver tutoriais mais detalhados e exemplos de caderno, consulte a seção [Conceitos básicos](#training-job-queues-get-started).
+ Configuração AWS Batch e todas as permissões necessárias. Para obter mais informações, consulte [Configurar o AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/get-set-up-for-aws-batch.html) no *Manual do usuário do AWS Batch *.
+ Crie os seguintes AWS Batch recursos no console ou usando o AWS CLI:
  + [Ambiente de serviço](https://docs.aws.amazon.com/batch/latest/userguide/service-environments.html) — contém parâmetros de configuração para integração com a SageMaker IA.
  + [SageMaker Fila de trabalhos de treinamento de IA](https://docs.aws.amazon.com/batch/latest/userguide/create-sagemaker-job-queue.html) — integra-se à SageMaker IA para enviar trabalhos de treinamento.
+ Configure seus detalhes e solicite um trabalho de treinamento de SageMaker IA, como a imagem do contêiner de treinamento. Para enviar um trabalho de treinamento para uma AWS Batch fila, você pode usar o AWS CLI, o ou o AWS SDK para Python (Boto3) SageMaker AI Python SDK.
+ Envie suas tarefas de treinamento à fila de trabalhos. É possível usar as seguintes opções para enviar tarefas:
  + Use a API do AWS Batch [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html).
  + Use o [`aws_batch`módulo](https://github.com/aws/sagemaker-python-sdk/tree/master/src/sagemaker/aws_batch) do SDK SageMaker AI Python. Depois de criar um TrainingQueue objeto e um objeto de treinamento modelo (como um Estimador ou ModelTrainer), você pode enviar trabalhos de treinamento para o TrainingQueue usando o `queue.submit()` método.
+ Depois de enviar trabalhos, visualize sua fila de trabalhos e o status do trabalho com o AWS Batch console, a AWS Batch [DescribeServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeServiceJob.html)API ou a API de SageMaker IA [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html).

## Custo e disponibilidade
<a name="training-job-queues-cost-availability"></a>

Para obter informações detalhadas sobre preços de trabalhos de treinamento, consulte os [preços do Amazon SageMaker AI](https://aws.amazon.com/sagemaker-ai/pricing/). Com AWS Batch, você paga somente pelos AWS recursos usados, como instâncias do Amazon EC2. Para obter mais informações, consulte [Preços do AWS Batch](https://aws.amazon.com/batch/pricing/).

Você pode usar AWS Batch para trabalhos de treinamento de SageMaker IA em qualquer Região da AWS lugar onde os trabalhos de treinamento estejam disponíveis. Para obter mais informações, consulte os [endpoints e cotas do Amazon SageMaker AI](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

Para garantir que você tenha a capacidade necessária quando precisar, você pode usar os planos de treinamento flexíveis (FTP) de SageMaker IA. Esses planos permitem que você reserve capacidade para suas tarefas de treinamento. Quando combinado com os recursos AWS Batch de filas, você pode maximizar a utilização durante a duração do seu plano. Para obter mais informações, consulte [Reservar planos de treinamento para seus cargos ou HyperPod grupos de treinamento](https://docs.aws.amazon.com/sagemaker/latest/dg/reserve-capacity-with-training-plans.html).

## Conceitos básicos
<a name="training-job-queues-get-started"></a>

Para ver um tutorial sobre como configurar uma fila de AWS Batch trabalhos e enviar trabalhos de treinamento em SageMaker IA, consulte [Introdução à SageMaker IA AWS Batch no](https://docs.aws.amazon.com/batch/latest/userguide/getting-started-sagemaker.html) *Guia do AWS Batch usuário*.

Para notebooks Jupyter que mostram como usar o `aws_batch` módulo no SDK do AI SageMaker Python, consulte os exemplos de cadernos [AWS Batch para trabalhos de treinamento de SageMaker IA](https://github.com/aws/amazon-sagemaker-examples/tree/default/%20%20%20%20%20%20build_and_train_models/sm-training-queues) no repositório. amazon-sagemaker-examples GitHub 