

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.

# Prognose eines bereitgestellten Autopilot-Modells
<a name="timeseries-forecasting-deploy-models"></a>

Nachdem Sie Ihre Modelle mit der AutoML-API trainiert haben, können Sie sie für Echtzeitprognosen oder Batch-basierte Prognosen einsetzen. 

Die AutoML-API trainiert mehrere Modellkandidaten für Ihre Zeitreihendaten und wählt ein optimales Prognosemodell basierend auf Ihrer Zielkennzahl aus. Sobald Ihre Modellkandidaten geschult wurden, finden Sie den besten Kandidaten in der Antwort [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html) unter. [BestCandidate](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidate.html#sagemaker-Type-AutoMLCandidate-CandidateName)

Um mithilfe dieses leistungsstärksten Modells Prognosen zu erhalten, können Sie entweder einen Endpunkt einrichten, um Prognosen interaktiv zu erhalten, oder mithilfe von Batch-Prognosen Vorhersagen für eine Reihe von Beobachtungen treffen.

**Überlegungen**
+ Wenn Sie Eingabedaten für Prognosen bereitstellen, sollte das Schema Ihrer Daten dasselbe sein wie das Schema, das Sie zum Trainieren Ihres Modells verwendet haben, einschließlich der Anzahl der Spalten, der Spaltenüberschriften und der Datentypen. Sie können Prognosen für ein vorhandenes oder neues Objekt IDs innerhalb desselben oder eines anderen Zeitstempelbereichs erstellen, um Vorhersagen für einen anderen Zeitraum zu treffen.
+ Prognosemodelle prognostizieren Punkte für den Prognosehorizont in der Zukunft, die beim Training in der Eingabeanforderung angegeben wurden, d. h. vom *Zielenddatum* bis zum *Zielenddatum \$1 Prognosehorizont*. Um das Modell zur Vorhersage bestimmter Daten zu verwenden, sollten Sie die Daten im gleichen Format bereitstellen wie die ursprünglichen Eingabedaten, so dass sie sich bis zu einem bestimmten *Zielenddatum* erstrecken. Bei diesem Szenario beginnt das Modell mit der Prognose ab dem neuen Zielenddatum.

  Wenn Ihr Datensatz z. B. monatliche Daten von Januar bis Juni mit einem Prognosehorizont von 2 enthält, würde das Modell den Zielwert für die nächsten 2 Monate vorhersagen, also für Juli und August. Wenn Sie im August Prognosen für die nächsten 2 Monate erstellen möchten, sollten Ihre Eingabedaten diesmal von Januar bis August reichen. Das Modell trifft dann Prognosen für die nächsten 2 Monate (September, Oktober).
+ Bei der Prognose zukünftiger Datenpunkte gibt es kein festgelegtes Minimum für die Menge an historischen Daten, die bereitgestellt werden müssen. Nehmen Sie genügend Daten auf, um saisonale und wiederkehrende Muster in Ihren Zeitreihen zu erfassen.

**Topics**
+ [Prognosen in Echtzeit](timeseries-forecasting-realtime.md)
+ [Batch-Prognosen](timeseries-forecasting-batch.md)

# Prognosen in Echtzeit
<a name="timeseries-forecasting-realtime"></a>

Echtzeitprognosen sind nützlich, wenn Sie Prognosen erstellen müssen on-the-fly, z. B. für Anwendungen, die sofortige Antworten erfordern, oder für Prognosen für einzelne Datenpunkte.

Durch die Bereitstellung Ihres AutoML-Modells als Echtzeit-Endpunkt können Sie On-Demand-Prognosen erstellen und die Latenz zwischen dem Empfang neuer Daten und dem Erhalt von Vorhersagen minimieren. Dadurch eignen sich Echtzeitprognosen gut für Anwendungen, die sofortige, personalisierte oder ereignisgesteuerte Prognosefunktionen erfordern.

Für Echtzeitprognosen sollte der Datensatz eine Teilmenge des Eingabedatensatzes sein. Der Echtzeit-Endpunkt hat eine Eingabedatengröße von ca. 6 MB und die Zeitüberschreitung für die Antwort erfolgt nach 60 Sekunden. Wir empfehlen, jeweils nur einen oder wenige Artikel einzugeben.

Sie können SageMaker APIs damit den besten Kandidaten für einen AutoML-Job abrufen und dann mit diesem Kandidaten einen SageMaker KI-Endpunkt erstellen.

Alternativ können Sie bei der Erstellung Ihres Autopilot-Experiments die Option zur automatischen Bereitstellung wählen. Informationen zur Einrichtung der automatischen Bereitstellung von Modellen finden Sie unter [So aktivieren Sie die automatische Bereitstellung](autopilot-create-experiment-timeseries-forecasting.md#timeseries-forecasting-auto-model-deployment).

**So erstellen Sie einen SageMaker KI-Endpunkt mit Ihrem besten Modellkandidaten:**

1. 

**Rufen Sie die Details des AutoML-Jobs ab.**

   Das folgende AWS CLI Befehlsbeispiel verwendet die [DescribeAutoMLJobV2-API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html), um Details zum AutoML-Job abzurufen, einschließlich der Informationen über den besten Modellkandidaten.

   ```
   aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name job-name --region region
   ```

1. 

**Extrahieren Sie die Containerdefinition [InferenceContainers](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidate.html#sagemaker-Type-AutoMLCandidate-InferenceContainers)für den besten Modellkandidaten.**

   Eine Container-Definition ist die containerisierte Umgebung, in der das trainierte SageMaker KI-Modell für Vorhersagen gehostet wird.

   ```
   BEST_CANDIDATE=$(aws sagemaker describe-auto-ml-job-v2 \
     --auto-ml-job-name job-name 
     --region region \
     --query 'BestCandidate.InferenceContainers[0]' \
     --output json
   ```

   Mit diesem Befehl wird die Containerdefinition für den besten Modellkandidaten extrahiert und in der Variablen `BEST_CANDIDATE` gespeichert.

1. 

**Erstellen Sie ein SageMaker KI-Modell unter Verwendung der geeignetsten Containerdefinition.**

   Verwenden Sie die Containerdefinitionen aus den vorherigen Schritten, um mithilfe der [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)API ein SageMaker KI-Modell zu erstellen.

   ```
   aws sagemaker create-model \
               --model-name 'your-candidate-name>' \
               --primary-container "$BEST_CANDIDATE"
               --execution-role-arn 'execution-role-arn>' \
               --region 'region>
   ```

   Der `--execution-role-arn` Parameter gibt die IAM-Rolle an, die SageMaker KI bei der Verwendung des Modells für Inferenzen annimmt. Einzelheiten zu den für diese Rolle erforderlichen Berechtigungen finden Sie unter [CreateModel API: Berechtigungen für Ausführungsrollen](https://docs.aws.amazon.com/).

1. 

**Erstellen Sie mithilfe des Modells eine SageMaker KI-Endpunktkonfiguration.**

   Der folgende AWS CLI Befehl verwendet die [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)API, um eine Endpunktkonfiguration zu erstellen.

   ```
   aws sagemaker create-endpoint-config \
     --production-variants file://production-variants.json \
     --region 'region'
   ```

   Die Datei `production-variants.json` enthält die Modellkonfiguration, einschließlich des Modellnamens und des Instance-Typs.
**Anmerkung**  
Wir empfehlen die Verwendung von [m5.12xlarge](https://aws.amazon.com/ec2/instance-types/m5/)-Instances für Prognosen in Echtzeit.

   ```
   [
       {
         "VariantName": "variant-name",
         "ModelName": "model-name",
         "InitialInstanceCount": 1,
         "InstanceType": "m5.12xlarge"
       }
     ]
   }
   ```

1. 

**Erstellen Sie den SageMaker AI-Endpunkt mithilfe der Endpunktkonfiguration.**

   Das folgende AWS CLI Beispiel verwendet die [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)API, um den Endpunkt zu erstellen.

   ```
   aws sagemaker create-endpoint \
               --endpoint-name 'endpoint-name>' \
               --endpoint-config-name 'endpoint-config-name' \
               --region 'region'
   ```

   Überprüfen Sie mithilfe der [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)API den Fortschritt Ihrer Implementierung von Inferenzendpunkten in Echtzeit. Sehen Sie sich den folgenden AWS CLI Befehl als Beispiel an.

   ```
   aws sagemaker describe-endpoint \
               --endpoint-name 'endpoint-name' \
               --region 'region'
   ```

   Nach den `EndpointStatus` Änderungen an `InService` ist der Endpunkt für Echtzeit-Inferences einsatzbereit.

1. 

**Rufen Sie den SageMaker KI-Endpunkt auf, um Vorhersagen zu treffen.**

   ```
   aws sagemaker invoke-endpoint \
               --endpoint-name 'endpoint-name' \ 
               --region 'region' \
               --body file://input-data-in-bytes.json \
               --content-type 'application/json' outfile
   ```

   Die Datei `input-data-in-bytes.json` enthält die Eingabedaten für die Vorhersage.

# Batch-Prognosen
<a name="timeseries-forecasting-batch"></a>

Stapelprognosen, auch Offline-Inferences genannt, erzeugen Modellvorhersagen zu einer Reihe von Beobachtungen. Batch-Inferenz ist eine gute Option für große Datensätze oder wenn Sie keine sofortige Antwort auf eine Modellvorhersageanforderung benötigen.

Im Gegensatz dazu werden bei der Online-Inferenz (Echtzeit-Inferencing) Vorhersagen in Echtzeit erstellt. 

Sie können SageMaker APIs damit den besten Kandidaten für einen AutoML-Job abrufen und dann mithilfe dieses Kandidaten einen Stapel von Eingabedaten zur Inferenz einreichen.

1. 

**Rufen Sie die Details des AutoML-Jobs ab.**

   Das folgende AWS CLI Befehlsbeispiel verwendet die [DescribeAutoMLJobV2-API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html), um Details zum AutoML-Job abzurufen, einschließlich der Informationen über den besten Modellkandidaten.

   ```
   aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name job-name --region region
   ```

1. 

**Extrahieren Sie die Containerdefinition [InferenceContainers](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidate.html#sagemaker-Type-AutoMLCandidate-InferenceContainers)für den besten Modellkandidaten.**

   Eine Container-Definition ist die containerisierte Umgebung, in der das trainierte SageMaker KI-Modell für Vorhersagen gehostet wird.

   ```
   BEST_CANDIDATE=$(aws sagemaker describe-auto-ml-job-v2 \
         --auto-ml-job-name job-name 
         --region region \
         --query 'BestCandidate.InferenceContainers[0]' \
         --output json
   ```

   Mit diesem Befehl wird die Containerdefinition für den besten Modellkandidaten extrahiert und in der Variablen `BEST_CANDIDATE` gespeichert.

1. 

**Erstellen Sie ein SageMaker KI-Modell unter Verwendung der geeignetsten Containerdefinition.**

   Verwenden Sie die Containerdefinitionen aus den vorherigen Schritten, um mithilfe der [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)API ein SageMaker KI-Modell zu erstellen.

   ```
   aws sagemaker create-model \
         --model-name 'model-name' \
         --primary-container "$BEST_CANDIDATE"
         --execution-role-arn 'execution-role-arn>' \
         --region 'region>
   ```

   Der `--execution-role-arn` Parameter gibt die IAM-Rolle an, die SageMaker KI bei der Verwendung des Modells für Inferenzen annimmt. Einzelheiten zu den für diese Rolle erforderlichen Berechtigungen finden Sie unter [CreateModel API: Berechtigungen für Ausführungsrollen](https://docs.aws.amazon.com/).

1. 

**Erstellen Sie einen Batch-Transformationsjob.**

   Im folgenden Beispiel wird mithilfe der [CreateTransformJob](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-transform-job.html)API ein Transformationsjob erstellt. 

   ```
   aws sagemaker create-transform-job \ 
          --transform-job-name 'transform-job-name' \
          --model-name 'model-name'\
          --transform-input file://transform-input.json \
          --transform-output file://transform-output.json \
          --transform-resources file://transform-resources.json \
          --region 'region'
   ```

   Die Eingabe-, Ausgabe- und Ressourcendetails sind in separaten JSON-Dateien definiert:
   + `transform-input.json`:

     ```
     {
       "DataSource": {
         "S3DataSource": {
           "S3DataType": "S3Prefix",
           "S3Uri": "s3://my-input-data-bucket/path/to/input/data"
         }
       },
       "ContentType": "text/csv",
       "SplitType": "None"
     }
     ```
   + `transform-output.json`:

     ```
     {
       "S3OutputPath": "s3://my-output-bucket/path/to/output",
       "AssembleWith": "Line"
     }
     ```
   + `transform-resources.json`:
**Anmerkung**  
Wir empfehlen, [m5.12xlarge](https://aws.amazon.com/ec2/instance-types/m5/)-Instances für allgemeine Workloads und `m5.24xlarge`-Instances für Big-Data-Prognoseaufgaben zu verwenden.

     ```
     {
       "InstanceType": "instance-type",
       "InstanceCount": 1
     }
     ```

1. 

**Überwachen Sie den Fortschritt Ihres Transformationsjobs mithilfe der [DescribeTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTransformJob.html)API.**

   Sehen Sie sich den folgenden AWS CLI Befehl als Beispiel an.

   ```
   aws sagemaker describe-transform-job \
         --transform-job-name 'transform-job-name' \
         --region region
   ```

1. 

**Rufen Sie die Batch-Transformationsausgabe ab.**

   Sobald der Job abgeschlossen ist, steht das vorhergesagte Ergebnis im `S3OutputPath` zur Verfügung. 

   Der Name der Ausgabedatei hat das folgende Format: `input_data_file_name.out`. Wenn Ihre Eingabedatei z. B. `text_x.csv` ist, lautet der Name der Ausgabedatei `text_x.csv.out`.

   ```
   aws s3 ls s3://my-output-bucket/path/to/output/
   ```

Die folgenden Codebeispiele veranschaulichen die Verwendung des AWS SDK für Python (boto3) und AWS CLI für Batch-Prognosen.

------
#### [ AWS SDK for Python (boto3) ]

 Im folgenden Beispiel wird **AWS SDK für Python (boto3)** verwendet, um Vorhersagen stapelweise zu treffen.

```
import sagemaker 
import boto3

session = sagemaker.session.Session()

sm_client = boto3.client('sagemaker', region_name='us-west-2')
role = 'arn:aws:iam::1234567890:role/sagemaker-execution-role'
output_path = 's3://test-auto-ml-job/output'
input_data = 's3://test-auto-ml-job/test_X.csv'

best_candidate = sm_client.describe_auto_ml_job_v2(AutoMLJobName=job_name)['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['CandidateName']

# create model
reponse = sm_client.create_model(
    ModelName = best_candidate_name,
    ExecutionRoleArn = role,
    Containers = best_candidate_containers 
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName=f'{best_candidate_name}-transform-job',
    ModelName=model_name,
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': 'S3Prefix',
                'S3Uri': input_data
            }
        },
        'ContentType': "text/csv",
        'SplitType': 'None'
    },
    TransformOutput={
        'S3OutputPath': output_path,
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': 'ml.m5.2xlarge',
        'InstanceCount': 1,
    },
)
```

Der Batch-Inferenzauftrag gibt eine Antwort in folgendem Format zurück.

```
{'TransformJobArn': 'arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-transform-job',
 'ResponseMetadata': {'RequestId': '659f97fc-28c4-440b-b957-a49733f7c2f2',
  'HTTPStatusCode': 200,
  'HTTPHeaders': {'x-amzn-requestid': '659f97fc-28c4-440b-b957-a49733f7c2f2',
   'content-type': 'application/x-amz-json-1.1',
   'content-length': '96',
   'date': 'Thu, 11 Aug 2022 22:23:49 GMT'},
  'RetryAttempts': 0}}
```

------
#### [ AWS Command Line Interface (AWS CLI) ]

1. **Erhalt der besten Kandidat-Containerdefinitionen**

   ```
   aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name 'test-automl-job' --region us-west-2
   ```

1. **Erstellen des Modells**

   ```
   aws sagemaker create-model --model-name 'test-sagemaker-model'
   --containers '[{
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3",
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz",
       "Environment": {
           "AUTOML_SPARSE_ENCODE_RECORDIO_PROTOBUF": "1",
           "AUTOML_TRANSFORM_MODE": "feature-transform",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "application/x-recordio-protobuf",
           "SAGEMAKER_PROGRAM": "sagemaker_serve",
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.3-1-cpu-py3",
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/tuning/flicdf10v2-dpp0-xgb/test-job1E9-244-7490a1c0/output/model.tar.gz",
       "Environment": {
           "MAX_CONTENT_LENGTH": "20971520",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv",
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,probabilities" 
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3", 
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz", 
       "Environment": { 
           "AUTOML_TRANSFORM_MODE": "inverse-label-transform", 
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv", 
           "SAGEMAKER_INFERENCE_INPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,labels,probabilities", 
           "SAGEMAKER_PROGRAM": "sagemaker_serve", 
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code" 
       } 
   }]' \
   --execution-role-arn 'arn:aws:iam::1234567890:role/sagemaker-execution-role' \
   --region 'us-west-2'
   ```

1. **Erstellen eines Transformationsjobs**

   ```
   aws sagemaker create-transform-job --transform-job-name 'test-tranform-job'\
    --model-name 'test-sagemaker-model'\
    --transform-input '{
           "DataSource": {
               "S3DataSource": {
                   "S3DataType": "S3Prefix",
                   "S3Uri": "s3://amzn-s3-demo-bucket/data.csv"
               }
           },
           "ContentType": "text/csv",
           "SplitType": "None"
       }'\
   --transform-output '{
           "S3OutputPath": "s3://amzn-s3-demo-bucket/output/",
           "AssembleWith": "Line"
       }'\
   --transform-resources '{
           "InstanceType": "ml.m5.2xlarge",
           "InstanceCount": 1
       }'\
   --region 'us-west-2'
   ```

1. **Überprüfen des Fortschritts des Transformationsjobs** 

   ```
   aws sagemaker describe-transform-job --transform-job-name  'test-tranform-job' --region us-west-2
   ```

   Es folgt die Antwort des Transformationsauftrags.

   ```
   {
       "TransformJobName": "test-tranform-job",
       "TransformJobArn": "arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-tranform-job",
       "TransformJobStatus": "InProgress",
       "ModelName": "test-model",
       "TransformInput": {
           "DataSource": {
               "S3DataSource": {
                   "S3DataType": "S3Prefix",
                   "S3Uri": "s3://amzn-s3-demo-bucket/data.csv"
               }
           },
           "ContentType": "text/csv",
           "CompressionType": "None",
           "SplitType": "None"
       },
       "TransformOutput": {
           "S3OutputPath": "s3://amzn-s3-demo-bucket/output/",
           "AssembleWith": "Line",
           "KmsKeyId": ""
       },
       "TransformResources": {
           "InstanceType": "ml.m5.2xlarge",
           "InstanceCount": 1
       },
       "CreationTime": 1662495635.679,
       "TransformStartTime": 1662495847.496,
       "DataProcessing": {
           "InputFilter": "$",
           "OutputFilter": "$",
           "JoinSource": "None"
       }
   }
   ```

   Nach den `TransformJobStatus` Änderungen an `Completed` können Sie das Inferenzergebnis in der `S3OutputPath` überprüfen.

------