Adattare il lavoro di training per accedere alle immagini in un registro Docker privato - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Adattare il lavoro di training per accedere alle immagini in un registro Docker privato

Puoi utilizzare un registro Docker privato anziché un Amazon Elastic Container Registry (Amazon ECR) per ospitare le immagini per la formazione. SageMaker Le seguenti istruzioni mostrano come creare un registro Docker, configurare il cloud privato virtuale (VPC) e il processo di formazione, archiviare immagini e SageMaker consentire l'accesso all'immagine di formazione nel registro docker privato. Queste istruzioni mostrano anche come utilizzare un registro Docker che richiede l'autenticazione per un processo di formazione. SageMaker

Creare e archiviare le immagini in un registro Docker privato

Creare un registro Docker privato per archiviare le immagini. Il registro deve:

  • utilizzare il protocollo del Registro Docker HTTP API

  • essere accessibile dallo stesso VPC specificato nel VpcConfigparametro nell'CreateTrainingJobAPI. Inserire VpcConfig quando si crea il lavoro di training.

  • protetto con un certificato TLS rilasciato da un'autorità di certificazione pubblica nota.

Per ulteriori informazioni sulla creazione di un registro Docker, consultare Deploy a registry server (Distribuisci un server di registro).

Configura il tuo VPC e SageMaker il tuo lavoro di formazione

SageMaker utilizza una connessione di rete all'interno del VPC per accedere alle immagini nel registro Docker. Per utilizzare le immagini del registro Docker per il training, il registro deve essere accessibile da un Amazon VPC del proprio account. Per ulteriori informazioni, consultare Usa un registro Docker che richiede l'autenticazione per il training.

È inoltre necessario configurare il lavoro di training per connettersi allo stesso VPC a cui ha accesso il registro Docker. Per ulteriori informazioni, consultare Configure a Training Job for Amazon VPC Access (Configura un lavoro di training per l’accesso ad Amazon VPC).

Creare un lavoro di training utilizzando un'immagine dal registro Docker privato

Per utilizzare un'immagine del registro Docker privato per il training, usare la seguente guida per configurare l'immagine, configurare e creare un processo di training. Gli esempi di codice che seguono utilizzano il AWS SDK for Python (Boto3) client.

  1. Crea un oggetto di configurazione dell'immagine di training e inserisci Vpc il campo TrainingRepositoryAccessMode come segue.

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

    Se il registro Docker privato richiede l'autenticazione, è necessario aggiungere un oggetto TrainingRepositoryAuthConfig all'oggetto di configurazione dell'immagine di training. È inoltre necessario specificare l'Amazon Resource Name (ARN) di una AWS Lambda funzione che fornisce le credenziali di accesso per l' SageMakerutilizzo del TrainingRepositoryCredentialsProviderArn campo dell'oggetto. TrainingRepositoryAuthConfig Per ulteriori informazioni, consultare la struttura del codice di esempio qui di seguito.

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

    Per informazioni su come creare la funzione Lambda per fornire l'autenticazione, consultare Usa un registro Docker che richiede l'autenticazione per il training.

  2. Utilizzare un client Boto3 per creare un lavoro di training e passare la configurazione corretta all'API create_training_job. Le seguenti istruzioni mostrano come configurare i componenti e creare un lavoro di training.

    1. Creare l’oggetto AlgorithmSpecification che si intende passare a create_training_job. Utilizza l'oggetto di configurazione dell'immagine di training creato nella fase precedente, come illustrato nell'esempio di codice seguente.

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

      Per utilizzare una versione fissa, anziché aggiornata, di un'immagine, fare riferimento al digest dell'immagine anziché al nome o al tag.

    2. Specificare il nome del lavoro di training e il ruolo che si desidera passare a create_training_job, come illustrato nell'esempio di codice seguente.

      training_job_name = 'private-registry-job' execution_role_arn = 'arn:aws:iam::123456789012:role/SageMakerExecutionRole'
    3. Specificare un gruppo di sicurezza e una sottorete per la configurazione VPC per il lavoro di training. Il registro Docker privato deve consentire il traffico in entrata proveniente dai gruppi di sicurezza specificati, come illustrato nel seguente esempio di codice.

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

      Se la sottorete non si trova nello stesso VPC del registro Docker privato, è necessario configurare una connessione di rete tra i due VPC. SeeConnect VPC che utilizzano il peering VPC per ulteriori informazioni.

    4. Specificare la configurazione delle risorse, incluse le istanze di calcolo per l'apprendimento automatico e i volumi di archiviazione da utilizzare per il training, come illustrato nel seguente esempio di codice.

      resource_config = { 'InstanceType': 'ml.m4.xlarge', 'InstanceCount': 1, 'VolumeSizeInGB': 10, }
    5. Specificare la configurazione dei dati di input e output, dove è archiviato il set di dati di training e dove si desidera memorizzare gli artefatti del modello, come illustrato nel seguente esempio di codice.

      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. Specificare il numero massimo di secondi in cui un lavoro di training del modello può effettuare l’esecuzione come illustrato nel seguente esempio di codice.

      stopping_condition = { 'MaxRuntimeInSeconds': 1800 }
    7. Infine, creare il lavoro di training utilizzando i parametri specificati nella fase precedente, come illustrato nell'esempio di codice seguente.

      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)