Schritt 5: Bereitstellen des Modells in 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 in Amazon EC2

Um Vorhersagen zu erhalten, stellen Sie Ihr Modell mithilfe von Amazon in Amazon EC2 bereit SageMaker.

Stellen Sie das Modell bereit für SageMaker Hosting-Dienste

So hosten Sie ein Modell über Amazon EC2 mit Amazon SageMaker, stellen Sie das Modell bereit, in dem Sie trainiert habenErstellen und Ausführen eines Schulungsjobsindem Sie diedeploy-Methode derxgb_modelSchätzer. Wenn du das anrufstdeploy-Methode müssen Sie die Anzahl und den Typ der EC2 ML-Instances angeben, die Sie für das Hosten eines Endpoints 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, für die das Modell bereitgestellt werden soll.

  • instance_type(str) — Der Typ der Instanzen, mit denen Sie Ihr bereitgestelltes Modell betreiben möchten.

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

DiedeployMethode erstellt ein bereitstellbares Modell, konfiguriert die SageMakerHosting Services Endpoint und startet den Endpunkt, um das Modell zu hosten. Weitere Informationen finden Sie hier:SageMaker generische Deploy-Klassenmethode von Estimin derAmazon SageMaker Python-SDK. So rufen Sie den Namen des Endpoints ab, der vomdeploy-Methode aus, führen Sie folgenden Code aus:

xgb_predictor.endpoint_name

Dies sollte den Endpunktnamen desxgb_predictor. Das Format des Endpunktnamens ist"sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS". Dieser Endpunkt bleibt in der ML-Instanz aktiv, und Sie können jederzeit sofortige Vorhersagen treffen, sofern Sie ihn nicht später herunterfahren. Kopieren Sie diesen Endpunktnamen und speichern Sie ihn, um ihn wiederzuverwenden und Echtzeitvorhersagen an anderer Stelle SageMaker Studio oder SageMakerNotebooks Instances.

Tipp

Weitere Informationen zum Kompilieren und Optimieren Ihres Modells für die Bereitstellung auf Amazon EC2 EC2-Instances oder Edge-Geräten finden Sie unterModelle mit Neo kompilieren und bereitstellen.

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

Nachdem Sie das Modell auf einem Endpunkt bereitgestellt haben, können Sie einen neuen einrichten SageMaker Prädiktor durch Koppeln des Endpunkts und kontinuierliche Echtzeitvorhersagen in anderen Notebooks. Im folgenden Beispielcode wird gezeigt, wie Sie die SageMaker Prädiktorklasse zum Einrichten eines neuen Prädiktorobjekts mit demselben Endpunkt. Verwenden Sie erneut den Endpunktnamen, den Sie für diexgb_predictor.

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_reusePredictor verhält sich genauso wie das Originalxgb_predictor. Weitere Informationen finden Sie hier:SageMaker PrädiktorKlasse in derAmazon SageMaker Python-SDK.

(Optional) Erstellen einer 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 einen Testdatensatz zu treffen, indem Sie SageMaker Batch-Transformation. Nachdem Ihr Modelltraining abgeschlossen ist, können Sie den Schätzer auftransformerObjekt, das auf demSageMakerTransform-Klasse. Der Batch-Transformator liest Eingangsdaten aus einem angegebenen S3-Bucket ein und trifft Vorhersagen.

So führen Sie einen Batch-Transformations

  1. Führen Sie den folgenden Code aus, um die Feature-Spalten 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 wie folgt an:

    # 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 undoutput_pathum Vorhersagedaten wie folgt zu speichern:

    transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
  4. Starten Sie den Batch-Transformationsauftrag, indem Sietransform()-Methode dertransformerObjekt wie folgt dargestellt:

    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 gespeichert imbatch_outputPfad, der das folgende Format aufweisen sollte: s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction. Führen Sie Folgendes aus:AWS CLIum die Ausgabedaten des Batch-Transformationsauftrags herunterzuladen:

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

    Dies sollte das schaffentest.csv.outDatei unter dem aktuellen Arbeitsverzeichnis. Sie können die Float-Werte sehen, die basierend auf der logistischen Regression des XGBoost-Schulungsauftrags vorhergesagt werden.