Adapte o trabalho de treinamento para acessar as imagens em um registro privado do Docker - 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á.

Adapte o trabalho de treinamento para acessar as imagens em um registro privado do Docker

Você pode usar um registro privado do Docker 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

Criar um registro Docker privado para armazenar as imagens. Seu registro deve:

  • usar o protocolo API HTTP de registro do Docker

  • ser acessível a partir da mesma VPC especificada no VpcConfigparâmetro na CreateTrainingJob API. Insira VpcConfig ao criar o trabalho de treinamento.

  • protegido com um certificado TLS 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.

Configure sua VPC e SageMaker seu trabalho de treinamento

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.

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 .

Crie um trabalho de treinamento usando uma imagem do seu registro privado do Docker

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

  2. Use um cliente Boto3 para criar um trabalho de treinamento e passar a configuração correta para a API create_training_job. 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 da imagem em vez de usar o nome ou a tag.

    2. 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'
    3. 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 o peering de VPC para obter mais informações.

    4. 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, }
    5. 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' }
    6. 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 }
    7. 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)