Adaptar el trabajo de entrenamiento para acceder a las imágenes de un registro privado de Docker - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Adaptar el trabajo de entrenamiento para acceder a las imágenes de un registro privado de Docker

Puedes usar un registro de Docker privado en lugar de un Amazon Elastic Container Registry (Amazon ECR) para alojar tus imágenes para Training. SageMaker Las siguientes instrucciones muestran cómo crear un registro de Docker, configurar la nube privada virtual (VPC) y el trabajo de formación, almacenar imágenes y SageMaker dar acceso a la imagen de formación en el registro de Docker privado. Estas instrucciones también le muestran cómo utilizar un registro de Docker que requiera autenticación para un trabajo de formación. SageMaker

Crear y almacenar imágenes en un registro privado de Docker

Cree un registro privado de Docker para almacenar las imágenes. Su registro debe:

  • utilizar el protocolo Docker Registry HTTP API

  • ser accesible desde la misma VPC especificada en el VpcConfigparámetro de la API. CreateTrainingJob Introdúzcala VpcConfig cuando cree su trabajo de entrenamiento.

  • protegerse con un certificado TLS de una autoridad de certificación pública conocida.

Para obtener más información sobre la creación de un registro de Docker, consulte Implementar un servidor de registro.

Configure su VPC y SageMaker su trabajo de formación

SageMaker utiliza una conexión de red dentro de la VPC para acceder a las imágenes del registro de Docker. Para utilizar las imágenes de su registro de Docker con fines de entrenamiento, debe poder acceder al registro desde una VPC de Amazon de su cuenta. Para obtener más información, consulte Utilizar un registro de Docker que requiera autenticación para el entrenamiento.

También debe configurar su trabajo de entrenamiento para conectarse a la misma VPC a la que tiene acceso su registro de Docker. Para obtener más información, consulte Configurar un trabajo de entrenamiento para Amazon VPC Access.

Crear un trabajo de entrenamiento con una imagen del registro privado de Docker

Para usar una imagen de su registro privado de Docker con fines de entrenamiento, utilice la siguiente guía para configurar su imagen, as´çi como configurar y crear un trabajo de entrenamiento. Los ejemplos de código que aparecen a continuación utilizan el AWS SDK for Python (Boto3) cliente.

  1. Cree un objeto de configuración de imagen de entrenamiento e introduzca Vpc en el campo TrainingRepositoryAccessMode de la siguiente manera.

    training_image_config = { 'TrainingRepositoryAccessMode': 'Vpc' }
    nota

    Si su registro privado de Docker requiere autenticación, debe añadir un objeto TrainingRepositoryAuthConfig al objeto de configuración de la imagen de entrenamiento. También debe especificar el nombre de recurso de Amazon (ARN) de una AWS Lambda función que proporcione credenciales de acceso para SageMaker utilizar el TrainingRepositoryCredentialsProviderArn campo del TrainingRepositoryAuthConfig objeto. Para obtener más información, consulte la estructura del código de ejemplo que se incluye a continuación.

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

    Para obtener información acerca de cómo crear la función de Lambda para proporcionar autenticación, consulte Utilizar un registro de Docker que requiera autenticación para el entrenamiento.

  2. Utilice un cliente Boto3 para crear un trabajo de entrenamiento y pase la configuración correcta a la API create_training_job. En las siguientes instrucciones se muestra cómo configurar los componentes y crear un trabajo de entrenamiento.

    1. Cree el objeto AlgorithmSpecification que desea pasar a create_training_job. Utilice el objeto de configuración de imagen de entrenamiento que creó en el paso anterior, tal y como se muestra en el siguiente ejemplo de código.

      algorithm_specification = { 'TrainingImage': 'myteam.myorg.com/docker-local/my-training-image:<IMAGE-TAG>', 'TrainingImageConfig': training_image_config, 'TrainingInputMode': 'File' }
      nota

      Para utilizar una versión fija de una imagen en lugar de una versión actualizada, consulte el resumen de la imagen en lugar de utilizar el nombre o la etiqueta.

    2. Especifique el nombre del puesto de entrenamiento y el rol que desea pasar a create_training_job, tal y como se muestra en el siguiente ejemplo de código.

      training_job_name = 'private-registry-job' execution_role_arn = 'arn:aws:iam::123456789012:role/SageMakerExecutionRole'
    3. Especifique un grupo de seguridad y una subred para la configuración de VPC para su trabajo de entrenamiento. Su registro privado de Docker debe permitir el tráfico entrante de los grupos de seguridad que especifique, como se muestra en el siguiente ejemplo de código.

      vpc_config = { 'SecurityGroupIds': ['sg-0123456789abcdef0'], 'Subnets': ['subnet-0123456789abcdef0','subnet-0123456789abcdef1'] }
      nota

      Si su subred no está en la misma VPC que su registro privado de Docker, debe configurar una conexión de red entre las dos VPC. SeeConnect Las VPC utilizan la interconexión de VPC para obtener más información.

    4. Especifique la configuración de los recursos, incluidas las instancias de computación de machine learning y los volúmenes de almacenamiento, que se utilizarán para el entrenamiento, como se muestra en el siguiente ejemplo de código.

      resource_config = { 'InstanceType': 'ml.m4.xlarge', 'InstanceCount': 1, 'VolumeSizeInGB': 10, }
    5. Especifique la configuración de los datos de entrada y salida, dónde se almacena el conjunto de datos de entrenamiento y dónde desea almacenar los artefactos del modelo, como se muestra en el siguiente ejemplo de código.

      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 el número máximo de segundos que puede ejecutar un trabajo de entrenamiento de modelos, como se muestra en el siguiente ejemplo de código.

      stopping_condition = { 'MaxRuntimeInSeconds': 1800 }
    7. Por último, cree el trabajo de entrenamiento con los parámetros que especificó en los pasos anteriores, tal y como se muestra en el siguiente ejemplo 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)