Acesse um contêiner de treinamento AWS Systems Manager para depuração remota - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Acesse um contêiner de treinamento AWS Systems Manager para depuração remota

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 ou ao seu próprio contêiner de treinamento configurado com o ambiente de SageMaker treinamento.

Configurar permissões do IAM

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

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

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

IAM user (Usuário do IAM)

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.

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

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

{ "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 na Referência AWS de autorização de serviço.

Como habilitar a depuração remota para um trabalho de treinamento SageMaker

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 for 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

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 for 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á semprealgo-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-2algo-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/.

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

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

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

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

Acessar o contêiner de treinamento

Use o comando a seguir no terminal para iniciar a sessão SSM (aws ssm start-session) 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

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 o Session Manager.

Registrar em log comandos e resultados de sessão do SSM

Depois de seguir as instruções em Criar um documento de preferências do gerenciador de sessões (linha de comando), 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

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 chamadotraining-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

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