

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.

# Bias-Drift bei Modellen in der Produktion
<a name="clarify-model-monitor-bias-drift"></a>

Amazon SageMaker Clarify Bias Monitoring hilft Datenwissenschaftlern und ML-Technikern dabei, Prognosen regelmäßig auf Verzerrungen zu überprüfen. Während das Modell überwacht wird, können Kunden exportierbare Berichte und Grafiken mit detaillierten Angaben zu Verzerrungen in SageMaker Studio einsehen und in Amazon Warnmeldungen konfigurieren, sodass sie Benachrichtigungen erhalten CloudWatch , wenn Abweichungen festgestellt werden, die einen bestimmten Schwellenwert überschreiten. Verzerrungen können in bereitgestellten ML-Modellen eingeführt oder verstärkt werden, wenn sich die Schulöungsdaten von den Daten unterscheiden, die das Modell während der Bereitstellung sieht (d. h. die Live-Daten). Solche Änderungen in der Live-Datenverteilung können vorübergehend (z. B. aufgrund kurzlebiger, realer Ereignisse) oder dauerhaft sein. In beiden Fällen kann es wichtig sein, diese Änderungen zu erkennen. Beispielsweise können die Ergebnisse eines Modells zur Vorhersage von Eigenheimpreisen verzerrt werden, wenn die Hypothekenzinsen, die für das Modell verwendet wurden, von den aktuellen, realen Hypothekenzinsen abweichen. Mit den Funktionen zur Erkennung von Verzerrungen in Model Monitor generiert SageMaker KI, wenn sie Verzerrungen erkennt, die einen bestimmten Schwellenwert überschreiten, automatisch Metriken, die Sie in SageMaker Studio und über CloudWatch Amazon-Benachrichtigungen anzeigen können. 

Im Allgemeinen ist es möglicherweise nicht ausreichend, Verzerrungen nur während der train-and-deploy Phase zu messen. Es ist möglich, dass sich die Verteilung der Daten, die das bereitgestellte Modell sieht (d. h. die Live-Daten), nach der Bereitstellung des Modells von der Datenverteilung im Trainingsdatensatz unterscheidet. Diese Änderung kann im Laufe der Zeit zu Verzerrungen in einem Modell führen. Die Änderung der Live-Datenverteilung kann vorübergehend (z. B. aufgrund kurzlebiger Verhaltensweisen wie der Weihnachtszeit) oder dauerhaft sein. In beiden Fällen kann es wichtig sein, diese Änderungen zu erkennen und gegebenenfalls Maßnahmen zu ergreifen, um die Verzerrung zu verringern.

Um diese Änderungen zu erkennen, bietet SageMaker Clarify Funktionen zur kontinuierlichen Überwachung der Verzerrungsmetriken eines bereitgestellten Modells und zur Ausgabe automatisierter Warnmeldungen, wenn die Metriken einen Schwellenwert überschreiten. Betrachten Sie dazu die DPPL-Bias-Metrik. Geben Sie einen zulässigen Wertebereich A =( amin​,amax​) an, z. B. ein Intervall von (-0.1, 0.1), zu dem DPPL während der Bereitstellung gehören soll. Jede Abweichung von diesem Bereich sollte eine Warnung auslösen, wenn ein *Fehler erkannt* wurde. Mit SageMaker Clarify können Sie diese Prüfungen in regelmäßigen Abständen durchführen.

