Esecuzione di previsioni in tempo reale con una pipeline di inferenza - Amazon SageMaker AI

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

Esecuzione di previsioni in tempo reale con una pipeline di inferenza

Puoi utilizzare modelli addestrati in una pipeline di inferenza per effettuare previsioni in tempo reale direttamente senza eseguire pre-elaborazione esterna. Quando configuri la pipeline, puoi scegliere di utilizzare i trasformatori di funzionalità integrati già disponibili in Amazon AI. SageMaker In alternativa, puoi implementare la tua logica di trasformazione utilizzando poche righe di codice scikit-learn o Spark.

MLeap, un formato di serializzazione e un motore di esecuzione per pipeline di apprendimento automatico, supporta Spark, scikit-learn e TensorFlow per addestrare le pipeline ed esportarle in una pipeline serializzata chiamata Bundle. MLeap Puoi deserializzare nuovamente i pacchetti in Spark per l'assegnazione del punteggio in modalità batch o in fase di esecuzione per alimentare i servizi API in tempo reale. MLeap

I container in una pipeline restano in ascolto sulla porta specificata nella variabile di ambiente SAGEMAKER_BIND_TO_PORT (anziché 8080). Quando viene eseguita in una pipeline di inferenza, l'intelligenza artificiale fornisce automaticamente questa variabile di ambiente ai contenitori SageMaker . Se questa variabile di ambiente non è presente, i container utilizzano la porta 8080 per impostazione predefinita. Per indicare che il container soddisfa questo requisito, utilizza il comando seguente per aggiungere un'etichetta al dockerfile:

LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true

Se il container deve essere in ascolto su una seconda porta, scegli una porta nell'intervallo specificato dalla variabile di ambiente SAGEMAKER_SAFE_PORT_RANGE. Specificate il valore come intervallo inclusivo nel formato"XXXX-YYYY", dove XXXX e YYYY sono numeri interi a più cifre. SageMaker L'intelligenza artificiale fornisce questo valore automaticamente quando esegui il contenitore in una pipeline multicontainer.

Nota

Per utilizzare immagini Docker personalizzate in una pipeline che include algoritmi integrati di SageMaker intelligenza artificiale, è necessaria una policy di Amazon Elastic Container Registry (Amazon ECR). Il tuo repository Amazon ECR deve concedere l'autorizzazione all' SageMaker IA per estrarre l'immagine. Per ulteriori informazioni, consulta Risoluzione dei problemi relativi alle autorizzazioni Amazon ECR per le pipeline di inferenza.

Creazione e distribuzione un endpoint della pipeline di inferenza

Il codice seguente crea e implementa un modello di pipeline di inferenza in tempo reale con SparkML e XGBoost modelli in serie utilizzando AI SDK. SageMaker

from sagemaker.model import Model from sagemaker.pipeline_model import PipelineModel from sagemaker.sparkml.model import SparkMLModel sparkml_data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz') sparkml_model = SparkMLModel(model_data=sparkml_data) xgb_model = Model(model_data=xgb_model.model_data, image=training_image) model_name = 'serial-inference-' + timestamp_prefix endpoint_name = 'serial-inference-ep-' + timestamp_prefix sm_model = PipelineModel(name=model_name, role=role, models=[sparkml_model, xgb_model]) sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)

Richiesta di inferenza in tempo reale da un endpoint della pipeline di inferenza

L'esempio seguente mostra come eseguire previsioni in tempo reale chiamando un endpoint di inferenza e passando un payload della richiesta in formato JSON:

import sagemaker from sagemaker.predictor import json_serializer, json_deserializer, Predictor payload = { "input": [ { "name": "Pclass", "type": "float", "val": "1.0" }, { "name": "Embarked", "type": "string", "val": "Q" }, { "name": "Age", "type": "double", "val": "48.0" }, { "name": "Fare", "type": "double", "val": "100.67" }, { "name": "SibSp", "type": "double", "val": "1.0" }, { "name": "Sex", "type": "string", "val": "male" } ], "output": { "name": "features", "type": "double", "struct": "vector" } } predictor = Predictor(endpoint=endpoint_name, sagemaker_session=sagemaker.Session(), serializer=json_serializer, content_type='text/csv', accept='application/json' print(predictor.predict(payload))

La risposta che si ottiene da predictor.predict(payload) è il risultato dell'inferenza del modello.

Esempio di pipeline di inferenza in tempo reale

Puoi eseguire questo notebook di esempio utilizzando il SKLearn predittore che mostra come implementare un endpoint, eseguire una richiesta di inferenza e quindi deserializzare la risposta. Trova questo taccuino e altri esempi nell' GitHub archivio di SageMaker esempi di Amazon.