

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

# Adatta il tuo processo di addestramento per accedere alle immagini in un registro Docker privato
<a name="docker-containers-adapt-your-own-private-registry"></a>

Puoi utilizzare un [registro Docker](https://docs.docker.com/registry/) privato anziché un Amazon Elastic Container Registry (Amazon ECR) per ospitare le tue immagini per l'AI Training. SageMaker Le seguenti istruzioni mostrano come creare un registro Docker, configurare il cloud privato virtuale (VPC) e il processo di formazione, archiviare immagini e consentire all'IA di accedere all'immagine di formazione nel registro docker privato. SageMaker Queste istruzioni mostrano anche come utilizzare un registro Docker che richiede l'autenticazione per un processo di formazione. SageMaker 

## Creazione e archiviazione di immagini in un registro Docker privato
<a name="docker-containers-adapt-your-own-private-registry-prerequisites"></a>

Creazione di un registro Docker privato per archiviare le immagini. Il registro deve:
+ utilizzare il protocollo del [Registro Docker HTTP API](https://docs.docker.com/registry/spec/api/)
+ essere accessibile dallo stesso VPC specificato nel [VpcConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html#API_CreateTrainingJob_RequestSyntax)parametro nell'`CreateTrainingJob`API. Inserisci `VpcConfig` quando crei il processo di addestramento.
+ protetto con un [certificato TLS](https://aws.amazon.com/what-is/ssl-certificate/) rilasciato da un'autorità di certificazione pubblica nota.

Per ulteriori informazioni sulla creazione di un registro Docker, consulta [Deploy a registry server](https://docs.docker.com/registry/deploying/).

## Configura il tuo VPC e SageMaker il tuo lavoro di formazione
<a name="docker-containers-adapt-your-own-private-registry-configure"></a>

SageMaker L'intelligenza artificiale utilizza una connessione di rete all'interno del tuo VPC per accedere alle immagini nel tuo registro Docker. Per utilizzare le immagini del registro Docker per l’addestramento, il registro deve essere accessibile da un Amazon VPC del proprio account. Per ulteriori informazioni, consulta [Utilizzo di un registro Docker che richiede l'autenticazione per l’addestramento](docker-containers-adapt-your-own-private-registry-authentication.md).

Devi inoltre configurare il processo di addestramento per connetterti allo stesso VPC a cui ha accesso il registro Docker. Per ulteriori informazioni, consulta [Configure a Training Job for Amazon VPC Access](https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html#train-vpc-configure).

## Creazione di un processo di addestramento utilizzando un'immagine dal registro Docker privato
<a name="docker-containers-adapt-your-own-private-registry-create"></a>

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

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

   ```
   training_image_config = {
       'TrainingRepositoryAccessMode': 'Vpc'
   }
   ```
**Nota**  
Se il registro Docker privato richiede l'autenticazione, devi aggiungere un oggetto `TrainingRepositoryAuthConfig` all'oggetto di configurazione dell'immagine di addestramento. È inoltre necessario specificare l'Amazon Resource Name (ARN) di una AWS Lambda funzione che fornisce credenziali di accesso all' SageMaker IA utilizzando il `TrainingRepositoryCredentialsProviderArn` campo dell'oggetto. `TrainingRepositoryAuthConfig` Per ulteriori informazioni, consulta 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 consentire l'autenticazione, consulta [Utilizzo di un registro Docker che richiede l'autenticazione per l’addestramento](docker-containers-adapt-your-own-private-registry-authentication.md).

1. Utilizzo di un client Boto3 per creare un processo di addestramento e inoltrare la configurazione corretta all'API [create\$1training\$1job](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). Le seguenti istruzioni mostrano come configurare i componenti e creare un processo di addestramento.

   1. Crea l’oggetto `AlgorithmSpecification` che desideri inoltrare a `create_training_job`. Utilizza l'oggetto di configurazione dell'immagine di addestramento 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, fai riferimento al [digest](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier) dell'immagine anziché al nome o al tag.

   1. Specifica il nome del processo di addestramento e il ruolo che desideri inoltrare 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'
      ```

   1. Specifica un gruppo di sicurezza e una sottorete per la configurazione VPC per il processo di addestramento. 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. VPCs SeeConnect VPCs utilizzando il [peering VPC per ulteriori informazioni](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-peering.html).

   1. Specifica la configurazione delle risorse, incluse le istanze di calcolo di machine learning e i volumi di archiviazione da utilizzare per l’addestramento, come illustrato nel seguente esempio di codice. 

      ```
      resource_config = {
          'InstanceType': 'ml.m4.xlarge',
          'InstanceCount': 1,
          'VolumeSizeInGB': 10,
      }
      ```

   1. Specifica la configurazione dei dati di input e output, dove è archiviato il set di dati di addestramento e dove desideri 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'
      }
      ```

   1. Specifica il numero massimo di secondi in cui un processo di addestramento del modello può effettuare l’esecuzione come illustrato nel seguente esempio di codice.

      ```
      stopping_condition = {
          'MaxRuntimeInSeconds': 1800
      }
      ```

   1. Infine, crea il processo di addestramento 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)
      ```

# Usa uno stimatore di SageMaker intelligenza artificiale per eseguire un lavoro di formazione
<a name="docker-containers-adapt-your-own-private-registry-estimator"></a>

Puoi anche usare uno [stimatore](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html) dell'SDK SageMaker Python per gestire la configurazione e l'esecuzione del tuo processo di SageMaker formazione. Gli esempi di codice seguenti mostrano come configurare ed eseguire uno strumento di valutazione utilizzando immagini da un registro Docker privato.

1. Importa le librerie e le dipendenze richieste, come mostrato nell'esempio di codice seguente.

   ```
   import boto3
   import sagemaker
   from sagemaker.estimator import Estimator
   
   session = sagemaker.Session()
   
   role = sagemaker.get_execution_role()
   ```

1. Fornisci un URI (Uniform Resource Identifier) all'immagine di addestramento, ai gruppi di sicurezza e alle sottoreti per la configurazione VPC per il processo di addestramento, come mostrato nel seguente esempio di codice.

   ```
   image_uri = "myteam.myorg.com/docker-local/my-training-image:<IMAGE-TAG>"
   
   security_groups = ["sg-0123456789abcdef0"]
   subnets = ["subnet-0123456789abcdef0", "subnet-0123456789abcdef0"]
   ```

   Per ulteriori informazioni su `security_group_ids` e`subnets`, consultate la descrizione dei parametri appropriata nella sezione [Estimators](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html) di SageMaker Python SDK.
**Nota**  
SageMaker L'intelligenza artificiale utilizza una connessione di rete all'interno del tuo VPC per accedere alle immagini nel tuo registro Docker. Per utilizzare le immagini del registro Docker per l’addestramento, il registro deve essere accessibile da un Amazon VPC del proprio account.

1. Facoltativamente, se il registro Docker richiede l'autenticazione, devi anche specificare l'Amazon Resource Name (ARN) di una AWS Lambda funzione che fornisce le credenziali di accesso all'IA. SageMaker Il seguente esempio di codice mostra come specificare l’ARN. 

   ```
   training_repository_credentials_provider_arn = "arn:aws:lambda:us-west-2:1234567890:function:test"
   ```

   Per ulteriori informazioni sull'utilizzo di immagini in un registro Docker che richiede l'autenticazione, consulta **Use a Docker registry that requires authentication for training** di seguito.

1. Usa gli esempi di codice delle fasi precedenti per configurare uno strumento di valutazione, come mostrato nel seguente esempio di codice.

   ```
   # The training repository access mode must be 'Vpc' for private docker registry jobs 
   training_repository_access_mode = "Vpc"
   
   # Specify the instance type, instance count you want to use
   instance_type="ml.m5.xlarge"
   instance_count=1
   
   # Specify the maximum number of seconds that a model training job can run
   max_run_time = 1800
   
   # Specify the output path for the model artifacts
   output_path = "s3://your-output-bucket/your-output-path"
   
   estimator = Estimator(
       image_uri=image_uri,
       role=role,
       subnets=subnets,
       security_group_ids=security_groups,
       training_repository_access_mode=training_repository_access_mode,
       training_repository_credentials_provider_arn=training_repository_credentials_provider_arn,  # remove this line if auth is not needed
       instance_type=instance_type,
       instance_count=instance_count,
       output_path=output_path,
       max_run=max_run_time
   )
   ```

1. Avvia il processo di addestramento chiamando `estimator.fit` con il nome del processo e il percorso di input come parametri, come illustrato nel seguente esempio di codice.

   ```
   input_path = "s3://your-input-bucket/your-input-path"
   job_name = "your-job-name"
   
   estimator.fit(
       inputs=input_path,
       job_name=job_name
   )
   ```

# Utilizzo di un registro Docker che richiede l'autenticazione per l’addestramento
<a name="docker-containers-adapt-your-own-private-registry-authentication"></a>

Se il registro Docker richiede l'autenticazione, devi creare una AWS Lambda funzione che fornisca le credenziali di accesso all'IA. SageMaker Quindi, crea un processo di addestramento e inserisci l’ARN di questa funzione Lambda all’interno dell’API [create\$1training\$1job](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_training_job). Infine, è possibile facoltativamente creare un endpoint VPC di interfaccia in modo che il VPC possa comunicare con la propria funzione Lambda senza inviare traffico su Internet. La seguente guida mostra come creare una funzione Lambda, assegnarle il ruolo corretto e creare un endpoint VPC di interfaccia.

## Creazione della funzione Lambda
<a name="docker-containers-adapt-your-own-private-registry-authentication-create-lambda"></a>

Crea una AWS Lambda funzione che passi le credenziali di accesso all' SageMaker IA e restituisca una risposta. Il seguente esempio di codice crea il gestore di funzioni Lambda, come segue.

```
def handler(event, context):
   response = {
      "Credentials": {"Username": "username", "Password": "password"}
   }
   return response
```

Il tipo di autenticazione utilizzato per configurare il registro Docker privato determina il contenuto della risposta restituita dalla funzione Lambda come segue.
+ Se il registro Docker privato utilizza l'autenticazione di base, la funzione Lambda restituirà il nome utente e la password necessari per l'autenticazione nel registro.
+ Se il registro Docker privato utilizza [l'autenticazione con token bearer](https://docs.docker.com/registry/spec/auth/token/), il nome utente e la password vengono inviati al server di autorizzazione, che quindi restituisce un token bearer. Questo token viene quindi utilizzato per l'autenticazione nel registro Docker privato.

**Nota**  
Se disponi di più di una funzione Lambda per i tuoi registri nello stesso account e il ruolo di esecuzione è lo stesso per i tuoi processi di addestramento, allora i processi di addestramento per il registro uno avranno accesso alle funzioni Lambda per gli altri registri.

## Concedi l'autorizzazione del ruolo corretto alla tua funzione Lambda
<a name="docker-containers-adapt-your-own-private-registry-authentication-lambda-role"></a>

[IAMrole](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html)Quello che usi nell'`create_training_job`API deve avere l'autorizzazione per chiamare una AWS Lambda funzione. L'esempio di codice seguente mostra come estendere la policy delle autorizzazioni di un ruolo IAM per chiamare `myLambdaFunction`.

```
{
    "Effect": "Allow",
    "Action": [
        "lambda:InvokeFunction"
    ],
    "Resource": [
        "arn:aws:lambda:*:*:function:*myLambdaFunction*"
    ]
}
```

Per ulteriori informazioni su come modificare la policy delle autorizzazioni di un ruolo, consulta [Modifying a role permission policy (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy) nella *AWS Guida per l'utente di AWS Identity and Access Management*.

**Nota**  
Un ruolo IAM con una policy **AmazonSageMakerFullAccess**gestita allegata è autorizzato a chiamare qualsiasi funzione Lambda con "SageMaker AI» nel nome.

## Creazione di un endpoint VPC di interfaccia per Lambda
<a name="docker-containers-adapt-your-own-private-registry-authentication-lambda-endpoint"></a>

Se crei un endpoint di interfaccia, Amazon VPC può comunicare con la funzione Lambda senza inviare traffico su Internet. Per ulteriori informazioni, consulta [Configuring interface VPC endpoints for Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc-endpoints.html) nella *AWS Lambda Guida per gli sviluppatori*.

Dopo aver creato l'endpoint dell'interfaccia, la SageMaker formazione richiamerà la funzione Lambda inviando una richiesta tramite il VPC a. `lambda.region.amazonaws.com` Se selezioni **Abilita nome DNS** quando crei l'endpoint di interfaccia, [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) indirizza la chiamata all'endpoint dell'interfaccia Lambda. Se utilizzi un provider DNS diverso, devi mappare `lambda.region.amazonaws.co`, all'endpoint dell'interfaccia Lambda.