

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

# Acesse um contêiner de treinamento AWS Systems Manager para depuração remota
<a name="train-remote-debugging"></a>

Você pode se conectar com segurança aos contêineres de SageMaker treinamento por meio do AWS Systems Manager (SSM). Isso dá a você um acesso em nível de shell às tarefas de treinamento de depuração que estão sendo executadas no contêiner. Você também pode registrar comandos e respostas que são transmitidos para a Amazon CloudWatch. Se você usa sua própria Amazon Virtual Private Cloud (VPC) para treinar um modelo, você pode usá-la para configurar um endpoint de VPC AWS PrivateLink para SSM e conectar-se a contêineres de forma privada por meio do SSM.

Você pode se conectar aos [contêineres do SageMaker AI Framework](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) ou ao seu próprio contêiner de treinamento configurado com o ambiente de SageMaker treinamento. 

## Configurar permissões do IAM
<a name="train-remote-debugging-iam"></a>

Para habilitar o SSM em seu contêiner de SageMaker treinamento, você precisa configurar uma função do IAM para o contêiner. Para que você ou os usuários da sua AWS conta acessem os contêineres de treinamento por meio do SSM, você precisa configurar os usuários do IAM com permissões para usar o SSM.

### perfil do IAM
<a name="train-remote-debugging-iam-role"></a>

Para que um contêiner de SageMaker treinamento comece com o agente SSM, forneça uma função do IAM com permissões de SSM.

Para habilitar a depuração remota para seu trabalho de treinamento, a SageMaker IA precisa iniciar o [agente SSM](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) no contêiner de treinamento quando o trabalho de treinamento é iniciado. Para permitir que o agente SSM se comunique com o serviço do SSM, adicione a política a seguir ao perfil do IAM que você usa para executar seu trabalho de treinamento. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	             
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": "*"    
        }
    ]
 }
```

------

### IAM user (Usuário do IAM)
<a name="train-remote-debugging-iam-user"></a>

Adicione a política a seguir para dar a um usuário do IAM permissões de sessão SSM para se conectar a um destino SSM. Nesse caso, o alvo do SSM é um contêiner de SageMaker treinamento.

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

****  

```
{
    "Version":"2012-10-17",		 	 	             
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession"
            ],
            "Resource": "*"    
        }
    ]
}
```

------

 Você pode restringir os usuários do IAM a se conectarem somente a contêineres para trabalhos de treinamento específicos adicionando a chave `Condition`, conforme mostrado no exemplo de política a seguir. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	             
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/aws:ssmmessages:target-id": [
                        "sagemaker-training-job:*"
                    ]
                }
            } 
        }
    ]
}
```

------

Você também pode usar explicitamente a chave de condição `sagemaker:EnableRemoteDebug` para restringir a depuração remota. Veja a seguir um exemplo de política para os usuários do IAM restringirem a depuração remota.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyRemoteDebugInTrainingJob",
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreateTrainingJob",
                "sagemaker:UpdateTrainingJob"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "sagemaker:EnableRemoteDebug": false
                }
            }
        }
    ]
}
```

------

Para obter mais informações, consulte [Chaves de condição para Amazon SageMaker AI](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonsagemaker.html#amazonsagemaker-policy-keys) na *Referência AWS de autorização de serviço*.

## Como habilitar a depuração remota para um trabalho de treinamento SageMaker
<a name="train-remote-debugging-how-to-use"></a>

Nesta seção, saiba como habilitar a depuração remota ao iniciar ou atualizar um trabalho de treinamento na Amazon AI. SageMaker 

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

Usando a classe estimator no SDK do SageMaker Python, você pode ativar ou desativar a depuração remota usando o parâmetro ou os métodos e. `enable_remote_debug` `enable_remote_debug()` `disable_remote_debug()`

**Habilitar a depuração remota ao criar um trabalho de treinamento**

Para ativar a depuração remota ao criar um novo trabalho de treinamento, defina o parâmetro `enable_remote_debug` como `True`. O valor padrão é `False`, portanto, se você não definir esse parâmetro ou defini-lo explicitamente como `False`, a funcionalidade de depuração remota será desativada.

```
import sagemaker

