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.
Erstellen Sie eine Basislinie für die Modellqualität
Erstellen Sie einen Baseline-Auftrag, der Ihre Modellvorhersagen mit Ground-Truth-Bezeichnungen in einem Basisdatensatz vergleicht, den Sie in Amazon S3 gespeichert haben. In der Regel verwenden Sie einen Trainingsdatensatz als Basisdatensatz. Der Baseline-Auftrag berechnet Metriken für das Modell und schlägt Einschränkungen vor, anhand derer die Qualitätsabweichung des Modells überwacht werden kann.
Um einen Baseline-Auftrag zu erstellen, benötigen Sie einen Datensatz, der Vorhersagen aus Ihrem Modell sowie Beschriftungen enthält, die die Ground Truth für Ihre Daten darstellen.
Verwenden Sie die vom SageMaker Python-SDK bereitgestellte ModelQualityMonitor
Klasse, um einen Baseline-Job zu erstellen, und führen Sie die folgenden Schritte aus.
So erstellen Sie einen Auftrag für die Modellqualität.
-
Erstellen Sie eine Instance der
ModelQualityMonitor
Klasse. Der folgende Code veranschaulicht, wie dazu vorgegangen wird.from sagemaker import get_execution_role, session, Session from sagemaker.model_monitor import ModelQualityMonitor role = get_execution_role() session = Session() model_quality_monitor = ModelQualityMonitor( role=role, instance_count=1, instance_type='ml.m5.xlarge', volume_size_in_gb=20, max_runtime_in_seconds=1800, sagemaker_session=session )
-
Rufen Sie nun die
suggest_baseline
Methode desModelQualityMonitor
Objekts auf, um einen Baseline-Auftrag auszuführen. Der folgende Codeausschnitt geht davon aus, dass Sie über einen Basisdatensatz verfügen, der sowohl Prognosen als auch Labels enthält, die in Amazon S3 gespeichert sind.baseline_job_name = "MyBaseLineJob" job = model_quality_monitor.suggest_baseline( job_name=baseline_job_name, baseline_dataset=baseline_dataset_uri, # The S3 location of the validation dataset. dataset_format=DatasetFormat.csv(header=True), output_s3_uri = baseline_results_uri, # The S3 location to store the results. problem_type='BinaryClassification', inference_attribute= "prediction", # The column in the dataset that contains predictions. probability_attribute= "probability", # The column in the dataset that contains probabilities. ground_truth_attribute= "label" # The column in the dataset that contains ground truth labels. ) job.wait(logs=False)
-
Nach Abschluss des Basisauftrags werden die Einschränkungen angezeigt, die durch den Auftrag generiert wurden. Rufen Sie zunächst die Ergebnisse des Baseline-Jobs ab, indem Sie die
latest_baselining_job
Methode desModelQualityMonitor
Objekts aufrufen.baseline_job = model_quality_monitor.latest_baselining_job
-
Der Baseline-Auftrag schlägt Einschränkungen vor, bei denen es sich um Schwellenwerte für Metriken handelt, die Monitorkennzahlen modellieren. Wenn eine Metrik den vorgeschlagenen Schwellenwert überschreitet, meldet Model Monitor einen Verstoß. Rufen Sie die
suggested_constraints
Methode des Baseline-Auftrags auf, um die Einschränkungen anzuzeigen, die der Baseline-Auftrag generiert hat. Der folgende Codeausschnitt lädt die Einschränkungen für ein binäres Klassifikationsmodell in einen Pandas-Datenrahmen.import pandas as pd pd.DataFrame(baseline_job.suggested_constraints().body_dict["binary_classification_constraints"]).T
Wir empfehlen, dass Sie sich die generierten Einschränkungen ansehen und sie nach Bedarf ändern, bevor Sie sie für die Überwachung verwenden. Wenn eine Einschränkung beispielsweise zu aggressiv ist, erhalten Sie möglicherweise mehr Benachrichtigungen über Verstöße, als Sie möchten.
Wenn Ihre Einschränkung Zahlen enthält, die in wissenschaftlicher Schreibweise ausgedrückt werden, müssen Sie sie in Fließkommazahlen umwandeln. Das folgende Python Vorverarbeitungsskriptbeispiel zeigt, wie Zahlen in wissenschaftlicher Schreibweise in Fließkommazahlen umgewandelt werden.
import csv def fix_scientific_notation(col): try: return format(float(col), "f") except: return col def preprocess_handler(csv_line): reader = csv.reader([csv_line]) csv_record = next(reader) #skip baseline header, change HEADER_NAME to the first column's name if csv_record[0] == “HEADER_NAME”: return [] return { str(i).zfill(20) : fix_scientific_notation(d) for i, d in enumerate(csv_record)}
Sie können Ihr Vorverarbeitungsskript wie in der Model Monitor
Dokumentation definiert zu einem record_preprocessor_script
Basisplan oder einem Überwachungsplan hinzufügen. -
Wenn Sie mit den Einschränkungen zufrieden sind, übergeben Sie sie als
constraints
Parameter, wenn Sie einen Überwachungsplan erstellen. Weitere Informationen finden Sie unter Planen Sie Jobs zur Überwachung der Modellqualität.
Die vorgeschlagenen Baseline-Beschränkungen sind in der Datei constraints.json an dem Ort enthalten, den Sie mit output_s3_uri
angeben. Weitere Informationen zum Schema für diese Datei finden Sie unter Schema für Einschränkungen (Datei constraints.json).