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

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

Puede utilizar un registro privado de Docker en lugar de un registro de Amazon Elastic Container Registry (Amazon ECR) para alojar sus imágenes para el entrenamiento de SageMaker AI. En las siguientes instrucciones se muestra cómo crear un registro de Docker, configurar la nube privada virtual (VPC) y el trabajo de entrenamiento, almacenar imágenes y dar a SageMaker AI acceso a la imagen de entrenamiento en el registro privado de Docker. En estas instrucciones también se muestra cómo utilizar un registro de Docker que requiere autenticación para un trabajo de entrenamiento de 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 parámetro VPCConfig 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.

Configurar el trabajo de entrenamiento de VPC y SageMaker

SageMaker AI 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 cliente AWS SDK para Python (Boto3).

  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 función AWS Lambda que proporcione credenciales de acceso a SageMaker mediante el campo TrainingRepositoryCredentialsProviderArn del objeto TrainingRepositoryAuthConfig. 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. Consulte Conexión de VPC con interconexión de VPC para 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)