session = sagemaker.Session()

estimator = sagemaker.estimator.Estimator(
    ...,
    sagemaker_session=session,
    image_uri="<your_image_uri>", #must be owned by your organization or Amazon DLCs 
    role=role,
    instance_type="ml.m5.xlarge",
    instance_count=1,
    output_path=output_path,
    max_run=1800,
    enable_remote_debug=True
)
```

**Habilitar a depuração remota atualizando um trabalho de treinamento**

Usando os seguintes métodos de classe de estimador, você pode ativar ou desativar a depuração remota enquanto um trabalho de treinamento está sendo executado quando o `SecondaryStatus` do trabalho é `Downloading` ou `Training`:

```
# Enable RemoteDebug
estimator.enable_remote_debug()

# Disable RemoteDebug
estimator.disable_remote_debug()
```

------
#### [ AWS SDK para Python (Boto3) ]

**Habilitar a depuração remota ao criar um trabalho de treinamento**

Para ativar a depuração remota ao criar um novo trabalho de treinamento, defina o valor da chave `EnableRemoteDebug` como `True` no parâmetro `RemoteDebugConfig`. 

```
import boto3

sm = boto3.Session(region_name=region).client("sagemaker")

# Start a training job
sm.create_training_job(
    ...,
    TrainingJobName=job_name,
    AlgorithmSpecification={
        // Specify a training Docker container image URI 
        // (Deep Learning Container or your own training container) to TrainingImage.
        "TrainingImage": "<your_image_uri>",
        "TrainingInputMode": "File"
    },
    RoleArn=iam_role_arn,
    OutputDataConfig=output_path,
    ResourceConfig={
        "InstanceType": "ml.m5.xlarge",
        "InstanceCount": 1,
        "VolumeSizeInGB": 30
    },
    StoppingCondition={
        "MaxRuntimeInSeconds": 86400
    },
    RemoteDebugConfig={
        "EnableRemoteDebug": True
    }
)
```

**Habilitar a depuração remota atualizando um trabalho de treinamento**

Usando a API `update_traing_job`, você pode ativar ou desativar a depuração remota enquanto um trabalho de treinamento está em execução quando o `SecondaryStatus` do trabalho é `Downloading` ou `Training`.

```
# Update a training job
sm.update_training_job(
    TrainingJobName=job_name,
    RemoteDebugConfig={
        "EnableRemoteDebug": True     # True | False
    }
)
```

------
#### [ AWS Command Line Interface (CLI) ]

**Habilitar a depuração remota ao criar um trabalho de treinamento**

Prepare um arquivo de solicitação `CreateTrainingJob` no formato JSON, da seguinte maneira:

```
// train-with-remote-debug.json
{
    "TrainingJobName": job_name,
    "RoleArn": iam_role_arn,
    "AlgorithmSpecification": {
        // Specify a training Docker container image URI (Deep Learning Container or your own training container) to TrainingImage.
        "TrainingImage": "<your_image_uri>",
        "TrainingInputMode": "File"
    },
    "OutputDataConfig": {
        "S3OutputPath": output_path
    },
    "ResourceConfig": {
        "InstanceType": "ml.m5.xlarge",
        "InstanceCount": 1,
        "VolumeSizeInGB": 30
    },
    "StoppingCondition": {
        "MaxRuntimeInSeconds": 86400
    },
    "RemoteDebugConfig": {
        "EnableRemoteDebug": True
    }
}
```

Depois de salvar o arquivo JSON, execute o seguinte comando em seu terminal onde você envia o trabalho de treinamento: O comando de exemplo a seguir pressupõe que o arquivo JSON tenha o nome `train-with-remote-debug.json`. Se você executá-lo em um caderno Jupyter, adicione um ponto de exclamação (`!`) ao início da linha.

```
aws sagemaker create-training-job \
    --cli-input-json file://train-with-remote-debug.json
