

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.

# Konfigurieren der Inference-Ausgabe in erzeugte Container
<a name="autopilot-automate-model-development-container-output"></a>

Autopilot erzeugt eine geordnete [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html)-Liste. Dies kann verwendet werden, um ein Modell für die Implementierung in einer Pipeline für Machine Learning zu erstellen. Dieses Modell kann für Online-Hosting und Inference verwendet werden. 

Der Kunden kann mit der [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidateForAutoMLJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListCandidateForAutoMLJob.html)API Definitionen von Inference-Containern auflisten. Die Liste der Definitionen für Inference-Container, die den optimalen Kandidaten darstellen, ist auch in der Antwort [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJob.html) verfügbar.

## Definitionen von Inference-Containern für Aufgabentypen mit Regression und Klassifikation
<a name="autopilot-problem-type-container-output"></a>

Autopilot erzeugt Inference-Container, die für den [Trainingsmodus](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html#autopilot-training-mode) und den [Aufgabentyp](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-datasets-problem-types.html#autopilot-problem-types) des Jobs spezifisch sind.

### Containerdefinitionen für den Hyperparameter-Optimierungsmodus (HPO)
<a name="autopilot-problem-type-container-output-hpo"></a>
+ **Regression**: HPO erzeugt zwei Container:

  1. Einen Feature-Engineering-Container, der die ursprünglichen Features in Features umwandelt, anhand derer die Regressionsalgorithmen trainiert werden können.

  1. Einen Algorithmus-Container, der Features transformiert und einen Regressionskoeffizienten für den Datensatz erzeugt.
+ **Klassifizierung**: HPO erzeugt drei Container:

  1. Einen Feature-Engineering-Container, der die ursprünglichen Features in Features umwandelt, anhand derer die Klassifizierungsalgorithmen trainiert werden können.

  1. Einen Algorithmus-Container, der die `predicted_label` mit der höchsten Wahrscheinlichkeit erzeugt. Dieser Container kann auch die verschiedenen Wahrscheinlichkeiten erzeugen, die mit den Klassifikationsergebnissen in der Inference-Antwort verknüpft sind.

  1. Ein Feature-Engineering-Container, der die Vorhersage des Algorithmus nachbearbeitet. Dieser kann z. B. am vorhergesagten Label eine inverse Transformation vornehmen und dieses in das ursprüngliche Label ändern. 

### Container-Definitionen für den Ensembling-Modus
<a name="autopilot-problem-type-container-output-ensemble"></a>

Im Ensembling-Modus haben Aufgabentypen sowohl mit Regression als auch Klassifikation nur einen Inference-Container. Dieser Inference-Container transformiert die Features und erzeugt anhand des Aufgabentyps die Vorhersagen. 

## Inference-Antworten pro Aufgabentyp
<a name="autopilot-problem-type-inference-response"></a>

### Inference-Antworten für Klassifikationsmodelle
<a name="autopilot-problem-type-inference-response-classification"></a>

Bei Inference-Containern mit Klassifikation können Sie den Inhalt der Inference-Antwort mithilfe von vier vorab festgelegten Schlüsseln auswählen:
+ `predicted_label`: Das Label, das das richtige Label mit der höchsten Wahrscheinlichkeit vorhersagen kann, wie vom Autopiloten ermittelt.
+ `probability`: 
  + **HPO-Modelle:** Die Wahrscheinlichkeit der `True` Klasse für die binäre Klassifikation. Die Wahrscheinlichkeit der `predicted_label` Mehrklassen-Klassifizierung.
  + **Ensemble-Modelle:** Die Wahrscheinlichkeit der `predicted_label` für die binäre und die Mehrklassen-Klassifizierung.
+ `probabilities`: Die Liste der Wahrscheinlichkeiten für alle entsprechenden Klassen.
+ `labels`: Die Liste aller Labels.

Wenn Sie z. B. bei einer Aufgabe mit binärer Klassifikation die Schlüssel für die Inference-Antwort übergeben `['predicted_label', 'probability', 'probabilities', 'labels']` und die ausgegebene Antwort die Form `[1, 0.1, "[0.9, 0.1]", "['1', '0']"]` hat, sollten Sie sie wie folgt interpretieren:

1. `predicted_label` ist gleich `1`, weil das Label „1" eine höhere Wahrscheinlichkeit hat (in diesem Fall `0.9`).

1. Bei HPO-Modellen ist `probability` gleich `0.1`, was der Wahrscheinlichkeit der `positive_class` entspricht (in diesem Fall `0`), die vom Autopiloten ausgewählt wurde.

   Bei Ensemble-Modellen ist `probability` gleich `0.9`, was der Wahrscheinlichkeit der `predicted_label` entspricht.

1. `probabilities` listet die `probability` der einzelnen Labels in `labels` auf.

1. `labels` sind die eindeutigen Labels im Datensatz, wobei das zweite Label (in diesem Fall „0") das vom Autopilot gewählte `positive_class` ist.

Inference-Container sind standardmäßig so konfiguriert, dass sie nur die `predicted_label` erzeugen. Um zusätzliche Inhalte für die Inference auszuwählen, können Sie den Parameter `inference_response_keys` so aktualisieren, dass er bis zu drei dieser Umgebungsvariablen enthält:
+ `SAGEMAKER_INFERENCE_SUPPORTED`: Damit erhalten Sie Hinweise darauf, welche Inhalte die einzelnen Container unterstützen.
+ `SAGEMAKER_INFERENCE_INPUT`: Dieser sollte auf die Schlüssel gesetzt werden, die der Container an Eingabe-Nutzlast erwartet.
+ `SAGEMAKER_INFERENCE_OUTPUT`: Dieser sollte mit dem Schlüsselsatz gefüllt werden, die der Container ausgibt.

### Inference-Antworten für Klassifikationsmodelle im HPO-Modus
<a name="autopilot-problem-type-inference-response-classification-hpo"></a>

In diesem Abschnitt wird gezeigt, wie die Inference-Antwort von Klassifikationsmodellen im Hyperparameter-Optimierungsmodus (HPO) konfiguriert wird.

So wählen Sie den Inhalt der Inference-Antwort im HPO-Modus aus: Fügen Sie die Variablen `SAGEMAKER_INFERENCE_INPUT` und `SAGEMAKER_INFERENCE_OUTPUT` zu den zweiten und dritten Containern hinzu, die für Klassifikationsprobleme im HPO-Modus erzeugt werden.

Die Schlüssel, die vom zweiten Container (Algorithmus) unterstützt werden, sind predicted\_label, probability und probilities. Beachten Sie, dass `labels` bewusst nicht zu `SAGEMAKER_INFERENCE_SUPPORTED` hinzugefügt wird.

Die Schlüssel, die vom dritten Container für das Klassifikationsmodell unterstützt werden sind `predicted_label`, `labels`, `probability` und `probabilities`. Daher beinhaltet die Umgebung `SAGEMAKER_INFERENCE_SUPPORTED` die Namen dieser Schlüssel.

Verwenden Sie den folgenden Beispielcode zur Aktualisierung der Definition der Inference-Container, damit diese `predicted_label` und `probability` erhalten.

```
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label, probability'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
```

Der folgende Beispielcode aktualisiert die Definition der Inference-Container, damit diese `predicted_label`, `probabilities` und `labels` erhalten. Übergeben Sie `labels` nicht an den zweiten Container (den Container für Algorithmen), da es vom dritten Container unabhängig erzeugt wird. 

```
containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label,probabilities'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label,probabilities'})
containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probabilities,labels'})
```

Die folgenden zusammenklappbaren Abschnitte enthalten Codebeispiele für AWS SDK für Python (Boto3) und für SageMaker SDK für Python. Jeder Abschnitt zeigt, wie im HPO-Modus der Inhalt der Inference-Antworten für den jeweiligen Beispielcode ausgewählt wird.

#### AWS SDK für Python (Boto3)
<a name="autopilot-problem-type-inference-response-classification-hpo-boto3"></a>

```
import boto3

sm_client = boto3.client('sagemaker', region_name='{{<Region>}}')

role = '{{<IAM role>}}'
input_data = '{{<S3 input uri>}}'
output_path = '{{<S3 output uri>}}'

best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName='{{<AutoML Job Name>}}')['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['{{CandidateName}}']

best_candidate_containers[1]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
best_candidate_containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_INPUT': 'predicted_label, probability'})
best_candidate_containers[2]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})

# create model
reponse = sm_client.create_model(
    ModelName = '{{<Model Name>}}',
    ExecutionRoleArn = role,
    Containers = best_candidate_containers
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName='{{<Transform Job Name>}}',
    ModelName='{{<Model Name>}}',
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': '{{S3Prefix}}',
                'S3Uri': {{input_data}}
            }
        },
        'ContentType': "text/CSV",
        'SplitType': 'Line'
    },
    TransformOutput={
        'S3OutputPath': {{output_path}},
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': '{{ml.m4.xlarge}}',
        'InstanceCount': 1,
    },
)
```

#### SageMaker SDK für Python
<a name="autopilot-problem-type-inference-response-classification-hpo-sdk"></a>

```
from sagemaker import AutoML

aml = AutoML.attach(auto_ml_job_name='{{<AutoML Job Name>}}')
aml_best_model = aml.create_model(name='{{<Model Name>}}',
                                  candidate=None,
                                  inference_response_keys**=['probabilities', 'labels'])

aml_transformer = aml_best_model.transformer(accept='text/csv',
                                            assemble_with='Line',
                                            instance_type='{{ml.m5.xlarge}}',
                                            instance_count=1,)

aml_transformer.transform('{{<S3 input uri>}}',
                          content_type='text/csv',
                          split_type='Line',
                          job_name='{{<Transform Job Name>}}',
                          wait=True)
```

### Inference-Antworten für Klassifikationsmodelle im Ensembling-Modus
<a name="autopilot-problem-type-inference-response-classification-ensemble"></a>

In diesem Abschnitt wird gezeigt, wie die Inference-Antwort von Klassifikationsmodellen im Ensembling-Modus konfiguriert wird. 

Um im **Ensembling-Modus** den Inhalt der Inference-Antwort auszuwählen, aktualisieren Sie die Umgebungsvariable `SAGEMAKER_INFERENCE_OUTPUT`.

Die Schlüssel, die vom Container für das Klassifikationsmodell unterstützt werden, sind `predicted_label`, `labels`, `probability` und `probabilities`. Diese Schlüssel sind in der Umgebung `SAGEMAKER_INFERENCE_SUPPORTED` enthalten.

Informationen zur Aktualisierung der Definition des Inference-Containers, damit diese `predicted_label` und `probability` erhält, finden Sie im folgenden Beispielcode.

```
containers[0]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
```

Der folgende einklappbare Abschnitt enthält Beispielcode für die Auswahl des Inhalts der Inference-Antworten im Ensembling-Modus. Das Beispiel verwendet AWS SDK für Python (Boto3).

#### AWS SDK für Python (Boto3)
<a name="autopilot-problem-type-inference-response-classification-ensembling-boto3"></a>

```
import boto3
sm_client = boto3.client('sagemaker', region_name='{{<Region>}}')

role = '{{<IAM role>}}'
input_data = '{{<S3 input uri>}}'
output_path = '{{<S3 output uri>}}' 

best_candidate = sm_client.describe_auto_ml_job(AutoMLJobName='{{<AutoML Job Name>}}')['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['{{CandidateName}}']

*best_candidate_containers[0]['Environment'].update({'SAGEMAKER_INFERENCE_OUTPUT': 'predicted_label, probability'})
*
# create model
reponse = sm_client.create_model(
    ModelName = '{{<Model Name>}}',
    ExecutionRoleArn = role,
    Containers = best_candidate_containers
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName='{{<Transform Job Name>}}',
    ModelName='{{<Model Name>}}',
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': '{{S3Prefix}}',
                'S3Uri': input_data
            }
        },
        'ContentType': "text/CSV",
        'SplitType': 'Line'
    },
    TransformOutput={
        'S3OutputPath': output_path,
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': '{{ml.m4.xlarge}}',
        'InstanceCount': 1,
    },
)
```

Der folgende zusammenklappbare Abschnitt enthält ein Codebeispiel, das mit dem SageMaker SDK für Python-Beispiel für HPO identisch ist. Er wird hier zu Ihrer Bequemlichkeit angegeben.

#### SageMaker SDK für Python
<a name="autopilot-problem-type-inference-response-classification-ensembling-sdk"></a>

Das folgende HPO-Codebeispiel verwendet SageMaker SDK für Python.

```
from sagemaker import AutoML

aml = AutoML.attach(auto_ml_job_name='<AutoML Job Name>')
aml_best_model = aml.create_model(name='<Model Name>',
                                  candidate=None,
                                  *inference_response_keys**=['probabilities', 'labels'])*

aml_transformer = aml_best_model.transformer(accept='text/csv',
                                            assemble_with='Line',
                                            instance_type='ml.m5.xlarge',
                                            instance_count=1,)

aml_transformer.transform('<S3 input uri>',
                          content_type='text/csv',
                          split_type='Line',
                          job_name='<Transform Job Name>',
                          wait=True)
```