

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

# Adapte o trabalho de treinamento para acessar as imagens em um registro privado do Docker
<a name="docker-containers-adapt-your-own-private-registry"></a>

Você pode usar um [registro privado do Docker](https://docs.docker.com/registry/) em vez de um Amazon Elastic Container Registry (Amazon ECR) para hospedar suas imagens para treinamento de IA. SageMaker As instruções a seguir mostram como criar um registro do Docker, configurar sua nuvem privada virtual (VPC) e seu trabalho de treinamento, armazenar imagens e SageMaker dar à IA acesso à imagem de treinamento no registro privado do docker. Essas instruções também mostram como usar um registro do Docker que requer autenticação para um trabalho de SageMaker treinamento.

## Criar e armazenar as imagens em um registro Docker privado
<a name="docker-containers-adapt-your-own-private-registry-prerequisites"></a>

Criar um registro Docker privado para armazenar as imagens. Seu registro deve:
+ usar o protocolo [API HTTP de registro do Docker](https://docs.docker.com/registry/spec/api/)
+ ser acessível a partir da mesma VPC especificada no [VpcConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html#API_CreateTrainingJob_RequestSyntax)parâmetro na `CreateTrainingJob` API. Insira `VpcConfig` ao criar o trabalho de treinamento.
+ protegido com um [certificado TLS](https://aws.amazon.com/what-is/ssl-certificate/) de uma autoridade de certificação pública conhecida.

Para obter mais informações sobre como criar um registro do Docker, consulte [Como implantar um servidor de registro](https://docs.docker.com/registry/deploying/).

## Configure sua VPC e SageMaker seu trabalho de treinamento
<a name="docker-containers-adapt-your-own-private-registry-configure"></a>

SageMaker A IA usa uma conexão de rede em sua VPC para acessar imagens em seu registro do Docker. Para usar as imagens no registro do Docker para treinamento, o registro deve estar acessível em uma Amazon VPC na sua conta. Para obter mais informações, consulte [Use um registro do Docker que exija autenticação para treinamento](docker-containers-adapt-your-own-private-registry-authentication.md).

Você também deve configurar o trabalho de treinamento para se conectar à mesma VPC à qual seu registro do Docker tem acesso. Para obter mais informações, consulte [Configurar um trabalho de treinamento para acesso ao Amazon VPC ](https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html#train-vpc-configure).

## Crie um trabalho de treinamento usando uma imagem do seu registro privado do Docker
<a name="docker-containers-adapt-your-own-private-registry-create"></a>

Para usar uma imagem do seu registro privado do Docker para treinamento, use o guia a seguir para configurar a imagem, configurar e criar um trabalho de treinamento. Os exemplos de código a seguir usam o AWS SDK para Python (Boto3) cliente.

1. Crie um objeto de configuração de imagem de treinamento e insira `Vpc`, o campo `TrainingRepositoryAccessMode` da seguinte forma.

   ```
   training_image_config = {
       'TrainingRepositoryAccessMode': 'Vpc'
   }
   ```
**nota**  
Se seu registro privado do Docker exigir autenticação, você deverá adicionar um objeto `TrainingRepositoryAuthConfig` ao objeto de configuração da imagem de treinamento. Você também deve especificar o Amazon Resource Name (ARN) de uma AWS Lambda função que fornece credenciais de acesso à SageMaker IA usando o `TrainingRepositoryCredentialsProviderArn` campo do objeto. `TrainingRepositoryAuthConfig` Para obter mais informações, consulte a estrutura de código de exemplo a seguir.  

   ```
   training_image_config = {
      'TrainingRepositoryAccessMode': 'Vpc',
      'TrainingRepositoryAuthConfig': {
           'TrainingRepositoryCredentialsProviderArn': '{{arn:aws:lambda:Region:Acct:function:FunctionName}}'
      }
   }
   ```

   Para obter informações sobre como criar a função do Lambda para fornecer autenticação, consulte [Use um registro do Docker que exija autenticação para treinamento](docker-containers-adapt-your-own-private-registry-authentication.md).

1. Use um cliente Boto3 para criar um trabalho de treinamento e passar a configuração correta para a API [create\_training\_job](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). As instruções a seguir mostram como configurar os componentes e criar um trabalho de treinamento.

   1. Crie o objeto `AlgorithmSpecification` que você deseja passar para `create_training_job`. Use o objeto de configuração da imagem de treinamento criado na etapa anterior, conforme exibido no seguinte exemplo de código.

      ```
      algorithm_specification = {
         'TrainingImage': '{{myteam.myorg.com/docker-local/my-training-image:<IMAGE-TAG>}}',
         'TrainingImageConfig': training_image_config,
         'TrainingInputMode': '{{File}}'
      }
      ```
**nota**  
Para usar uma versão fixa, em vez de uma versão atualizada de uma imagem, consulte o [resumo](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier) da imagem em vez de usar o nome ou a tag.

   1. Especifique o nome do trabalho de treinamento e da função para a qual deseja passar para `create_training_job`, conforme mostrado no seguinte exemplo de código. 

      ```
      training_job_name = '{{private-registry-job}}'
      execution_role_arn = '{{arn:aws:iam::123456789012:role/SageMakerExecutionRole}}'
      ```

   1. Especifique um grupo de segurança e uma sub-rede para a configuração da VPC para o trabalho de treinamento. Seu registro privado do Docker deve permitir o tráfego de entrada dos grupos de segurança que você especificar, conforme mostrado no exemplo de código a seguir.

      ```
      vpc_config = {
          'SecurityGroupIds': ['{{sg-0123456789abcdef0}}'],
          'Subnets': ['{{subnet-0123456789abcdef0}}','{{subnet-0123456789abcdef1}}']
      }
      ```
**nota**  
Se sua sub-rede não estiver na mesma VPC que seu registro privado do Docker, você deverá configurar uma conexão de rede entre as duas VPCs. SeeConnect VPCs usando emparelhamento de [VPC para obter](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-peering.html) mais informações.

   1. Especifique a configuração de recursos, incluindo instâncias de computação de machine learning e volumes de armazenamento a serem usados para treinamento, conforme mostrado no exemplo de código a seguir. 

      ```
      resource_config = {
          'InstanceType': '{{ml.m4.xlarge}}',
          'InstanceCount': {{1}},
          'VolumeSizeInGB': {{10}},
      }
      ```

   1. Especifique a configuração dos dados de entrada e saída, onde o conjunto de dados de treinamento é armazenado e onde você deseja armazenar os artefatos do modelo, conforme mostrado no exemplo de código a seguir.

      ```
      input_data_config = [
          {
              "ChannelName": "training",
              "DataSource":
              {
                  "S3DataSource":
                  {
                      "S3DataDistributionType": "{{FullyReplicated}}",
                      "S3DataType": "{{S3Prefix}}",
                      "S3Uri": "{{s3://your-training-data-bucket/training-data-folder}}"
                  }
              }
          }
      ]
      
      output_data_config = {
          'S3OutputPath': '{{s3://your-output-data-bucket/model-folder}}'
      }
      ```

   1. Especifique o número máximo de segundos que um trabalho de treinamento de modelo pode ser executado, conforme mostrado no exemplo de código a seguir.

      ```
      stopping_condition = {
          'MaxRuntimeInSeconds': {{1800}}
      }
      ```

   1. Por fim, crie o trabalho de treinamento usando os parâmetros especificados nas etapas anteriores, conforme exibido no seguinte exemplo de código.

      ```
      import boto3
      sm = boto3.client('sagemaker')
      try:
          resp = sm.create_training_job(
              TrainingJobName=training_job_name,
              AlgorithmSpecification=algorithm_specification,
              RoleArn=execution_role_arn,
              InputDataConfig=input_data_config,
              OutputDataConfig=output_data_config,
              ResourceConfig=resource_config,
              VpcConfig=vpc_config,
              StoppingCondition=stopping_condition
          )
      except Exception as e:
          print(f'error calling CreateTrainingJob operation: {e}')
      else:
          print(resp)
      ```