View a markdown version of this page

Esegui Real-time previsioni 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à.

Esegui Real-time previsioni 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 mLeap Bundle. Puoi deserializzare di nuovo i pacchetti in Spark per il punteggio in modalità batch o il runtime MLeap per eseguire servizi API in tempo reale.

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 modelli SparkML e XGBoost in serie utilizzando l'SDK AI. 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)

Richiedi l'inferenza da un endpoint della pipeline di inferenza Real-Time

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 predittore SKLearn che mostra come distribuire un endpoint, eseguire una richiesta di inferenza e deserializzare la risposta. Trova questo taccuino e altri esempi nell' GitHub archivio di SageMaker esempi di Amazon.