Sie können beispielsweise die Häufigkeit der Prüfungen auf 2 Tage festlegen. Das bedeutet, dass SageMaker Clarify die DPPL-Metrik anhand von Daten berechnet, die während eines Zeitfensters von 2 Tagen gesammelt wurden. In diesem Beispiel sind Dwin​ die Daten, die das Modell in den letzten zwei Tagen verarbeitet hat. Es wird eine Warnung ausgegeben, wenn der für Dwin​ berechnete DPPL-Wert bwin​ außerhalb eines zulässigen Bereichs A liegt. Dieser Ansatz zur Überprüfung, ob bwin außerhalb von A liegt, kann zu einem gewissen Rauschen führen. Dwin​ besteht möglicherweise aus sehr wenigen Stichproben und ist möglicherweise nicht repräsentativ für die Live-Datenverteilung. Aufgrund des geringen Stichprobenumfangs handelt es sich bei dem über Dwin​ berechneten Wert der Verzerrung bwin​ möglicherweise nicht um eine sehr robuste Schätzung. Tatsächlich können sehr hohe (oder niedrige) Werte von bwin rein zufällig beobachtet werden. Um sicherzustellen, dass die aus den beobachteten Daten D gezogenen Schlussfolgerungen statistisch signifikant win sind, verwendet SageMaker Clarify Konfidenzintervalle. Insbesondere verwendet es die Methode „Normales Bootstrap-Intervall“, um ein Intervall C =( cmin, cmax) zu konstruieren, sodass SageMaker Clarify sicher sein kann, dass der wahre Wert der Verzerrung, der über die gesamten Live-Daten berechnet wurde, mit hoher Wahrscheinlichkeit in C enthalten ist. Wenn sich nun das Konfidenzintervall C mit dem zulässigen Bereich A überschneidet, interpretiert SageMaker Clarify dies als „es ist wahrscheinlich, dass der metrische Biaswert der Live-Datenverteilung innerhalb des zulässigen Bereichs liegt“. Wenn C und A unzusammenhängend sind, ist SageMaker Clarify davon überzeugt, dass die Messgröße für die systematische Messabweichung nicht in A liegt, und gibt eine Warnung aus.

## Model Monitor Beispiel-Notebooks
<a name="clarify-model-monitor-sample-notebooks-bias-drift"></a>

Amazon SageMaker Clarify stellt das folgende Beispiel-Notizbuch zur Verfügung, das zeigt, wie Inferenzdaten für einen Echtzeit-Endpunkt erfasst, eine Ausgangsbasis für die Überwachung sich entwickelnder Verzerrungen erstellt und die Ergebnisse überprüft werden: 
+ [Überwachung von Verzerrungen und Abweichungen bei der Merkmalszuweisung Amazon SageMaker Clarify](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker_model_monitor/fairness_and_explainability/SageMaker-Model-Monitor-Fairness-and-Explainability.html) — Verwenden Sie Amazon SageMaker Model Monitor, um Verzerrungen und Abweichungen bei der Merkmalszuweisung im Laufe der Zeit zu überwachen.

Es wurde verifiziert, dass dieses Notizbuch nur in Amazon SageMaker Studio ausgeführt werden kann. Anweisungen zum Öffnen eines Notizbuchs in Amazon SageMaker Studio finden Sie unter[Erstellen oder öffnen Sie ein Amazon SageMaker Studio Classic-Notizbuch](notebooks-create-open.md). Wenn Sie aufgefordert werden, einen Kernel auszuwählen, wählen Sie **Python 3 (Data Science)**. Die folgenden Themen enthalten die Highlights der letzten beiden Schritte sowie Codebeispiele aus dem Beispiel-Notebook. 

