Adaptation de votre tâche d'entraînement pour accéder aux images dans un registre Docker privé - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Adaptation de votre tâche d'entraînement pour accéder aux images dans un registre Docker privé

Vous pouvez utiliser un registre Docker privé au lieu d'un Amazon Elastic Container Registry (Amazon ECR) pour héberger vos images pour Training. SageMaker Les instructions suivantes vous montrent comment créer un registre Docker, configurer votre cloud privé virtuel (VPC) et votre tâche de formation, stocker des images et SageMaker donner accès à l'image d'entraînement dans le registre Docker privé. Ces instructions vous montrent également comment utiliser un registre Docker qui nécessite une authentification pour une tâche de SageMaker formation.

Création et stockage de vos images dans un registre Docker privé

Créez un registre Docker privé pour stocker vos images. Votre registre doit :

  • utiliser le protocole Docker Registry HTTP API.

  • être accessible depuis le même VPC spécifié dans le VpcConfigparamètre de l'API. CreateTrainingJob Entrez VpcConfig lorsque vous créez votre tâche d'entraînement.

  • être sécurisé à l'aide d'un certificat TLS provenant d'une autorité de certification (CA) publique connue.

Pour plus d'informations sur la création d'un registre Docker, consultez Deploy a registry server (Déployer un serveur de registre).

Configurez votre VPC et SageMaker votre tâche de formation

SageMaker utilise une connexion réseau au sein de votre VPC pour accéder aux images de votre registre Docker. Pour utiliser ces images dans votre registre Docker à des fins d'entraînement, le registre doit être accessible à partir d'un Amazon VPC dans votre compte. Pour de plus amples informations, veuillez consulter Utilisation d'un registre Docker nécessitant une authentification pour l'entraînement.

Vous devez également configurer votre tâche d'entraînement pour qu'elle se connecte au même VPC auquel votre registre Docker a accès. Pour plus d'informations, consultez Configuration d'une tâche d'entraînement pour l'accès à Amazon VPC.

Création d'une tâche d'entraînement à l'aide d'une image provenant de votre registre Docker privé

Pour utiliser une image provenant de votre registre Docker privé à des fins d'entraînement, utilisez le guide suivant pour configurer votre image, et configurer et créer une tâche d'entraînement. Les exemples de code suivants utilisent le AWS SDK for Python (Boto3) client.

  1. Créez un objet de configuration d'image d'entraînement et entrez Vpc dans le champ TrainingRepositoryAccessMode comme suit.

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

    Si votre registre Docker privé nécessite une authentification, vous devez ajouter un objet TrainingRepositoryAuthConfig à l'objet de configuration d'image d'entraînement. Vous devez également spécifier le Amazon Resource Name (ARN) d'une AWS Lambda fonction qui fournit des informations d'accès permettant d' SageMakerutiliser le TrainingRepositoryCredentialsProviderArn champ de l'TrainingRepositoryAuthConfigobjet. Pour plus d'informations, consultez l'exemple de structure de code ci-dessous.

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

    Pour de plus amples informations sur la création de la fonction Lambda pour fournir une authentification, veuillez consulter Utilisation d'un registre Docker nécessitant une authentification pour l'entraînement.

  2. Utilisez un client Boto3 pour créer une tâche d'entraînement et transmettre la configuration correcte à l'API create_training_job. Les instructions suivantes vous montrent comment configurer les composants et créer une tâche d'entraînement.

    1. Créez l'objet AlgorithmSpecification que vous souhaitez transmettre à create_training_job. Utilisez l'objet de configuration d'image d'entraînement que vous avez créé à l'étape précédente, comme illustré dans l'exemple de code suivant.

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

      Pour utiliser une version fixe plutôt qu'une version mise à jour d'une image, reportez-vous au résumé de l'image plutôt qu'à son nom ou son identification.

    2. Spécifiez le nom de la tâche d'entraînement et le rôle que vous souhaitez transmettre à create_training_job, comme illustré dans l'exemple de code suivant.

      training_job_name = 'private-registry-job' execution_role_arn = 'arn:aws:iam::123456789012:role/SageMakerExecutionRole'
    3. Spécifiez un groupe de sécurité et un sous-réseau dans la configuration du VPC pour votre tâche d'entraînement. Votre registre Docker privé doit autoriser le trafic entrant provenant des groupes de sécurité que vous spécifiez, comme illustré dans l'exemple de code suivant.

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

      Si votre sous-réseau ne se trouve pas dans le même VPC que votre registre Docker privé, vous devez configurer une connexion réseau entre les deux VPC. SeeConnect VPC utilisant le peering VPC pour plus d'informations.

    4. Spécifiez la configuration des ressources, y compris les instances de calcul de machine learning et les volumes de stockage à utiliser pour l'entraînement, comme indiqué dans l'exemple de code suivant.

      resource_config = { 'InstanceType': 'ml.m4.xlarge', 'InstanceCount': 1, 'VolumeSizeInGB': 10, }
    5. Spécifiez la configuration des données d'entrée et de sortie, l'emplacement de stockage du jeu de données d'entraînement et l'emplacement où vous souhaitez stocker les artefacts de modèle, comme indiqué dans l'exemple de code suivant.

      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. Spécifiez le nombre maximal de secondes de l'exécution d'une tâche d'entraînement de modèle comme indiqué dans l'exemple de code suivant.

      stopping_condition = { 'MaxRuntimeInSeconds': 1800 }
    7. Enfin, créez la tâche d'entraînement à l'aide des paramètres que vous avez spécifiés aux étapes précédentes, comme indiqué dans l'exemple de code suivant.

      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)