

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

# Implementazione del modello in Amazon EC2
<a name="ex1-model-deployment"></a>

Per ottenere previsioni, implementa il tuo modello su Amazon EC2 utilizzando Amazon AI. SageMaker 

**Topics**
+ [Distribuisci il modello su AI Hosting Services SageMaker](#ex1-deploy-model)
+ [(Facoltativo) Riutilizza o richiama un endpoint esistente](#ex1-deploy-model-sdk-use-endpoint)
+ [(Facoltativo) Formulazione di previsioni con la trasformazione di batch](#ex1-batch-transform)

## Distribuisci il modello su AI Hosting Services SageMaker
<a name="ex1-deploy-model"></a>

Per ospitare un modello tramite Amazon EC2 utilizzando Amazon SageMaker AI, implementa il modello su cui ti sei formato. [Creazione ed esecuzione di un processo di addestramento](ex1-train-model.md#ex1-train-model-sdk)

Usa la `ModelBuilder` classe per creare e distribuire il tuo modello. `ModelBuilder`supporta il concatenamento delle risorse, in modo da poter affidare `ModelTrainer` direttamente al personale addestrato la creazione e l'implementazione del modello.

```
from sagemaker.serve import ModelBuilder

# Build and deploy using resource chaining from the trained model
model_builder = ModelBuilder(
    model=xgb_model_trainer,
    role_arn=role,
    instance_type='ml.t2.medium'
)

# Build creates a SageMaker Model resource
model = model_builder.build()

# Deploy creates a SageMaker Endpoint resource
endpoint = model_builder.deploy(endpoint_name="xgboost-endpoint")
```
+ `model`— L'oggetto addestrato`ModelTrainer`. `ModelBuilder`concatena automaticamente l'output di formazione alla distribuzione.
+ `instance_type` (str): il tipo di istanze che desideri per utilizzare il modello distribuito.

Il `build()` metodo crea una risorsa SageMaker AI Model e `deploy()` crea una risorsa SageMaker AI Endpoint. Per ulteriori informazioni, consulta l'[SageMaker intelligenza artificiale ModelBuilder ](https://sagemaker.readthedocs.io/en/stable/) nell'SDK [ Amazon SageMaker Python. ](https://sagemaker.readthedocs.io/en/stable) Per recuperare il nome dell'endpoint, esegui il codice seguente:

```
endpoint.endpoint_name
```

Questo endpoint rimane attivo nell'istanza ML e puoi effettuare previsioni istantanee in qualsiasi momento, a meno che non lo arresti in un secondo momento. Copia il nome di questo endpoint e salvalo per riutilizzarlo ed effettuare previsioni in tempo reale altrove nelle istanze di SageMaker Studio o AI notebook. SageMaker 

**Suggerimento**  
Per ulteriori informazioni sulla compilazione e sull'ottimizzazione del modello per la distribuzione su istanze Amazon EC2 o dispositivi edge, consulta [Compile and Deploy Models with Neo](https://docs.aws.amazon.com/sagemaker/latest/dg/neo.html).

## (Facoltativo) Riutilizza o richiama un endpoint esistente
<a name="ex1-deploy-model-sdk-use-endpoint"></a>

Dopo aver distribuito il modello su un endpoint, è possibile richiamarlo da qualsiasi altro notebook o applicazione utilizzando la classe di sagemaker-core. `Endpoint` Il codice di esempio seguente mostra come ottenere un endpoint esistente e fare previsioni. Re-use il nome dell'endpoint indicato nella fase di distribuzione precedente.

```
from sagemaker.core.resources import Endpoint

endpoint = Endpoint.get(endpoint_name="{{xgboost-endpoint}}")

# Make a prediction
response = endpoint.invoke(
    body=test_data,
    content_type="text/csv"
)
result = response.body.read().decode('utf-8')
```

## (Facoltativo) Formulazione di previsioni con la trasformazione di batch
<a name="ex1-batch-transform"></a>

Invece di ospitare un endpoint in produzione, puoi eseguire un processo di inferenza batch una tantum per fare previsioni su un set di dati di test utilizzando la trasformazione batch AI. SageMaker Una volta completato l'addestramento del modello, puoi utilizzare il trasformatore batch per leggere i dati di input da un bucket S3 specificato e fare previsioni.

**Per creare un processo di trasformazione di batch**

1. Esegui il seguente codice per convertire le colonne delle funzionalità del set di dati di test in un file CSV e i caricamenti nel bucket S3:

   ```
   X_test.to_csv('test.csv', index=False, header=False)
   
   boto3.Session().resource('s3').Bucket(bucket).Object(
   os.path.join(prefix, 'test/test.csv')).upload_file('test.csv')
   ```

1. Specifica gli URI di input e output del bucket S3 per il processo di trasformazione di batch come mostrato di seguito:

   ```
   # The location of the test dataset
   batch_input = 's3://{}/{}/test'.format(bucket, prefix)
   
   # The location to store the results of the batch transform job
   batch_output = 's3://{}/{}/batch-prediction'.format(bucket, prefix)
   ```

1. Crea ed esegui un processo di trasformazione in batch.

   ```
   # Build a model from the trained ModelTrainer
   model_builder = ModelBuilder(model=xgb_model_trainer, role_arn=role)
   model = model_builder.build(model_name="xgboost-batch-model")
   
   # Create and run the batch transform job
   from sagemaker.core.resources import TransformJob
   
   transform_job = TransformJob.create(
       model_name=model.model_name,
       transform_input={
           "data_source": {
               "s3_data_source": {
                   "s3_data_type": "S3Prefix",
                   "s3_uri": batch_input
               }
           },
           "content_type": "text/csv",
           "split_type": "Line"
       },
       transform_output={
           "s3_output_path": batch_output
       },
       transform_resources={
           "instance_type": "ml.m4.xlarge",
           "instance_count": 1
       }
   )
   
   transform_job.wait()
   ```

1. Quando il processo di trasformazione batch è completo, SageMaker AI crea i dati di `test.csv.out` previsione salvati nel `batch_output` percorso, che dovrebbe essere nel seguente formato:`s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction`. Esegui quanto segue AWS CLI per scaricare i dati di output del processo di trasformazione batch:

   ```
   ! aws s3 cp {batch_output} ./ --recursive
   ```

   Ciò dovrebbe creare il file `test.csv.out` nella directory di lavoro corrente. Sarai in grado di vedere i valori float previsti in base alla regressione logistica del processo di addestramento XGBoost.