Esecuzione di previsioni in tempo reale con una pipeline di inferenza - 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à.

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. 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 di punteggi in modalità batch o in fase di esecuzione per alimentare i servizi in tempo reale. MLeap API

I container in una pipeline restano in ascolto sulla porta specificata nella variabile di ambiente SAGEMAKER_BIND_TO_PORT (anziché 8080). Quando viene eseguito in una pipeline di inferenza, 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 fornisce questo valore automaticamente quando si esegue il contenitore in una pipeline multicontainer.

Nota

Per utilizzare immagini Docker personalizzate in una pipeline che include algoritmi SageMaker integrati, è necessaria una policy Amazon Elastic Container Registry (AmazonECR). Il tuo ECR repository Amazon deve concedere SageMaker l'autorizzazione per estrarre l'immagine. Per ulteriori informazioni, consulta Risolvi i problemi relativi alle ECR autorizzazioni Amazon per Inference Pipelines.

Creazione e distribuzione un endpoint della pipeline di inferenza

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

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 effettuare previsioni in tempo reale chiamando un endpoint di inferenza e passando un payload di 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

È possibile 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.