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 auf Amazon EC2 bereit SageMaker.

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

Um ein Modell über Amazon EC2 mit Amazon zu hosten SageMaker, stellen Sie das Modell bereit, in dem Sie trainiert haben,Einen Trainingsjob erstellen und ausführen indem Sie diedeploy Methode desxgb_model Schätzers aufrufen. Wenn Sie diedeploy Methode aufrufen, müssen Sie die Anzahl und den Typ der EC2-ML-Instances angeben, die Sie für das 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, 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 (ein NumPy Array, eine Liste, eine Datei oder ein 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 Endpunkt der SageMaker Hosting-Dienste und startet den Endpunkt, um das Modell zu hosten. Weitere Informationen finden Sie in der Bereitstellungsklassenmethode desSageMaker generischen Estimators im Amazon SageMaker Python SDK. Führen Sie den folgenden Code aus, um den Namen des Endpunkts abzurufen, der von derdeploy Methode generiert wurde:

xgb_predictor.endpoint_name

Dies sollte den Endpunktnamen von zurückgebenxgb_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 an anderer Stelle in SageMaker Studio- oder SageMaker Notebook-Instanzen Echtzeitvorhersagen zu erstellen.

Tipp

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

(Optional) Verwenden Sie SageMaker Predictor, um den gehosteten Endpunkt wiederzuverwenden

Nachdem Sie das Modell an einem Endpunkt bereitgestellt haben, können Sie einen neuen SageMaker Prädiktor einrichten, indem Sie den Endpunkt koppeln und in allen anderen Notebooks kontinuierlich Echtzeitvorhersagen erstellen. Der folgende Beispielcode zeigt, wie Sie die SageMaker Predictor-Klasse verwenden, um ein neues Prädiktorobjekt mit demselben Endpunkt einzurichten. Verwenden Sie den Endpunktnamen, den Sie für den verwendet haben, erneutxgb_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() )

Derxgb_predictor_reuse Prädiktor verhält sich genauso wie das Originalxgb_predictor. Weitere Informationen finden Sie in der SageMaker Predictor-Klasse im Amazon SageMaker Python SDK.

(Optional) Machen Sie Vorhersagen mit der Batch-Transformation

Anstatt einen Endpunkt in der Produktion zu hosten, können Sie einen einmaligen Batch-Inferenzjob ausführen, um mithilfe der SageMaker Batch-Transformation Vorhersagen für einen Testdatensatz zu treffen. Nach Abschluss Ihres Modelltrainings können Sie den Schätzer auf eintransformer Objekt erweitern, das auf der SageMakerTransformer-Klasse basiert. Der Batch-Transformator liest Eingabedaten aus einem bestimmten S3-Bucket ein und trifft Vorhersagen.

Um einen Batch-Transformationsjob auszuführen
  1. Führen Sie den folgenden Code aus, um die Feature-Spalten des Test-Datasets in eine CSV-Datei zu konvertieren und sie 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 die S3-Bucket-URIs der Eingabe und Ausgabe für den Batch-Transformationsjob 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 Transformatorobjekt, das die minimale Anzahl von Parametern angibt: dieinstance_type Parameterinstance_count und, um den Batch-Transformationsjob auszuführen, und die,output_path um die Prognosedaten zu speichern, wie im Folgenden gezeigt:

    transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
  4. Initiieren Sie den Batch-Transformationsjob, indem Sie dietransform() Methode destransformer Objekts wie folgt ausführen:

    transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
  5. Wenn der Batch-Transformationsjob abgeschlossen ist, werden die imbatch_output Pfad gespeichertentest.csv.out Vorhersagedaten SageMaker erstellt, die das folgende Format haben sollten:s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction. Führen Sie den folgendenAWS CLI Befehl aus, um die Ausgabedaten des Batch-Transformationsjobs herunterzuladen:

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

    Dadurch sollte dietest.csv.out Datei im aktuellen Arbeitsverzeichnis erstellt werden. Sie können die Float-Werte sehen, die auf der Grundlage der logistischen Regression des XGBoost-Trainingsjobs vorhergesagt wurden.