Schritt 5: Bereitstellen des Modells auf Amazon EC2 - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Schritt 5: Bereitstellen des Modells auf Amazon EC2

Stellen Sie Ihr Modell mit Amazon SageMaker bereit, um Voraussagen abzurufen.

Bereitstellen des Modells in SageMaker Hosting-Services

Um ein Modell über Amazon EC2 mit Amazon SageMaker zu hosten, stellen Sie das Modell bereit, in dem Sie trainiert habenErstellen und Ausführen eines Schulungsauftragsindem Sie dendeploy-Methode desxgb_model-Schätzer. Wenn du das anrufstdeployIn dieser Anleitung müssen Sie die Anzahl und den Typ der EC2 ML-Instances angeben, die Sie zum Hosten eines Endpunkts verwenden möchten.

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) — Die Anzahl der Instanzen, die das Modell bereitgestellt werden sollen.

  • instance_type(str) — Der Typ der Instanzen, für die Sie Ihr bereitgestelltes Modell betreiben möchten.

  • serializer(int) — Serialisiert Eingabedaten verschiedener Formate (a NumPy Array, Liste, Datei oder Puffer) in eine CSV-formatierte Zeichenfolge. Wir verwenden dies, weil der XGBoost-Algorithmus Eingabedateien im CSV-Format akzeptiert.

Diedeploy-Methode erstellt ein bereitstellbares Modell, konfiguriert den SageMaker-Hosting-Services-Endpunkt und startet den Endpunkt, um das Modell zu hosten. Weitere Informationen finden Sie im .SageMaker generische Deploy-Klassenmethode von EstimatorimAmazon SageMaker Python SDKaus. So rufen Sie den Namen des Endpunkts ab, der von derdeploy-Methode führen Sie den folgenden Code aus:

xgb_predictor.endpoint_name

Dies sollte den Endpunktnamen desxgb_predictoraus. Das Format des Endpunktnamens lautet"sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS"aus. Dieser Endpunkt bleibt in der ML-Instanz aktiv und Sie können jederzeit sofortige Vorhersagen treffen, es sei denn, Sie fahren ihn später herunter. Kopieren Sie diesen Endpunktnamen und speichern Sie ihn, um ihn wiederzuverwenden und Echtzeitvorhersagen an anderer Stelle in SageMaker Studio oder SageMaker-Notebook-Instanzen

Tipp

Weitere Informationen zum Kompilieren und Optimieren Ihres Modells für die Bereitstellung auf Amazon EC2 EC2-Instanzen oder Edge-Geräten finden Sie unterKompilieren und Bereitstellen von Modellen mit Neoaus.

(Optional) Verwenden SageMaker Prädiktor zur Wiederverwendung des gehosteten Endpunkts

Nachdem Sie das Modell auf einem Endpunkt bereitgestellt haben, können Sie einen neuen einrichten SageMaker Prädiktor durch Koppeln des Endpunkts und kontinuierlich Echtzeitvorhersagen in anderen Notebooks. Der folgende Beispielcode veranschaulicht die Verwendung von SageMaker Predictor-Klasse zum Einrichten eines neuen Prädiktorobjekts mit demselben Endpunkt. Verwenden Sie den Endpunktnamen erneut, den Sie für denxgb_predictoraus.

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() )

Diexgb_predictor_reusePrädiktor verhält sich genauso wie das Originalxgb_predictoraus. Weitere Informationen finden Sie im .SageMaker Predictor-Klasse imAmazon SageMaker Python SDKaus.

(Optional) Machen Sie eine Vorhersage mit Batch-Transformation

Anstatt einen Endpunkt in der Produktion zu hosten, können Sie einen einmaligen Batch-Inferenzauftrag ausführen, um Vorhersagen für ein Test-Dataset mit der SageMaker Stapel-Transformation. Nachdem Ihre Modellschulung abgeschlossen ist, können Sie den Schätzer auf einetransformerObjekt, das auf demSageMaker-Trafo-Klasse. Der Batch-Transformator liest Eingabedaten aus einem bestimmten S3-Bucket ein und macht Vorhersagen.

So starten Sie einen Stapeltransformationsauftrag

  1. Führen Sie den folgenden Code aus, um die Featurespalten des Test-Datasets in eine CSV-Datei zu konvertieren und in den S3-Bucket hochzuladen:

    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. Geben Sie S3-Bucket-URIs für Eingabe und Ausgabe für den Batch-Transformationsauftrag an, wie folgt dargestellt:

    # 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. Erstellen Sie ein Transformator-Objekt, das die minimale Anzahl von Parametern angibt:instance_countundinstance_typeParameter zum Ausführen des Batch-Transformationsauftrags und deroutput_pathum Prognosedaten wie folgt zu speichern:

    transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
  4. Initiieren des Batch-Transformationsauftrags durch Ausführen destransform()-Methode destransformerObjekt wie nachfolgend gezeigt:

    transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
  5. Wenn der Batch-Transformationsauftrag abgeschlossen ist, SageMaker erstellt dastest.csv.outVorhersagedaten, die imbatch_outputPfad, der das folgende Format aufweisen sollte: s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-predictionaus. Führen Sie Folgendes ausAWS CLIum die Ausgabedaten des Batch-Transformationsauftrags herunterzuladen:

    ! aws s3 cp {batch_output} ./ --recursive

    Dies sollte dietest.csv.out-Datei unter dem aktuellen Arbeitsverzeichnis. Sie können die Float-Werte sehen, die auf der Grundlage der logistischen Regression des XGBoost-Schulungsauftrags prognostiziert werden.