**Topics**
+ [Model Monitor Beispiel-Notebooks](#clarify-model-monitor-sample-notebooks-bias-drift)
+ [Erstellen Sie eine Bias-Drift-Baseline](clarify-model-monitor-bias-drift-baseline.md)
+ [Verstöße gegen Bias Drift](clarify-model-monitor-bias-drift-violations.md)
+ [Parameter zur Überwachung der Bias-Drift](clarify-config-json-monitor-bias-parameters.md)
+ [Planen Sie Aufträge zur Überwachung von Bias Drift](clarify-model-monitor-bias-drift-schedule.md)
+ [Untersuchen Sie Berichte auf Datenverzerrungen](clarify-model-monitor-bias-drift-report.md)
+ [CloudWatch Metriken für die Bias-Drift-Analyse](clarify-model-monitor-bias-drift-cw.md)

# Erstellen Sie eine Bias-Drift-Baseline
<a name="clarify-model-monitor-bias-drift-baseline"></a>

Nachdem Sie Ihre Anwendung für die Erfassung von Echtzeit- oder Batch-Transformationsinferenzdaten konfiguriert haben, besteht die erste Aufgabe zur Überwachung von Verzerrungen darin, eine Basislinie zu erstellen. Dazu gehören die Konfiguration der Dateneingaben, die sensitiven Gruppen, die Art und Weise, wie die Vorhersagen erfasst werden, sowie das Modell und seine Messwerte für Verzerrungen nach dem Training. Dann müssen Sie den Baselining-Auftrag starten.

Der Model Bias Monitor kann die Verzerrungen von ML-Modellen regelmäßig erkennen. Ähnlich wie bei den anderen Überwachungstypen besteht das Standardverfahren bei der Erstellung eines Modell-Bias-Monitors darin, zunächst einen Basiswert zu erstellen und dann einen Überwachungsplan zu erstellen.

```
model_bias_monitor = ModelBiasMonitor(
    role=role,
    sagemaker_session=sagemaker_session,
    max_runtime_in_seconds=1800,
)
```

`DataConfig` speichert Informationen über den zu analysierenden Datensatz (z. B. die Datensatzdatei), sein Format (d. h. CSV- oder JSON-Lines), Header (falls vorhanden) und Bezeichnung.

```
model_bias_baselining_job_result_uri = f"{baseline_results_uri}/model_bias"
model_bias_data_config = DataConfig(
    s3_data_input_path=validation_dataset,
    s3_output_path=model_bias_baselining_job_result_uri,
    label=label_header,
    headers=all_headers,
    dataset_type=dataset_type,
)
```

`BiasConfig` ist die Konfiguration der sensiblen Gruppen im Datensatz. In der Regel wird die Verzerrung gemessen, indem eine Metrik berechnet und diese gruppenübergreifend verglichen wird. Die interessierende Gruppe wird als *Facette* bezeichnet. Bei Verzerrungen nach dem Training sollten Sie auch das positive Etikett berücksichtigen.

```
model_bias_config = BiasConfig(
    label_values_or_threshold=[1],
    facet_name="Account Length",
    facet_values_or_threshold=[100],
)
```

`ModelPredictedLabelConfig` gibt an, wie eine vorhergesagte Beschriftung aus der Modellausgabe extrahiert wird. In diesem Beispiel wurde der Grenzwert von 0,8 gewählt, da davon ausgegangen wurde, dass Kunden häufig wechseln werden. Für kompliziertere Ausgaben gibt es ein paar weitere Optionen, z. B. steht „label“ für den Index, den Namen oder für die Suche JMESPath nach der vorhergesagten Bezeichnung in der Nutzlast der Endpunkt-Antwort.

```
model_predicted_label_config = ModelPredictedLabelConfig(
    probability_threshold=0.8,
)
```

`ModelConfig` ist die Konfiguration, die sich auf das Modell bezieht, das für die Inferenz verwendet werden soll. Um Messwerte für Verzerrungen nach dem Training berechnen zu können, müssen bei der Berechnung Rückschlüsse auf den angegebenen Modellnamen gezogen werden. Um dies zu erreichen, verwendet der Verarbeitungsjob das Modell, um einen kurzlebigen Endpunkt (auch *Schattenendpunkt* genannt) zu erstellen. Der Verarbeitungsauftrag löscht den Schattenendpunkt, nachdem die Berechnungen abgeschlossen sind. Diese Konfiguration wird auch vom Explainability Monitor verwendet.

```
model_config = ModelConfig(
    model_name=model_name,
    instance_count=endpoint_instance_count,
    instance_type=endpoint_instance_type,
    content_type=dataset_type,
    accept_type=dataset_type,
)
```

Jetzt können Sie den Baselining-Auftrag starten.

```
model_bias_monitor.suggest_baseline(
    model_config=model_config,
    data_config=model_bias_data_config,
    bias_config=model_bias_config,
    model_predicted_label_config=model_predicted_label_config,
)
print(f"ModelBiasMonitor baselining job: {model_bias_monitor.latest_baselining_job_name}")
```

Der geplante Monitor übernimmt automatisch den Namen des Baselining-Aufträge und wartet darauf, bevor die Überwachung beginnt.

# Verstöße gegen Bias Drift
<a name="clarify-model-monitor-bias-drift-violations"></a>

Bei Bias-Drift-Jobs werden die durch die [Basiskonfiguration](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelBiasJobDefinition.html#sagemaker-CreateModelBiasJobDefinition-request-ModelBiasBaselineConfig) bereitgestellten Basisbeschränkungen mit den aktuellen `MonitoringExecution` Analyseergebnissen verglichen. Wenn Verstöße festgestellt werden, listet der Job sie in der Datei *constraint\$1violations.json* im Ausgabeverzeichnis der Ausführung auf und markiert den Ausführungsstatus als [Interpretieren von Ergebnissen](model-monitor-interpreting-results.md).

Hier ist das Schema der Datei Bias Drift Violations.
+ `facet` – Der Name der Facette, der von der Konfigurationsfacette `name_or_index` für die Analyse des Monitoring-Aufträge bereitgestellt wird. 
+ `facet_value` – Der Wert der Facette, bereitgestellt durch die Konfigurationsfacette `value_or_threshold` zur Analyse des Monitoring-Aufträge.
+ `metric_name` – Der Kurzname der Bias-Metrik. Zum Beispiel „CI“ für Klassenungleichgewicht. Unter [Messwerte zu Verzerrungen vor dem Training](clarify-measure-data-bias.md) finden Sie die Kurzbezeichnungen der einzelnen Messwerte für Verzerrungen vor dem Training und [Daten nach dem Training und Modellverzerrungenmetriken](clarify-measure-post-training-bias.md) für die Kurzbezeichnungen der einzelnen Messgrößen nach dem Training.
+ `constraint_check_type` – Die Art des überwachten Verstoßes. Derzeit wird nur `bias_drift_check` unterstützt.
+ `description` – Eine beschreibende Nachricht zur Erläuterung des Verstoßes.

```
{
    "version": "1.0",
    "violations": [{
        "facet": "string",
        "facet_value": "string",
        "metric_name": "string",
        "constraint_check_type": "string",
        "description": "string"
    }]
}
```

Eine Bias-Metrik wird verwendet, um den Grad der Gleichheit in einer Verteilung zu messen. Ein Wert nahe Null gibt an, dass die Verteilung ausgewogener ist. Wenn der Wert einer Bias-Metrik in der Ergebnisdatei der Auftragsanalyse (analysis.json) schlechter ist als der entsprechende Wert in der Datei mit den Basiseinschränkungen, wird ein Verstoß protokolliert. Wenn beispielsweise die Basiseinschränkung für die DPPL-Bias-Metrik lautet und das Analyseergebnis lautet `0.2`, wird kein Verstoß protokolliert `0.1`, da `0.1` der Wert näher an `0` als `0.2` liegt. Wenn das Analyseergebnis `-0.3` ist, wird ein Verstoß protokolliert, da er weiter von `0` der Basiseinschränkung von `0.2` entfernt ist.

```
{
    "version": "1.0",
    "violations": [{
        "facet": "Age",
        "facet_value": "40",
        "metric_name": "CI",
        "constraint_check_type": "bias_drift_check",
        "description": "Value 0.0751544567666083 does not meet the constraint requirement"
    }, {
        "facet": "Age",
        "facet_value": "40",
        "metric_name": "DPPL",
        "constraint_check_type": "bias_drift_check",
        "description": "Value -0.0791244970125596 does not meet the constraint requirement"
    }]
}
```

# Parameter zur Überwachung der Bias-Drift
<a name="clarify-config-json-monitor-bias-parameters"></a>

Amazon SageMaker Clarify Bias Monitoring verwendet eine Teilmenge der Parameter, die in der Analysekonfiguration von verwendet wurden, wieder. [Analyse-Konfigurationsdateien](clarify-processing-job-configure-analysis.md) Nach der Beschreibung der Konfigurationsparameter enthält dieses Thema Beispiele für JSON-Dateien. Diese Dateien werden zur Konfiguration von CSV- und JSON-Lines-Datensätzen verwendet, um sie bei der Produktion von Modellen für Machine Learning auf Verzerrungen zu überwachen.

Die folgenden Parameter müssen in einer JSON-Datei bereitgestellt werden. Der Pfad zu dieser JSON-Datei muss im `ConfigUri` Parameter der [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasAppSpecification](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasAppSpecification) API angegeben werden.
+ `"version"` – (Optional) Schemaversion der Konfigurationsdatei. Ist dieser Parameter nicht angegeben, wird die neueste unterstützte Version verwendet.
+ `"headers"` – (Optional) Eine Liste von Spaltennamen im Datensatz. Wenn `dataset_type` `"application/jsonlines"` ist und `"label"` angegeben ist, wird der letzte Header zum Header der Beschriftung-Spalte. 
+ `"label"` – (Optional) Zielattribut für das Modell, das für *Bias-Metriken* verwendet werden soll. Wird entweder als Spaltenname oder Index (wenn das Datensatzformat CSV ist) oder als JMESPath (wenn das Datensatzformat JSON Lines ist) angegeben.
+ `"label_values_or_threshold"` – (Optional) Liste von Labelwerten oder Schwellenwerten. Zeigt ein positives Ergebnis an, das für Bias-Metriken verwendet wurde.
+ `"facet"` – (Optional) Eine Liste von Features, bei denen es sich um sensible Attribute handelt, die als Facetten bezeichnet werden. Facetten werden für *Bias-Metriken* in Form von Paaren verwendet und beinhalten Folgendes:
  + `"name_or_index"` – Name oder Index der Facettenspalte.
  + `"value_or_threshold"` – (Optional) Liste von Werten oder Schwellenwerten, die die Facettenspalte annehmen kann. Gibt die sensible Gruppe an, z. B. die Gruppe, anhand derer die systematische Messabweichung gemessen wird. Falls nicht angegeben, werden Messwerte für systematische Abweichungen als eine Gruppe für jeden Einzelwert (und nicht für alle Werte) berechnet. Wenn die Facettenspalte numerisch ist, wird dieser Schwellenwert als Untergrenze für die Auswahl der sensitiven Gruppe verwendet.
+ `"group_variable"` – (Optional) Ein Spaltenname oder ein Index zur Angabe der Gruppenvariablen, die für die *Verzerrungsmetrik* *Bedingte demografische Disparität* verwendet werden soll.

Die anderen Parameter sollten in `EndpointInput` (für Echtzeit-Endpunkte) oder `BatchTransformInput` (für Batch-Transformationsauftrag) der [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasJobInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelBiasJobInput) API bereitgestellt werden.
+ `FeaturesAttribute` – Dieser Parameter ist erforderlich, wenn das Endpunkt-Eingabedatenformat lautet `"application/jsonlines"`. Es wird JMESPath verwendet, um die Feature-Spalten zu finden, wenn das Datensatzformat JSON Lines ist.
+ `InferenceAttribute`— Index oder JMESPath Position in der Modellausgabe für das Zielattribut, das für die Überwachung auf Verzerrungen mithilfe von Bias-Metriken verwendet werden soll. Wenn sie im CSV-Fall `accept_type` nicht angegeben wird, wird davon ausgegangen, dass es sich bei der Modellausgabe um einen einzelnen numerischen Wert handelt, der einem Wert oder einer Wahrscheinlichkeit entspricht.
+ `ProbabilityAttribute`— Index oder JMESPath Position in der Modellausgabe für Wahrscheinlichkeiten. Handelt es sich bei der Modellausgabe beispielsweise um JSON-Linien mit einer Liste von Bezeichnungen und Wahrscheinlichkeiten, dann wird die Bezeichnung, die der maximalen Wahrscheinlichkeit entspricht, für Bias-Berechnungen ausgewählt.
+ `ProbabilityThresholdAttribute` – (Optional) Ein Gleitkommawert, der den Schwellenwert für die Auswahl des binären Labels im Fall einer binären Klassifizierung angibt. Der Standardwert lautet 0.5.

## Beispiel für JSON-Konfigurationsdateien für CSV- und JSON-Lines-Datensätze
<a name="clarify-config-json-monitor-bias-parameters-examples"></a>

Im Folgenden finden Sie Beispiele für JSON-Dateien, die zur Konfiguration von CSV- und JSON-Lines-Datensätzen verwendet werden, um sie auf Verzerrungen zu überwachen.

**Topics**
+ [CSV-Datensätze](#clarify-config-json-monitor-bias-parameters-example-csv)
+ [JSON-Lines-Datensätze](#clarify-config-json-monitor-bias-parameters-example-jsonlines)

### CSV-Datensätze
<a name="clarify-config-json-monitor-bias-parameters-example-csv"></a>

Stellen Sie sich einen Datensatz mit vier Feature-Spalten und einer Beschriftung-Spalte vor, wobei das erste Feature und die Beschriftung binär sind, wie im folgenden Beispiel.

```
0, 0.5814568701544718, 0.6651538910132964, 0.3138080342665499, 0
1, 0.6711642728531724, 0.7466687034026017, 0.1215477472819713, 1
0, 0.0453256543003371, 0.6377430803264152, 0.3558625219713576, 1
1, 0.4785191813363956, 0.0265841045263860, 0.0376935084990697, 1
```

Gehen Sie davon aus, dass die Modellausgabe aus zwei Spalten besteht, wobei die erste Spalte die vorhergesagte Beschriftung und die zweite die Wahrscheinlichkeit darstellt, wie im folgenden Beispiel.

```
1, 0.5385257417814224
```

Dann zeigt die folgende JSON-Konfigurationsdatei ein Beispiel dafür, wie dieser CSV-Datensatz konfiguriert werden kann.

```
{
    "headers": [
        "feature_0",
        "feature_1",
        "feature_2",
        "feature_3",
        "target"
    ],
    "label": "target",
    "label_values_or_threshold": [1],
    "facet": [{
        "name_or_index": "feature_1",
        "value_or_threshold": [1]
    }]
}
```

Die vorhergesagte Beschriftung wird durch den `"InferenceAttribute"` Parameter ausgewählt. Es wird eine auf Null basierende Nummerierung verwendet, sodass 0 für die erste Spalte der Modellausgabe steht.

```
"EndpointInput": {
    ...
    "InferenceAttribute": 0
    ...
}
```

Alternativ können Sie verschiedene Parameter verwenden, um Wahrscheinlichkeitswerte in binäre vorhergesagte Bezeichnungen umzurechnen. Es wird eine auf Null basierende Nummerierung verwendet: 1 steht für die zweite Spalte; der `ProbabilityThresholdAttribute` Wert 0,6 gibt an, dass bei einer Wahrscheinlichkeit von mehr als 0,6 die binäre Bezeichnung als 1 vorhergesagt wird.

```
"EndpointInput": {
    ...
    "ProbabilityAttribute": 1,
    "ProbabilityThresholdAttribute": 0.6
    ...
}
```

### JSON-Lines-Datensätze
<a name="clarify-config-json-monitor-bias-parameters-example-jsonlines"></a>

Stellen Sie sich einen Datensatz mit vier Feature-Spalten und einer Beschriftung-Spalte vor, wobei das erste Feature und die Beschriftungen binär sind, wie im folgenden Beispiel.

```
{"features":[0, 0.5814568701544718, 0.6651538910132964, 0.3138080342665499], "label":0}
{"features":[1, 0.6711642728531724, 0.7466687034026017, 0.1215477472819713], "label":1}
{"features":[0, 0.0453256543003371, 0.6377430803264152, 0.3558625219713576], "label":1}
{"features":[1, 0.4785191813363956, 0.0265841045263860, 0.0376935084990697], "label":1}
```

Gehen Sie davon aus, dass die Modellausgabe aus zwei Spalten besteht, wobei die erste Spalte eine vorhergesagte Beschriftung und die zweite eine Wahrscheinlichkeit ist.

```
{"predicted_label":1, "probability":0.5385257417814224}
```

Die folgende JSON-Konfigurationsdatei zeigt ein Beispiel dafür, wie dieser JSON Lines-Datensatz konfiguriert werden kann.

```
{
    "headers": [
        "feature_0",
        "feature_1",
        "feature_2",
        "feature_3",
        "target"
    ],
    "label": "label",
    "label_values_or_threshold": [1],
    "facet": [{
        "name_or_index": "feature_1",
        "value_or_threshold": [1]
    }]
}
```

Anschließend wird der `"features"` Parameterwert in `EndpointInput` (für Echtzeit-Endpunkte) oder `BatchTransformInput` (für Batch-Transformationsauftrag) verwendet, um die Features im Datensatz zu lokalisieren, und der `"predicted_label"` Parameterwert wählt die vorhergesagte Beschriftung aus der Modellausgabe aus. 

```
"EndpointInput": {
    ...
    "FeaturesAttribute": "features",
    "InferenceAttribute": "predicted_label"
    ...
}
```

Alternativ können Sie Wahrscheinlichkeitswerte mithilfe des `ProbabilityThresholdAttribute` Parameterwerts in die vorhergesagte binäre Beschriftung konvertieren. Ein Wert von 0,6 gibt beispielsweise an, dass bei einer Wahrscheinlichkeit von mehr als 0,6 das binäre Label als 1 vorhergesagt wird.

```
"EndpointInput": {
    ...
    "FeaturesAttribute": "features",
    "ProbabilityAttribute": "probability",
    "ProbabilityThresholdAttribute": 0.6
    ...
}
```

# Planen Sie Aufträge zur Überwachung von Bias Drift
<a name="clarify-model-monitor-bias-drift-schedule"></a>

Nachdem Sie Ihre Baseline erstellt haben, können Sie die `create_monitoring_schedule()` Methode Ihrer `ModelBiasModelMonitor` Klasseninstance aufrufen, um einen stündlichen Biasdrift-Monitor zu planen. In den folgenden Abschnitten erfahren Sie, wie Sie einen Bias-Drift-Monitor für ein Modell erstellen, das auf einem Echtzeit-Endpunkt bereitgestellt wird, sowie für einen Batch-Transformationsauftrag.

**Wichtig**  
Sie können bei der Erstellung Ihres Überwachungsplans entweder eine Batch-Transformationseingabe oder eine Endpunkteingabe angeben, jedoch nicht beides.

Im Gegensatz zur Überwachung der Datenqualität müssen Sie Ground-Truth-Labels angeben, wenn Sie die Modellqualität überwachen möchten. Ground-Truth-Labels könnten sich jedoch verzögern. Um dieses Problem zu beheben, geben Sie bei der Erstellung Ihres Überwachungsplans Offsets an. Weitere Informationen zum Erstellen von Zeitversätzen finden Sie unter [Modellieren Sie Monitor-Offsets](model-monitor-model-quality-schedule.md#model-monitor-model-quality-schedule-offsets). 

Wenn Sie einen Baselining-Auftrag eingereicht haben, übernimmt der Monitor automatisch die Analysekonfiguration aus dem Baselining-Auftrag. Wenn Sie den Baselining-Schritt überspringen oder der Erfassungsdatensatz einen anderen Charakter als der Trainingsdatensatz hat, müssen Sie die Analysekonfiguration angeben.

## Überwachung von Verzerrungen bei Modellen, die auf Echtzeit-Endpunkten bereitgestellt werden
<a name="model-monitor-bias-quality-rt"></a>

Um einen Bias-Drift-Monitor für einen Echtzeit-Endpunkt zu planen, übergeben Sie Ihre `EndpointInput` Instance an das `endpoint_input` Argument Ihrer `ModelBiasModelMonitor` Instance, wie im folgenden Codebeispiel gezeigt:

```
from sagemaker.model_monitor import CronExpressionGenerator
            
model_bias_monitor = ModelBiasModelMonitor(
    role=sagemaker.get_execution_role(),
    ...
)

model_bias_analysis_config = None
if not model_bias_monitor.latest_baselining_job:
    model_bias_analysis_config = BiasAnalysisConfig(
        model_bias_config,
        headers=all_headers,
        label=label_header,
    )

model_bias_monitor.create_monitoring_schedule(
    monitor_schedule_name=schedule_name,
    post_analytics_processor_script=s3_code_postprocessor_uri,
    output_s3_uri=s3_report_path,
    statistics=model_bias_monitor.baseline_statistics(),
    constraints=model_bias_monitor.suggested_constraints(),
    schedule_cron_expression=CronExpressionGenerator.hourly(),
    enable_cloudwatch_metrics=True,
    analysis_config=model_bias_analysis_config,
    endpoint_input=EndpointInput(
        endpoint_name=endpoint_name,
        destination="/opt/ml/processing/input/endpoint",
        start_time_offset="-PT1H",
        end_time_offset="-PT0H",
        probability_threshold_attribute=0.8,
    ),
)
```

## Überwachung von Verzerrungen bei Batch-Transformationsaufträgen
<a name="model-monitor-bias-quality-bt"></a>

Um einen Bias-Drift-Monitor für einen Batch-Transformationsauftrag zu planen, übergeben Sie Ihre `BatchTransformInput` `ModelBiasModelMonitor` Instance an das `batch_transform_input` Argument Ihrer Instance, wie im folgenden Codebeispiel gezeigt:

```
from sagemaker.model_monitor import CronExpressionGenerator
                
model_bias_monitor = ModelBiasModelMonitor(
    role=sagemaker.get_execution_role(),
    ...
)

model_bias_analysis_config = None
if not model_bias_monitor.latest_baselining_job:
    model_bias_analysis_config = BiasAnalysisConfig(
        model_bias_config,
        headers=all_headers,
        label=label_header,
    )
    
schedule = model_bias_monitor.create_monitoring_schedule(
   monitor_schedule_name=schedule_name,
   post_analytics_processor_script=s3_code_postprocessor_uri,
   output_s3_uri=s3_report_path,
   statistics=model_bias_monitor.baseline_statistics(),
   constraints=model_bias_monitor.suggested_constraints(),
   schedule_cron_expression=CronExpressionGenerator.hourly(),
   enable_cloudwatch_metrics=True,
   analysis_config=model_bias_analysis_config,
   batch_transform_input=BatchTransformInput(
        destination="opt/ml/processing/input",
        data_captured_destination_s3_uri=s3_capture_path,
        start_time_offset="-PT1H",
        end_time_offset="-PT0H",
        probability_threshold_attribute=0.8
   ),
)
```

# Untersuchen Sie Berichte auf Datenverzerrungen
<a name="clarify-model-monitor-bias-drift-report"></a>

Wenn Sie die Ergebnisse der Überwachung nicht in den generierten Berichten in SageMaker Studio überprüfen können, können Sie sie wie folgt ausdrucken:

```
schedule_desc = model_bias_monitor.describe_schedule()
execution_summary = schedule_desc.get("LastMonitoringExecutionSummary")
if execution_summary and execution_summary["MonitoringExecutionStatus"] in ["Completed", "CompletedWithViolations"]:
    last_model_bias_monitor_execution = model_bias_monitor.list_executions()[-1]
    last_model_bias_monitor_execution_report_uri = last_model_bias_monitor_execution.output.destination
    print(f'Report URI: {last_model_bias_monitor_execution_report_uri}')
    last_model_bias_monitor_execution_report_files = sorted(S3Downloader.list(last_model_bias_monitor_execution_report_uri))
    print("Found Report Files:")
    print("\n ".join(last_model_bias_monitor_execution_report_files))
else:
    last_model_bias_monitor_execution = None
    print("====STOP==== \n No completed executions to inspect further. Please wait till an execution completes or investigate previously reported failures.")
```

 Falls es im Vergleich zum Ausgangswert Verstöße gibt, werden diese hier aufgelistet:

```
if last_model_bias_monitor_execution:
    model_bias_violations = last_model_bias_monitor_execution.constraint_violations()
    if model_bias_violations:
        print(model_bias_violations.body_dict)
```

Wenn Ihr Modell auf einem Echtzeit-Endpunkt bereitgestellt wird, können Sie sich in SageMaker AI Studio Visualisierungen der Analyseergebnisse und CloudWatch Metriken anzeigen lassen, indem Sie die Registerkarte **Endpunkte auswählen und dann auf den Endpunkt** doppelklicken.

# CloudWatch Metriken für die Bias-Drift-Analyse
<a name="clarify-model-monitor-bias-drift-cw"></a>

Dieser Leitfaden zeigt CloudWatch Metriken und ihre Eigenschaften, die Sie für die Bias-Drift-Analyse in SageMaker Clarify verwenden können. Jobs zur Überwachung von Verzerrungen berechnen sowohl [Verzerrungsmetriken vor](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-measure-data-bias.html) [dem Training als auch Messwerte für Verzerrungen](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-measure-post-training-bias.html) nach dem Training und veröffentlichen sie im folgenden Namespace: CloudWatch 
+ Für Echtzeit-Endpunkte: `aws/sagemaker/Endpoints/bias-metrics`
+ Erstellen Sie Stapeltransformationsaufträge: `aws/sagemaker/ModelMonitoring/bias-metrics` 

An den CloudWatch Metriknamen wird der Kurzname der Metrik angehängt. `bias_metric`

Dies `bias_metric_CI` ist beispielsweise die Bias-Metrik für das Klassenungleichgewicht (CI).

**Anmerkung**  
`+/- infinity` wird als Fließkommazahl veröffentlicht, und Fehler `+/- 2.348543e108`, einschließlich Nullwerte, werden nicht veröffentlicht.

Jede Metrik hat die folgenden Eigenschaften:
+ `Endpoint`: Der Name des überwachten Endpunkts, falls zutreffend.
+ `MonitoringSchedule`: Der Name des Überwachungszeitplans. 
+ `BiasStage`: Der Name der Phase, in der der Bias-Drift-Monitoring-Auftrag ausgeführt wird. Wählen Sie `Pre-training` oder `Post-Training`.
+ `Label`: Der Name der Zielfunktion, der von der Konfiguration `label` für die Analyse des Monitoring-Auftragesbereitgestellt wird.
+ `LabelValue`: Der Wert der Zielfunktion, der von der Konfiguration `label_values_or_threshold` für die Analyse des Monitoring-Auftrages bereitgestellt wird.
+ `Facet`: Der Name der Facette, der von der Konfigurationsfacette `name_of_index` für die Monitoring-Auftrag-Analyse bereitgestellt wird.
+ `FacetValue`: Der Wert der Facette, der von der Konfigurationsfacette für die Analyse von `nvalue_or_threshold`Überwachungsaufträgen bereitgestellt wird.

Um zu verhindern, dass die Monitoring-Jobs Metriken veröffentlichen, setzen Sie `publish_cloudwatch_metrics` auf `Disabled` in der `Environment` Map of [Model Bias Auftragsdefinition](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelBiasJobDefinition.html) auf.