Fase 5: distribuire il modello in Amazon EC2 - 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à.

Fase 5: distribuire il modello in Amazon EC2

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

Implementa il modello nei servizi di hosting SageMaker

Per ospitare un modello tramite Amazon EC2 utilizzando Amazon SageMaker, distribuisci il modello su cui hai effettuato la formazione Creazione ed esecuzione di un processo di addestramento chiamando il deploy metodo dello estimatore. xgb_model Quando chiami il metodo deploy, devi specificare il numero e il tipo di istanze ML EC2 che vuoi utilizzare per l'hosting di un endpoint.

import sagemaker from sagemaker.serializers import CSVSerializer xgb_predictor=xgb_model.deploy( initial_instance_count=1, instance_type='ml.t2.medium', serializer=CSVSerializer() )
  • initial_instance_count (int): il numero di istanze per distribuire il modello.

  • instance_type (str): il tipo di istanze che desideri per utilizzare il modello distribuito.

  • serializer(int) — Serializza i dati di input di vari formati (un NumPy array, un elenco, un file o un buffer) in una stringa in formato CSV. Lo utilizziamo perché l'algoritmo XGBoost accetta i file di input in formato CSV.

Il deploy metodo crea un modello implementabile, configura l'endpoint dei servizi di SageMaker hosting e avvia l'endpoint per ospitare il modello. Per ulteriori informazioni, consulta il metodo SageMaker generico della classe deploy di Estimator nell'SDK Amazon Python SageMaker . Per recuperare il nome dell'endpoint generato dal metodo deploy, esegui il seguente codice:

xgb_predictor.endpoint_name

Questo dovrebbe restituire il nome dell'endpoint di xgb_predictor. Il formato del nome dell'endpoint è "sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS". 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 Studio o notebook. SageMaker 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.

(Facoltativo) Usa SageMaker Predictor per riutilizzare l'endpoint ospitato

Dopo aver distribuito il modello su un endpoint, puoi configurare un nuovo SageMaker predittore associando l'endpoint ed effettuare continuamente previsioni in tempo reale su qualsiasi altro notebook. Il codice di esempio seguente mostra come utilizzare la classe SageMaker Predictor per configurare un nuovo oggetto predittore utilizzando lo stesso endpoint. Riutilizza il nome dell'endpoint che hai usato per xgb_predictor.

import sagemaker xgb_predictor_reuse=sagemaker.predictor.Predictor( endpoint_name="sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS", sagemaker_session=sagemaker.Session(), serializer=sagemaker.serializers.CSVSerializer() )

Il predittore xgb_predictor_reuse si comporta esattamente come xgb_predictor originale. Per ulteriori informazioni, consulta la classe SageMaker Predictor nell'SDK Amazon SageMaker Python.

(Facoltativo) Formulazione di previsioni con la trasformazione di batch

Invece di ospitare un endpoint in produzione, puoi eseguire un processo di inferenza in batch una tantum per fare previsioni su un set di dati di test utilizzando la trasformazione batch. SageMaker Una volta completata la formazione del modello, potete estendere lo estimatore a un transformer oggetto, basato sulla classe Transformer. SageMaker Il trasformatore di batch legge i dati di input da un bucket S3 specificato ed effettua 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')
  2. 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)
  3. Crea un oggetto trasformatore specificando il numero minimo di parametri: i parametri instance_count e instance_type per eseguire il processo di trasformazione di batch e output_path per salvare i dati di previsione, come mostrato di seguito:

    transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
  4. Avvia il processo di trasformazione di batch eseguendo il metodo transform() dell'oggetto transformer come mostrato di seguito:

    transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
  5. Una volta completato il processo di trasformazione in batch, SageMaker crea i dati di test.csv.out previsione salvati nel batch_output percorso, che devono avere il 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.