```

**Habilitar a depuração remota atualizando um trabalho de treinamento**

Prepare um arquivo de solicitação `UpdateTrainingJob` no formato JSON, da seguinte maneira:

```
// update-training-job-with-remote-debug-config.json
{
    "TrainingJobName": job_name,
    "RemoteDebugConfig": {
        "EnableRemoteDebug": True
    }
}
```

Depois de salvar o arquivo JSON, execute o seguinte comando em seu terminal onde você envia o trabalho de treinamento: O comando de exemplo a seguir pressupõe que o arquivo JSON tenha o nome `train-with-remote-debug.json`. Se você executá-lo em um caderno Jupyter, adicione um ponto de exclamação (`!`) ao início da linha.

```
aws sagemaker update-training-job \
    --cli-input-json file://update-training-job-with-remote-debug-config.json
```

------

## Acesse seu contêiner de treinamento
<a name="train-remote-debugging-access-container"></a>

Você pode acessar um contêiner de treinamento quando o `SecondaryStatus` do trabalho de treinamento correspondente for `Training`. Os exemplos de código a seguir demonstram como verificar o status do seu trabalho de treinamento usando a `DescribeTrainingJob` API, como verificar os registros do trabalho de treinamento e como fazer login no contêiner de treinamento. CloudWatch

**Conferir o status de um trabalho de treinamento**

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

Para verificar o desempenho `SecondaryStatus` de um trabalho de treinamento, execute o seguinte código do SDK do SageMaker Python.

```
import sagemaker

session = sagemaker.Session()

# Describe the job status
training_job_info = session.describe_training_job(job_name)
print(training_job_info)
```

------
#### [ AWS SDK para Python (Boto3) ]

Para verificar o `SecondaryStatus` de um trabalho de treinamento, execute o código do SDK para Python (Boto3).

```
import boto3

session = boto3.session.Session()
region = session.region_name
sm = boto3.Session(region_name=region).client("sagemaker")

# Describe the job status
sm.describe_training_job(TrainingJobName=job_name)
```

------
#### [ AWS Command Line Interface (CLI) ]

Para verificar o desempenho `SecondaryStatus` de um trabalho de treinamento, execute o AWS CLI comando a seguir para SageMaker IA.

```
aws sagemaker describe-training-job \
    --training-job-name job_name
