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

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

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 SageMaker Framework Containers 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.

IAM role (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, é SageMaker necessário iniciar o agente SSM no contêiner de treinamento quando o trabalho de treinamento for iniciado. Para permitir que o agente SSM se comunique com o serviço SSM, adicione a política a seguir à função 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 fornecer a um usuário do IAM permissões de sessão de SSM para se conectar a um destino de 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 Condition chave, 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 sagemaker:EnableRemoteDebug condição para restringir a depuração remota. Veja a seguir um exemplo de política para 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 a Amazon SageMaker 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 ativar a depuração remota ao iniciar ou atualizar um trabalho de treinamento na Amazon. 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()

Para 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 enable_remote_debug parâmetro como. True O valor padrão éFalse, portanto, se você não definir esse parâmetro ou defini-lo explicitamente, a False 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 )

Para 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 é ou. Downloading Training

# Enable RemoteDebug estimator.enable_remote_debug() # Disable RemoteDebug estimator.disable_remote_debug()
AWS SDK for Python (Boto3)

Para 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 EnableRemoteDebug chave 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 } )

Para habilitar a depuração remota atualizando um trabalho de treinamento

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

# Update a training job sm.update_training_job( TrainingJobName=job_name, RemoteDebugConfig={ "EnableRemoteDebug": True # True | False } )
AWS Command Line Interface (CLI)

Para habilitar a depuração remota ao criar um trabalho de treinamento

Prepare um arquivo de CreateTrainingJob solicitação 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 comando a seguir no terminal em que você envia o trabalho de treinamento. O comando de exemplo a seguir pressupõe que o arquivo JSON tenha um nome. train-with-remote-debug.json Se você executá-lo em um notebook 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

Para habilitar a depuração remota atualizando um trabalho de treinamento

Prepare um arquivo de UpdateTrainingJob solicitação 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 comando a seguir no terminal em que você envia o trabalho de treinamento. O comando de exemplo a seguir pressupõe que o arquivo JSON tenha um nome. train-with-remote-debug.json Se você executá-lo em um notebook 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 trabalho SecondaryStatus de treinamento correspondente forTraining. 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

Para verificar 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 desempenho SecondaryStatus de um trabalho de treinamento, execute o seguinte 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 trabalho SecondaryStatus de treinamento, execute o AWS CLI comando a seguir para SageMaker.

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

Para 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 a ID de destino:sagemaker-training-job:<training-job-name>_algo-<n>, onde algo-<n> está o nome do host do contêiner. Se seu trabalho estiver sendo executado em uma única instância, o host estará semprealgo-1. Se você executar um trabalho de treinamento distribuído em várias instâncias, SageMaker cria um número igual de hosts e fluxos de log. Por exemplo, se você usar 4 instânciasalgo-1, SageMaker cria algo-2algo-3,, algo-4 e. Você deve determinar qual stream de log deseja depurar e seu número de host. Para acessar fluxos de log associados a um trabalho de treinamento, faça o seguinte.

  1. Abra o SageMaker console da Amazon em https://console.aws.amazon.com/sagemaker/.

  2. No painel de navegação esquerdo, escolha Treinamento e, em seguida, escolha Trabalhos de treinamento.

  3. Na lista de trabalhos de treinamento, escolha o trabalho de treinamento que você deseja depurar. A página de detalhes do trabalho de treinamento é aberta.

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

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

Para saber mais sobre como SageMaker gerencia as informações de configuração para treinamento distribuído em várias instâncias, consulte Configuração de treinamento distribuído.

Para 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 foralgo-1, a ID de destino serásagemaker-training-job:training-job-test-remote-debug_algo-1. Se a saída desse comando for semelhante aStarting 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 comandos e resultados da sessão SSM

Depois de seguir as instruções em Criar um documento de preferências do Session Manager (linha de comando), você pode criar documentos SSM que definam suas preferências para sessões SSM. Você pode usar documentos SSM para configurar as opções da sessão, incluindo criptografia de dados, duração da sessão e registro. 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 registros de erros do SSM

A Amazon SageMaker 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 */ssm log 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 SageMaker remota.

  • A depuração remota não é compatível com contêineres de SageMaker algoritmos ou contêineres a partir de então. 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.