View a markdown version of this page

Implementazione del modello in Amazon EC2 - 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à.

Implementazione del modello in Amazon EC2

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

Distribuisci il modello su AI Hosting Services SageMaker

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

Usa la ModelBuilder classe per creare e distribuire il tuo modello. ModelBuildersupporta 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 addestratoModelTrainer. ModelBuilderconcatena 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 nell'SDK Amazon SageMaker Python. 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.

(Facoltativo) Riutilizza o richiama un endpoint esistente

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

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')
  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 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()
  4. 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.