```

------

**Encontrar o nome do host de um contêiner de treinamento**

Para se conectar ao contêiner de treinamento por meio do SSM, use esse formato para o ID de destino: `sagemaker-training-job:<training-job-name>_algo-<n>`, onde `algo-<n>` é o nome do host do contêiner. Se seu trabalho estiver sendo executado em uma única instância, o host será sempre`algo-1`. Se você executa um trabalho de treinamento distribuído em várias instâncias, a SageMaker IA cria um número igual de hosts e fluxos de log. Por exemplo, se você usar 4 instâncias, a SageMaker IA cria `algo-1` `algo-2``algo-3`,, `algo-4` e. Você deve determinar qual fluxo de log deseja depurar e seu número de host. Para acessar os fluxos de logs associados a uma tarefa de treinamento, faça o seguinte:

1. Abra o console do Amazon SageMaker AI em [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. No painel de navegação à esquerda, selecione **Treinamento** e **Trabalhos de treinamento**.

1. Na lista de **trabalhos de treinamento**, selecione o trabalho de treinamento que você deseja depurar. A página de detalhes do trabalho de treinamento abre.

1. Na seção **Monitor**, escolha **Exibir logs**. A lista de streams do registro de tarefas de treinamento relacionado é aberta no CloudWatch console.

1. Os nomes dos fluxos de log aparecem no formato `<training-job-name>/algo-<n>-<time-stamp>`, com `algo-<n>` representando o nome do host. 

Para saber mais sobre como a SageMaker IA gerencia as informações de configuração para treinamento distribuído em várias instâncias, consulte [Configuração de treinamento distribuído](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-running-container.html#your-algorithms-training-algo-running-container-dist-training).

**Acessar o contêiner de treinamento**

Use o comando a seguir no terminal para iniciar a sessão SSM (`[aws ssm start-session](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html)`) e conectar-se ao contêiner de treinamento. 

```
aws ssm start-session --target sagemaker-training-job:<training-job-name>_algo-<n>
```

Por exemplo, se o nome do trabalho de treinamento for `training-job-test-remote-debug` e o nome do host for `algo-1`, o ID de destino será `sagemaker-training-job:training-job-test-remote-debug_algo-1`. Se a saída desse comando for semelhante a `Starting session with SessionId:xxxxx`, a conexão será bem-sucedida.

### Acesso SSM com AWS PrivateLink
<a name="train-remote-debugging-access-container-vpc"></a>

Se seus contêineres de treinamento forem executados em uma Amazon Virtual Private Cloud que não esteja conectada à Internet pública, você poderá usá-los AWS PrivateLink para habilitar o SSM. AWS PrivateLink restringe todo o tráfego de rede entre suas instâncias de endpoint, SSM e Amazon EC2 à rede Amazon. Para obter mais informações sobre como configurar o acesso SSM com AWS PrivateLink, consulte [Configurar um endpoint Amazon VPC para](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-privatelink.html) o Session Manager. 

## Registrar em log comandos e resultados de sessão do SSM
<a name="train-remote-debugging-log-ssm"></a>

Depois de seguir as instruções em [Criar um documento de preferências do gerenciador de sessões (linha de comando)](https://docs.aws.amazon.com/systems-manager/latest/userguide/getting-started-create-preferences-cli.html), você pode criar documentos SSM que definam suas preferências para sessões SSM. É possível usar os documentos SSM para configurar as opções da sessão, inclusive criptografia de dados, duração da sessão e registro em log. Por exemplo, você pode especificar se deseja armazenar dados de log de sessão em um bucket do Amazon Simple Storage Service (Amazon S3) ou em um grupo Amazon CloudWatch Logs. Você pode criar  documentos que definam preferências gerais para todas as sessões de uma AWS conta e/ou documentos que definam preferências para sessões individuais. Região da AWS

## Solução de problemas verificando os logs de erros do SSM
<a name="train-remote-debugging-checking-ssm-agent-logs"></a>

O Amazon SageMaker AI carrega erros do agente SSM para seus CloudWatch registros no grupo de `/aws/sagemaker/TrainingJobs` registros. Os fluxos de log do agente SSM são nomeados neste formato: `<job-name>/algo-<n>-<timestamp>/ssm`. Por exemplo, se você criar um trabalho de treinamento de dois nós chamado`training-job-test-remote-debug`, o registro do trabalho de treinamento `training-job-test-remote-debug/algo-<n>-<timestamp>` e vários registros de erros do agente SSM `training-job-test-remote-debug/algo-<n>-<timestamp>/ssm` serão enviados para seus CloudWatch registros. Neste exemplo, você pode revisar os fluxos de log `*/ssm` para solucionar problemas de SSM.

```
training-job-test-remote-debug/algo-1-1680535238
training-job-test-remote-debug/algo-2-1680535238
training-job-test-remote-debug/algo-1-1680535238/ssm
training-job-test-remote-debug/algo-2-1680535238/ssm
```

## Considerações
<a name="train-remote-debugging-considerations"></a>

Considere o seguinte ao usar a depuração remota de SageMaker IA.
+ A depuração remota não é compatível com contêineres de [algoritmos de SageMaker IA ou contêineres](https://docs.aws.amazon.com/sagemaker/latest/dg/algorithms-choose.html) com IA em diante. SageMaker AWS Marketplace
+ Você não pode iniciar uma sessão de SSM para contêineres que tenham o isolamento de rede ativado porque o isolamento impede chamadas de rede de saída.