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.
Themen
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 Estimatorsdeploy
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.
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
(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
Um einen Batch-Transformationsjob auszuführen
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')
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)
Erstellen Sie ein Transformatorobjekt, das die minimale Anzahl von Parametern angibt: die
instance_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 )
Initiieren Sie den Batch-Transformationsjob, indem Sie die
transform()
Methode destransformer
Objekts wie folgt ausführen:transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
Wenn der Batch-Transformationsjob abgeschlossen ist, werden die im
batch_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 die
test.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.