

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.

# SageMaker KI-Workflows
<a name="workflows"></a>

Wenn Sie Ihre Machine-Learning-Operationen (ML) skalieren, können Sie die vollständig verwalteten Workflow-Services von Amazon SageMaker AI verwenden, um Methoden der kontinuierlichen Integration und Bereitstellung (CI/CD) für Ihren ML-Lebenszyklus zu implementieren. Mit dem Pipelines SDK wählen und integrieren Sie Pipeline-Schritte in eine einheitliche Lösung, die den Modellerstellungsprozess von der Datenvorbereitung bis zur Modellbereitstellung automatisiert. Für Kubernetes-basierte Architekturen können Sie SageMaker KI-Operatoren auf Ihrem Kubernetes-Cluster installieren, um SageMaker KI-Jobs nativ mithilfe der Kubernetes-API und Kubernetes-Befehlszeilentools zu erstellen, wie z. `kubectl` Mit SageMaker KI-Komponenten für Kubeflow-Pipelines können Sie native KI-Jobs von Ihren Kubeflow-Pipelines aus erstellen und überwachen. SageMaker Auf die Jobparameter, den Status und die Ausgaben von SageMaker AI kann über die Benutzeroberfläche von Kubeflow Pipelines zugegriffen werden. Wenn Sie Batch-Jobs planen möchten, können Sie schließlich entweder die AWS Batch Job-Queue-Integration oder den Jupyter-Workflow-Service auf Notebook-Basis verwenden, um eigenständige oder reguläre Läufe nach einem von Ihnen definierten Zeitplan zu initiieren.

Zusammenfassend bietet SageMaker KI die folgenden Workflow-Technologien:
+ [Pipelines](pipelines.md): Tool zum Erstellen und Verwalten von ML-Pipelines.
+ [Kubernetes-Orchestrierung](kubernetes-workflows.md): Benutzerdefinierte SageMaker KI-Operatoren für Ihren Kubernetes-Cluster und Komponenten für Kubeflow-Pipelines.
+ [SageMaker Jobs im Notizbuch](notebook-auto-run.md): Bedarfsgesteuerte oder geplante, nicht interaktive Batchausführungen Ihres Jupyter Notebooks.

Sie können auch andere Dienste nutzen, die in SageMaker KI integriert sind, um Ihren Workflow zu erstellen. Es gibt die folgenden Optionen:
+ [Airflow-Workflows](https://sagemaker.readthedocs.io/en/stable/workflows/airflow/index.html): SageMaker APIs zum Exportieren von Konfigurationen für die Erstellung und Verwaltung von Airflow-Workflows.
+ [AWS Step Functions](https://sagemaker.readthedocs.io/en/stable/workflows/step_functions/index.html): Mehrstufige ML-Workflows in Python, die die SageMaker KI-Infrastruktur orchestrieren, ohne Ihre Ressourcen separat bereitstellen zu müssen.
+ [AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/getting-started-sagemaker.html): Senden Sie SageMaker KI-Schulungsjobs an eine AWS Batch Job-Warteschlange, in der Sie Jobs für die Ausführung in einer Computerumgebung priorisieren und planen können.

Weitere Informationen zur Verwaltung von SageMaker Schulungen und Inferenzen finden Sie unter [Amazon SageMaker Python SDK-Workflows](https://sagemaker.readthedocs.io/en/stable/workflows/index.html).

**Topics**
+ [Pipelines](pipelines.md)
+ [Kubernetes-Orchestrierung](kubernetes-workflows.md)
+ [SageMaker Jobs im Notizbuch](notebook-auto-run.md)
+ [Planen Sie Ihre ML-Workflows](workflow-scheduling.md)
+ [AWS Batch Unterstützung für SageMaker KI-Ausbildungsjobs](training-job-queues.md)

# Pipelines
<a name="pipelines"></a>

Amazon SageMaker Pipelines ist ein speziell entwickelter Workflow-Orchestrierungsservice zur Automatisierung der Entwicklung von maschinellem Lernen (ML).

Pipelines bieten die folgenden Vorteile gegenüber anderen Workflow-Angeboten: AWS 

**Automatische Skalierung der serverlosen Infrastruktur** Sie müssen die zugrunde liegende Orchestrierungsinfrastruktur nicht verwalten, um Pipelines auszuführen, sodass Sie sich auf die wichtigsten ML-Aufgaben konzentrieren können. SageMaker KI stellt die Rechenressourcen für die Pipeline-Orchestrierung automatisch bereit, skaliert und heruntergefahren, je nachdem, was Ihr ML-Workload benötigt.

Pipelines für ein **intuitives Benutzererlebnis** können über die Benutzeroberfläche Ihrer Wahl erstellt und verwaltet werden: Visual Editor APIs, SDK oder JSON. Sie können drag-and-drop die verschiedenen ML-Schritte zum Erstellen Ihrer Pipelines in der visuellen Oberfläche von Amazon SageMaker Studio ausführen. Der folgende Screenshot zeigt den Visual Editor für Pipelines in Studio.

![\[Screenshot der visuellen drag-and-drop Oberfläche für Pipelines in Studio.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


Wenn Sie es vorziehen, Ihre ML-Workflows programmgesteuert zu verwalten, bietet das SageMaker Python-SDK erweiterte Orchestrierungsfunktionen. Weitere Informationen finden Sie unter [Amazon SageMaker Pipelines](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html) in der SageMaker Python SDK-Dokumentation.

**AWS Integrationen** Pipelines bieten eine nahtlose Integration mit allen SageMaker KI-Funktionen und anderen AWS Services zur Automatisierung von Datenverarbeitungs-, Modelltraining-, Feinabstimmungs-, Evaluierungs-, Bereitstellungs- und Überwachungsaufgaben. Sie können die SageMaker KI-Funktionen in Ihre Pipelines integrieren und mithilfe von Deep-Links zwischen ihnen navigieren, um Ihre ML-Workflows in großem Umfang zu erstellen, zu überwachen und zu debuggen.

**Geringere Kosten** Mit Pipelines zahlen Sie nur für die SageMaker Studio-Umgebung und die zugrunde liegenden Jobs, die von Pipelines orchestriert werden (z. B. SageMaker Training, SageMaker Verarbeitung, SageMaker KI Inference und Amazon S3 S3-Datenspeicher).

**Überprüfbarkeit und Herkunftsverfolgung Mit Pipelines können Sie mithilfe der integrierten Versionierung** den Verlauf von Pipeline-Updates und -Ausführungen verfolgen. Amazon SageMaker ML Lineage Tracking hilft Ihnen bei der Analyse der Datenquellen und Datenverbraucher im end-to-end ML-Entwicklungszyklus.

**Topics**
+ [Übersicht über die Pipelines](pipelines-overview.md)
+ [Pipeline-Aktionen](pipelines-build.md)

# Übersicht über die Pipelines
<a name="pipelines-overview"></a>

Eine Amazon SageMaker AI-Pipeline besteht aus einer Reihe miteinander verbundener Schritte in einem gerichteten azyklischen Graph (DAG), die mithilfe der drag-and-drop Benutzeroberfläche oder des [Pipelines](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html) SDK definiert werden. Sie können Ihre Pipeline erstellen, indem Sie das [JSON-Schema der Pipeline-Definition](https://aws-sagemaker-mlops.github.io/sagemaker-model-building-pipeline-definition-JSON-schema/) verwenden. Diese DAG-JSON-Definition enthält Informationen zu den Anforderungen und Beziehungen zwischen den einzelnen Schritten Ihrer Pipeline. Die Struktur der DAG einer Pipeline wird durch die Datenabhängigkeiten zwischen den Schritten bestimmt. Diese Datenabhängigkeiten entstehen, wenn die Eigenschaften der Ausgabe eines Schritts als Eingabe an einen anderen Schritt übergeben werden. Die folgende Abbildung ist ein Beispiel für eine Pipeline-DAG:

![\[\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/pipeline-full.png)


**In diesem DAG-Beispiel werden folgende Schritte beschrieben:**

1. `AbaloneProcess`, eine Instance des [Verarbeitungsschritts, führt ein Vorverarbeitungsskript](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-processing) für die für das Training verwendeten Daten aus. Das Skript könnte beispielsweise fehlende Werte ausfüllen, numerische Daten normalisieren oder Daten in die Datensätze „Train“, „Validation“ und „Test“ aufteilen.

1. `AbaloneTrain`, eine Instance des [Trainingsschritts](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-training), konfiguriert Hyperparameter und trainiert ein Modell anhand der vorverarbeiteten Eingabedaten.

1. `AbaloneEval`, eine weitere Instance des [Verarbeitungsschritts](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-processing), bewertet das Modell auf seine Genauigkeit. Dieser Schritt veranschaulicht ein Beispiel für eine Datenabhängigkeit – dieser Schritt verwendet die Testdatensatzausgabe von `AbaloneProcess`.

1. `AbaloneMSECond`ist eine Instanz eines [Bedingungsschritts](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-condition), der in diesem Beispiel überprüft, ob das mean-square-error Ergebnis der Modellevaluierung unter einem bestimmten Grenzwert liegt. Wenn das Modell die Kriterien nicht erfüllt, wird der Pipelineverlauf beendet.

1. Der Pipeline-Lauf wird mit den folgenden Schritten fortgesetzt:

   1. `AbaloneRegisterModel`, wo SageMaker KI einen [RegisterModel](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-register-model)Schritt aufruft, um das Modell als versionierte Modellpaketgruppe in der Amazon SageMaker Model Registry zu registrieren.

   1. `AbaloneCreateModel`, wobei SageMaker KI einen [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-create-model)Schritt zur Erstellung des Modells zur Vorbereitung der Batch-Transformation aufruft. In ruft SageMaker KI einen [Transformationsschritt](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-transform) auf`AbaloneTransform`, um Modellvorhersagen für einen von Ihnen angegebenen Datensatz zu generieren.

In den folgenden Themen werden die grundlegenden Konzepte von Pipelines beschrieben. Ein Tutorial, das die Implementierung dieser Konzepte beschreibt, finden Sie unter [Pipeline-Aktionen](pipelines-build.md).

**Topics**
+ [Struktur und Ausführung der Pipeline](build-and-manage-pipeline.md)
+ [IAM-Zugriffsverwaltung](build-and-manage-access.md)
+ [Einrichten von kontoübergreifendem Support für Pipelines](build-and-manage-xaccount.md)
+ [Pipeline-Parameter](build-and-manage-parameters.md)
+ [Pipelines-Schritte](build-and-manage-steps.md)
+ [Lift-and-shift Python-Code mit dem @step -Decorator](pipelines-step-decorator.md)
+ [Daten zwischen Schritten weitergeben](build-and-manage-propertyfile.md)
+ [Zwischenspeichern von Pipeline-Schritten](pipelines-caching.md)
+ [Richtlinie für Pipeline-Schritte erneut versuchen](pipelines-retry-policy.md)
+ [Selektive Ausführung von Pipeline-Schritten](pipelines-selective-ex.md)
+ [Basisberechnung, Drifterkennung und Lebenszyklus mit ClarifyCheck und QualityCheck Schritte in Amazon SageMaker Pipelines](pipelines-quality-clarify-baseline-lifecycle.md)
+ [Planen von Pipeline-Läufen](pipeline-eventbridge.md)
+ [Integration von Amazon SageMaker Experiments](pipelines-experiments.md)
+ [Führen Sie Pipelines im lokalen Modus aus](pipelines-local-mode.md)
+ [Fehlerbehebung bei Amazon SageMaker Pipelines](pipelines-troubleshooting.md)

# Struktur und Ausführung der Pipeline
<a name="build-and-manage-pipeline"></a>

**Topics**
+ [Pipeline-Struktur](#build-and-manage-pipeline-structure)
+ [Pipeline-Ausführung mithilfe der Parallelismus-Konfiguration](#build-and-manage-pipeline-execution)

## Pipeline-Struktur
<a name="build-and-manage-pipeline-structure"></a>

Eine Amazon SageMaker Pipelines-Instance besteht aus einem `name``parameters`, und`steps`. Phasennamen müssen innerhalb eines `(account, region)`-Paares eindeutig sein. Alle in den Schrittdefinitionen verwendeten Parameter müssen in der Pipeline definiert werden. Die aufgelisteten Pipeline-Schritte bestimmen automatisch ihre Ausführungsreihenfolge anhand ihrer Datenabhängigkeiten voneinander. Der Pipelines-Service löst die Beziehungen zwischen Schritten in der Datenabhängigkeits-DAG auf, um eine Reihe von Schritten zu erstellen, die durch die Ausführung abgeschlossen werden. Im Folgenden finden Sie ein Beispiel für eine Pipeline-Struktur.

**Warnung**  
Wenn Sie eine Pipeline mit dem Visual Editor oder dem SageMaker AI Python SDK erstellen, sollten Sie keine vertraulichen Informationen in Pipeline-Parameter oder Schrittdefinitionsfelder (wie Umgebungsvariablen) aufnehmen. Diese Felder werden in future sichtbar sein, wenn sie in einer `DescribePipeline` Anfrage zurückgegeben werden.

```
from sagemaker.workflow.pipeline import Pipeline
  
  pipeline_name = f"AbalonePipeline"
  pipeline = Pipeline(
      name=pipeline_name,
      parameters=[
          processing_instance_type, 
          processing_instance_count,
          training_instance_type,
          model_approval_status,
          input_data,
          batch_data,
      ],
      steps=[step_process, step_train, step_eval, step_cond],
  )
```

## Pipeline-Ausführung mithilfe der Parallelismus-Konfiguration
<a name="build-and-manage-pipeline-execution"></a>

Standardmäßig führt eine Pipeline alle Schritte aus, die parallel ausgeführt werden können. Sie können dieses Verhalten mithilfe der `ParallelismConfiguration` Eigenschaft steuern, wenn Sie eine Pipeline erstellen oder aktualisieren oder wenn Sie eine Pipeline-Ausführung starten oder erneut versuchen. 

Parallelitätskonfigurationen werden pro Ausführung angewendet. Wenn beispielsweise zwei Ausführungen gestartet werden, können sie jeweils maximal 50 Schritte gleichzeitig ausführen, was insgesamt 100 gleichzeitig ausgeführten Schritten entspricht. Außerdem haben beim Starten, Wiederholen oder Aktualisieren einer Ausführung angegebene `ParallelismConfiguration`(n) Vorrang vor Parallelitätskonfigurationen, die in der Pipeline definiert wurden.

**Example Erstellen einer Pipeline-Ausführung mit `ParallelismConfiguration`**  

```
pipeline = Pipeline(
        name="myPipeline",
        steps=[step_process, step_train]
    )

  pipeline.create(role, parallelism_config={"MaxParallelExecutionSteps": 50})
```

# IAM-Zugriffsverwaltung
<a name="build-and-manage-access"></a>

In den folgenden Abschnitten werden die AWS Identity and Access Management (IAM-) Anforderungen für Amazon SageMaker Pipelines beschrieben. Ein Beispiel dafür, wie Sie diese Berechtigungen implementieren können, finden Sie unter [Voraussetzungen](define-pipeline.md#define-pipeline-prereq).

**Topics**
+ [Berechtigungen für Pipeline-Rollen](#build-and-manage-role-permissions)
+ [Berechtigungen für Pipeline-Schritte](#build-and-manage-step-permissions)
+ [CORS-Konfiguration mit Amazon-S3-Buckets](#build-and-manage-cors-s3)
+ [Anpassen der Zugriffsverwaltung für Pipelines-Aufträge](#build-and-manage-step-permissions-prefix)
+ [Passen Sie den Zugriff auf Pipeline-Versionen an](#build-and-manage-step-permissions-version)
+ [Service-Kontrollrichtlinien mit Pipelines](#build-and-manage-scp)

## Berechtigungen für Pipeline-Rollen
<a name="build-and-manage-role-permissions"></a>

Ihre Pipeline erfordert eine IAM-Pipeline-Ausführungsrolle, die an Pipelines übergeben wird, wenn Sie eine Pipeline erstellen. Die Rolle für die SageMaker AI-Instanz, die Sie zum Erstellen der Pipeline verwenden, muss über eine Richtlinie mit der `iam:PassRole` Berechtigung verfügen, die die Pipeline-Ausführungsrolle spezifiziert. Dies liegt daran, dass die Instanz die Erlaubnis benötigt, Ihre Pipeline-Ausführungsrolle an den Pipeline-Dienst zu übergeben, damit er sie beim Erstellen und Ausführen von Pipelines verwenden kann. Weitere Informationen zu Rollen finden Sie unter [IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

Für Ihre Pipeline-Ausführungsrolle sind die folgenden Berechtigungen erforderlich:
+ Sie können für jeden der SageMaker KI-Auftragsschritte in Ihrer Pipeline eine eindeutige oder benutzerdefinierte Rolle verwenden (anstelle der Pipeline-Ausführungsrolle, die standardmäßig verwendet wird). Stellen Sie sicher, dass Ihrer Pipeline-Ausführungsrolle eine Richtlinie mit der `iam:PassRole` Berechtigung hinzugefügt wurde, die jede dieser Rollen spezifiziert.
+  `Create` und `Describe` Berechtigungen für jeden Jobtyp in der Pipeline. 
+  Amazon-S3-Berechtigungen zur Verwendung der `JsonGet` Funktion. Sie können den Zugriff auf Ressourcen mit einer identitätsbasierten oder ressourcenbasierten Richtlinie steuern. Eine ressourcenbasierte Richtlinie wird auf Ihren Amazon-S3-Bucket angewendet und gewährt Pipelines Zugriff auf den Bucket. Eine identitätsbasierte Richtlinie gibt Ihrer Pipeline die Möglichkeit, Amazon-S3-Anrufe von Ihrem Konto aus zu tätigen. Weitere Informationen zu ressourcenbasierten Richtlinien finden Sie unter [Identitätsbasierte und ressourcenbasierte Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html). 

  ```
  {
      "Action": [
          "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::<your-bucket-name>/*",
      "Effect": "Allow"
  }
  ```

## Berechtigungen für Pipeline-Schritte
<a name="build-and-manage-step-permissions"></a>

Pipelines enthalten Schritte, die SageMaker KI-Jobs ausführen. Damit die Pipeline-Schritte diese Jobs ausführen können, benötigen sie eine IAM-Rolle in Ihrem Konto, die Zugriff auf die benötigte Ressource bietet. Diese Rolle wird von Ihrer Pipeline an den SageMaker AI-Dienstprinzipal übergeben. Weitere Informationen zu Rollen finden Sie unter [IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html). 

Standardmäßig übernimmt jeder Schritt die Rolle der Pipeline-Ausführung. Sie können optional jedem der Schritte in Ihrer Pipeline eine andere Rolle zuweisen. Dadurch wird sichergestellt, dass sich der Code in den einzelnen Schritten nicht auf Ressourcen auswirken kann, die in anderen Schritten verwendet werden, es sei denn, es besteht eine direkte Beziehung zwischen den beiden in der Pipeline-Definition angegebenen Schritten. Sie übergeben diese Rollen, wenn Sie den Prozessor oder den Schätzer für Ihren Schritt definieren. Beispiele dafür, wie diese Rollen in diese Definitionen aufgenommen werden können, finden Sie in der [SageMaker AI Python SDK-Dokumentation](https://sagemaker.readthedocs.io/en/stable/overview.html#using-estimators). 

## CORS-Konfiguration mit Amazon-S3-Buckets
<a name="build-and-manage-cors-s3"></a>

Um sicherzustellen, dass Ihre Images auf vorhersehbare Weise aus einem Amazon-S3-Bucket in Ihre Pipelines importiert werden, muss den Amazon-S3-Buckets, aus denen Images importiert werden, eine CORS-Konfiguration hinzugefügt werden. Dieser Abschnitt enthält Anweisungen zum Einrichten der erforderlichen CORS-Konfiguration für Ihren Amazon-S3-Bucket. Die für Pipelines erforderliche XML-`CORSConfiguration` unterscheidet sich von der in [CORS-Anforderung für Eingabebilddaten](sms-cors-update.md). Ansonsten können Sie die dortigen Informationen nutzen, um mehr über die CORS-Anforderungen bei Amazon-S3-Buckets zu erfahren.

Verwenden Sie den folgenden CORS-Konfigurationscode für die Amazon-S3-Buckets, die Ihre Bilder hosten. Anweisungen zum Konfigurieren von CORS finden Sie unter [Konfigurieren von Cross-Origin Resource Sharing (CORS)](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-cors-configuration.html) im Benutzerhandbuch für Amazon Simple Storage Service. Wenn Sie die Amazon S3-Konsole verwenden, um die Richtlinie zu Ihrem Bucket hinzuzufügen, müssen Sie das JSON-Format verwenden.

**JSON**

```
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "Access-Control-Allow-Origin"
        ]
    }
]
```

**XML**

```
<CORSConfiguration>
 <CORSRule>
   <AllowedHeader>*</AllowedHeader>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>PUT</AllowedMethod>
   <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
 </CORSRule>
</CORSConfiguration>
```

Das folgende GIF zeigt die Anweisungen in der Amazon S3-Dokumentation zum Hinzufügen einer CORS-Header-Richtlinie mithilfe der Amazon S3-Konsole.

![\[Gif zum Hinzufügen einer CORS-Header-Richtlinie mit der Amazon-S3-Konsole.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/sms/gifs/cors-config.gif)


## Anpassen der Zugriffsverwaltung für Pipelines-Aufträge
<a name="build-and-manage-step-permissions-prefix"></a>

Sie können Ihre IAM-Richtlinien weiter anpassen, sodass ausgewählte Mitglieder in Ihrer Organisation einzelne oder alle Pipeline-Schritte ausführen können. Sie können beispielsweise bestimmten Benutzern die Berechtigung zum Erstellen von Trainingsaufträgen und einer anderen Benutzergruppe die Berechtigung zum Erstellen von Verarbeitungsaufträgen und all Ihren Benutzern die Erlaubnis erteilen, die verbleibenden Schritte auszuführen. Um diese Funktion zu verwenden, wählen Sie eine benutzerdefinierte Zeichenfolge aus, die Ihrem Jobnamen vorangestellt wird. Ihr Administrator stellt dem Präfix erlaubt ARNs das Präfix voran, während Ihr Datenwissenschaftler dieses Präfix in Pipeline-Instanziierungen einbezieht. Da die IAM-Richtlinie für zugelassene Benutzer einen Job-ARN mit dem angegebenen Präfix enthält, verfügen nachfolgende Jobs Ihres Pipeline-Schritts über die erforderlichen Berechtigungen, um fortzufahren. Das Job-Präfix ist standardmäßig deaktiviert. Sie müssen diese Option in Ihrer `Pipeline` Klasse aktivieren, um sie verwenden zu können. 

Bei Jobs mit deaktiviertem Präfix wird der Jobname wie abgebildet formatiert und ist eine Verkettung von Feldern, die in der folgenden Tabelle beschrieben werden:

`pipelines-<executionId>-<stepNamePrefix>-<entityToken>-<failureCount>`


| Feld | Definition | 
| --- | --- | 
|  Pipelines   |  Eine statische Zeichenfolge wird immer vorangestellt. Diese Zeichenfolge identifiziert den Pipeline-Orchestrierungsdienst als Quelle des Jobs.  | 
|  executionId  |  Ein zufälliger Puffer für die laufende Instance der Pipeline.  | 
|  stepNamePrefix  |  Der vom Benutzer angegebene Schrittname (im `name` Argument des Pipeline-Schritts angegeben), begrenzt auf die ersten 20 Zeichen.  | 
|  entityToken  |  Ein zufälliges Token, um die Idempotenz der Schrittentität sicherzustellen.  | 
|  failureCount  |  Die aktuelle Anzahl der Versuche, den Job abzuschließen.  | 

In diesem Fall wird dem Jobnamen kein benutzerdefiniertes Präfix vorangestellt, und die entsprechende IAM-Richtlinie muss mit dieser Zeichenfolge übereinstimmen.

Für Benutzer, die das Job-Präfix aktivieren, hat der zugrunde liegende Jobname die folgende Form, wobei das benutzerdefinierte Präfix wie folgt angegeben ist: `MyBaseJobName`

*<MyBaseJobName>*-*<executionId>*-*<entityToken>*-*<failureCount>*

Das benutzerdefinierte Präfix ersetzt die statische `pipelines` Zeichenfolge, sodass Sie die Auswahl der Benutzer einschränken können, die den SageMaker KI-Job als Teil einer Pipeline ausführen können.

**Längenbeschränkungen für das Präfix**

Die Auftragsnamen haben interne Längenbeschränkungen, die für einzelne Pipeline-Schritte spezifisch sind. Diese Einschränkung begrenzt auch die Länge des zulässigen Präfixes. Die Anforderungen an die Präfixlänge lauten wie folgt:


| Pipeline-Schritt | Länge des Präfixes | 
| --- | --- | 
|   `[TrainingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#trainingstep)`, `[ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`, `[TransformStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#transformstep)`, `[ProcessingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#processingstep)`, `[ClarifyCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#clarifycheckstep)`, `[QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#qualitycheckstep)`, `[RegisterModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`   |  38  | 
|  `[TuningStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#tuningstep)`, `[AutoML](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#automlstep)`  |  6  | 

### Wenden Sie Job-Präfixe auf eine IAM-Richtlinie an
<a name="build-and-manage-step-permissions-prefix-iam"></a>

Ihr Administrator erstellt IAM-Richtlinien, die es Benutzern mit bestimmten Präfixen ermöglichen, Jobs zu erstellen. Die folgende Beispielrichtlinie ermöglicht es Datenwissenschaftlern, Trainingsjobs zu erstellen, wenn sie das `MyBaseJobName` Präfix verwenden. 

```
{
    "Action": "sagemaker:CreateTrainingJob",
    "Effect": "Allow",
    "Resource": [
        "arn:aws:sagemaker:region:account-id:*/MyBaseJobName-*"
    ]
}
```

### Wenden Sie Job-Präfixe auf Pipeline-Instanziierungen an
<a name="build-and-manage-step-permissions-prefix-inst"></a>

Sie geben Ihr Präfix mit dem `*base_job_name` Argument der Job-Instance-Klasse an.

**Anmerkung**  
Sie übergeben Ihr Job-Präfix mit dem `*base_job_name` Argument an die Job-Instance, bevor Sie einen Pipeline-Schritt erstellen. Diese Auftrags-Instance enthält die erforderlichen Informationen, damit der Job als Schritt in einer Pipeline ausgeführt werden kann. Dieses Argument hängt von der verwendeten Auftrags-Instance ab. Die folgende Liste zeigt, welches Argument für jeden Pipeline-Schritttyp verwendet werden sollte:  
`base_job_name` für die Klassen `[Estimator](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html)` (`[TrainingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#trainingstep)`), `[Processor](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html)` (`[ProcessingStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#processingstep)`) und `[AutoML](https://sagemaker.readthedocs.io/en/stable/api/training/automl.html)` (`[AutoMLStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#automlstep)`)
`tuning_base_job_name` für die `[Tuner](https://sagemaker.readthedocs.io/en/stable/api/training/tuner.html)` Klasse (`[TuningStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#tuningstep)`)
`transform_base_job_name` für die `[Transformer](https://sagemaker.readthedocs.io/en/stable/api/inference/transformer.html)` Klasse (`[TransformStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#transformstep)`)
`base_job_name` von `[CheckJobConfig](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#checkjobconfig)` für die Klassen `[QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#qualitycheckstep)` (Qualitätsprüfung) und `[ClarifyCheckstep](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#clarifycheckstep)` (Klärungsprüfung)
Für die `[Model](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html)` Klasse hängt das verwendete Argument davon ab, ob Sie das Modell ausführen `create` oder ob es `register` sich um Ihr Modell handelt, bevor das Ergebnis an übergeben wird `[ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#step-collections)`  
Wenn Sie `create` aufrufen, stammt das benutzerdefinierte Präfix aus dem `name` Argument, das Sie bei der Konstruktion Ihres Modells angegeben haben (d. h., `Model(name=)`)
Wenn Sie `register` aufrufen, stammt das benutzerdefinierte Präfix aus dem `model_package_name` Argument Ihres Aufrufs von `register` (d. h., `my_model.register(model_package_name=)`)

Im folgenden Beispiel wird gezeigt, wie Sie ein Präfix für eine neue Trainingsauftrags-Instance angeben:

```
# Create a job instance
xgb_train = Estimator(
    image_uri=image_uri,
    instance_type="ml.m5.xlarge",
    instance_count=1,
    output_path=model_path,
    role=role,
    subnets=["subnet-0ab12c34567de89f0"],
    base_job_name="MyBaseJobName"
    security_group_ids=["sg-1a2bbcc3bd4444e55"],
    tags = [ ... ]
    encrypt_inter_container_traffic=True, 
)

# Attach your job instance to a pipeline step
step_train = TrainingStep(
    name="TestTrainingJob",
    estimator=xgb_train, 
    inputs={
        "train": TrainingInput(...), 
        "validation": TrainingInput(...) 
    }
)
```

Das Auftrag-Präfix ist standardmäßig deaktiviert. Um sich für diese Funktion zu entscheiden, verwenden Sie die `use_custom_job_prefix` Option von `PipelineDefinitionConfig`, wie im folgenden Codeausschnitt gezeigt:

```
from sagemaker.workflow.pipeline_definition_config import PipelineDefinitionConfig
        
# Create a definition configuration and toggle on custom prefixing
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True);

# Create a pipeline with a custom prefix
 pipeline = Pipeline(
     name="MyJobPrefixedPipeline",
     parameters=[...]
     steps=[...]
     pipeline_definition_config=definition_config
)
```

Erstellen Sie Ihre Pipeline und führen Sie sie aus. Im folgenden Beispiel wird eine Pipeline erstellt und ausgeführt. Außerdem wird veranschaulicht, wie Sie das Auftrag-Präfix deaktivieren und Ihre Pipeline erneut ausführen können.

```
pipeline.create(role_arn=sagemaker.get_execution_role())

# Optionally, call definition() to confirm your prefixed job names are in the built JSON
pipeline.definition()
pipeline.start()
      
# To run a pipeline without custom-prefixes, toggle off use_custom_job_prefix, update the pipeline 
# via upsert() or update(), and start a new run
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=False)
pipeline.pipeline_definition_config = definition_config
pipeline.update()
execution = pipeline.start()
```

In ähnlicher Weise können Sie die Funktion für bestehende Pipelines aktivieren und eine neue Ausführung starten, die Auftragspräfixe verwendet.

```
definition_config = PipelineDefinitionConfig(use_custom_job_prefix=True)
pipeline.pipeline_definition_config = definition_config
pipeline.update()
execution = pipeline.start()
```

Schließlich können Sie Ihren Auftrag mit einem benutzerdefinierten Präfix anzeigen, indem Sie die Pipeline-Ausführung aufrufen`list_steps`.

```
steps = execution.list_steps()

prefixed_training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']
```

## Passen Sie den Zugriff auf Pipeline-Versionen an
<a name="build-and-manage-step-permissions-version"></a>

Mithilfe des `sagemaker:PipelineVersionId` Bedingungsschlüssels können Sie benutzerdefinierten Zugriff auf bestimmte Versionen von Amazon SageMaker Pipelines gewähren. Die folgende Richtlinie gewährt beispielsweise Zugriff auf das Starten von Ausführungen oder das Aktualisieren der Pipeline-Version nur für Version 6 und höher.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "AllowStartPipelineExecution",
        "Effect": "Allow",
        "Action": [
            "sagemaker:StartPipelineExecution",
            "sagemaker:UpdatePipelineVersion"
        ],
        "Resource": "*",
        "Condition": {
            "NumericGreaterThanEquals": {
                "sagemaker:PipelineVersionId": 6
            }
        }
    }
}
```

------

Weitere Informationen zu unterstützten Bedingungsschlüsseln finden Sie unter [Bedingungsschlüssel für Amazon SageMaker AI](https://docs.aws.amazon.com//service-authorization/latest/reference/list_amazonsagemaker.html#amazonsagemaker-policy-keys).

## Service-Kontrollrichtlinien mit Pipelines
<a name="build-and-manage-scp"></a>

Richtlinien zur Dienstkontrolle (SCPs) sind eine Art von Organisationsrichtlinie, mit der Sie Berechtigungen in Ihrer Organisation verwalten können. SCPs bieten eine zentrale Kontrolle über die maximal verfügbaren Berechtigungen für alle Konten in Ihrer Organisation. Durch die Verwendung von Pipelines innerhalb Ihrer Organisation können Sie sicherstellen, dass Datenwissenschaftler Ihre Pipeline-Ausführungen verwalten, ohne mit der AWS Konsole interagieren zu müssen. 

Wenn Sie eine VPC mit Ihrem SCP verwenden, die den Zugriff auf Amazon S3 einschränkt, müssen Sie Maßnahmen ergreifen, damit Ihre Pipeline auf andere Amazon S3-Ressourcen zugreifen kann. 

Um Pipelines den Zugriff auf Amazon S3 außerhalb Ihrer VPC mit dieser `JsonGet`-Funktion zu ermöglichen, aktualisieren Sie den SCP Ihres Unternehmens, um sicherzustellen, dass die Rolle, die Pipelines verwendet, auf Amazon S3 zugreifen kann. Erstellen Sie dazu mithilfe eines Principal-Tags und eines Bedingungsschlüssels eine Ausnahme für Rollen, die vom Pipelines-Executor über die Pipeline-Ausführungsrolle verwendet werden. 

**So erlauben Sie Pipelines den Zugriff auf Amazon S3 außerhalb Ihrer VPC**

1. Erstellen Sie ein eindeutiges Tag für Ihre Pipeline-Ausführungsrolle, indem Sie die Schritte unter [Taggen von IAM-Benutzern und -Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html) befolgen. 

1. Gewähren Sie in Ihrem SCP mithilfe des `Aws:PrincipalTag IAM` Bedingungsschlüssels für das von Ihnen erstellte Tag eine Ausnahme. Weitere Informationen finden Sie unter [Erstellen, Aktualisieren und Löschen von Service-Kontrollrichtlinien](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_create.html). 

# Einrichten von kontoübergreifendem Support für Pipelines
<a name="build-and-manage-xaccount"></a>

Der kontoübergreifende Support für Amazon SageMaker Pipelines ermöglicht es Ihnen, an Machine-Learning-Pipelines mit anderen Teams oder Organisationen zusammenzuarbeiten, die in unterschiedlichen Konten tätig sind. AWS Durch die Einrichtung der kontoübergreifenden Pipeline-Freigabe können Sie kontrollierten Zugriff auf Pipelines gewähren, anderen Konten ermöglichen, Pipeline-Details einzusehen, Ausführungen auszulösen und Läufe zu überwachen. Das folgende Thema behandelt, wie Sie die kontenübergreifende Pipeline-Freigabe einrichten, welche unterschiedlichen Berechtigungsrichtlinien für gemeinsam genutzte Ressourcen verfügbar sind und wie Sie über direkte API-Aufrufe an KI auf gemeinsam genutzte Pipeline-Entitäten zugreifen und mit ihnen interagieren können. SageMaker 

## Einrichten der kontoübergreifenden Pipeline-Freigabe
<a name="build-and-manage-xaccount-set-up"></a>

SageMaker KI verwendet [AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) (AWS RAM), um Ihnen zu helfen, Ihre Pipeline-Entitäten sicher für mehrere Konten gemeinsam zu nutzen. 

### Erstellen einer Ressourcen-Freigabe
<a name="build-and-manage-xaccount-set-up-console"></a>

1. Wählen Sie über die [AWS RAM Konsole](https://console.aws.amazon.com/ram/home) **eine Ressourcenfreigabe erstellen** aus.

1. Wenn Sie Details zur Ressourcenfreigabe angeben, wählen Sie den Ressourcentyp „Pipelines“ und anschließend eine oder mehrere Pipelines aus, die Sie gemeinsam nutzen möchten. Wenn Sie eine Pipeline mit einem anderen Konto teilen, werden alle ihre Ausführungen ebenfalls implizit geteilt.

1. Ordnen Sie eine Berechtigung einer Ressourcenfreigabe zu. Wählen Sie entweder die standardmäßige Richtlinie für schreibgeschützte Berechtigungen oder die erweiterte Richtlinie für die Pipeline-Ausführung. Detailliertere Informationen erhalten Sie unter [Berechtigungsrichtlinien für Pipelines-Ressourcen](#build-and-manage-xaccount-permissions). 
**Anmerkung**  
Wenn Sie die erweiterte Pipeline-Ausführungsrichtlinie auswählen, beachten Sie, dass alle Start-, Stopp- und Wiederholungsbefehle, die von gemeinsam genutzten Konten aufgerufen werden, Ressourcen in dem AWS Konto verwenden, das die Pipeline gemeinsam genutzt hat.

1. Verwenden Sie das AWS Konto IDs , um die Konten anzugeben, denen Sie Zugriff auf Ihre gemeinsam genutzten Ressourcen gewähren möchten.

1. Überprüfen Sie Ihre Konfiguration für die gemeinsame Nutzung Ihrer Ressourcen und wählen Sie **Ressourcenfreigabe erstellen** aus. Es kann einige Minuten dauern, bis die Ressourcenfreigabe und die Hauptverknüpfungen abgeschlossen sind.

Weitere Informationen finden Sie unter [Freigabe Ihrer AWS Ressourcen](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html) im *AWS Benutzerhandbuch für den Resource Access Manager*.

### Erhalten Sie Antworten auf Ihre Einladung zur gemeinsamen Nutzung von Ressourcen
<a name="build-and-manage-xaccount-set-up-responses"></a>

Sobald die Ressourcenfreigabe und die Hauptzuordnungen festgelegt sind, erhalten die angegebenen AWS Konten eine Einladung, um der Ressourcenfreigabe beizutreten. Die AWS Konten müssen die Einladung annehmen, um Zugriff auf gemeinsam genutzte Ressourcen zu erhalten.

Weitere Informationen zum Annehmen einer Einladung zur gemeinsamen Nutzung von Ressourcen finden Sie unter [Verwenden von gemeinsam genutzten AWS Ressourcen](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html) im *AWS Resource Access Manager Manager-Benutzerhandbuch*. AWS RAM

## Berechtigungsrichtlinien für Pipelines-Ressourcen
<a name="build-and-manage-xaccount-permissions"></a>

Wählen Sie bei der Erstellung Ihrer Ressourcenfreigabe eine von zwei unterstützten Berechtigungsrichtlinien aus, die Sie dem Ressourcentyp der SageMaker AI-Pipeline zuordnen möchten. Beide Richtlinien gewähren Zugriff auf jede ausgewählte Pipeline und all ihre Ausführungen. 

### Standardmäßige schreibgeschützte Berechtigungen
<a name="build-and-manage-xaccount-permissions-default"></a>

Die `AWSRAMDefaultPermissionSageMakerPipeline`-Richtlinie erlaubt die folgenden schreibgeschützten Aktionen:

```
"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"   
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:Search"
```

### Erweiterte Berechtigungen zur Pipeline-Ausführung
<a name="build-and-manage-xaccount-permissions-extended"></a>

Die `AWSRAMPermissionSageMakerPipelineAllowExecution` Richtlinie umfasst alle Leseberechtigungen der Standardrichtlinie und ermöglicht es gemeinsam genutzten Konten, Pipeline-Ausführungen zu starten, zu beenden und erneut zu versuchen.

**Anmerkung**  
Achten Sie bei der Verwendung der Richtlinie für erweiterte Genehmigungen zur Pipeline-Ausführung auf die AWS Ressourcennutzung. Mit dieser Richtlinie können gemeinsam genutzte Konten Pipeline-Ausführungen starten, beenden und erneut versuchen. Alle Ressourcen, die für gemeinsam genutzte Pipeline-Ausführungen verwendet werden, werden vom Besitzerkonto verbraucht. 

Die Richtlinie für erweiterte Pipeline-Ausführungsberechtigungen ermöglicht die folgenden Aktionen:

```
"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"   
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:StartPipelineExecution"
"sagemaker:StopPipelineExecution"
"sagemaker:RetryPipelineExecution"
"sagemaker:Search"
```

## Greifen Sie über direkte API-Aufrufe auf gemeinsam genutzte Pipeline-Entitäten zu
<a name="build-and-manage-xaccount-api-calls"></a>

Sobald die kontoübergreifende Pipeline-Freigabe eingerichtet ist, können Sie die folgenden SageMaker API-Aktionen mithilfe eines Pipeline-ARN aufrufen:

**Anmerkung**  
Sie können API-Befehle nur aufrufen, wenn sie in den mit Ihrer Ressourcenfreigabe verknüpften Berechtigungen enthalten sind. Wenn Sie die `AWSRAMPermissionSageMakerPipelineAllowExecution` Richtlinie auswählen, verwenden die Befehle Start, Stop und Retry Ressourcen in dem AWS Konto, das die Pipeline gemeinsam genutzt hat.
+ [DescribePipeline](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipeline.html)
+ [DescribePipelineDefinitionForExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipelineDefinitionForExecution.html)
+ [DescribePipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribePipelineExecution.html)
+ [ListPipelineExecutions](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineExecutions.html)
+ [ListPipelineExecutionSteps](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineExecutionSteps.html)
+ [ListPipelineParametersForExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ListPipelineParametersForExecution.html)
+ [StartPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartPipelineExecution.html)
+ [StopPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopPipelineExecution.html)
+ [RetryPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RetryPipelineExecution.html)

# Pipeline-Parameter
<a name="build-and-manage-parameters"></a>

Sie können Variablen mithilfe von Parametern in Ihre Pipeline-Definition aufnehmen. Sie können in Ihrer Pipeline-Definition auf Parameter verweisen, die Sie definieren. Parameter haben einen Standardwert, den Sie überschreiben können, indem Sie beim Starten einer Pipeline-Ausführung Parameterwerte angeben. Der Standardwert muss eine Instance sein, die dem Parametertyp entspricht. Alle in Schrittdefinitionen verwendeten Parameter müssen in Ihrer Pipeline-Definition definiert sein. In diesem Thema werden die Parameter beschrieben, die Sie definieren können, und wie Sie sie implementieren können.

Amazon SageMaker Pipelines unterstützt die folgenden Parametertypen: 
+  `ParameterString`– Stellt einen Zeichenkettenparameter dar. 
+  `ParameterInteger`– Stellt einen Integer-Parameter dar. 
+  `ParameterFloat`– Stellt einen Float-Parameter dar.
+  `ParameterBoolean`– Stellt einen booleschen Python-Typ dar.

Die Parameter haben das folgende Format:

```
<parameter> = <parameter_type>(
    name="<parameter_name>",
    default_value=<default_value>
)
```

Das folgende Beispiel zeigt eine Beispielimplementierung eines Parameters.

```
from sagemaker.workflow.parameters import (
    ParameterInteger,
    ParameterString,
    ParameterFloat,
    ParameterBoolean
)

processing_instance_count = ParameterInteger(
    name="ProcessingInstanceCount",
    default_value=1
)
```

Sie übergeben den Parameter bei der Erstellung Ihrer Pipeline wie im folgenden Beispiel dargestellt.

```
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[
        processing_instance_count
    ],
    steps=[step_process]
)
```

Sie können auch einen Parameterwert, der vom Standardwert abweicht, an eine Pipeline-Ausführung übergeben, wie im folgenden Beispiel gezeigt.

```
execution = pipeline.start(
    parameters=dict(
        ProcessingInstanceCount="2",
        ModelApprovalStatus="Approved"
    )
)
```

Sie können Parameter mit SageMaker Python-SDK-Funktionen wie manipulieren`[ sagemaker.workflow.functions.Join](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.functions.Join)`. Weitere Informationen zu Parametern finden Sie unter [ SageMaker Pipeline-Parameter](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#parameters).

Bekannte Einschränkungen von Pipeline-Parametern finden Sie unter *[Einschränkungen — Parametrisierung](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#parameterization)* im [Amazon SageMaker ](https://sagemaker.readthedocs.io/en/stable) Python SDK.

# Pipelines-Schritte
<a name="build-and-manage-steps"></a>

Pipelines bestehen aus Schritten. Diese Schritte definieren die Aktionen, die die Pipeline ausführt, und die Beziehungen zwischen den Schritten mithilfe von Eigenschaften. Auf der folgenden Seite werden die Arten von Schritten, ihre Eigenschaften und die Beziehungen zwischen ihnen beschrieben.

**Topics**
+ [Einen Schritt hinzufügen](build-and-manage-steps-types.md)
+ [Integration hinzufügen](build-and-manage-steps-integration.md)
+ [Eigenschaften-Schritt](#build-and-manage-properties)
+ [Schrittparallelität](#build-and-manage-parallelism)
+ [Datenabhängigkeit zwischen Schritten](#build-and-manage-data-dependency)
+ [Benutzerdefinierte Abhängigkeit zwischen Schritten](#build-and-manage-custom-dependency)
+ [Benutzerdefinierte Bilder in einem Schritt](#build-and-manage-images)

# Einen Schritt hinzufügen
<a name="build-and-manage-steps-types"></a>

Im Folgenden werden die Anforderungen der einzelnen Schritttypen beschrieben und ein Beispiel für die Implementierung des Schritts sowie die Vorgehensweise zum Hinzufügen des Schritts zu einer Pipeline aufgeführt. Dabei handelt es sich nicht um funktionale Implementierungen, da sie nicht die benötigten Ressourcen und Eingaben bereitstellen. Ein Tutorial, das diese Schritte implementiert, finden Sie unter [Pipeline-Aktionen](pipelines-build.md).

**Anmerkung**  
Sie können auch einen Schritt aus Ihrem lokalen Machine-Learning-Code erstellen, indem Sie ihn mit dem `@step`-Decorator in einen Pipelines-Schritt konvertieren. Weitere Informationen finden Sie unter [@step Decorator](#step-type-custom).

Amazon SageMaker Pipelines unterstützt die folgenden Schritttypen:
+ [Code ausführen](#step-type-executecode)

  [Verarbeitung](#step-type-processing)
+ [Training](#step-type-training)
+ [Optimieren](#step-type-tuning)
+ [AutoML](#step-type-automl)
+ [`Model`](#step-type-model)
+ [`Create model`](#step-type-create-model)
+ [`Register model`](#step-type-register-model)
+ [`Deploy model (endpoint)`](#step-type-deploy-model-endpoint)
+ [Transformieren](#step-type-transform)
+ [Bedingung](#step-type-condition)
+ [`Callback`](#step-type-callback)
+ [Lambda](#step-type-lambda)
+ [`ClarifyCheck`](#step-type-clarify-check)
+ [`QualityCheck`](#step-type-quality-check)
+ [EMR](#step-type-emr)
+ [Notebook-Auftrag](#step-type-notebook-job)
+ [Fehler](#step-type-fail)

## @step Decorator
<a name="step-type-custom"></a>

Wenn Sie einen benutzerdefinierten ML-Job orchestrieren möchten, der erweiterte SageMaker KI-Funktionen oder andere AWS Dienste in der drag-and-drop Pipelines-Benutzeroberfläche nutzt, verwenden Sie den. [Codeschritt ausführen](#step-type-executecode)

Sie können mithilfe des `@step`-Decorators einen Schritt aus lokalem Machine-Learning-Code erstellen. Nachdem Sie Ihren Code getestet haben, können Sie die Funktion in einen SageMaker KI-Pipeline-Schritt konvertieren, indem Sie sie mit dem Decorator kommentieren. `@step` Pipelines erstellt eine Pipeline und führt sie aus, wenn Sie die Ausgabe der mit `@step` -dekorierten Funktion als Schritt an Ihre Pipeline übergeben. Sie können auch eine mehrstufige DAG-Pipeline erstellen, die eine oder mehrere `@step` dekorierte Funktionen sowie herkömmliche SageMaker KI-Pipeline-Schritte umfasst. Weitere Informationen zum Erstellen eines Steps mit `@step`-Decorator finden Sie unter [Lift-and-shift Python-Code mit dem @step -Decorator](pipelines-step-decorator.md).

## Codeschritt ausführen
<a name="step-type-executecode"></a>

In der drag-and-drop Pipelines-Benutzeroberfläche können Sie einen Codeschritt **ausführen verwenden, um Ihren eigenen Code** als Pipeline-Schritt auszuführen. Sie können eine Python-Funktion, ein Skript oder ein Notebook hochladen, das als Teil Ihrer Pipeline ausgeführt werden soll. Sie sollten diesen Schritt verwenden, wenn Sie einen benutzerdefinierten ML-Job orchestrieren möchten, der erweiterte SageMaker KI-Funktionen oder andere Dienste nutzt. AWS 

Der Schritt **Code ausführen** lädt Dateien in Ihren standardmäßigen Amazon S3 S3-Bucket für Amazon SageMaker AI hoch. Für diesen Bucket sind möglicherweise nicht die erforderlichen Cross-Origin Resource Sharing (CORS) -Berechtigungen festgelegt. Weitere Informationen zum Konfigurieren der CORS-Berechtigungen finden Sie unter [CORS-Anforderung für Eingabebilddaten](sms-cors-update.md).

Der Schritt „**Code ausführen**“ verwendet einen SageMaker Amazon-Schulungsjob, um Ihren Code auszuführen. Stellen Sie sicher, dass Ihre IAM-Rolle über die `sagemaker:DescribeTrainingJob` und `sagemaker:CreateTrainingJob` API-Berechtigungen verfügt. Weitere Informationen zu allen erforderlichen Berechtigungen für Amazon SageMaker AI und deren Einrichtung finden Sie unter[Amazon SageMaker AI API-Berechtigungen: Referenz zu Aktionen, Berechtigungen und Ressourcen](api-permissions-reference.md).

Gehen Sie wie folgt vor, um einer Pipeline mithilfe des Pipeline Designers einen Schritt zum Ausführen von Code hinzuzufügen:

1. Öffnen Sie die Amazon SageMaker Studio-Konsole, indem Sie den Anweisungen unter folgen[Starten Sie Amazon SageMaker Studio](studio-updated-launch.md).

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. Wählen Sie **Erstellen** aus.

1. **Wählen Sie Leer.**

1. Wählen Sie in der linken Seitenleiste „**Code ausführen**“ und ziehen Sie ihn auf die Arbeitsfläche.

1. Wählen Sie auf der Arbeitsfläche den Schritt **Code ausführen aus**, den Sie hinzugefügt haben.

1. Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs **Einstellungen** und **Details** aus.

1. Sie können eine einzelne Datei hochladen, um sie auszuführen, oder einen komprimierten Ordner hochladen, der mehrere Artefakte enthält.

1. Für das Hochladen einzelner Dateien können Sie optionale Parameter für Notebooks, Python-Funktionen oder Skripte angeben.

1. Bei der Bereitstellung von Python-Funktionen muss ein Handler im folgenden Format bereitgestellt werden `file.py:<function_name>`

1. Für komprimierte Ordner-Uploads müssen relative Pfade zu Ihrem Code angegeben werden, und Sie können optional Pfade zu einer `requirements.txt` Datei oder einem Initialisierungsskript innerhalb des komprimierten Ordners angeben.

1. Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar vor dem von Ihnen hinzugefügten Schritt „**Code ausführen**“ steht, klicken Sie auf den Schritt und ziehen Sie den Cursor von diesem Schritt zum Schritt „**Code ausführen**“, um eine Kante zu erstellen.

1. Wenn die Zeichenfläche einen Schritt enthält, der unmittelbar auf den Schritt „**Code ausführen**“ folgt, klicken Sie auf den Schritt „Code ausführen“ und ziehen Sie den Cursor vom Schritt „**Code ausführen**“ zu dem Schritt, um eine Kante zu erstellen. Ausgaben von **Execute-Codeschritten** können für Python-Funktionen referenziert werden.

## Verarbeitungsschritt
<a name="step-type-processing"></a>

Verwenden Sie einen Verarbeitungsschritt, um einen Verarbeitungsauftrag für die Datenverarbeitung zu erstellen. Weitere Informationen zur Verarbeitung von Auftrags finden Sie unter [Daten verarbeiten und Modelle auswerten](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html).

------
#### [ Pipeline Designer ]

Gehen Sie wie folgt vor, um einer Pipeline mithilfe des Pipeline Designers einen Verarbeitungsschritt hinzuzufügen:

1. Öffnen Sie die Amazon SageMaker Studio-Konsole, indem Sie den Anweisungen unter folgen[Starten Sie Amazon SageMaker Studio](studio-updated-launch.md).

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. Wählen Sie **Erstellen** aus.

1. Wählen Sie in der linken Seitenleiste die Option **Daten verarbeiten** und ziehen Sie sie auf die Arbeitsfläche.

1. Wählen Sie auf der Arbeitsfläche den Schritt „**Daten verarbeiten**“ aus, den Sie hinzugefügt haben.

1. Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs **Einstellungen** und **Details** aus. Informationen zu den Feldern in diesen Tabs finden Sie unter [sagemaker.workflow.steps. ProcessingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep).

1. **Wenn die Arbeitsfläche einen Schritt enthält, der dem hinzugefügten **Prozessdatenschritt** unmittelbar vorausgeht, klicken Sie auf den Schritt und ziehen Sie den Cursor von diesem Schritt zum Prozessdatenschritt, um eine Kante zu erstellen.**

1. Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar auf den von Ihnen hinzugefügten **Prozessdatenschritt** folgt, klicken Sie und ziehen Sie den Cursor vom **Prozessdatenschritt** zu dem Schritt, um eine Kante zu erstellen.

------
#### [ SageMaker Python SDK ]

Ein Verarbeitungsschritt erfordert einen Prozessor, ein Python-Skript, das den Verarbeitungscode definiert, Ausgaben für die Verarbeitung und Auftrag-Argumente. Das folgende Beispiel zeigt, wie man eine `ProcessingStep`-Definition erstellt. 

```
from sagemaker.sklearn.processing import SKLearnProcessor

sklearn_processor = SKLearnProcessor(framework_version='1.0-1',
                                     role=<role>,
                                     instance_type='ml.m5.xlarge',
                                     instance_count=1)
```

```
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

inputs = [
    ProcessingInput(source=<input_data>, destination="/opt/ml/processing/input"),
]

outputs = [
    ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
    ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
    ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
]

step_process = ProcessingStep(
    name="AbaloneProcess",
    step_args = sklearn_processor.run(inputs=inputs, outputs=outputs,
        code="abalone/preprocessing.py")
)
```

**Übergeben Sie Laufzeitparameter**

Das folgende Beispiel zeigt, wie Laufzeitparameter von einem PySpark Prozessor an einen übergeben `ProcessingStep` werden.

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.spark.processing import PySparkProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

pipeline_session = PipelineSession()

pyspark_processor = PySparkProcessor(
    framework_version='2.4',
    role=<role>,
    instance_type='ml.m5.xlarge',
    instance_count=1,
    sagemaker_session=pipeline_session,
)

step_args = pyspark_processor.run(
    inputs=[ProcessingInput(source=<input_data>, destination="/opt/ml/processing/input"),],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
        ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
    ],
    code="preprocess.py",
    arguments=None,
)


step_process = ProcessingStep(
    name="AbaloneProcess",
    step_args=step_args,
)
```

Weitere Informationen zu den Anforderungen für Verarbeitungsschritte finden Sie unter [sagemaker.workflow.steps. ProcessingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep)Dokumentation. Ein ausführliches Beispiel finden Sie im [Beispielnotizbuch Orchestrate Jobs to Train and Evaluate Models with Amazon SageMaker Pipelines](https://github.com/aws/amazon-sagemaker-examples/blob/62de6a1fca74c7e70089d77e36f1356033adbe5f/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.ipynb). Weitere Informationen finden Sie im Abschnitt *Verarbeitungsschritt für Feature Engineering definieren*.

------

## Schritt des Trainings
<a name="step-type-training"></a>

Sie verwenden einen Trainingsschritt, um einen Trainingsjob zum Trainieren eines Modells zu erstellen. Weitere Informationen zu Schulungsjobs finden Sie unter [Train a Model with Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html).

Ein Trainingsschritt erfordert einen Schätzer sowie Eingaben von Trainings- und Validierungsdaten.

------
#### [ Pipeline Designer ]

Gehen Sie wie folgt vor, um einer Pipeline mithilfe des Pipeline Designers einen Trainingsschritt hinzuzufügen:

1. Öffnen Sie die Amazon SageMaker Studio-Konsole, indem Sie den Anweisungen unter folgen[Starten Sie Amazon SageMaker Studio](studio-updated-launch.md).

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. Wählen Sie **Erstellen** aus.

1. **Wählen Sie Leer.**

1. Wählen Sie in der linken Seitenleiste **Train Model** und ziehen Sie es auf die Leinwand.

1. Wählen Sie auf der Arbeitsfläche den Schritt **Train Model** aus, den Sie hinzugefügt haben.

1. Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs **Einstellungen** und **Details** aus. Informationen zu den Feldern in diesen Tabs finden Sie unter [sagemaker.workflow.steps. TrainingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep).

1. **Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar vor dem Schritt **Modell trainieren**, den Sie hinzugefügt haben, klicken und ziehen Sie den Cursor von dem Schritt zum Schritt Modell trainieren, um eine Kante zu erstellen.**

1. Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar auf den Schritt **Modell trainieren** folgt, klicken Sie und ziehen Sie den Cursor vom Schritt **Modell trainieren** zu dem Schritt, um eine Kante zu erstellen.

------
#### [ SageMaker Python SDK ]

Das folgende Beispiel zeigt, wie Sie eine `TrainingStep`-Definition erstellen. Weitere Informationen zu den Anforderungen für Trainingsschritte finden Sie unter [sagemaker.workflow.steps. TrainingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep)Dokumentation.

```
from sagemaker.workflow.pipeline_context import PipelineSession

from sagemaker.inputs import TrainingInput
from sagemaker.workflow.steps import TrainingStep

from sagemaker.xgboost.estimator import XGBoost

pipeline_session = PipelineSession()

xgb_estimator = XGBoost(..., sagemaker_session=pipeline_session)

step_args = xgb_estimator.fit(
    inputs={
        "train": TrainingInput(
            s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                "train"
            ].S3Output.S3Uri,
            content_type="text/csv"
        ),
        "validation": TrainingInput(
            s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                "validation"
            ].S3Output.S3Uri,
            content_type="text/csv"
        )
    }
)

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=step_args,
)
```

------

## Schritt zur Feinabstimmung
<a name="step-type-tuning"></a>

Sie verwenden einen Optimierungsschritt, um einen Hyperparameter-Tuning-Auftrag zu erstellen, der auch als Hyperparameter-Optimierung (HPO) bezeichnet wird. Ein Hyperparameter-Optimierungsauftrag führt mehrere Trainingsjobs aus, von denen jeder eine Modellversion erzeugt. Weitere Informationen zur Abstimmung der Hyperparameter finden Sie unter [Automatische Modelloptimierung mit KI SageMaker](automatic-model-tuning.md).

Der Tuning-Job ist mit dem SageMaker KI-Experiment für die Pipeline verknüpft, wobei die Trainingsjobs als Versuche erstellt wurden. Weitere Informationen finden Sie unter [Integration von Experimenten](pipelines-experiments.md).

Ein Optimierungsschritt erfordert Eingaben [HyperparameterTuner](https://sagemaker.readthedocs.io/en/stable/api/training/tuner.html)und Trainingseingaben. Sie können frühere Abstimmungsaufträge erneut trainieren, indem Sie den `warm_start_config`-Parameter des `HyperparameterTuner` angeben. Weitere Informationen zur Hyperparameteroptimierung und zum Warmstart finden Sie unter [Durchführen eines Hyperparameter-Optimierungsauftrags mit Warmstart](automatic-model-tuning-warm-start.md).

[Sie verwenden die Methode [get\$1top\$1model\$1s3\$1uri](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep.get_top_model_s3_uri) der Datei sagemaker.workflow.steps. TuningStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep)Klasse, um das Modellartefakt aus einer der leistungsstärksten Modellversionen abzurufen. [Ein Notizbuch, das zeigt, wie ein Tuning-Schritt in einer SageMaker KI-Pipeline verwendet wird, finden Sie unter sagemaker-pipelines-tuning-step .ipynb.](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/tuning-step/sagemaker-pipelines-tuning-step.ipynb)

**Wichtig**  
Optimierungsschritte wurden in Amazon SageMaker Python SDK v2.48.0 und Amazon SageMaker Studio Classic v3.8.0 eingeführt. Sie müssen Studio Classic aktualisieren, bevor Sie einen Optimierungsschritt verwenden, da sonst die Pipeline-DAG nicht angezeigt wird. Informationen zum Aktualisieren von Studio Classic finden Sie unter [Amazon SageMaker Studio Classic herunterfahren und aktualisieren](studio-tasks-update-studio.md).

Das folgende Beispiel zeigt, wie man eine `TuningStep`-Definition erstellt.

```
from sagemaker.workflow.pipeline_context import PipelineSession

from sagemaker.tuner import HyperparameterTuner
from sagemaker.inputs import TrainingInput
from sagemaker.workflow.steps import TuningStep

tuner = HyperparameterTuner(..., sagemaker_session=PipelineSession())
    
step_tuning = TuningStep(
    name = "HPTuning",
    step_args = tuner.fit(inputs=TrainingInput(s3_data="s3://amzn-s3-demo-bucket/my-data"))
)
```

**Holen Sie sich die beste Modellversion**

Das folgende Beispiel zeigt, wie Sie mit der `get_top_model_s3_uri` Methode die beste Modellversion aus dem Tuning-Auftrag abrufen können. Es sind höchstens die 50 leistungsstärksten Versionen verfügbar, geordnet nach. [HyperParameterTuningJobObjective](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobObjective.html) Das Argument `top_k` ist ein Index für die Versionen, wobei `top_k=0` die leistungsstärkste und `top_k=49` die leistungsschwächste Version ist.

```
best_model = Model(
    image_uri=image_uri,
    model_data=step_tuning.get_top_model_s3_uri(
        top_k=0,
        s3_bucket=sagemaker_session.default_bucket()
    ),
    ...
)
```

Weitere Informationen zu den Anforderungen an die Optimierungsschritte finden Sie unter [sagemaker.workflow.steps. TuningStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TuningStep)Dokumentation.

## Feinabstimmungsschritt
<a name="step-type-fine-tuning"></a>

Mit der Feinabstimmung wird ein vortrainiertes Fundamentmodell von Amazon SageMaker JumpStart anhand eines neuen Datensatzes trainiert. Dieser Prozess, der auch als Transferlernen bezeichnet wird, kann genaue Modelle mit kleineren Datensätzen und weniger Trainingszeit erzeugen. Bei der Feinabstimmung eines Modells können Sie den Standarddatensatz verwenden oder eigene Daten auswählen. Weitere Informationen zur Feinabstimmung eines Foundation-Modells finden Sie unter JumpStart. [Feinabstimmung eines Modells](jumpstart-fine-tune.md)

Bei der Feinabstimmung wird ein SageMaker Amazon-Schulungsjob verwendet, um Ihr Modell anzupassen. Stellen Sie sicher, dass Ihre IAM-Rolle über die erforderlichen `sagemaker:DescribeTrainingJob` und `sagemaker:CreateTrainingJob` API-Berechtigungen verfügt, um den Feinsteuerungsjob in Ihrer Pipeline auszuführen. Weitere Informationen zu den erforderlichen Berechtigungen für Amazon SageMaker AI und deren Einrichtung finden Sie unter[Amazon SageMaker AI API-Berechtigungen: Referenz zu Aktionen, Berechtigungen und Ressourcen](api-permissions-reference.md).

Gehen Sie wie folgt vor, um Ihrer Pipeline mithilfe des drag-and-drop Editors einen Schritt zur **Feinabstimmung des Modells** hinzuzufügen:

1. Öffnen Sie die Studio-Konsole, indem Sie den Anweisungen unter [Starten Sie Amazon SageMaker Studio](studio-updated-launch.md) folgen.

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. Wählen Sie **Erstellen** aus.

1. **Wählen Sie Leer.**

1. Wählen Sie in der linken Seitenleiste die Option **Modell feinabstimmen** und ziehen Sie es auf die Leinwand.

1. Wählen Sie auf der Leinwand den hinzugefügten Schritt zur **Feinabstimmung des Modells** aus.

1. Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs **Einstellungen** und **Details** aus.

1. Wenn die Zeichenfläche einen Schritt enthält, der unmittelbar vor dem Schritt „Modell **feinabstimmen“ liegt, klicken Sie auf den Schritt „Modell** feinabstimmen“ und ziehen Sie den Cursor von diesem Schritt zum Schritt „**Modell feinabstimmen**“, um eine Kante zu erstellen.

1. Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar auf den Schritt „Modell **feinabstimmen“ folgt, klicken Sie auf den Schritt „Modell** feinabstimmen“ und ziehen Sie den Cursor vom Schritt „**Modell feinabstimmen**“ zu dem Schritt, um eine Kante zu erstellen.

## AutoML-Schritt
<a name="step-type-automl"></a>

Verwenden Sie die [AutoML](https://sagemaker.readthedocs.io/en/stable/api/training/automl.html)-API, um einen AutoML-Auftrag zum automatischen Trainieren eines Modells zu erstellen. Weitere Informationen zu AutoML-Jobs finden Sie unter [Automatisieren der Modellentwicklung mit Amazon SageMaker Autopilot](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-automate-model-development.html). 

**Anmerkung**  
Derzeit unterstützt der AutoML-Schritt nur den [Ensembling-Trainingsmodus](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-model-support-validation.html).

Das folgende Beispiel zeigt, wie eine Definition mit `AutoMLStep` erstellt werden kann.

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.automl_step import AutoMLStep

pipeline_session = PipelineSession()

auto_ml = AutoML(...,
    role="<role>",
    target_attribute_name="my_target_attribute_name",
    mode="ENSEMBLING",
    sagemaker_session=pipeline_session) 

input_training = AutoMLInput(
    inputs="s3://amzn-s3-demo-bucket/my-training-data",
    target_attribute_name="my_target_attribute_name",
    channel_type="training",
)
input_validation = AutoMLInput(
    inputs="s3://amzn-s3-demo-bucket/my-validation-data",
    target_attribute_name="my_target_attribute_name",
    channel_type="validation",
)

step_args = auto_ml.fit(
    inputs=[input_training, input_validation]
)

step_automl = AutoMLStep(
    name="AutoMLStep",
    step_args=step_args,
)
```

**Holen Sie sich die beste Modellversion**

Der AutoML-Schritt trainiert automatisch mehrere Modellkandidaten. Rufen Sie das Modell mit der besten Zielmetrik aus dem AutoML-Auftrag ab, indem Sie die `get_best_auto_ml_model`-Methode wie folgt verwenden. Sie müssen auch ein IAM verwenden, `role` um auf Modellartefakte zuzugreifen.

```
best_model = step_automl.get_best_auto_ml_model(role=<role>)
```

Weitere Informationen finden Sie im [AutoML-Schritt](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.automl_step.AutoMLStep) im SageMaker Python-SDK.

## Modellschritt
<a name="step-type-model"></a>

Verwenden Sie a`ModelStep`, um ein SageMaker KI-Modell zu erstellen oder zu registrieren. Weitere Informationen zu den `ModelStep` Anforderungen finden Sie im Abschnitt [sagemaker.workflow.model\$1step. ModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.model_step.ModelStep)Dokumentation.

### Erstellen eines Modells
<a name="step-type-model-create"></a>

Sie können a verwenden`ModelStep`, um ein SageMaker KI-Modell zu erstellen. A `ModelStep` benötigt Modellartefakte und Informationen über den SageMaker AI-Instanztyp, den Sie zur Erstellung des Modells verwenden müssen. Weitere Informationen zu SageMaker KI-Modellen finden Sie unter [Train a Model with Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html).

Das folgende Beispiel zeigt, wie man eine `ModelStep`-Definition erstellt.

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.model import Model
from sagemaker.workflow.model_step import ModelStep

step_train = TrainingStep(...)
model = Model(
    image_uri=pytorch_estimator.training_image_uri(),
    model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
    sagemaker_session=PipelineSession(),
    role=role,
)

step_model_create = ModelStep(
   name="MyModelCreationStep",
   step_args=model.create(instance_type="ml.m5.xlarge"),
)
```

### Registrieren eines Modells
<a name="step-type-model-register"></a>

Sie können a verwenden`ModelStep`, um ein `sagemaker.model.Model` oder a `sagemaker.pipeline.PipelineModel` bei der Amazon SageMaker Model Registry zu registrieren. Ein `PipelineModel` stellt eine Inferenzpipeline dar, ein Modell, das aus einer linearen Abfolge von Containern besteht, die Inferenzanforderungen verarbeiten. Weitere Informationen über die Registrierung eines Modells finden Sie unter [Bereitstellung von Modellregistrierung mit Model Registry](model-registry.md).

Das folgende Beispiel zeigt, wie Sie eine `ModelStep` erstellen, die eine `PipelineModel` registriert.

```
import time

from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.sklearn import SKLearnModel
from sagemaker.xgboost import XGBoostModel

pipeline_session = PipelineSession()

code_location = 's3://{0}/{1}/code'.format(bucket_name, prefix)

sklearn_model = SKLearnModel(
   model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri,
   entry_point='inference.py',
   source_dir='sklearn_source_dir/',
   code_location=code_location,
   framework_version='1.0-1',
   role=role,
   sagemaker_session=pipeline_session,
   py_version='py3'
)

xgboost_model = XGBoostModel(
   model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts,
   entry_point='inference.py',
   source_dir='xgboost_source_dir/',
   code_location=code_location,
   framework_version='0.90-2',
   py_version='py3',
   sagemaker_session=pipeline_session,
   role=role
)

from sagemaker.workflow.model_step import ModelStep
from sagemaker import PipelineModel

pipeline_model = PipelineModel(
   models=[sklearn_model, xgboost_model],
   role=role,sagemaker_session=pipeline_session,
)

register_model_step_args = pipeline_model.register(
    content_types=["application/json"],
   response_types=["application/json"],
   inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
   transform_instances=["ml.m5.xlarge"],
   model_package_group_name='sipgroup',
)

step_model_registration = ModelStep(
   name="AbaloneRegisterModel",
   step_args=register_model_step_args,
)
```

## Schritt „Modell erstellen“
<a name="step-type-create-model"></a>

Sie verwenden den Schritt Modell erstellen, um ein SageMaker KI-Modell zu erstellen. Weitere Informationen zu SageMaker KI-Modellen finden Sie unter[Trainiere ein Modell mit Amazon SageMaker](how-it-works-training.md).

Ein Schritt zum Erstellen eines Modells erfordert Modellartefakte und Informationen über den SageMaker AI-Instanztyp, den Sie zur Erstellung des Modells verwenden müssen. Die folgenden Beispiele zeigen, wie Sie eine Schrittdefinition für das Erstellen eines Modells erstellen. Weitere Informationen zu den Anforderungen für den Schritt Modell erstellen finden Sie unter [sagemaker.workflow.steps. CreateModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.CreateModelStep)Dokumentation.

------
#### [ Pipeline Designer ]

Gehen Sie wie folgt vor, um zu Ihrer Pipeline einen Schritt zum Erstellen eines Modells hinzuzufügen:

1. Öffnen Sie die Studio-Konsole, indem Sie den Anweisungen unter [Starten Sie Amazon SageMaker Studio](studio-updated-launch.md) folgen.

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. Wählen Sie **Erstellen** aus.

1. **Wählen Sie Leer.**

1. Wählen Sie in der linken Seitenleiste „**Modell erstellen**“ und ziehen Sie es auf die Leinwand.

1. Wählen Sie auf der Leinwand den Schritt **Modell erstellen** aus, den Sie hinzugefügt haben.

1. Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs **Einstellungen** und **Details** aus. Informationen zu den Feldern in diesen Tabs finden Sie unter [sagemaker.workflow.steps. CreateModelStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.CreateModelStep).

1. **Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar vor dem Schritt Modell erstellen liegt, den Sie hinzugefügt haben, klicken Sie auf den Schritt **Modell erstellen** und ziehen Sie den Cursor von diesem Schritt zum Schritt Modell erstellen, um eine Kante zu erstellen.**

1. Wenn die Leinwand einen Schritt enthält, der unmittelbar auf den Schritt **Modell erstellen folgt, klicken Sie auf den Schritt Modell erstellen** und ziehen Sie den Cursor vom Schritt **Modell erstellen** zu dem Schritt, um eine Kante zu erstellen.

------
#### [ SageMaker Python SDK ]

**Wichtig**  
Wir empfehlen [Modellschritt](#step-type-model) die Verwendung zum Erstellen von Modellen ab Version 2.90.0 des SageMaker AI Python SDK. `CreateModelStep`funktioniert weiterhin in früheren Versionen des SageMaker Python-SDK, wird aber nicht mehr aktiv unterstützt.

```
from sagemaker.workflow.steps import CreateModelStep

step_create_model = CreateModelStep(
    name="AbaloneCreateModel",
    model=best_model,
    inputs=inputs
)
```

------

## Schritt „Modell registrieren“
<a name="step-type-register-model"></a>

Der Schritt Modell registrieren registriert ein Modell in der SageMaker Model Registry.

------
#### [ Pipeline Designer ]

Gehen Sie wie folgt vor, um ein Modell aus einer Pipeline mit dem Pipeline Designer zu registrieren:

1. Öffnen Sie die Amazon SageMaker Studio-Konsole, indem Sie den Anweisungen unter folgen[Starten Sie Amazon SageMaker Studio](studio-updated-launch.md).

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. Wählen Sie **Erstellen** aus.

1. **Wählen Sie Leer.**

1. Wählen Sie in der linken Seitenleiste **Modell registrieren** und ziehen Sie es auf die Arbeitsfläche.

1. Wählen Sie auf der Arbeitsfläche den Schritt **Modell registrieren** aus, den Sie hinzugefügt haben.

1. Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs **Einstellungen** und **Details** aus. Informationen zu den Feldern in diesen Tabs finden Sie unter [sagemaker.workflow.step\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel).

1. **Wenn die Arbeitsfläche einen Schritt enthält, der dem Schritt Modell registrieren, den Sie hinzugefügt haben, unmittelbar vorausgeht, klicken Sie auf den Schritt **Modell registrieren** und ziehen Sie den Cursor von diesem Schritt zum Schritt Modell registrieren, um eine Kante zu erstellen.**

1. Wenn die Zeichenfläche einen Schritt enthält, der unmittelbar auf den Schritt **Modell registrieren folgt, klicken Sie auf den Schritt Modell registrieren** und ziehen Sie den Cursor vom Schritt **Modell registrieren** zu dem Schritt, um eine Kante zu erstellen.

------
#### [ SageMaker Python SDK ]

**Wichtig**  
Wir empfehlen [Modellschritt](#step-type-model) die Verwendung zur Registrierung von Modellen ab Version 2.90.0 des SageMaker AI Python SDK. `RegisterModel`funktioniert weiterhin in früheren Versionen des SageMaker Python-SDK, wird aber nicht mehr aktiv unterstützt.

[Sie verwenden einen `RegisterModel` Schritt, um ein [SageMaker.Model.Model oder eine Sagemaker.Pipeline](https://sagemaker.readthedocs.io/en/stable/api/inference/model.html) zu registrieren. PipelineModel](https://sagemaker.readthedocs.io/en/stable/api/inference/pipeline.html#pipelinemodel)mit der Amazon SageMaker Model Registry. Ein `PipelineModel` stellt eine Inferenzpipeline dar, ein Modell, das aus einer linearen Abfolge von Containern besteht, die Inferenzanforderungen verarbeiten.

Weitere Informationen über die Registrierung eines Modells finden Sie unter [Bereitstellung von Modellregistrierung mit Model Registry](model-registry.md). Weitere Informationen zu den `RegisterModel` Schrittanforderungen finden Sie unter [sagemaker.workflow.step\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel)Dokumentation.

Das folgende Beispiel zeigt, wie Sie einen Schritt `RegisterModel` erstellen, der eine `PipelineModel` registriert.

```
import time
from sagemaker.sklearn import SKLearnModel
from sagemaker.xgboost import XGBoostModel

code_location = 's3://{0}/{1}/code'.format(bucket_name, prefix)

sklearn_model = SKLearnModel(model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri,
 entry_point='inference.py',
 source_dir='sklearn_source_dir/',
 code_location=code_location,
 framework_version='1.0-1',
 role=role,
 sagemaker_session=sagemaker_session,
 py_version='py3')

xgboost_model = XGBoostModel(model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts,
 entry_point='inference.py',
 source_dir='xgboost_source_dir/',
 code_location=code_location,
 framework_version='0.90-2',
 py_version='py3',
 sagemaker_session=sagemaker_session,
 role=role)

from sagemaker.workflow.step_collections import RegisterModel
from sagemaker import PipelineModel
pipeline_model = PipelineModel(models=[sklearn_model,xgboost_model],role=role,sagemaker_session=sagemaker_session)

step_register = RegisterModel(
 name="AbaloneRegisterModel",
 model=pipeline_model,
 content_types=["application/json"],
 response_types=["application/json"],
 inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
 transform_instances=["ml.m5.xlarge"],
 model_package_group_name='sipgroup',
)
```

Wenn `model` nicht angegeben, benötigt der Registermodellschritt einen Schätzer, wie im folgenden Beispiel gezeigt.

```
from sagemaker.workflow.step_collections import RegisterModel

step_register = RegisterModel(
    name="AbaloneRegisterModel",
    estimator=xgb_train,
    model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
    content_types=["text/csv"],
    response_types=["text/csv"],
    inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
    transform_instances=["ml.m5.xlarge"],
    model_package_group_name=model_package_group_name,
    approval_status=model_approval_status,
    model_metrics=model_metrics
)
```

------

## Schritte zum Bereitstellen von Modellen (Endpunkte)
<a name="step-type-deploy-model-endpoint"></a>

Gehen Sie im Pipeline Designer mithilfe des Schritts Modell bereitstellen (Endpunkt) vor, um Ihr Modell auf einem Endpunkt bereitzustellen. Sie können einen neuen Endpunkt erstellen oder einen vorhandenen Endpunkt verwenden. Inferenz in Echtzeit ist ideal für Inferenz-Workloads, bei denen interaktive Echtzeitanforderungen mit geringer Latenz erfüllt werden müssen. Sie können Ihr Modell für SageMaker KI-Hosting-Dienste bereitstellen und erhalten einen Echtzeit-Endpunkt, der für Inferenzen verwendet werden kann. Diese Endgeräte werden vollständig verwaltet und unterstützen Auto Scaling. Weitere Informationen über Echtzeit-Inferenz in SageMaker KI finden Sie unter. [Echtzeit-Inferenz](realtime-endpoints.md)

Bevor Sie Ihrer Pipeline einen Schritt zum Bereitstellen eines Modells hinzufügen, vergewissern Sie sich, dass Ihre IAM-Rolle über die folgenden Berechtigungen verfügt:
+ `sagemaker:CreateModel`
+ `sagemaker:CreateEndpointConfig`
+ `sagemaker:CreateEndpoint`
+ `sagemaker:UpdateEndpoint`
+ `sagemaker:DescribeModel`
+ `sagemaker:DescribeEndpointConfig`
+ `sagemaker:DescribeEndpoint`

Weitere Informationen zu allen erforderlichen Berechtigungen für SageMaker KI und deren Einrichtung finden Sie unter[Amazon SageMaker AI API-Berechtigungen: Referenz zu Aktionen, Berechtigungen und Ressourcen](api-permissions-reference.md).

Gehen Sie wie folgt vor, um Ihrer Pipeline im drag-and-drop Editor einen Schritt zur Modellbereitstellung hinzuzufügen:

1. Öffnen Sie die Studio-Konsole, indem Sie den Anweisungen unter [Starten Sie Amazon SageMaker Studio](studio-updated-launch.md) folgen.

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. Wählen Sie **Erstellen** aus.

1. **Wählen Sie Leer.**

1. Wählen Sie in der linken Seitenleiste **Modell bereitstellen (Endpunkt)** aus und ziehen Sie es auf die Leinwand.

1. Wählen Sie auf der Arbeitsfläche den Schritt **Modell bereitstellen (Endpunkt)** aus, den Sie hinzugefügt haben.

1. Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs **Einstellungen** und **Details** aus.

1. Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar vor dem von Ihnen hinzugefügten Schritt **Modell bereitstellen (Endpunkt)** liegt, klicken Sie auf den Schritt und ziehen Sie den Cursor von diesem Schritt zum Schritt **Modell bereitstellen (Endpunkt)**, um eine Kante zu erstellen.

1. Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar auf den Schritt **Modell bereitstellen (Endpunkt)** folgt, klicken Sie auf den Schritt Modell bereitstellen (Endpunkt) und ziehen Sie den Cursor vom Schritt **Modell bereitstellen (Endpunkt)** auf den Schritt zum Erstellen einer Kante.

## Schritt Transformieren
<a name="step-type-transform"></a>

Sie verwenden einen Transformationsschritt für die Batch-Transformation, um die Inferenz für einen gesamten Datensatz durchzuführen. Weitere Informationen zur Batch-Transformation finden Sie unter [Stapeltransformationen mit Inferenz-Pipelines](inference-pipeline-batch.md).

Ein Transformationsschritt erfordert einen Transformator und die Daten, für die die Batch-Transformation ausgeführt werden soll. Das folgende Beispiel zeigt, wie Sie eine Transform-Schrittdefinition erstellen. Weitere Informationen zu den Anforderungen für Transformationsschritte finden Sie unter [sagemaker.workflow.steps. TransformStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TransformStep)Dokumentation.

------
#### [ Pipeline Designer ]

Gehen Sie wie folgt vor, um Ihrer Pipeline mithilfe des drag-and-drop visuellen Editors einen Batch-Transformationsschritt hinzuzufügen:

1. Öffnen Sie die Studio-Konsole, indem Sie den Anweisungen unter [Starten Sie Amazon SageMaker Studio](studio-updated-launch.md) folgen.

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. Wählen Sie **Erstellen** aus.

1. **Wählen Sie Leer.**

1. Wählen Sie in der linken Seitenleiste **Modell bereitstellen (Batch-Transformation)** und ziehen Sie es auf die Leinwand.

1. Wählen Sie auf der Arbeitsfläche den Schritt **Modell bereitstellen (Batch-Transformation)** aus, den Sie hinzugefügt haben.

1. Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs **Einstellungen** und **Details** aus. Informationen zu den Feldern in diesen Tabs finden Sie unter [sagemaker.workflow.steps. TransformStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TransformStep).

1. Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar vor dem von Ihnen hinzugefügten Schritt **Modell bereitstellen (Batch-Transformation)** liegt, klicken Sie auf den Schritt und ziehen Sie den Cursor von diesem Schritt zum Schritt Modell **bereitstellen** (Batch-Transformation), um eine Kante zu erstellen.

1. Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar auf den Schritt **Modell bereitstellen (Batch-Transformation)** folgt, klicken Sie auf den Schritt Modell bereitstellen (Batch-Transformation) und ziehen Sie den Cursor vom Schritt **Modell bereitstellen (Batch-Transformation)** zu dem Schritt, um eine Kante zu erstellen.

------
#### [ SageMaker Python SDK ]

```
from sagemaker.workflow.pipeline_context import PipelineSession

from sagemaker.transformer import Transformer
from sagemaker.inputs import TransformInput
from sagemaker.workflow.steps import TransformStep

transformer = Transformer(..., sagemaker_session=PipelineSession())

step_transform = TransformStep(
    name="AbaloneTransform",
    step_args=transformer.transform(data="s3://amzn-s3-demo-bucket/my-data"),
)
```

------

## Bedingungsschritt
<a name="step-type-condition"></a>

Sie verwenden einen Bedingungsschritt, um den Zustand der Schritteigenschaften zu bewerten, um zu beurteilen, welche Maßnahme als Nächstes in der Pipeline ergriffen werden sollte.

Ein Bedingungsschritt erfordert:
+ Eine Liste der Bedingungen.
+ Eine Liste von Schritten, die ausgeführt werden sollen, wenn die Bedingung `true` ist.
+ Eine Liste von Schritten, die ausgeführt werden sollen, wenn die Bedingung `false` ist.

------
#### [ Pipeline Designer ]

Gehen Sie wie folgt vor, um einer Pipeline mithilfe des Pipeline-Designers einen Bedingungsschritt hinzuzufügen:

1. Öffnen Sie die Amazon SageMaker Studio-Konsole, indem Sie den Anweisungen unter folgen[Starten Sie Amazon SageMaker Studio](studio-updated-launch.md).

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. Wählen Sie **Erstellen** aus.

1. **Wählen Sie Leer.**

1. Wählen Sie in der linken Seitenleiste die Option **Bedingung** aus und ziehen Sie sie auf die Leinwand.

1. Wählen Sie auf der Leinwand den Schritt „**Bedingung**“ aus, den Sie hinzugefügt haben.

1. Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs **Einstellungen** und **Details** aus. Informationen zu den Feldern in diesen Tabs finden Sie unter [sagemaker.workflow.condition\$1step. ConditionStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.condition_step.ConditionStep).

1. **Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar vor dem Schritt „Bedingung“ liegt, den Sie hinzugefügt haben, klicken Sie auf den Schritt und ziehen Sie den Cursor von diesem Schritt zum Schritt „**Bedingung**“, um eine Kante zu erstellen.**

1. Wenn die Zeichenfläche einen Schritt enthält, der unmittelbar auf den Schritt „**Bedingung**“ folgt, klicken Sie auf den Schritt „Bedingung“ und ziehen Sie den Cursor vom Schritt „**Bedingung**“ zu dem Schritt, um eine Kante zu erstellen.

------
#### [ SageMaker Python SDK ]

 Das folgende Beispiel zeigt, wie Sie eine `ConditionStep`-Definition erstellen. 

**Einschränkungen**
+ Pipelines unterstützt die Verwendung von verschachtelten Bedingungsschritten nicht. Sie können einen Bedingungsschritt nicht als Eingabe für einen anderen Bedingungsschritt übergeben.
+ Ein Bedingungsschritt kann nicht identische Schritte in beiden Zweigen verwenden. Wenn Sie in beiden Zweigen dieselbe Schrittfunktionalität benötigen, duplizieren Sie den Schritt und geben Sie ihm einen anderen Namen.

```
from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo
from sagemaker.workflow.condition_step import ConditionStep
from sagemaker.workflow.functions import JsonGet

cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name=step_eval.name,
        property_file=evaluation_report,
        json_path="regression_metrics.mse.value"
    ),
    right=6.0
)

step_cond = ConditionStep(
    name="AbaloneMSECond",
    conditions=[cond_lte],
    if_steps=[step_register, step_create_model, step_transform],
    else_steps=[]
)
```

Weitere Informationen zu den `ConditionStep` Anforderungen finden Sie unter [sagemaker.workflow.condition\$1step. ConditionStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#conditionstep) API-Referenz. Weitere Informationen zu unterstützten Bedingungen finden Sie unter *[Amazon SageMaker Pipelines — Conditions](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#conditions)* in der SageMaker AI Python SDK-Dokumentation. 

------

## Rückrufschritt
<a name="step-type-callback"></a>

Verwenden Sie einen `Callback` Schritt, um Ihrem Workflow zusätzliche Prozesse und AWS Services hinzuzufügen, die nicht direkt von Amazon SageMaker Pipelines bereitgestellt werden. Wenn ein `Callback` Schritt ausgeführt wird, erfolgt das folgende Verfahren:
+ Pipelines sendet eine Nachricht an eine vom Kunden angegebene Warteschlange von Amazon Simple Queue Service (Amazon SQS). Die Nachricht enthält ein von Pipelines generiertes Token und eine vom Kunden bereitgestellte Liste von Eingabeparametern. Nach dem Absenden der Nachricht wartet Pipelines auf eine Antwort des Kunden.
+ Der Kunde ruft die Nachricht aus der Amazon-SQS-Warteschlange ab und startet seinen benutzerdefinierten Prozess.
+ Wenn der Vorgang abgeschlossen ist, ruft der Kunde eine der folgenden Adressen an APIs und übermittelt das von Pipelines generierte Token:
  +  [SendPipelineExecutionStepSuccess](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SendPipelineExecutionStepSuccess.html), zusammen mit einer Liste von Ausgabeparametern
  +  [SendPipelineExecutionStepFailure](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SendPipelineExecutionStepFailure.html), zusammen mit einem Fehlergrund
+ Der API-Aufruf veranlasst Pipelines, entweder den Pipeline-Prozess fortzusetzen oder den Prozess fehlschlagen zu lassen.

Weitere Informationen zu den `Callback` Schrittanforderungen finden Sie unter [sagemaker.workflow.callback\$1step. CallbackStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.callback_step.CallbackStep)Dokumentation. Eine vollständige Lösung finden Sie unter [Erweitern von SageMaker Pipelines um benutzerdefinierte Schritte mithilfe von Callback-Schritten](https://aws.amazon.com/blogs/machine-learning/extend-amazon-sagemaker-pipelines-to-include-custom-steps-using-callback-steps/).

**Wichtig**  
`Callback`Schritte wurden in Amazon SageMaker Python SDK v2.45.0 und Amazon SageMaker Studio Classic v3.6.2 eingeführt. Sie müssen Studio Classic aktualisieren, bevor Sie einen `Callback`-Schritt verwenden, sonst wird die Pipeline-DAG nicht angezeigt. Informationen zum Aktualisieren von Studio Classic finden Sie unter [Amazon SageMaker Studio Classic herunterfahren und aktualisieren](studio-tasks-update-studio.md).

Das folgende Beispiel zeigt eine Implementierung des vorherigen Verfahrens.

```
from sagemaker.workflow.callback_step import CallbackStep

step_callback = CallbackStep(
    name="MyCallbackStep",
    sqs_queue_url="https://sqs.us-east-2.amazonaws.com/012345678901/MyCallbackQueue",
    inputs={...},
    outputs=[...]
)

callback_handler_code = '
    import boto3
    import json

    def handler(event, context):
        sagemaker_client=boto3.client("sagemaker")

        for record in event["Records"]:
            payload=json.loads(record["body"])
            token=payload["token"]

            # Custom processing

            # Call SageMaker AI to complete the step
            sagemaker_client.send_pipeline_execution_step_success(
                CallbackToken=token,
                OutputParameters={...}
            )
'
```

**Anmerkung**  
Die Ausgabeparameter für `CallbackStep` sollten nicht verschachtelt sein. Wenn Sie beispielsweise ein verschachteltes Wörterbuch als Ausgabeparameter verwenden, wird das Wörterbuch als eine einzelne Zeichenfolge behandelt (z. B. `{"output1": "{\"nested_output1\":\"my-output\"}"}`). Wenn Sie einen verschachtelten Wert angeben und versuchen, auf einen bestimmten Ausgabeparameter zu verweisen, gibt SageMaker AI einen Client-Fehler aus, der nicht erneut versucht werden kann.

**Verhalten wird gestoppt**

Ein Pipelineprozess wird nicht gestoppt, während ein `Callback` Schritt ausgeführt wird.

Wenn Sie einen Pipeline-Prozess mit einem laufenden `Callback` Schritt aufrufen [StopPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopPipelineExecution.html), sendet Pipelines eine Amazon SQS SQS-Nachricht an die SQS-Warteschlange. Der Hauptteil der SQS-Nachricht enthält ein **Statusfeld**, das auf `Stopping` gesetzt ist. Im Folgenden wird ein Beispiel für einen SQS-Nachrichtenkörper gezeigt.

```
{
  "token": "26vcYbeWsZ",
  "pipelineExecutionArn": "arn:aws:sagemaker:us-east-2:012345678901:pipeline/callback-pipeline/execution/7pinimwddh3a",
  "arguments": {
    "number": 5,
    "stringArg": "some-arg",
    "inputData": "s3://sagemaker-us-west-2-012345678901/abalone/abalone-dataset.csv"
  },
  "status": "Stopping"
}
```

Es wird empfohlen, Ihrem Amazon-SQS-Nachrichtenempfänger eine Logik hinzuzufügen, um bei Empfang der Nachricht alle erforderlichen Maßnahmen (z. B. Ressourcenbereinigung) zu ergreifen. Fügen Sie dann einen Anruf zu `SendPipelineExecutionStepSuccess` oder hinzu`SendPipelineExecutionStepFailure`.

Erst wenn Pipelines einen dieser Aufrufe erhält, stoppt es den Pipeline-Prozess.

## Lambda-Schritt
<a name="step-type-lambda"></a>

Sie verwenden einen Lambda-Schritt, um eine AWS Lambda Funktion auszuführen. Sie können eine bestehende Lambda-Funktion ausführen, oder SageMaker KI kann eine neue Lambda-Funktion erstellen und ausführen. Wenn Sie sich dafür entscheiden, eine vorhandene Lambda-Funktion zu verwenden, muss sie sich in derselben AWS-Region wie die SageMaker AI-Pipeline befinden. Ein Notizbuch, das zeigt, wie ein Lambda-Schritt in einer SageMaker KI-Pipeline verwendet wird, finden Sie unter [sagemaker-pipelines-lambda-step.ipynb](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/lambda-step/sagemaker-pipelines-lambda-step.ipynb).

**Wichtig**  
Lambda-Schritte wurden in Amazon SageMaker Python SDK v2.51.0 und Amazon SageMaker Studio Classic v3.9.1 eingeführt. Sie müssen Studio Classic aktualisieren, bevor Sie einen Lambda-Schritt verwenden, da sonst die Pipeline-DAG nicht angezeigt wird. Informationen zum Aktualisieren von Studio Classic finden Sie unter [Amazon SageMaker Studio Classic herunterfahren und aktualisieren](studio-tasks-update-studio.md).

SageMaker AI stellt die Klasse [SageMaker.Lambda\$1Helper.Lambda bereit, um Lambda-Funktionen zu erstellen, zu aktualisieren, aufzurufen](https://sagemaker.readthedocs.io/en/stable/api/utility/lambda_helper.html) und zu löschen. `Lambda`hat die folgende Signatur.

```
Lambda(
    function_arn,       # Only required argument to invoke an existing Lambda function

    # The following arguments are required to create a Lambda function:
    function_name,
    execution_role_arn,
    zipped_code_dir,    # Specify either zipped_code_dir and s3_bucket, OR script
    s3_bucket,          # S3 bucket where zipped_code_dir is uploaded
    script,             # Path of Lambda function script
    handler,            # Lambda handler specified as "lambda_script.lambda_handler"
    timeout,            # Maximum time the Lambda function can run before the lambda step fails
    ...
)
```

Der [sagemaker.workflow.lambda\$1step. LambdaStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.lambda_step.LambdaStep)Die Klasse hat ein Argument vom Typ. `lambda_func` `Lambda` Um eine bestehende Lambda-Funktion aufzurufen, muss nur der Amazon Resource Name (ARN) der Funktion an `function_arn` übergeben werden. Wenn Sie keinen Wert für `function_arn` angeben, müssen Sie `handler` und eine der folgenden Angaben machen:
+ `zipped_code_dir`– Der Pfad der komprimierten Lambda-Funktion

  `s3_bucket`– Amazon-S3-Bucket, wo `zipped_code_dir` hochgeladen werden soll
+ `script`– Der Pfad der Lambda-Funktionsskriptdatei

Das folgende Beispiel zeigt, wie eine `Lambda` Schrittdefinition erstellt wird, die eine vorhandene Lambda-Funktion aufruft.

```
from sagemaker.workflow.lambda_step import LambdaStep
from sagemaker.lambda_helper import Lambda

step_lambda = LambdaStep(
    name="ProcessingLambda",
    lambda_func=Lambda(
        function_arn="arn:aws:lambda:us-west-2:012345678910:function:split-dataset-lambda"
    ),
    inputs={
        s3_bucket = s3_bucket,
        data_file = data_file
    },
    outputs=[
        "train_file", "test_file"
    ]
)
```

Das folgende Beispiel zeigt, wie Sie eine `Lambda` Schrittdefinition erstellen, die mithilfe eines Lambda-Funktionsskripts eine Lambda-Funktion erstellt und aufruft.

```
from sagemaker.workflow.lambda_step import LambdaStep
from sagemaker.lambda_helper import Lambda

step_lambda = LambdaStep(
    name="ProcessingLambda",
    lambda_func=Lambda(
      function_name="split-dataset-lambda",
      execution_role_arn=execution_role_arn,
      script="lambda_script.py",
      handler="lambda_script.lambda_handler",
      ...
    ),
    inputs={
        s3_bucket = s3_bucket,
        data_file = data_file
    },
    outputs=[
        "train_file", "test_file"
    ]
)
```

**Eingaben und Ausgaben**

Wenn Ihre `Lambda` Funktion Eingaben oder Ausgaben hat, müssen diese ebenfalls in Ihrem Schritt definiert werden. `Lambda`

**Anmerkung**  
Eingabe- und Ausgabeparameter sollten nicht verschachtelt sein. Wenn Sie beispielsweise ein verschachteltes Wörterbuch als Ausgabeparameter verwenden, wird das Wörterbuch als eine einzelne Zeichenfolge behandelt (z. B. `{"output1": "{\"nested_output1\":\"my-output\"}"}`). Wenn Sie einen verschachtelten Wert angeben und später versuchen, darauf zu verweisen, wird ein Client-Fehler ausgegeben, der nicht erneut versucht werden kann.

Bei der Definition des `Lambda` Schritts `inputs` muss es sich um ein Wörterbuch mit Schlüssel-Wert-Paaren handeln. Jeder Wert des `inputs` Wörterbuchs muss ein primitiver Typ sein (Zeichenfolge, Ganzzahl oder Gleitkommazahl). Verschachtelte Objekte werden nicht unterstützt. Bleibt der Wert für `inputs` undefiniert, wird der Wert für `None` verwendet.

Der `outputs` Wert muss eine Liste von Schlüsseln sein. Diese Schlüssel beziehen sich auf ein Wörterbuch, das in der Ausgabe der `Lambda` Funktion definiert ist. Wie bei `inputs` müssen diese Schlüssel primitive Typen sein, und verschachtelte Objekte werden nicht unterstützt.

**Timeout und Verhalten beim Stoppen**

Die `Lambda` Klasse hat ein `timeout` Argument, das die maximale Zeit angibt, während der die Lambda-Funktion ausgeführt werden kann. Der Standardwert ist 120 Sekunden und der Höchstwert 10 Minuten. Wenn die Lambda-Funktion ausgeführt wird, wenn das Timeout erreicht ist, schlägt der Lambda-Schritt fehl. Die Lambda-Funktion wird jedoch weiterhin ausgeführt.

Ein Pipelineprozess kann nicht gestoppt werden, während ein Lambda-Schritt ausgeführt wird, da die durch den Lambda-Schritt aufgerufene Lambda-Funktion nicht gestoppt werden kann. Wenn Sie den Prozess unterbrechen, während die Lambda-Funktion ausgeführt wird, wartet die Pipeline, bis die Funktion beendet ist oder bis das Zeitlimit erreicht ist. Das hängt davon ab, was zuerst eintritt. Der Vorgang wird dann gestoppt. Wenn die Lambda-Funktion beendet wird, lautet der Status des Pipeline-Prozesses `Stopped`. Wenn die Zeitüberschreitung erreicht ist, lautet der Status des Pipeline-Prozesses `Failed`.

## ClarifyCheck Schritt
<a name="step-type-clarify-check"></a>

Sie können diesen `ClarifyCheck` Schritt verwenden, um die Ausgangsabweichung anhand früherer Basislinien zu überprüfen, um die Verzerrungsanalyse und die Erklärbarkeit des Modells zu verbessern. Mit der `model.register()` Methode können Sie dann Ihre [Baselines erstellen und registrieren](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-calculations) und die Ausgabe dieser Methode mit [Modellschritt](#step-type-model) an `[step\$1args](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#model-step)` übergeben. Diese Basislinien für die Driftprüfung können von Amazon SageMaker Model Monitor für Ihre Modellendpunkte verwendet werden. Daher müssen Sie einen [Basisvorschlag](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-create-baseline.html) nicht separat erstellen. 

Bei diesem `ClarifyCheck` Schritt können auch Basiswerte für die Driftprüfung aus der Modellregistrierung abgerufen werden. In diesem `ClarifyCheck` Schritt wird der vorgefertigte SageMaker Clarify-Container verwendet. Dieser Container bietet eine Reihe von Features zur Modellüberwachung, darunter Vorschläge für Einschränkungen und Beschränkungsvalidierung anhand einer bestimmten Baseline. Weitere Informationen finden Sie unter [Vorgefertigte SageMaker Clarify-Container](clarify-processing-job-configure-container.md).

### Konfiguration des Schritts ClarifyCheck
<a name="configuring-step-type-clarify"></a>

Sie können den `ClarifyCheck` Schritt so konfigurieren, dass bei jeder Verwendung in einer Pipeline nur einer der folgenden Prüftypen durchgeführt wird.
+ Prüfung auf Datenverzerrung
+ Überprüfung der Modellverzerrung
+ Überprüfung der Erklärbarkeit des Modells

Dazu setzen Sie den `clarify_check_config`-Parameter mit einem der folgenden Prüftypwerte:
+ `DataBiasCheckConfig`
+ `ModelBiasCheckConfig`
+ `ModelExplainabilityCheckConfig`

In diesem `ClarifyCheck` Schritt wird ein Verarbeitungsjob gestartet, der den SageMaker vorgefertigten AI Clarif-Container ausführt und spezielle [Konfigurationen für die Prüfung und den Verarbeitungsjob](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-configure-processing-jobs.html) erfordert. `ClarifyCheckConfig`und `CheckJobConfig` sind Hilfsfunktionen für diese Konfigurationen. Diese Hilfsfunktionen sind darauf abgestimmt, wie der Verarbeitungsjob SageMaker Clarify Berechnungen durchführt, um Modellverzerrungen, Datenverzerrungen oder Modellerklärbarkeit zu überprüfen. Weitere Informationen finden Sie unter [Führen Sie SageMaker Clarify Processing Jobs aus, um Verzerrungen zu analysieren und zu erklären](clarify-processing-job-run.md). 

### Steuerung des Schrittverhaltens bei der Drift-Prüfung
<a name="controlling-step-type-clarify"></a>

Für diesen `ClarifyCheck` Schritt sind die folgenden zwei booleschen Flags erforderlich, um sein Verhalten zu steuern:
+ `skip_check`: Dieser Parameter gibt an, ob die Driftprüfung gegenüber der vorherigen Basislinie übersprungen wurde oder nicht. Wenn `False` auf gesetzt ist, muss die vorherige Basislinie des konfigurierten Prüftyps verfügbar sein.
+ `register_new_baseline`: Dieser Parameter gibt an, ob über die Schritteigenschaft `BaselineUsedForDriftCheckConstraints` auf eine neu berechnete Basislinie zugegriffen werden kann. Wenn `False` auf gesetzt ist, muss auch die vorherige Basislinie des konfigurierten Prüftyps verfügbar sein. Darauf kann über die `BaselineUsedForDriftCheckConstraints` Eigenschaft zugegriffen werden. 

Weitere Informationen finden Sie unter [Basisberechnung, Drifterkennung und Lebenszyklus mit ClarifyCheck und QualityCheck Schritte in Amazon SageMaker Pipelines](pipelines-quality-clarify-baseline-lifecycle.md).

### Arbeiten mit Baselines
<a name="step-type-clarify-working-with-baselines"></a>

Optional können Sie angeben`model_package_group_name`, um die vorhandene Baseline zu finden. Anschließend ruft der `ClarifyCheck`-Schritt `DriftCheckBaselines` auf dem zuletzt genehmigten Modellpaket aus der Modellpaketgruppe ab. 

Oder Sie können über den `supplied_baseline_constraints` Parameter eine vorherige Basislinie angeben. Wenn Sie sowohl `model_package_group_name` als auch `supplied_baseline_constraints` angeben, verwendet der Schritt `ClarifyCheck` die durch den `supplied_baseline_constraints` Parameter angegebene Basislinie.

[Weitere Informationen zur Verwendung der `ClarifyCheck` Schrittanforderungen finden Sie unter sagemaker.workflow.steps. ClarifyCheckStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.clarify_check_step.ClarifyCheckStep)im *Amazon SageMaker AI SageMaker AI SDK für Python*. Ein Amazon SageMaker Studio Classic-Notizbuch, das zeigt, wie `ClarifyCheck` Step in Pipelines verwendet wird, finden Sie unter [sagemaker-pipeline-model-monitor-clarify-steps.ipynb](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/model-monitor-clarify-pipelines/sagemaker-pipeline-model-monitor-clarify-steps.ipynb).

**Example Erstellen eines `ClarifyCheck`-Schrittes zur Prüfung der Datenverzerrung**  

```
from sagemaker.workflow.check_job_config import CheckJobConfig
from sagemaker.workflow.clarify_check_step import DataBiasCheckConfig, ClarifyCheckStep
from sagemaker.workflow.execution_variables import ExecutionVariables

check_job_config = CheckJobConfig(
    role=role,
    instance_count=1,
    instance_type="ml.c5.xlarge",
    volume_size_in_gb=120,
    sagemaker_session=sagemaker_session,
)

data_bias_data_config = DataConfig(
    s3_data_input_path=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
    s3_output_path=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'databiascheckstep']),
    label=0,
    dataset_type="text/csv",
    s3_analysis_config_output_path=data_bias_analysis_cfg_output_path,
)

data_bias_config = BiasConfig(
    label_values_or_threshold=[15.0], facet_name=[8], facet_values_or_threshold=[[0.5]]  
)

data_bias_check_config = DataBiasCheckConfig(
    data_config=data_bias_data_config,
    data_bias_config=data_bias_config,
)h

data_bias_check_step = ClarifyCheckStep(
    name="DataBiasCheckStep",
    clarify_check_config=data_bias_check_config,
    check_job_config=check_job_config,
    skip_check=False,
    register_new_baseline=False
   supplied_baseline_constraints="s3://sagemaker-us-west-2-111122223333/baseline/analysis.json",
    model_package_group_name="MyModelPackageGroup"
)
```

## QualityCheck Schritt
<a name="step-type-quality-check"></a>

Mit dem Schritt `QualityCheck` können Sie [Baseline-Vorschläge](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-create-baseline.html) und Drift-Checks gegen eine frühere Baseline für die Datenqualität oder die Modellqualität in einer Pipeline durchführen. Sie können dann Ihre [Baselines mit der `model.register()`-Methode erzeugen und registrieren](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html#pipelines-quality-clarify-baseline-calculations) und die Ausgabe dieser Methode mit [Modellschritt](#step-type-model) an `[step\$1args](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#model-step)` übergeben.

Model Monitor kann diese Basislinien für die Drift-Prüfung Ihrer Modellendpunkte verwenden, sodass Sie einen Basisvorschlag nicht separat erstellen müssen. Bei diesem `QualityCheck` Schritt können auch Basiswerte für die Driftprüfung aus der Modellregistrierung abgerufen werden. Dieser `QualityCheck` Schritt nutzt den vorgefertigten Container von Amazon SageMaker AI Model Monitor. Dieser Container verfügt über eine Reihe von Modellüberwachungsfunktionen, darunter Vorschläge für Einschränkungen, Erstellung von Statistiken und Validierung von Einschränkungen anhand einer Baseline. Weitere Informationen finden Sie unter [Vorgefertigter Amazon SageMaker Model Monitor-Container](model-monitor-pre-built-container.md).

### Konfiguration des Schritts QualityCheck
<a name="configuring-step-type-quality"></a>

Sie können den `QualityCheck`-Schritt so konfigurieren, dass bei jeder Verwendung in einer Pipeline nur einer der folgenden Prüftypen durchgeführt wird.
+ Überprüfung der Datenqualität
+ Modellqualitätsprüfung

Dazu setzen Sie den `quality_check_config` Parameter mit einem der folgenden Prüftypwerte:
+ `DataQualityCheckConfig`
+ `ModelQualityCheckConfig`

In diesem `QualityCheck` Schritt wird ein Verarbeitungsauftrag gestartet, der den vorgefertigten Container von Model Monitor ausführt und spezielle Konfigurationen für die Prüfung und den Verarbeitungsauftrag erfordert. Die `QualityCheckConfig` und `CheckJobConfig` sind Hilfsfunktionen für diese Konfigurationen. Diese Hilfsfunktionen sind darauf abgestimmt, wie Model Monitor eine Baseline für die Überwachung der Modell- oder Datenqualität erstellt. Weitere Informationen zu den Basisvorschlägen von Model Monitor finden Sie unter [Erstellen einer Baseline](model-monitor-create-baseline.md) und[Erstellen einer Baseline für die Modellqualität](model-monitor-model-quality-baseline.md).

### Steuern des Schrittverhaltens bei der Drift-Prüfung
<a name="controlling-step-type-quality"></a>

Für diesen `QualityCheck` Schritt sind die folgenden zwei booleschen Flags erforderlich, um sein Verhalten zu steuern:
+ `skip_check`: Dieser Parameter gibt an, ob die Driftprüfung gegenüber der vorherigen Basislinie übersprungen wurde oder nicht. Wenn `False` auf gesetzt ist, muss die vorherige Basislinie des konfigurierten Prüftyps verfügbar sein.
+ `register_new_baseline`: Dieser Parameter gibt an, ob auf eine neu berechnete Basislinie über die Schritteigenschaften `BaselineUsedForDriftCheckConstraints` und `BaselineUsedForDriftCheckStatistics`. Ist sie auf `False` eingestellt, muss auch die vorherige Baseline der konfigurierten Prüfart verfügbar sein. Auf diese kann über die Eigenschaften `BaselineUsedForDriftCheckConstraints` und `BaselineUsedForDriftCheckStatistics` zugegriffen werden.

Weitere Informationen finden Sie unter [Basisberechnung, Drifterkennung und Lebenszyklus mit ClarifyCheck und QualityCheck Schritte in Amazon SageMaker Pipelines](pipelines-quality-clarify-baseline-lifecycle.md).

### Arbeiten mit Baselines
<a name="step-type-quality-working-with-baselines"></a>

Sie können eine vorherige Baseline direkt über die `supplied_baseline_constraints` Parameter `supplied_baseline_statistics` und angeben. Sie können auch `model_package_group_name` und den `QualityCheck`-Schritt angeben, der das zuletzt genehmigte Modellpaket in der Modellpaketgruppe abruft. 

Wenn Sie Folgendes angeben, verwendet der `QualityCheck`-Schritt die durch `supplied_baseline_constraints` und `supplied_baseline_statistics` auf dem Prüftyp des Schritts `QualityCheck` angegebene Baseline.
+ `model_package_group_name`
+ `supplied_baseline_constraints`
+ `supplied_baseline_statistics`

Weitere Informationen zur Verwendung der `QualityCheck` Schrittanforderungen finden Sie unter [sagemaker.workflow.steps. QualityCheckStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.quality_check_step.QualityCheckStep)im *Amazon SageMaker AI SageMaker AI SDK für Python*. Ein Amazon SageMaker Studio Classic-Notizbuch, das zeigt, wie `QualityCheck` Step in Pipelines verwendet wird, finden Sie unter [sagemaker-pipeline-model-monitor-clarify-steps.ipynb](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/model-monitor-clarify-pipelines/sagemaker-pipeline-model-monitor-clarify-steps.ipynb). 

**Example Erstellen eines `QualityCheck`-Schrittes zur Prüfung der Datenqualität**  

```
from sagemaker.workflow.check_job_config import CheckJobConfig
from sagemaker.workflow.quality_check_step import DataQualityCheckConfig, QualityCheckStep
from sagemaker.workflow.execution_variables import ExecutionVariables

check_job_config = CheckJobConfig(
    role=role,
    instance_count=1,
    instance_type="ml.c5.xlarge",
    volume_size_in_gb=120,
    sagemaker_session=sagemaker_session,
)

data_quality_check_config = DataQualityCheckConfig(
    baseline_dataset=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
    dataset_format=DatasetFormat.csv(header=False, output_columns_position="START"),
    output_s3_uri=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'dataqualitycheckstep'])
)

data_quality_check_step = QualityCheckStep(
    name="DataQualityCheckStep",
    skip_check=False,
    register_new_baseline=False,
    quality_check_config=data_quality_check_config,
    check_job_config=check_job_config,
    supplied_baseline_statistics="s3://sagemaker-us-west-2-555555555555/baseline/statistics.json",
    supplied_baseline_constraints="s3://sagemaker-us-west-2-555555555555/baseline/constraints.json",
    model_package_group_name="MyModelPackageGroup"
)
```

## EMR-Schritt
<a name="step-type-emr"></a>

Verwenden Sie den [EMR-Schritt](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-overview.html) Amazon SageMaker Pipelines, um:
+ Verarbeiten Sie [Amazon EMR-Schritte](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-work-with-steps.html) auf einem laufenden Amazon EMR-Cluster.
+ Lassen Sie die Pipeline einen Amazon EMR-Cluster für Sie erstellen und verwalten.

Weitere Informationen über Amazon EMR finden Sie unter [Erste Schritte mit Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html).

Der EMR-Schritt erfordert, dass `EMRStepConfig` den Speicherort der JAR-Datei, die vom Amazon-EMR-Cluster verwendet werden soll, und alle zu übergebenden Argumente enthält. Sie geben auch die Amazon EMR-Cluster-ID an, wenn Sie den Schritt auf einem laufenden EMR-Cluster ausführen möchten. Sie können auch die Cluster-Konfiguration übergeben, um den EMR-Schritt auf einem Cluster auszuführen, den er für Sie erstellt, verwaltet und beendet. Die folgenden Abschnitte enthalten Beispiele und Links zu Beispiel-Notebooks, die beide Methoden demonstrieren.

**Anmerkung**  
EMR-Schritte erfordern, dass die an Ihre Pipeline übergebene Rolle über zusätzliche Berechtigungen verfügt. Sie sollten die [AWS verwaltete Richtlinie: `AmazonSageMakerPipelinesIntegrations`](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-pipelines.html#security-iam-awsmanpol-AmazonSageMakerPipelinesIntegrations) an Ihre Pipeline-Rolle anfügen oder sicherstellen, dass die Rolle die in dieser Richtlinie enthaltenen Berechtigungen umfasst.
Wenn Sie einen EMR-Schritt auf einem laufenden Cluster verarbeiten, können Sie nur einen Cluster verwenden, der sich in einem der folgenden Zustände befindet:   
`STARTING`
`BOOTSTRAPPING`
`RUNNING`
`WAITING`
Wenn Sie EMR-Schritte in einem laufenden Cluster verarbeiten, können Sie maximal 256 EMR-Schritte in einem `PENDING` Status auf einem EMR-Cluster haben. EMR-Schritte, die über diesen Grenzwert hinaus eingereicht werden, führen zu einem Fehler bei der Pipeline-Ausführung. Sie können auch [Richtlinie für Pipeline-Schritte erneut versuchen](pipelines-retry-policy.md) verwenden.
Sie können entweder Cluster-ID oder Cluster-Konfiguration angeben, aber nicht beides.
Der EMR-Schritt stützt sich darauf EventBridge , dass Amazon Änderungen im EMR-Schritt oder Cluster-Status überwacht. Wenn Sie Ihren Amazon EMR-Auftrag auf einem laufenden Cluster verarbeiten, verwendet der EMR-Schritt die `SageMakerPipelineExecutionEMRStepStatusUpdateRule` Regel zur Überwachung des EMR-Schrittstatus. Wenn Sie Ihren Auftrag auf einem Cluster verarbeiten, den der EMR-Schritt für Sie erstellt, verwendet der Schritt die `SageMakerPipelineExecutionEMRClusterStatusRule`-Regel, um Änderungen im Clusterstatus zu überwachen. Wenn Sie eine dieser EventBridge Regeln in Ihrem AWS Konto sehen, löschen Sie sie nicht, da sonst Ihr EMR-Schritt möglicherweise nicht abgeschlossen werden kann.

**Fügen Sie Ihrer Pipeline einen Amazon EMR-Schritt hinzu**

Gehen Sie wie folgt vor, um Ihrer Pipeline einen EMR-Schritt hinzuzufügen:
+ Öffnen Sie die Studio-Konsole, indem Sie den Anweisungen unter [Amazon SageMaker Studio starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html) folgen.
+ Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.
+ Wählen Sie **Erstellen** aus.
+ **Wählen Sie Leer.**
+ Wählen Sie in der linken Seitenleiste die Option **Daten verarbeiten** und ziehen Sie sie auf die Arbeitsfläche.
+ Wählen Sie auf der Arbeitsfläche den Schritt „**Daten verarbeiten**“ aus, den Sie hinzugefügt haben.
+ Wählen Sie in der rechten Seitenleiste unter Modus die Option **EMR (verwaltet)** aus.
+ Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs **Einstellungen und Details** aus. Informationen zu den Feldern in diesen Tabs finden Sie unter [sagemaker.workflow.fail\$1step. EMRstep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.emr_step.EMRStep).

**Starten Sie einen neuen Auftrag auf einem laufenden Amazon EMR-Cluster**

Wenn Sie einen neuen Auftrag auf einem laufenden Amazon-EMR-Cluster starten möchten, übergeben Sie die Cluster-ID als Zeichenfolge an das `cluster_id` Argument von `EMRStep`. Das folgende Beispiel veranschaulicht diese Vorgehensweise.

```
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig

emr_config = EMRStepConfig(
    jar="jar-location", # required, path to jar file used
    args=["--verbose", "--force"], # optional list of arguments to pass to the jar
    main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest 
    properties=[ # optional list of Java properties that are set when the step runs
    {
        "key": "mapred.tasktracker.map.tasks.maximum",
        "value": "2"
    },
    {
        "key": "mapreduce.map.sort.spill.percent",
        "value": "0.90"
   },
   {
       "key": "mapreduce.tasktracker.reduce.tasks.maximum",
       "value": "5"
    }
  ]
)

step_emr = EMRStep (
    name="EMRSampleStep", # required
    cluster_id="j-1ABCDEFG2HIJK", # include cluster_id to use a running cluster
    step_config=emr_config, # required
    display_name="My EMR Step",
    description="Pipeline step to execute EMR job"
)
```

Ein Beispiel-Notebook, das Sie durch ein vollständiges Beispiel führt, finden Sie unter [Pipelines EMR-Schritt mit laufendem EMR-Cluster](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/emr-step/sagemaker-pipelines-emr-step-with-running-emr-cluster.ipynb).

**Starten Sie einen neuen Auftrag in einem neuen Amazon EMR-Cluster**

Um einen neuen Auftrag auf einem neuen Cluster zu starten, der `EMRStep` für Sie erstellt wird, geben Sie Ihre Clusterkonfiguration als Wörterbuch an. Das Wörterbuch muss dieselbe Struktur wie eine [RunJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html)Anfrage haben. Nehmen Sie jedoch nicht die folgenden Felder in Ihre Clusterkonfiguration auf:
+ [`Name`]
+ [`Steps`]
+ [`AutoTerminationPolicy`]
+ [`Instances`][`KeepJobFlowAliveWhenNoSteps`]
+ [`Instances`][`TerminationProtected`]

Alle anderen `RunJobFlow` Argumente können in Ihrer Clusterkonfiguration verwendet werden. Einzelheiten zur Anforderungssyntax finden Sie unter [RunJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html).

Im folgenden Beispiel wird eine Cluster-Konfiguration an eine EMR-Schrittdefinition übergeben. Dies führt zu dem Schritt, einen neuen Auftrag auf einem neuen EMR-Cluster zu starten. Die EMR-Clusterkonfiguration in diesem Beispiel umfasst Spezifikationen für primäre und zentrale EMR-Clusterknoten. Weitere Informationen zu Amazon EMR-Knotentypen finden Sie unter [Grundlegendes zu Knotentypen: Primär-, Kern- und Aufgabenknoten](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-master-core-task-nodes.html).

```
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig

emr_step_config = EMRStepConfig(
    jar="jar-location", # required, path to jar file used
    args=["--verbose", "--force"], # optional list of arguments to pass to the jar
    main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest 
    properties=[ # optional list of Java properties that are set when the step runs
    {
        "key": "mapred.tasktracker.map.tasks.maximum",
        "value": "2"
    },
    {
        "key": "mapreduce.map.sort.spill.percent",
        "value": "0.90"
   },
   {
       "key": "mapreduce.tasktracker.reduce.tasks.maximum",
       "value": "5"
    }
  ]
)

# include your cluster configuration as a dictionary
emr_cluster_config = {
    "Applications": [
        {
            "Name": "Spark", 
        }
    ],
    "Instances":{
        "InstanceGroups":[
            {
                "InstanceRole": "MASTER",
                "InstanceCount": 1,
                "InstanceType": "m5.2xlarge"
            },
            {
                "InstanceRole": "CORE",
                "InstanceCount": 2,
                "InstanceType": "m5.2xlarge"
            }
        ]
    },
    "BootstrapActions":[],
    "ReleaseLabel": "emr-6.6.0",
    "JobFlowRole": "job-flow-role",
    "ServiceRole": "service-role"
}

emr_step = EMRStep(
    name="emr-step",
    cluster_id=None,
    display_name="emr_step",
    description="MyEMRStepDescription",
    step_config=emr_step_config,
    cluster_config=emr_cluster_config
)
```

Ein Beispiel-Notebook, das Sie durch ein vollständiges Beispiel führt, finden Sie unter [Pipelines EMR-Schritt mit Cluster-Lebenszyklusmanagement](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-pipelines/tabular/emr-step/sagemaker-pipelines-emr-step-with-cluster-lifecycle-management.ipynb).

## Serverloser EMR-Schritt
<a name="step-type-serverless"></a>

Gehen Sie wie folgt vor, um Ihrer Pipeline einen serverlosen EMR-Schritt hinzuzufügen:
+ Öffnen Sie die Studio-Konsole, indem Sie den Anweisungen unter [Amazon SageMaker Studio starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html) folgen.
+ Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.
+ Wählen Sie **Erstellen** aus.
+ **Wählen Sie Leer.**
+ Wählen Sie in der linken Seitenleiste die Option **Daten verarbeiten** und ziehen Sie sie auf die Arbeitsfläche.
+ Wählen Sie auf der Arbeitsfläche den Schritt „**Daten verarbeiten**“ aus, den Sie hinzugefügt haben.
+ Wählen Sie in der rechten Seitenleiste unter Modus die Option **EMR (serverlos**) aus.
+ Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs **Einstellungen** und Details aus.

## Schritt für Notebook-Aufträge
<a name="step-type-notebook-job"></a>

Verwenden Sie a`NotebookJobStep`, um Ihren SageMaker Notebook-Job nicht interaktiv als Pipeline-Schritt auszuführen. Wenn Sie Ihre Pipeline in der drag-and-drop Pipelines-Benutzeroberfläche erstellen, verwenden Sie die, [Codeschritt ausführen](#step-type-executecode) um Ihr Notizbuch auszuführen. Weitere Informationen zu SageMaker Notebook-Jobs finden Sie unter[SageMaker Jobs im Notizbuch](notebook-auto-run.md).

A `NotebookJobStep` erfordert mindestens ein Eingabe-Notebook, eine Image-URI und einen Kernelnamen. Weitere Informationen zu den Anforderungen an die Notebook-Job-Schritte und anderen Parametern, die Sie zur Anpassung Ihres Schritts festlegen können, finden Sie unter [sagemaker.workflow.steps. NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep).

Im folgenden Beispiel werden `NotebookJobStep` Minimalargumente verwendet, um a zu definieren.

```
from sagemaker.workflow.notebook_job_step import NotebookJobStep


notebook_job_step = NotebookJobStep(
    input_notebook=input_notebook,
    image_uri=image_uri,
    kernel_name=kernel_name
)
```

Ihr `NotebookJobStep` Pipeline-Schritt wird wie ein SageMaker Notebook-Job behandelt. Verfolgen Sie daher den Ausführungsstatus im Dashboard für Notebook-Jobs auf der Benutzeroberfläche von Studio Classic, indem Sie dem `tags` Argument bestimmte Tags hinzufügen. Weitere Informationen zu den einzufügenden Tags finden Sie unter [Sehen Sie sich Ihre Notebook-Jobs im Studio-UI-Dashboard an](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash).

Wenn Sie Ihren Notebook-Job mit dem SageMaker Python-SDK planen, können Sie außerdem nur bestimmte Images angeben, um Ihren Notebook-Job auszuführen. Weitere Informationen finden Sie unter [Bildeinschränkungen für SageMaker AI Python SDK-Notebook-Jobs](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk).

## Schritt „Fehlschlagen“
<a name="step-type-fail"></a>

Verwenden Sie einen Fail-Schritt, um die Ausführung von Amazon SageMaker Pipelines zu beenden, wenn eine gewünschte Bedingung oder ein gewünschter Status nicht erreicht wird. Im Schritt „Fehlschlagen“ können Sie auch eine benutzerdefinierte Fehlermeldung eingeben, die die Ursache für den Ausführungsfehler der Pipeline angibt.

**Anmerkung**  
Wenn ein Schritt „Fehlschlagen“ und andere Pipeline-Schritte gleichzeitig ausgeführt werden, wird die Pipeline erst beendet, wenn alle gleichzeitigen Schritte abgeschlossen sind.

### Einschränkungen bei der Verwendung von Fail Step
<a name="step-type-fail-limitations"></a>
+ Sie können ein Schritt „Fehlschlagen“ nicht in die `DependsOn`-Liste anderer Schritte aufnehmen. Weitere Informationen finden Sie unter [Benutzerdefinierte Abhängigkeit zwischen Schritten](build-and-manage-steps.md#build-and-manage-custom-dependency).
+ Andere Schritte können sich nicht auf den Schritt „Fehlschlagen“ beziehen. Dies ist *immer* der letzte Schritt bei der Ausführung einer Pipeline.
+ Sie können eine Pipeline-Ausführung, die mit einem Schritt „Fehlschlagen“ endet, nicht wiederholen.

Sie können die Fehlermeldung zum Schritt „Fehlschlagen“ in Form einer statischen Textzeichenfolge erstellen. Alternativ können Sie auch [Pipeline-Parameter](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-parameters.html), eine [Join](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html?highlight=Join#sagemaker.workflow.functions.Join)-Operation oder andere [Schritteigenschaften](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#build-and-manage-properties) verwenden, um eine aussagekräftigere Fehlermeldung zu erstellen, wenn Sie das SDK verwenden.

------
#### [ Pipeline Designer ]

Gehen Sie wie folgt vor, um Ihrer Pipeline einen Fail-Schritt hinzuzufügen:

1. Öffnen Sie die Studio-Konsole, indem Sie den Anweisungen unter [Starten Sie Amazon SageMaker Studio](studio-updated-launch.md) folgen.

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. Wählen Sie **Erstellen** aus.

1. **Wählen Sie Leer.**

1. Wählen Sie in der linken Seitenleiste die Option **Fehlgeschlagen** aus und ziehen Sie den Vorgang auf die Leinwand.

1. Wählen Sie auf der Leinwand den hinzugefügten Schritt „**Fehlgeschlagen**“ aus.

1. Füllen Sie in der rechten Seitenleiste die Formulare auf den Tabs **Einstellungen** und **Details** aus. Informationen zu den Feldern in diesen Tabs finden Sie unter [sagemaker.workflow.fail\$1step. FailStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.fail_step.FailStep).

1. **Wenn die Arbeitsfläche einen Schritt enthält, der dem hinzugefügten Schritt „**Fehler**“ unmittelbar vorausgeht, klicken Sie auf den Schritt und ziehen Sie den Cursor von dem Schritt zum Schritt „Fehler“, um eine Kante zu erstellen.**

1. Wenn die Arbeitsfläche einen Schritt enthält, der unmittelbar auf den von Ihnen hinzugefügten Schritt „**Fehler**“ folgt, klicken Sie auf den Schritt und ziehen Sie den Cursor vom **Fail-Schritt** zu dem Schritt, um eine Kante zu erstellen.

------
#### [ SageMaker Python SDK ]

**Example**  
Der folgende Beispielcodeausschnitt verwendet eine `FailStep` mit Pipelineparametern `ErrorMessage` konfigurierte Option und eine `Join` Operation.  

```
from sagemaker.workflow.fail_step import FailStep
from sagemaker.workflow.functions import Join
from sagemaker.workflow.parameters import ParameterInteger

mse_threshold_param = ParameterInteger(name="MseThreshold", default_value=5)
step_fail = FailStep(
    name="AbaloneMSEFail",
    error_message=Join(
        on=" ", values=["Execution failed due to MSE >", mse_threshold_param]
    ),
)
```

------

# Integration hinzufügen
<a name="build-and-manage-steps-integration"></a>

MLflow Durch die Integration können Sie Pipelines verwenden MLflow , um einen Tracking-Server oder eine serverlose Anwendung auszuwählen, ein Experiment auszuwählen und Metriken zu protokollieren.

## Die wichtigsten Konzepte
<a name="add-integration-key-concepts"></a>

**Erstellung von Standard-Apps** — Eine MLflow Standardanwendung wird erstellt, wenn Sie den visuellen Pipeline-Editor aufrufen.

**Integrationspanel** — Es enthält ein neues Integrationsfenster MLflow, das Sie auswählen und konfigurieren können.

**App aktualisieren und testen** — Die Option, die ausgewählte Anwendung zu überschreiben und während der Pipeline-Ausführung zu experimentieren.

## Funktionsweise
<a name="add-integration-how-it-works"></a>
+ Gehen Sie zum **Pipeline Visual Editor**
+ Wählen Sie **in der Werkzeugleiste Integration**
+ Wählen Sie **MLflow** aus.
+ Konfiguriere die MLflow App und experimentiere

## Beispiel-Screenshots
<a name="add-integration-example-screenshots"></a>

Seitenbereich für Integrationen

![\[Die Beschreibung der Aufgaben.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-pipeline-1.png)


MLflow Konfiguration

![\[Die Beschreibung der Aufgaben.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-pipeline-2.png)


Wie überschreibt man das Experiment während der Pipeline-Ausführung

![\[Die Beschreibung der zu erledigenden Aufgaben.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/screenshot-pipeline-3.png)


## Eigenschaften-Schritt
<a name="build-and-manage-properties"></a>

Verwenden Sie das `properties`-Attribut, um Datenabhängigkeiten zwischen Schritten in der Pipeline hinzuzufügen. Pipelines verwenden diese Datenabhängigkeiten, um aus der Pipeline-Definition den DAG zu erstellen. Diese Eigenschaften können als Platzhalterwerte referenziert werden und werden zur Laufzeit aufgelöst. 

Das `properties` Attribut eines Pipelines-Schritts entspricht dem Objekt, das von einem `Describe` Aufruf für den entsprechenden SageMaker AI-Jobtyp zurückgegeben wurde. Für jeden Auftragstyp gibt der `Describe` Aufruf das folgende Antwortobjekt zurück:
+ `ProcessingStep` – [DescribeProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html)
+ `TrainingStep` – [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)
+ `TransformStep` – [DescribeTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTransformJob.html)

Informationen dazu, welche Eigenschaften für jeden Schritttyp bei der Erstellung von Datenabhängigkeiten referenzierbar sind, finden Sie unter *[Datenabhängigkeit — Eigenschaftsreferenz](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#data-dependency-property-reference)* im [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable).

## Schrittparallelität
<a name="build-and-manage-parallelism"></a>

Wenn ein Schritt nicht von einem anderen Schritt abhängt, wird er sofort nach der Ausführung der Pipeline ausgeführt. Die parallel Ausführung zu vieler Pipeline-Schritte kann jedoch schnell die verfügbaren Ressourcen erschöpfen. Steuern Sie die Anzahl der gleichzeitigen Schritte für eine Pipeline-Ausführung mit `ParallelismConfiguration`.

Im folgenden Beispiel wird `ParallelismConfiguration` verwendet, um die Grenze für gleichzeitige Schritte auf fünf zu setzen.

```
pipeline.create(
    parallelism_config=ParallelismConfiguration(5),
)
```

## Datenabhängigkeit zwischen Schritten
<a name="build-and-manage-data-dependency"></a>

Sie definieren die Struktur Ihrer DAG, indem Sie die Datenbeziehungen zwischen den Schritten angeben. Um Datenabhängigkeiten zwischen Schritten herzustellen, übergeben Sie die Eigenschaften eines Schritts als Eingabe an einen anderen Schritt in der Pipeline. Der Schritt, der die Eingabe empfängt, wird erst gestartet, nachdem der Schritt, der die Eingabe bereitstellt, abgeschlossen ist.

Eine Datenabhängigkeit verwendet die JsonPath Notation im folgenden Format. Dieses Format durchläuft die JSON-Eigenschaftendatei. Das bedeutet, dass Sie so viele *<property>* Instanzen wie nötig anhängen können, um die gewünschte verschachtelte Eigenschaft in der Datei zu erreichen. [Weitere Informationen zur JsonPath Notation finden Sie im JsonPath Repo.](https://github.com/json-path/JsonPath)

```
<step_name>.properties.<property>.<property>
```

Im Folgenden wird gezeigt, wie ein Amazon-S3-Bucket mithilfe der `ProcessingOutputConfig` Eigenschaft eines Verarbeitungsschritts angegeben wird.

```
step_process.properties.ProcessingOutputConfig.Outputs["train_data"].S3Output.S3Uri
```

Um die Datenabhängigkeit zu erstellen, übergeben Sie den Bucket wie folgt an einen Trainingsschritt.

```
from sagemaker.workflow.pipeline_context import PipelineSession

sklearn_train = SKLearn(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="CensusTrain",
    step_args=sklearn_train.fit(inputs=TrainingInput(
        s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
            "train_data"].S3Output.S3Uri
    ))
)
```

Informationen dazu, welche Eigenschaften für jeden Schritttyp bei der Erstellung von Datenabhängigkeiten referenzierbar sind, finden Sie unter *[Datenabhängigkeit — Eigenschaftsreferenz](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#data-dependency-property-reference)* im [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable).

## Benutzerdefinierte Abhängigkeit zwischen Schritten
<a name="build-and-manage-custom-dependency"></a>

Wenn Sie eine Datenabhängigkeit angeben, stellt Pipelines die Datenverbindung zwischen den Schritten bereit. Alternativ kann ein Schritt auf die Daten aus einem vorherigen Schritt zugreifen, ohne Pipelines direkt zu verwenden. In diesem Fall können Sie eine benutzerdefinierte Abhängigkeit erstellen, die Pipelines anweist, einen Schritt erst zu starten, nachdem ein anderer Schritt abgeschlossen ist. Sie erstellen eine benutzerdefinierte Abhängigkeit, indem Sie `DependsOn` -Attribut eines Schritts angeben.

Im Folgenden wird beispielsweise ein Schritt `C` definiert, der erst beginnt, wenn sowohl der Schritt `A` als auch der Schritt `B` abgeschlossen sind.

```
{
  'Steps': [
    {'Name':'A', ...},
    {'Name':'B', ...},
    {'Name':'C', 'DependsOn': ['A', 'B']}
  ]
}
```

Pipelines löst eine Validierungsausnahme aus, wenn die Abhängigkeit eine zyklische Abhängigkeit erzeugen würde.

Im folgenden Beispiel wird ein Trainingsschritt erstellt, der beginnt, nachdem ein Verarbeitungsschritt abgeschlossen ist.

```
processing_step = ProcessingStep(...)
training_step = TrainingStep(...)

training_step.add_depends_on([processing_step])
```

Im folgenden Beispiel wird ein Trainingsschritt erstellt, der erst beginnt, wenn zwei verschiedene Verarbeitungsschritte abgeschlossen sind.

```
processing_step_1 = ProcessingStep(...)
processing_step_2 = ProcessingStep(...)

training_step = TrainingStep(...)

training_step.add_depends_on([processing_step_1, processing_step_2])
```

Im Folgenden wird eine alternative Methode zum Erstellen der benutzerdefinierten Abhängigkeit beschrieben.

```
training_step.add_depends_on([processing_step_1])
training_step.add_depends_on([processing_step_2])
```

Im folgenden Beispiel wird ein Trainingsschritt erstellt, der Eingaben von einem Verarbeitungsschritt empfängt und darauf wartet, dass ein anderer Verarbeitungsschritt abgeschlossen ist.

```
processing_step_1 = ProcessingStep(...)
processing_step_2 = ProcessingStep(...)

training_step = TrainingStep(
    ...,
    inputs=TrainingInput(
        s3_data=processing_step_1.properties.ProcessingOutputConfig.Outputs[
            "train_data"
        ].S3Output.S3Uri
    )

training_step.add_depends_on([processing_step_2])
```

Das folgende Beispiel zeigt, wie eine Stringliste der benutzerdefinierten Abhängigkeiten eines Schritts abgerufen wird.

```
custom_dependencies = training_step.depends_on
```

## Benutzerdefinierte Bilder in einem Schritt
<a name="build-and-manage-images"></a>

 Sie können jedes der verfügbaren SageMaker AI [Deep Learning Container-Images](https://github.com/aws/deep-learning-containers/blob/master/available_images.md) verwenden, wenn Sie einen Schritt in Ihrer Pipeline erstellen. 

Sie können auch Ihren eigenen -Container mit Pipeline-Schritten verwenden. Da Sie in Studio Classic kein Image erstellen können, müssen Sie Ihr Image mit einer anderen Methode erstellen, bevor Sie es mit Pipelines verwenden können.

Um bei der Erstellung der Schritte für Ihre Pipeline Ihren eigenen Container zu verwenden, fügen Sie den Bild-URI in die Estimator-Definition ein. Weitere Informationen zur Verwendung Ihres eigenen Containers mit SageMaker KI finden Sie unter [Docker-Container mit SageMaker KI verwenden](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers.html).

# Lift-and-shift Python-Code mit dem @step -Decorator
<a name="pipelines-step-decorator"></a>

Der `@step` Decorator ist eine Funktion, die Ihren lokalen ML-Code (Machine Learning) in einen oder mehrere Pipeline-Schritte umwandelt. Sie können Ihre ML-Funktion so schreiben, wie Sie es für jedes ML-Projekt tun würden. Nachdem Sie die Funktion lokal oder als Trainingsaufgabe mit dem `@remote` Decorator getestet haben, können Sie sie in einen SageMaker KI-Pipeline-Schritt umwandeln, indem Sie einen Decorator hinzufügen. `@step` Anschließend können Sie die Ausgabe des mit `@step` -dekorierten Funktionen versehenen Funktionsaufrufs als Schritt an Pipelines übergeben, um eine Pipeline zu erstellen und auszuführen. Sie können eine Reihe von Funktionen mit dem `@step` Decorator verketten, um auch eine mehrstufige DAG-Pipeline (Directed Acyclic Graph) zu erstellen.

Die Konfiguration für die Verwendung des `@step`-Decorators entspricht der Konfiguration für die Verwendung des `@remote`-Decorators. Einzelheiten zur [Einrichtung der Umgebung und zur [Verwendung einer Konfigurationsdatei](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator-config.html) zum Festlegen von Standardeinstellungen finden Sie in der](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator.html#train-remote-decorator-env) Dokumentation zur Remote-Funktion. [Weitere Informationen zum `@step` Decorator finden Sie unter sagemaker.workflow.function\$1step.step.](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.function_step.step)

Um Beispiel-Notebooks anzuzeigen, die die Verwendung von `@step`-Decorator veranschaulichen, siehe [@step decorator sample notebooks](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/step-decorator).

In den folgenden Abschnitten wird erklärt, wie Sie Ihren lokalen ML-Code mit einem `@step` Decorator annotieren können, um einen Schritt zu erstellen, mithilfe des Schritts eine Pipeline zu erstellen und auszuführen und das Erlebnis an Ihren Anwendungsfall anzupassen.

**Topics**
+ [Erstellen Sie eine Pipeline mit `@step` -dekorierten Funktionen](pipelines-step-decorator-create-pipeline.md)
+ [Ausführen Sie eine Pipeline](pipelines-step-decorator-run-pipeline.md)
+ [Konfigurieren Ihrer Pipeline](pipelines-step-decorator-cfg-pipeline.md)
+ [Bewährte Methoden](pipelines-step-decorator-best.md)
+ [Einschränkungen](pipelines-step-decorator-limit.md)

# Erstellen Sie eine Pipeline mit `@step` -dekorierten Funktionen
<a name="pipelines-step-decorator-create-pipeline"></a>

Sie können eine Pipeline erstellen, indem Sie Python-Funktionen mithilfe des `@step` Decorators in Pipeline-Schritte konvertieren, Abhängigkeiten zwischen diesen Funktionen erstellen, um einen Pipeline-Graphen (oder einen gerichteten azyklischen Graphen (DAG)) zu erstellen, und die Blattknoten dieses Graphen als Liste von Schritten an die Pipeline übergeben. In den folgenden Abschnitten wird dieses Verfahren anhand von Beispielen ausführlich erläutert.

**Topics**
+ [Konvertiert eine Funktion in einen Schritt](#pipelines-step-decorator-run-pipeline-convert)
+ [Erstellen Sie Abhängigkeiten zwischen den Schritten](#pipelines-step-decorator-run-pipeline-link)
+ [Wird `ConditionStep` zusammen mit Schritten verwendet, die mit `@step` -verziert sind](#pipelines-step-decorator-condition)
+ [Definieren Sie eine Pipeline anhand der `DelayedReturn` Ausgabe von Schritten](#pipelines-step-define-delayed)
+ [Erstellen Sie eine Pipeline](#pipelines-step-decorator-pipeline-create)

## Konvertiert eine Funktion in einen Schritt
<a name="pipelines-step-decorator-run-pipeline-convert"></a>

Um einen Schritt mit dem `@step`-Decorator zu erstellen, kommentieren Sie die Funktion mit `@step`. Das folgende Beispiel zeigt eine `@step` mit -dekorierte Funktion zur Vorverarbeitung der Daten.

```
from sagemaker.workflow.function_step import step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe
    
step_process_result = preprocess(raw_data)
```

Wenn Sie eine `@step` mit -dekorierte Funktion aufrufen, gibt SageMaker AI eine `DelayedReturn` Instanz zurück, anstatt die Funktion auszuführen. Eine `DelayedReturn` Instance ist ein Proxy für die tatsächliche Rückgabe dieser Funktion. Die `DelayedReturn` Instance kann als Argument an eine andere Funktion oder als Schritt direkt an eine Pipeline-Instance übergeben werden. [Informationen zur `DelayedReturn` Klasse finden Sie unter sagemaker.workflow.function\$1step. DelayedReturn](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.function_step.DelayedReturn).

## Erstellen Sie Abhängigkeiten zwischen den Schritten
<a name="pipelines-step-decorator-run-pipeline-link"></a>

Wenn Sie eine Abhängigkeit zwischen zwei Schritten erstellen, stellen Sie eine Verbindung zwischen den Schritten in Ihrem Pipeline-Diagramm her. In den folgenden Abschnitten werden mehrere Möglichkeiten vorgestellt, wie Sie eine Abhängigkeit zwischen Ihren Pipeline-Schritten herstellen können.

### Datenabhängigkeiten durch Eingabeargumente
<a name="pipelines-step-decorator-run-pipeline-link-interstep"></a>

Wenn die `DelayedReturn` Ausgabe einer Funktion als Eingabe an eine andere Funktion übergeben wird, entsteht automatisch eine Datenabhängigkeit in der Pipeline-DAG. Im folgenden Beispiel wird durch die Übergabe der `DelayedReturn` Ausgabe der `preprocess` Funktion an die `train` Funktion eine Abhängigkeit zwischen `preprocess` und erzeugt`train`.

```
from sagemaker.workflow.function_step import step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe

@step
def train(training_data):
    ...
    return trained_model

step_process_result = preprocess(raw_data)    
step_train_result = train(step_process_result)
```

Das vorherige Beispiel definiert eine Trainingsfunktion, die mit ausgestattet ist`@step`. Wenn diese Funktion aufgerufen wird, erhält sie die `DelayedReturn` Ausgabe des Vorverarbeitungs-Pipeline-Schritts als Eingabe. Beim Aufrufen der Trainingsfunktion wird eine weitere `DelayedReturn`-Instance zurückgegeben. Diese Instance enthält die Informationen zu allen zuvor in dieser Funktion definierten Schritten (d. h. dem `preprocess`-Schritt in diesem Beispiel), die die Pipeline-DAG bilden.

Im vorherigen Beispiel gibt die `preprocess` Funktion einen einzelnen Wert zurück. Für komplexere Rückgabetypen wie Listen oder Tupel, siehe [Einschränkungen](pipelines-step-decorator-limit.md).

### Definieren von benutzerdefinierten Abhängigkeiten
<a name="pipelines-step-decorator-run-pipeline-link-custom"></a>

Im vorherigen Beispiel hat die `train` Funktion die `DelayedReturn` Ausgabe von empfangen `preprocess` und eine Abhängigkeit erstellt. Wenn Sie die Abhängigkeit explizit definieren möchten, ohne die Ausgabe des vorherigen Schritts zu übergeben, verwenden Sie die `add_depends_on` Funktion mit dem Schritt. Sie können die `get_step()` Funktion verwenden, um den zugrunde liegenden Schritt aus seiner `DelayedReturn` Instance abzurufen, und dann `add_depends_on` \$1on mit der Abhängigkeit als Eingabe aufrufen. Die `get_step()` Funktionsdefinition finden Sie unter [sagemaker.workflow.step\$1outputs.get\$1step](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_outputs.get_step). Das folgende Beispiel zeigt, wie Sie eine Abhängigkeit zwischen `preprocess` und `train` mithilfe von `get_step()` und erstellen`add_depends_on()`.

```
from sagemaker.workflow.step_outputs import get_step

@step
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    processed_data = ..
    return s3.upload(processed_data)

@step
def train():
    training_data = s3.download(....)
    ...
    return trained_model

step_process_result = preprocess(raw_data)    
step_train_result = train()

get_step(step_train_result).add_depends_on([step_process_result])
```

### Übergeben Sie Daten an und von einer `@step` mit -dekorierten Funktion an einen herkömmlichen Pipeline-Schritt
<a name="pipelines-step-decorator-run-pipeline-link-pass"></a>

Sie können eine Pipeline erstellen, die einen Schritt mit einer `@step` Markierung und einen herkömmlichen Pipeline-Schritt umfasst und Daten zwischen diesen weiterleitet. Sie können sie beispielsweise verwenden, um die Daten `ProcessingStep` zu verarbeiten und das Ergebnis an die Trainingsfunktion `@step` mit -dekoriertem Dekor weiterzuleiten. Im folgenden Beispiel verweist ein `@step` mit -dekorierter Trainingsschritt auf die Ausgabe eines Verarbeitungsschritts.

```
# Define processing step

from sagemaker.sklearn.processing import SKLearnProcessor
from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

sklearn_processor = SKLearnProcessor(
    framework_version='1.2-1',
    role='arn:aws:iam::123456789012:role/SagemakerExecutionRole',
    instance_type='ml.m5.large',
    instance_count='1',
)

inputs = [
    ProcessingInput(source=input_data, destination="/opt/ml/processing/input"),
]
outputs = [
    ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
    ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
    ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
]

process_step = ProcessingStep(
    name="MyProcessStep",
    step_args=sklearn_processor.run(inputs=inputs, outputs=outputs,code='preprocessing.py'),
)
```

```
# Define a @step-decorated train step which references the 
# output of a processing step

@step
def train(train_data_path, test_data_path):
    ...
    return trained_model
    
step_train_result = train(
   process_step.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
   process_step.properties.ProcessingOutputConfig.Outputs["test"].S3Output.S3Uri,
)
```

## Wird `ConditionStep` zusammen mit Schritten verwendet, die mit `@step` -verziert sind
<a name="pipelines-step-decorator-condition"></a>

Pipelines unterstützt eine `ConditionStep` Klasse, die die Ergebnisse der vorherigen Schritte auswertet, um zu entscheiden, welche Maßnahmen in der Pipeline ergriffen werden sollen. Sie können es auch `ConditionStep` mit einem Schritt verwenden, der mit `@step` einem Symbol versehen ist. Um die Ausgabe eines mit `@step`-dekorierten Schritts mit zu verwenden, geben Sie die Ausgabe dieses Schritts als Argument für `ConditionStep` ein. Im folgenden Beispiel erhält der Bedingungsschritt die Ausgabe des Bewertungsschritts für das `@step` mit -dekorierte Modell.

```
# Define steps

@step(name="evaluate")
def evaluate_model():
    # code to evaluate the model
    return {
        "rmse":rmse_value
    }
    
@step(name="register")
def register_model():
    # code to register the model
    ...
```

```
# Define ConditionStep

from sagemaker.workflow.condition_step import ConditionStep
from sagemaker.workflow.conditions import ConditionGreaterThanOrEqualTo
from sagemaker.workflow.fail_step import FailStep

conditionally_register = ConditionStep(
    name="conditional_register",
    conditions=[
        ConditionGreaterThanOrEqualTo(
            # Output of the evaluate step must be json serializable
            left=evaluate_model()["rmse"],  # 
            right=5,
        )
    ],
    if_steps=[FailStep(name="Fail", error_message="Model performance is not good enough")],
    else_steps=[register_model()],
)
```

## Definieren Sie eine Pipeline anhand der `DelayedReturn` Ausgabe von Schritten
<a name="pipelines-step-define-delayed"></a>

Sie definieren eine Pipeline auf die gleiche Weise, unabhängig davon, ob Sie einen `@step` Decorator verwenden oder nicht. Wenn Sie eine `DelayedReturn` Instance an Ihre Pipeline übergeben, müssen Sie keine vollständige Liste der Schritte zum Erstellen der Pipeline übergeben. Das SDK leitet anhand der von Ihnen definierten Abhängigkeiten automatisch die vorherigen Schritte ab. Alle vorherigen Schritte der `Step` Objekte, die Sie an die Pipeline übergeben haben, oder der `DelayedReturn` Objekte, sind im Pipeline-Diagramm enthalten. Im folgenden Beispiel empfängt die Pipeline das `DelayedReturn` Objekt für die `train` Funktion. SageMaker AI fügt den `preprocess` Schritt als vorherigen Schritt von `train` zum Pipeline-Diagramm hinzu.

```
from sagemaker.workflow.pipeline import Pipeline

pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_train_result],
    sagemaker_session=<sagemaker-session>,
)
```

Wenn zwischen den Schritten keine Daten oder benutzerdefinierten Abhängigkeiten bestehen und Sie mehrere Schritte parallel ausführen, hat das Pipeline-Diagramm mehr als einen Blattknoten. Übergeben Sie all diese Blattknoten in einer Liste an das `steps` Argument in Ihrer Pipeline-Definition, wie im folgenden Beispiel gezeigt:

```
@step
def process1():
    ...
    return data
    
@step
def process2():
   ...
   return data
   
step_process1_result = process1()
step_process2_result = process2()

pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_process1_result, step_process2_result],
    sagemaker_session=sagemaker-session,
)
```

Wenn die Pipeline läuft, laufen beide Schritte parallel.

Sie übergeben nur die Blattknoten des Diagramms an die Pipeline, da die Blattknoten Informationen über alle vorherigen Schritte enthalten, die durch Daten oder benutzerdefinierte Abhängigkeiten definiert wurden. Beim Kompilieren der Pipeline leitet SageMaker KI auch von allen nachfolgenden Schritten ab, die den Pipeline-Graphen bilden, und fügt jeden von ihnen als separaten Schritt zur Pipeline hinzu.

## Erstellen Sie eine Pipeline
<a name="pipelines-step-decorator-pipeline-create"></a>

Erstellen Sie eine Pipeline durch Aufrufen`pipeline.create()`, wie im folgenden Ausschnitt gezeigt. [Einzelheiten dazu finden Sie unter `create()` SageMaker.Workflow.Pipeline.Pipeline.Create.](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.create)

```
role = "pipeline-role"
pipeline.create(role)
```

Wenn Sie aufrufen`pipeline.create()`, kompiliert SageMaker AI alle Schritte, die als Teil der Pipeline-Instanz definiert sind. SageMaker KI lädt die serialisierte Funktion, die Argumente und alle anderen schrittbezogenen Artefakte auf Amazon S3 hoch.

Die Daten befinden sich im S3-Bucket gemäß der folgenden Struktur:

```
s3_root_uri/
    pipeline_name/
        sm_rf_user_ws/
            workspace.zip  # archive of the current working directory (workdir)
        step_name/
            timestamp/
                arguments/                # serialized function arguments
                function/                 # serialized function
                pre_train_dependencies/   # any dependencies and pre_execution scripts provided for the step       
        execution_id/
            step_name/
                results     # returned output from the serialized function including the model
```

`s3_root_uri`ist in der SageMaker AI-Konfigurationsdatei definiert und gilt für die gesamte Pipeline. Wenn nicht definiert, wird der SageMaker Standard-AI-Bucket verwendet.

**Anmerkung**  
Jedes Mal, wenn SageMaker AI eine Pipeline kompiliert, speichert SageMaker AI die serialisierten Funktionen, Argumente und Abhängigkeiten der Schritte in einem Ordner, der mit der aktuellen Uhrzeit versehen ist. Dies geschieht jedes Mal, wenn Sie `pipeline.create()`, `pipeline.update()`, `pipeline.upsert()` oder `pipeline.definition()` ausführen.

# Ausführen Sie eine Pipeline
<a name="pipelines-step-decorator-run-pipeline"></a>

Auf der folgenden Seite wird beschrieben, wie Sie eine Pipeline mit Amazon SageMaker Pipelines ausführen, entweder mit SageMaker KI-Ressourcen oder lokal.

Starten Sie einen neuen Pipeline-Lauf mit der `pipeline.start()` Funktion wie bei einem herkömmlichen SageMaker KI-Pipeline-Lauf. [Informationen zu der `start()` Funktion finden Sie unter SageMaker.Workflow.Pipeline.Pipeline.Start.](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.start)

**Anmerkung**  
Ein mit dem `@step` Decorateur definierter Schritt wird als Trainingsjob ausgeführt. Beachten Sie daher folgende Einschränkungen:  
Limits für Instances und Trainingsjobs in Ihren Konten. Aktualisieren Sie Ihre Limits entsprechend, um Probleme mit der Drosselung oder dem Ressourcenlimit zu vermeiden.
Die monetären Kosten, die mit jedem anstehenden Trainingsschritt verbunden sind. Weitere Informationen finden Sie unter [ SageMaker Amazon-Preise](https://aws.amazon.com/sagemaker/pricing/).

## Rufen Sie die Ergebnisse einer lokal ausgeführten Pipeline ab
<a name="pipelines-step-decorator-run-pipeline-retrieve"></a>

Um das Ergebnis eines beliebigen Schritts eines Pipeline-Laufs anzuzeigen, verwenden Sie [execution.result ()](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline._PipelineExecution.result           ), wie im folgenden Codeausschnitt gezeigt:

```
execution = pipeline.start()
execution.result(step_name="train")
```

**Anmerkung**  
Pipelines unterstützt `execution.result()` im lokalen Modus nicht.

Sie können nur jeweils Ergebnisse für einen Schritt abrufen. Wenn der Schrittname von SageMaker AI generiert wurde, können Sie den Schrittnamen abrufen, indem Sie `list_steps` wie folgt aufrufen:

```
execution.list_step()
```

## Ausführen Sie eine Pipeline lokal
<a name="pipelines-step-decorator-run-pipeline-local"></a>

Sie können eine Pipeline mit mit `@step` -dekorierten Schritten wie bei herkömmlichen Pipeline-Schritten lokal ausführen. Einzelheiten zu Pipeline-Läufen im lokalen Modus finden Sie unter[Führen Sie Pipelines im lokalen Modus aus](pipelines-local-mode.md). Um den lokalen Modus zu verwenden, fügen Sie Ihrer Pipeline-Definition `LocalPipelineSession` statt a ein `SageMakerSession` hinzu, wie im folgenden Beispiel gezeigt:

```
from sagemaker.workflow.function_step import step
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.pipeline_context import LocalPipelineSession

@step
def train():
    training_data = s3.download(....)
    ...
    return trained_model
    
step_train_result = train()

local_pipeline_session = LocalPipelineSession()

local_pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[step_train_result],
    sagemaker_session=local_pipeline_session # needed for local mode
)

local_pipeline.create(role_arn="role_arn")

# pipeline runs locally
execution = local_pipeline.start()
```

# Konfigurieren Ihrer Pipeline
<a name="pipelines-step-decorator-cfg-pipeline"></a>

Es wird empfohlen, die SageMaker AI-Konfigurationsdatei zu verwenden, um die Standardeinstellungen für die Pipeline festzulegen. Informationen zur SageMaker AI-Konfigurationsdatei finden Sie unter [Konfiguration und Verwendung von Standardwerten mit dem SageMaker Python-SDK](https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk). Jede Konfiguration, die der Konfigurationsdatei hinzugefügt wird, gilt für alle Schritte in der Pipeline. Wenn Sie die Optionen für einen der Schritte überschreiben möchten, geben Sie neue Werte in den `@step` Decorator-Argumenten an. Das folgende Thema beschreibt, wie eine Konfigurationsdatei eingerichtet wird.

Die Konfiguration des `@step` Decorators in der Konfigurationsdatei ist identisch mit der Konfiguration des `@remote` Decorators. Verwenden Sie den `Pipeline` Abschnitt im folgenden Ausschnitt, um den ARN der Pipeline-Rolle und die Pipeline-Tags in der Konfigurationsdatei einzurichten:

```
SchemaVersion: '1.0'
SageMaker:
  Pipeline:
    RoleArn: 'arn:aws:iam::555555555555:role/IMRole'
    Tags:
    - Key: 'tag_key'
      Value: 'tag_value'
```

Die meisten Standardeinstellungen, die Sie in der Konfigurationsdatei festlegen können, können Sie auch überschreiben, indem Sie dem `@step`-Decorator neue Werte übergeben. Sie können beispielsweise den Instance-Typ überschreiben, den Sie in der Konfigurationsdatei für Ihren Vorverarbeitungsschritt festgelegt haben, wie im folgenden Beispiel dargestellt:

```
@step(instance_type="ml.m5.large")
def preprocess(raw_data):
    df = pandas.read_csv(raw_data)
    ...
    return procesed_dataframe
```

Einige Argumente sind nicht Teil der `@step` Decorator-Parameterliste — sie können nur über die AI-Konfigurationsdatei für die gesamte Pipeline konfiguriert werden. SageMaker Sie sind wie folgt aufgeführt:
+ `sagemaker_session`(`sagemaker.session.Session`): Die zugrunde liegende SageMaker KI-Sitzung, an die SageMaker KI Serviceanrufe delegiert. Falls nicht angegeben, wird eine Sitzung mit einer Standardkonfiguration wie folgt erstellt:

  ```
  SageMaker:
    PythonSDK:
      Modules:
        Session:
          DefaultS3Bucket: 'default_s3_bucket'
          DefaultS3ObjectKeyPrefix: 'key_prefix'
  ```
+ `custom_file_filter`(`CustomFileFilter)`: Ein `CustomFileFilter` Objekt, das die lokalen Verzeichnisse und Dateien angibt, die in den Pipeline-Schritt aufgenommen werden sollen. Falls nicht angegeben, ist dieser Wert standardmäßig `None`. Damit `custom_file_filter` wirksam wird, müssen Sie `IncludeLocalWorkdir` auf `True` festlegen. Das folgende Beispiel zeigt eine Konfiguration, die alle Notebookdateien sowie die genannten `data` Dateien und Verzeichnisse ignoriert.

  ```
  SchemaVersion: '1.0'
  SageMaker:
    PythonSDK:
      Modules:
        RemoteFunction:
          IncludeLocalWorkDir: true
          CustomFileFilter: 
            IgnoreNamePatterns: # files or directories to ignore
            - "*.ipynb" # all notebook files
            - "data" # folder or file named "data"
  ```

  Weitere Informationen zur Verwendung von `IncludeLocalWorkdir` mit finden Sie `CustomFileFilter` unter[Verwendung von modularem Code mit dem @remote Decorator](train-remote-decorator-modular.md).
+ `s3_root_uri (str)`: Der Amazon S3 S3-Stammordner, in den SageMaker AI die Codearchive und Daten hochlädt. Falls nicht angegeben, wird der SageMaker Standard-AI-Bucket verwendet.
+ `s3_kms_key (str)`: Der Schlüssel, der zum Verschlüsseln der Eingabe- und Ausgabedaten verwendet wird. Sie können dieses Argument nur in der SageMaker AI-Konfigurationsdatei konfigurieren und das Argument gilt für alle in der Pipeline definierten Schritte. Wenn keine Angabe erfolgt, lautet der Standardwert `None`. Im folgenden Codeausschnitt finden Sie ein Beispiel für eine S3-KMS-Schlüsselkonfiguration:

  ```
  SchemaVersion: '1.0'
  SageMaker:
    PythonSDK:
      Modules:
        RemoteFunction:
          S3KmsKeyId: 's3kmskeyid'
          S3RootUri: 's3://amzn-s3-demo-bucket/my-project
  ```

# Bewährte Methoden
<a name="pipelines-step-decorator-best"></a>

In den folgenden Abschnitten finden Sie bewährte Methoden für die Verwendung des `@step` Decorators für Ihre Pipeline-Schritte.

## Verwenden Sie Warm-Pools
<a name="pipelines-step-decorator-best-warmpool"></a>

Verwenden Sie für schnellere Pipeline-Step-Läufe die Funktion zum Warmpooling, die für Trainingsaufgaben bereitgestellt wird. Sie können die Warm-Pool-Funktionalität aktivieren, indem Sie dem `@step` Decorator das `keep_alive_period_in_seconds` Argument zur Verfügung stellen, wie im folgenden Codeausschnitt gezeigt:

```
@step(
   keep_alive_period_in_seconds=900
)
```

Weitere Informationen zu Warm-Pools finden Sie unter [SageMaker KI-verwaltete warme Pools](train-warm-pools.md). 

## Strukturieren Ihres Verzeichnisses
<a name="pipelines-step-decorator-best-dir"></a>

Es wird empfohlen, bei der Verwendung des `@step` Decorators Codemodule zu verwenden. Platzieren Sie das `pipeline.py` Modul, in dem Sie die Schrittfunktionen aufrufen und die Pipeline definieren, im Stammverzeichnis des Workspace. Die empfohlene Struktur sieht wie folgt aus:

```
.
├── config.yaml # the configuration file that define the infra settings
├── requirements.txt # dependencies
├── pipeline.py  # invoke @step-decorated functions and define the pipeline here
├── steps/
| ├── processing.py
| ├── train.py
├── data/
├── test/
```

# Einschränkungen
<a name="pipelines-step-decorator-limit"></a>

In den folgenden Abschnitten werden die Einschränkungen beschrieben, die Sie beachten sollten, wenn Sie den `@step` Decorator für Ihre Pipeline-Schritte verwenden.

## Einschränkungen von Funktionsargumenten
<a name="pipelines-step-decorator-arg"></a>

Wenn Sie ein Eingabeargument an die `@step` mit -dekorierte Funktion übergeben, gelten die folgenden Einschränkungen:
+ Sie können die Objekte`DelayedReturn`, `Properties` (von Schritten anderer Typen) und `ExecutionVariable` -Objekte als `Parameter` Argumente an `@step` mit -dekorierte Funktionen übergeben. Mit `@step` -dekorierten Funktionen werden `Join` Objekte jedoch nicht als `JsonGet` Argumente unterstützt.
+ Sie können von einer `@step` Funktion aus nicht direkt auf eine Pipeline-Variable zugreifen. Das folgende Beispiel erzeugt einen Fehler:

  ```
  param = ParameterInteger(name="<parameter-name>", default_value=10)
  
  @step
  def func():
      print(param)
  
  func() # this raises a SerializationError
  ```
+ Sie können eine Pipeline-Variable nicht in einem anderen Objekt verschachteln und an eine `@step` Funktion übergeben. Das folgende Beispiel erzeugt einen Fehler:

  ```
  param = ParameterInteger(name="<parameter-name>", default_value=10)
  
  @step
  def func(arg):
      print(arg)
  
  func(arg=(param,)) # this raises a SerializationError because param is nested in a tuple
  ```
+ Da die Ein- und Ausgaben einer Funktion serialisiert sind, gibt es Einschränkungen hinsichtlich der Art der Daten, die als Eingabe oder Ausgabe von einer Funktion übergeben werden können. Weitere Informationen finden Sie im Abschnitt *Datenserialisierung und Deserialisierung* von[Aufrufen einer Remote-Funktion](train-remote-decorator-invocation.md). Die gleichen Einschränkungen gelten für `@step`-dekorierte Funktionen.
+ Objekte, die einen Boto-Client enthalten, können nicht serialisiert werden. Daher können Sie solche Objekte nicht als Eingabe an eine mit `@step`-dekorierte Funktion übergeben oder als Ausgabe von einer solchen Funktion erhalten. Beispielsweise `Processor` können SageMaker Python-SDK-Clientklassen wie `Estimator``Predictor`, und nicht serialisiert werden.

## Funktionsimporte
<a name="pipelines-step-decorator-best-import"></a>

Sie sollten die Bibliotheken importieren, die für den Schritt innerhalb und nicht außerhalb der Funktion erforderlich sind. Wenn Sie sie auf globaler Ebene importieren, riskieren Sie bei der Serialisierung der Funktion eine Importkollision. `sklearn.pipeline.Pipeline` könnte beispielsweise mit `sagemaker.workflow.pipeline.Pipeline` überschrieben werden.

## Verweisen auf untergeordnete Elemente des Funktionsrückgabewerts
<a name="pipelines-step-decorator-best-child"></a>

Wenn Sie auf untergeordnete Elemente des Rückgabewerts einer `@step` mit -dekorierten Funktion verweisen, gelten die folgenden Einschränkungen:
+ Sie können auf die untergeordneten Elemente verweisen, `[]` wenn das `DelayedReturn` Objekt ein Tupel, eine Liste oder ein Diktat darstellt, wie im folgenden Beispiel gezeigt:

  ```
  delayed_return[0]
  delayed_return["a_key"]
  delayed_return[1]["a_key"]
  ```
+ Sie können eine Tupel- oder Listenausgabe nicht entpacken, da die genaue Länge des zugrunde liegenden Tupels oder der zugrunde liegenden Liste nicht bekannt sein kann, wenn Sie die Funktion aufrufen. Das folgende Beispiel erzeugt einen Fehler:

  ```
  a, b, c = func() # this raises ValueError
  ```
+ Sie können nicht über ein `DelayedReturn`-Objekt iterieren. Das folgende Beispiel löst einen Fehler aus:

  ```
  for item in func(): # this raises a NotImplementedError
  ```
+ Sie können nicht mit '`.`' auf beliebige untergeordnete Elemente verweisen. Das folgende Beispiel erzeugt einen Fehler:

  ```
  delayed_return.a_child # raises AttributeError
  ```

## Bestehende Pipeline-Funktionen, die nicht unterstützt werden
<a name="pipelines-step-decorator-best-unsupported"></a>

Sie können den `@step` Decorator nicht mit den folgenden Pipeline-Funktionen verwenden:
+ [Zwischenspeichern eines Pipeline-Schritts](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-caching.html)
+ [Eigenschaftendatei](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-propertyfile.html#build-and-manage-propertyfile-property)

# Daten zwischen Schritten weitergeben
<a name="build-and-manage-propertyfile"></a>

Beim Erstellen von Pipelines mit Amazon SageMaker Pipelines müssen Sie möglicherweise Daten von einem Schritt zum nächsten weitergeben. Beispielsweise möchten Sie möglicherweise die durch einen Trainingsschritt generierten Modellartefakte als Eingabe für einen Schritt zur Modellbewertung oder -bereitstellung verwenden. Sie können diese Funktionalität verwenden, um voneinander abhängige Pipeline-Schritte zu erstellen und Ihre ML-Workflows zu erstellen.

Wenn Sie Informationen aus der Ausgabe eines Pipeline-Schritts abrufen müssen, können Sie `JsonGet` verwenden. `JsonGet` unterstützt Sie beim Extrahieren von Informationen aus Amazon S3 oder Eigenschaftsdateien. In den folgenden Abschnitten werden Methoden beschrieben, mit denen Sie Schrittausgaben extrahieren können`JsonGet`.

## Übergeben Sie Daten zwischen Schritten mit Amazon S3
<a name="build-and-manage-propertyfile-s3"></a>

Sie können `JsonGet` in a verwenden`ConditionStep`, um die JSON-Ausgabe direkt von Amazon S3 abzurufen. Der Amazon-S3-URI kann eine `Std:Join`-Funktion sein, die primitive Zeichenketten, Pipeline-Ausführungsvariablen oder Pipeline-Parameter enthält. Das folgende Beispiel zeigt, wie Sie `JsonGet` in einem `ConditionStep` verwenden können.

```
# Example json file in s3 bucket generated by a processing_step
{
   "Output": [5, 10]
}

cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name="<step-name>",
        s3_uri="<s3-path-to-json>",
        json_path="Output[1]"
    ),
    right=6.0
)
```

Wenn Sie `JsonGet` mit einem Amazon-S3-Pfad im Bedingungsschritt verwenden, müssen Sie explizit eine Abhängigkeit zwischen dem Bedingungsschritt und dem Schritt, der die JSON-Ausgabe generiert, hinzufügen. Im folgenden Beispiel wird der Bedingungsschritt mit einer Abhängigkeit vom Verarbeitungsschritt erstellt:

```
cond_step = ConditionStep(
        name="<step-name>",
        conditions=[cond_lte],
        if_steps=[fail_step],
        else_steps=[register_model_step],
        depends_on=[processing_step],
)
```

## Übergeben Sie Daten mit Eigenschaftendateien zwischen Schritten
<a name="build-and-manage-propertyfile-property"></a>

Verwenden Sie Eigenschaftendateien, um Informationen aus der Ausgabe eines Verarbeitungsschritts zu speichern. Dies ist besonders nützlich, wenn die Ergebnisse eines Verarbeitungsschritts analysiert werden, um zu entscheiden, wie ein bedingter Schritt ausgeführt werden soll. Die `JsonGet` Funktion verarbeitet eine Eigenschaftendatei und ermöglicht es Ihnen, die Eigenschaften-JSON-Datei mithilfe der JsonPath Notation abzufragen. Weitere Informationen zur JsonPath Notation finden Sie im [JsonPath Repo](https://github.com/json-path/JsonPath).

Um eine Eigenschaftendatei für die spätere Verwendung zu speichern, müssen Sie zunächst eine `PropertyFile` Instance mit dem folgenden Format erstellen. Der `path` Parameter ist der Name der JSON-Datei, in der die Eigenschaftendatei gespeichert wird. Jedes `output_name` muss mit dem `output_name` des `ProcessingOutput` übereinstimmen, das Sie in Ihrem Verarbeitungsschritt definieren. Dadurch kann die Eigenschaftendatei die `ProcessingOutput` in dem Schritt erfassen.

```
from sagemaker.workflow.properties import PropertyFile

<property_file_instance> = PropertyFile(
    name="<property_file_name>",
    output_name="<processingoutput_output_name>",
    path="<path_to_json_file>"
)
```

Wenn Sie Ihre `ProcessingStep` Instance erstellen, fügen Sie den `property_files` Parameter hinzu, um alle Parameterdateien aufzulisten, die der Amazon SageMaker Pipelines-Service indizieren muss. Dadurch wird die Eigenschaftendatei für die spätere Verwendung gespeichert.

```
property_files=[<property_file_instance>]
```

Um Ihre Eigenschaftsdatei in einem Bedingungsschritt zu verwenden, fügen Sie `property_file` zu der Bedingung hinzu, die Sie an Ihren Bedingungsschritt übergeben, wie im folgenden Beispiel gezeigt, um die JSON-Datei mit dem Parameter `json_path` nach der gewünschten Eigenschaft abzufragen.

```
cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name=step_eval.name,
        property_file=<property_file_instance>,
        json_path="mse"
    ),
    right=6.0
)
```

Ausführlichere Beispiele finden Sie unter *[Property File](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#property-file)* im [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable).

# Zwischenspeichern von Pipeline-Schritten
<a name="pipelines-caching"></a>

In Amazon SageMaker Pipelines können Sie Step-Caching verwenden, um beim erneuten Ausführen von Pipelines Zeit und Ressourcen zu sparen. Beim Step-Caching wird die Ausgabe einer vorherigen erfolgreichen Ausführung eines Schritts wiederverwendet (anstatt sie erneut zu berechnen), wenn der Schritt dieselbe Konfiguration und dieselben Eingaben hat. Auf diese Weise können Sie bei Pipeline-Wiederholungen mit identischen Parametern konsistente Ergebnisse erzielen. Im folgenden Thema erfahren Sie, wie Sie das Step-Caching für Ihre Pipelines konfigurieren und aktivieren.

Wenn Sie das Zwischenspeichern von Schrittsignaturen verwenden, versucht Pipelines, eine frühere Ausführung Ihres aktuellen Pipeline-Schritts mit denselben Werten für bestimmte Attribute zu finden. Falls gefunden, überträgt Pipelines die Ausgaben der vorherigen Ausführung, anstatt den Schritt erneut zu berechnen. Die geprüften Attribute sind spezifisch für den Schritttyp und werden in [Standard-Cache-Schlüsselattribute nach Pipeline-Schritttyp](pipelines-default-keys.md) aufgeführt.

Sie müssen sich für das Step-Caching entscheiden – es ist standardmäßig deaktiviert. Wenn Sie das Step-Caching aktivieren, müssen Sie auch ein Timeout definieren. Dieses Timeout definiert, wie alt ein früherer Lauf sein kann, damit er als Kandidat für die Wiederverwendung in Frage kommt.

Beim Step-Caching werden nur erfolgreiche Läufe berücksichtigt – fehlgeschlagene Läufe werden niemals wiederverwendet. Wenn innerhalb des Timeout-Zeitraums mehrere erfolgreiche Ausführungen existieren, verwendet Pipelines das Ergebnis für die letzte erfolgreiche Ausführung. Wenn im Timeout-Zeitraum keine erfolgreichen Ausführungen übereinstimmen, führt Pipelines den Schritt erneut aus. Wenn der Executor eine vorherige Ausführung findet, die die Kriterien erfüllt, aber noch läuft, werden beide Schritte weiter ausgeführt und der Cache wird aktualisiert, wenn sie erfolgreich sind.

Das Zwischenspeichern von Schritten ist nur für einzelne Pipelines vorgesehen, sodass Sie einen Schritt aus einer anderen Pipeline nicht wiederverwenden können, selbst wenn eine Übereinstimmung mit der Schrittsignatur vorliegt.

Das Zwischenspeichern von Schritten ist für die folgenden Schritttypen verfügbar: 
+ [Verarbeitung](build-and-manage-steps-types.md#step-type-processing)
+ [Training](build-and-manage-steps-types.md#step-type-training)
+ [Optimieren](build-and-manage-steps-types.md#step-type-tuning)
+ [AutoML](build-and-manage-steps-types.md#step-type-automl)
+ [Transformieren](build-and-manage-steps-types.md#step-type-transform)
+ [`ClarifyCheck`](build-and-manage-steps-types.md#step-type-clarify-check)
+ [`QualityCheck`](build-and-manage-steps-types.md#step-type-quality-check)
+ [EMR](build-and-manage-steps-types.md#step-type-emr)

**Topics**
+ [Schalten Sie das Step-Caching ein](pipelines-caching-enabling.md)
+ [Deaktivieren des Schritt-Caching](pipelines-caching-disabling.md)
+ [Standard-Cache-Schlüsselattribute nach Pipeline-Schritttyp](pipelines-default-keys.md)
+ [Zugriffskontrolle für zwischengespeicherte Daten](pipelines-access-control.md)

# Schalten Sie das Step-Caching ein
<a name="pipelines-caching-enabling"></a>

Um das Schritt-Caching zu aktivieren, müssen Sie der Schrittdefinition eine `CacheConfig`-Eigenschaft hinzufügen. `CacheConfig`-Eigenschaften verwenden in der Pipeline-Definitionsdatei das folgende Format:

```
{
    "CacheConfig": {
        "Enabled": false,
        "ExpireAfter": "<time>"
    }
}
```

Das `Enabled` Feld gibt an, ob das Caching für den jeweiligen Schritt aktiviert ist. Sie können das Feld auf setzen`true`, was SageMaker KI anweist, zu versuchen, eine vorherige Ausführung des Schritts mit denselben Attributen zu finden. Oder Sie können das Feld auf setzen`false`, wodurch die SageMaker KI angewiesen wird, den Schritt bei jeder Ausführung der Pipeline auszuführen. `ExpireAfter`ist eine Zeichenfolge im [ISO 8601-Dauerformat](https://en.wikipedia.org/wiki/ISO_8601#Durations), die den Timeout-Zeitraum definiert. Bei der `ExpireAfter` Dauer kann es sich um einen Wert für ein Jahr, einen Monat, eine Woche, einen Tag, eine Stunde oder eine Minute handeln. Jeder Wert besteht aus einer Zahl, gefolgt von einem Buchstaben, der die Einheit der Dauer angibt. Beispiel:
+ „30d“ = 30 Tage
+ „5y“ = 5 Jahre
+ „T16m“ = 16 Minuten
+ „30DT5h“ = 30 Tage und 5 Stunden.

In der folgenden Diskussion wird das Verfahren zum Aktivieren des Caching für neue oder bereits bestehende Pipelines mithilfe des Amazon SageMaker Python SDK beschrieben.

**Schalten Sie das Caching für neue Pipelines ein**

Initialisieren Sie bei neuen Pipelines eine `CacheConfig` Instance mit `enable_caching=True` und geben Sie sie als Eingabe für Ihren Pipeline-Schritt an. Im folgenden Beispiel wird das Caching mit einem Timeout von 1 Stunde für einen Trainingsschritt aktiviert: 

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
      
cache_config = CacheConfig(enable_caching=True, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)
```

**Schalten Sie das Caching für bereits bestehende Pipelines ein**

Um die Zwischenspeicherung für bereits vorhandene, bereits definierte Pipelines zu aktivieren, aktivieren Sie die Eigenschaft `enable_caching` für den Schritt und setzen Sie `expire_after` auf einen Timeout-Wert. Zuletzt aktualisieren Sie die Pipeline mit `pipeline.upsert()` oder `pipeline.update()`. Sobald Sie es erneut ausführen, aktiviert das folgende Codebeispiel das Caching mit einem Timeout von 1 Stunde für einen Trainingsschritt:

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
from sagemaker.workflow.pipeline import Pipeline

cache_config = CacheConfig(enable_caching=True, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)

# define pipeline
pipeline = Pipeline(
    steps=[step_train]
)

# additional step for existing pipelines
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Alternativ können Sie die Cache-Konfiguration aktualisieren, nachdem Sie die (bereits vorhandene) Pipeline definiert haben, sodass ein kontinuierlicher Codelauf möglich ist. Das folgende Codebeispiel demonstriert diese Methode:

```
# turn on caching with timeout period of one hour
pipeline.steps[0].cache_config.enable_caching = True 
pipeline.steps[0].cache_config.expire_after = "PT1H" 

# additional step for existing pipelines
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Ausführlichere Codebeispiele und eine Diskussion darüber, wie sich Python-SDK-Parameter auf das Caching auswirken, finden Sie unter [Caching-Konfiguration](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) in der Amazon SageMaker Python SDK-Dokumentation.

# Deaktivieren des Schritt-Caching
<a name="pipelines-caching-disabling"></a>

Ein Pipeline-Schritt wird nicht erneut ausgeführt, wenn Sie Attribute ändern, die [Standard-Cache-Schlüsselattribute nach Pipeline-Schritttyp](pipelines-default-keys.md) für seinen Schritttyp nicht aufgeführt sind. Sie können jedoch entscheiden, dass der Pipeline-Schritt trotzdem erneut ausgeführt werden soll. In diesem Fall müssen Sie das Step-Caching deaktivieren.

Um das Zwischenspeichern von Schritten zu deaktivieren, setzen Sie das `Enabled` Attribut in der `CacheConfig` Eigenschaft der Schrittdefinition in der Schrittdefinition auf `false`, wie im folgenden Codeausschnitt gezeigt:

```
{
    "CacheConfig": {
        "Enabled": false,
        "ExpireAfter": "<time>"
    }
}
```

Beachten Sie, dass das Attribut `ExpireAfter` ignoriert wird, wenn `Enabled` gleich `false` ist.

Um das Caching für einen Pipeline-Schritt mithilfe des Amazon SageMaker Python SDK zu deaktivieren, definieren Sie die Pipeline Ihres Pipeline-Schritts, schalten Sie die `enable_caching` Eigenschaft aus und aktualisieren Sie die Pipeline.

Sobald Sie es erneut ausführen, deaktiviert das folgende Codebeispiel das Caching für einen Trainingsschritt:

```
from sagemaker.workflow.pipeline_context import PipelineSession
from sagemaker.workflow.steps import CacheConfig
from sagemaker.workflow.pipeline import Pipeline

cache_config = CacheConfig(enable_caching=False, expire_after="PT1H")
estimator = Estimator(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="TrainAbaloneModel",
    step_args=estimator.fit(inputs=inputs),
    cache_config=cache_config
)

# define pipeline
pipeline = Pipeline(
    steps=[step_train]
)

# update the pipeline
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Sie können die `enable_caching` Eigenschaft auch deaktivieren, nachdem Sie die Pipeline bereits definiert haben, sodass ein kontinuierlicher Code ausgeführt werden kann. Das folgende Codebeispiel veranschaulicht diese Lösung:

```
# turn off caching for the training step
pipeline.steps[0].cache_config.enable_caching = False

# update the pipeline
pipeline.update()
# or, call upsert() to update the pipeline
# pipeline.upsert()
```

Ausführlichere Codebeispiele und eine Diskussion darüber, wie sich Python-SDK-Parameter auf das Caching auswirken, finden Sie unter [Caching-Konfiguration](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) in der Amazon SageMaker Python SDK-Dokumentation.

# Standard-Cache-Schlüsselattribute nach Pipeline-Schritttyp
<a name="pipelines-default-keys"></a>

Bei der Entscheidung, ob ein früherer Pipeline-Schritt wiederverwendet oder der Schritt erneut ausgeführt werden soll, prüft Pipelines, ob sich bestimmte Attribute geändert haben. Wenn sich der Attributsatz von allen vorherigen Läufen innerhalb des Timeout-Zeitraums unterscheidet, wird der Schritt erneut ausgeführt. Zu diesen Attributen gehören Eingabeartefakte, App- oder Algorithmusspezifikationen und Umgebungsvariablen. In der folgenden Liste sind die einzelnen Pipeline-Schritttypen und die Attribute aufgeführt, die, falls sie geändert werden, eine erneute Ausführung des Schritts auslösen. Weitere Informationen darüber, welche Python-SDK-Parameter zur Erstellung der folgenden Attribute verwendet werden, finden Sie unter [Caching-Konfiguration](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration) in der Amazon SageMaker Python SDK-Dokumentation.

## [Verarbeitungsschritt](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html)
<a name="collapsible-caching-section-1"></a>
+ AppSpecification
+ Umgebung
+ ProcessingInputs. Dieses Attribut enthält Informationen über das Vorverarbeitungsskript.

  

## [Schritt des Trainings](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)
<a name="collapsible-caching-section-2"></a>
+ AlgorithmSpecification
+ CheckpointConfig
+ DebugHookConfig
+ DebugRuleConfigurations
+ Umgebung
+ HyperParameters
+ InputDataConfig. Dieses Attribut enthält Informationen über das Trainingsskript.

  

## [Schritt zur Feinabstimmung](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)
<a name="collapsible-caching-section-3"></a>
+ HyperParameterTuningJobConfig
+ TrainingJobDefinition. Dieses Attribut besteht aus mehreren untergeordneten Attributen, von denen nicht alle dazu führen, dass der Schritt erneut ausgeführt wird. Die untergeordneten Attribute, für die eine erneute Ausführung erforderlich sein könnte (falls sie geändert werden), sind:
  + AlgorithmSpecification
  + HyperParameterRanges
  + InputDataConfig
  + StaticHyperParameters
  + TuningObjective
+ TrainingJobDefinitions

  

## [AutoML-Schritt](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_AutoMLJobConfig.html)
<a name="collapsible-caching-section-4"></a>
+ Automatische MLJob Config. Dieses Attribut besteht aus mehreren untergeordneten Attributen, von denen nicht alle dazu führen, dass der Schritt erneut ausgeführt wird. Die untergeordneten Attribute, für die eine erneute Ausführung erforderlich sein könnte (falls sie geändert werden), sind:
  + CompletionCriteria
  + CandidateGenerationConfig
  + DataSplitConfig
  + Mode
+ Automatisches MLJob Ziel
+ InputDataConfig
+ ProblemType

  

## [Schritt Transformieren](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)
<a name="collapsible-caching-section-5"></a>
+ DataProcessing
+ Umgebung
+ ModelName
+ TransformInput

  

## [ClarifyCheck Schritt](build-and-manage-steps-types.md#step-type-clarify-check)
<a name="collapsible-caching-section-6"></a>
+ ClarifyCheckConfig
+ CheckJobConfig
+ SkipCheck
+ RegisterNewBaseline
+ ModelPackageGroupName
+ SuppliedBaselineConstraints

  

## [QualityCheck Schritt](build-and-manage-steps-types.md#step-type-quality-check)
<a name="collapsible-caching-section-7"></a>
+ QualityCheckConfig
+ CheckJobConfig
+ SkipCheck
+ RegisterNewBaseline
+ ModelPackageGroupName
+ SuppliedBaselineConstraints
+ SuppliedBaselineStatistics

  

## [EMR-Schritt](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-emr)
<a name="collapsible-caching-section-8"></a>
+ ClusterId
+ StepConfig

  

# Zugriffskontrolle für zwischengespeicherte Daten
<a name="pipelines-access-control"></a>

Wenn eine SageMaker KI-Pipeline ausgeführt wird, speichert sie die Parameter und Metadaten, die mit den von der Pipeline gestarteten SageMaker KI-Jobs verknüpft sind, und speichert sie für die Wiederverwendung in nachfolgenden Läufen. Auf diese Metadaten kann zusätzlich zu zwischengespeicherten Pipeline-Schritten über eine Vielzahl von Quellen zugegriffen werden. Sie umfassen die folgenden Typen:
+ `Describe*Job`-Anforderungen
+ CloudWatch Logs
+ CloudWatch Events
+ CloudWatch Metriken
+ SageMaker KI-Suche

Beachten Sie, dass der Zugriff auf jede Datenquelle in der Liste durch ihre eigenen IAM-Berechtigungen gesteuert wird. Das Entfernen des Zugriffs einer bestimmten Rolle auf eine Datenquelle hat keinen Einfluss auf die Zugriffsebene für die anderen. Beispielsweise könnte ein Kontoadministrator der Rolle eines Anrufers IAM-Berechtigungen für `Describe*Job` Anfragen entziehen. Der Anrufer kann zwar keine `Describe*Job` Anfragen mehr stellen, aber er kann trotzdem die Metadaten aus einer Pipeline-Ausführung mit zwischengespeicherten Schritten abrufen, sofern er die Erlaubnis hat, die Pipeline auszuführen. Wenn ein Kontoadministrator den Zugriff auf die Metadaten eines bestimmten SageMaker KI-Jobs vollständig entfernen möchte, muss er die Berechtigungen für jeden der relevanten Dienste entfernen, die Zugriff auf die Daten gewähren. 

# Richtlinie für Pipeline-Schritte erneut versuchen
<a name="pipelines-retry-policy"></a>

Mithilfe von Wiederholungsrichtlinien können Sie Ihre Pipeline-Schritte automatisch wiederholen, nachdem ein Fehler aufgetreten ist. Bei jedem Pipeline-Schritt können Ausnahmen auftreten, und Ausnahmen treten aus verschiedenen Gründen auf. In einigen Fällen können diese Probleme durch einen erneuten Versuch behoben werden. Mit einer Wiederholungsrichtlinie für Pipeline-Schritte können Sie wählen, ob Sie einen bestimmten Pipeline-Schritt erneut versuchen möchten oder nicht.

Die Wiederholungsrichtlinie unterstützt nur die folgenden Pipeline-Schritte:
+ [Verarbeitungsschritt](build-and-manage-steps-types.md#step-type-processing) 
+ [Schritt des Trainings](build-and-manage-steps-types.md#step-type-training) 
+ [Schritt zur Feinabstimmung](build-and-manage-steps-types.md#step-type-tuning) 
+ [AutoML-Schritt](build-and-manage-steps-types.md#step-type-automl) 
+ [Schritt „Modell erstellen“](build-and-manage-steps-types.md#step-type-create-model) 
+ [Schritt „Modell registrieren“](build-and-manage-steps-types.md#step-type-register-model) 
+ [Schritt Transformieren](build-and-manage-steps-types.md#step-type-transform) 
+ [Schritt für Notebook-Aufträge](build-and-manage-steps-types.md#step-type-notebook-job) 

**Anmerkung**  
Aufträge, die sowohl im Tuning- als auch im AutoML-Schritt ausgeführt werden, führen intern Wiederholungen durch und wiederholen den `SageMaker.JOB_INTERNAL_ERROR` Ausnahmetyp nicht, selbst wenn eine Wiederholungsrichtlinie konfiguriert ist. Mithilfe der SageMaker API können Sie Ihre eigene [Wiederholungsstrategie](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RetryStrategy.html) programmieren.

## Unterstützte Ausnahmetypen für die Wiederholungsrichtlinie
<a name="pipelines-retry-policy-supported-exceptions"></a>

Die Wiederholungsrichtlinie für Pipeline-Schritte unterstützt die folgenden Ausnahmetypen:
+ `Step.SERVICE_FAULT`: Diese Ausnahmen treten auf, wenn beim Aufrufen nachgeschalteter Services ein interner Serverfehler oder ein vorübergehender Fehler auftritt. Pipelines versucht bei dieser Art von Fehler automatisch erneut. Mit einer Wiederholungsrichtlinie können Sie den standardmäßigen Wiederholungsvorgang für diesen Ausnahmetyp außer Kraft setzen.
+ `Step.THROTTLING`: Beim Aufrufen der Downstream-Services können Drosselungsausnahmen auftreten. Pipelines versucht bei dieser Art von Fehler automatisch erneut. Mit einer Wiederholungsrichtlinie können Sie den standardmäßigen Wiederholungsvorgang für diesen Ausnahmetyp außer Kraft setzen.
+ `SageMaker.JOB_INTERNAL_ERROR`: Diese Ausnahmen treten auf, wenn der SageMaker KI-Job zurückkehrt`InternalServerError`. In diesem Fall kann das Starten eines neuen Auftrags ein vorübergehendes Problem beheben.
+ `SageMaker.CAPACITY_ERROR`: Der SageMaker KI-Job kann auf Amazon EC2 stoßen`InsufficientCapacityErrors`, was dazu führt, dass der SageMaker KI-Job fehlschlägt. Sie können es erneut versuchen, indem Sie einen neuen SageMaker KI-Job starten, um das Problem zu vermeiden. 
+ `SageMaker.RESOURCE_LIMIT`: Sie können das Ressourcenlimit überschreiten, wenn Sie einen SageMaker AI-Job ausführen. Sie können warten und nach einer kurzen Zeit erneut versuchen, den SageMaker KI-Job auszuführen, um zu sehen, ob Ressourcen freigegeben wurden.

## Das JSON-Schema für die Wiederholungsrichtlinie
<a name="pipelines-retry-policy-json-schema"></a>

Die Wiederholungsrichtlinie für Pipelines besteht aus Folgendem:

```
"RetryPolicy": {
   "ExceptionType": [String]
   "IntervalSeconds": Integer
   "BackoffRate": Double
   "MaxAttempts": Integer
   "ExpireAfterMin": Integer
}
```
+ `ExceptionType`: Dieses Feld erfordert die folgenden Ausnahmetypen in einem String-Array-Format.
  + `Step.SERVICE_FAULT`
  + `Step.THROTTLING`
  + `SageMaker.JOB_INTERNAL_ERROR`
  + `SageMaker.CAPACITY_ERROR`
  + `SageMaker.RESOURCE_LIMIT`
+ `IntervalSeconds`(optional): Die Anzahl der Sekunden vor dem ersten Wiederholungsversuch (standardmäßig 1). `IntervalSeconds`hat einen maximalen Wert von 43200 Sekunden (12 Stunden).
+ `BackoffRate` (optional): Der Multiplikator, mit dem das Wiederholungsintervall bei jedem Versuch erhöht wird (standardmäßig 2,0).
+ `MaxAttempts` (optional): Eine positive ganze Zahl, die die maximale Anzahl der Wiederholungsversuche angibt (standardmäßig 5). Tritt der Fehler öfter auf, als `MaxAttempts` angibt, werden die Wiederholungsversuche eingestellt und die normale Fehlerbehandlung fortgesetzt. Ein Wert von 0 gibt an, dass Fehler nie wiederholt werden. `MaxAttempts` hat einen Höchstwert von 20.
+ `ExpireAfterMin` (optional): Eine positive Ganzzahl, die die maximale Zeitspanne für Wiederholungen darstellt. Wenn der Fehler erneut auftritt, nachdem `ExpireAfterMin` Minuten gezählt wurden, nachdem der Schritt ausgeführt wurde, werden die Wiederholungsversuche beendet und die normale Fehlerbehandlung wird wieder aufgenommen. Ein Wert von 0 gibt an, dass Fehler nie wiederholt werden. `ExpireAfterMin ` hat einen Höchstwert von 14.400 Minuten (10 Tage).
**Anmerkung**  
Es kann nur eines von `MaxAttempts` oder `ExpireAfterMin` angegeben werden, aber nicht beide; werden beide *nicht angegeben*, wird `MaxAttempts` als Standard verwendet. Wenn beide Eigenschaften in einer Richtlinie identifiziert werden, generiert die Wiederholungsrichtlinie einen Validierungsfehler.

# Konfigurieren einer Wiederholungsversuchsrichtlinie
<a name="pipelines-configuring-retry-policy"></a>

 SageMaker Pipelines bieten zwar eine robuste und automatisierte Methode zur Orchestrierung von Workflows für maschinelles Lernen, aber bei ihrer Ausführung können Fehler auftreten. Um solche Szenarien elegant zu handhaben und die Zuverlässigkeit Ihrer Pipelines zu verbessern, können Sie Wiederholungsrichtlinien konfigurieren, die definieren, wie und wann bestimmte Schritte nach dem Auftreten einer Ausnahme automatisch wiederholt werden sollen. Mit der Wiederholungsrichtlinie können Sie die Arten von Ausnahmen, die wiederholt werden sollen, die maximale Anzahl von Wiederholungsversuchen, das Intervall zwischen Wiederholungsversuchen und die Backoff-Rate für die Verlängerung der Wiederholungsintervalle angeben. Der folgende Abschnitt enthält Beispiele für die Konfiguration einer Wiederholungsrichtlinie für einen Trainingsschritt in Ihrer Pipeline, sowohl in JSON als auch mit dem SageMaker Python-SDK.

Nachstehend finden Sie ein Beispiel für einen Trainingsschritt mit einer Wiederholungsrichtlinie.

```
{
    "Steps": [
        {
            "Name": "MyTrainingStep",
            "Type": "Training",
            "RetryPolicies": [
                {
                    "ExceptionType": [
                        "SageMaker.JOB_INTERNAL_ERROR",
                        "SageMaker.CAPACITY_ERROR"
                    ],
                    "IntervalSeconds": 1,
                    "BackoffRate": 2,
                    "MaxAttempts": 5
                }
            ]
        }
    ]
}
```



Im Folgenden finden Sie ein Beispiel dafür, wie Sie ein integriertes `TrainingStep` SDK for Python (Boto3) mit einer Wiederholungsrichtlinie erstellen.

```
from sagemaker.workflow.retry import (
    StepRetryPolicy, 
    StepExceptionTypeEnum,
    SageMakerJobExceptionTypeEnum,
    SageMakerJobStepRetryPolicy
)

step_train = TrainingStep(
    name="MyTrainingStep",
    xxx,
    retry_policies=[
        // override the default 
        StepRetryPolicy(
            exception_types=[
                StepExceptionTypeEnum.SERVICE_FAULT, 
                StepExceptionTypeEnum.THROTTLING
            ],
            expire_after_mins=5,
            interval_seconds=10,
            backoff_rate=2.0 
        ),
        // retry when resource limit quota gets exceeded
        SageMakerJobStepRetryPolicy(
            exception_types=[SageMakerJobExceptionTypeEnum.RESOURCE_LIMIT],
            expire_after_mins=120,
            interval_seconds=60,
            backoff_rate=2.0
        ),
        // retry when job failed due to transient error or EC2 ICE.
        SageMakerJobStepRetryPolicy(
            failure_reason_types=[
                SageMakerJobExceptionTypeEnum.INTERNAL_ERROR,
                SageMakerJobExceptionTypeEnum.CAPACITY_ERROR,
            ],
            max_attempts=10,
            interval_seconds=30,
            backoff_rate=2.0
        )
    ]
)
```

Weitere Informationen zur Konfiguration des Wiederholungsverhaltens für bestimmte Schritttypen finden Sie unter *[Amazon SageMaker Pipelines — Retry Policy](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#retry-policy)* in der Amazon SageMaker Python SDK-Dokumentation.

# Selektive Ausführung von Pipeline-Schritten
<a name="pipelines-selective-ex"></a>

Wenn Sie Pipelines verwenden, um Workflows zu erstellen und Ihre ML-Trainingsschritte zu orchestrieren, müssen Sie möglicherweise mehrere Experimentierphasen durchführen. Anstatt jedes Mal die gesamte Pipeline laufen zu lassen, möchten Sie vielleicht nur bestimmte Schritte wiederholen. Mit Pipelines können Sie Pipeline-Schritte selektiv ausführen. Dies hilft Ihnen, Ihr ML-Training zu optimieren. Die selektive Ausführung ist in den folgenden Szenarien nützlich: 
+ Sie möchten einen bestimmten Schritt mit aktualisiertem Instance-Typ, Hyperparametern oder anderen Variablen neu starten und dabei die Parameter der Upstream-Schritte beibehalten.
+ Ihre Pipeline schlägt bei einem Zwischenschritt fehl. Frühere Schritte in der Ausführung, wie Datenvorbereitung oder Merkmalsextraktion, sind kostspielig, wenn sie erneut ausgeführt werden. Möglicherweise müssen Sie einen Fix einführen und bestimmte Schritte manuell erneut ausführen, um die Pipeline abzuschließen. 

Bei der selektiven Ausführung können Sie eine beliebige Teilmenge von Schritten ausführen, sofern sie im Directed Acyclic Graph (DAG) Ihrer Pipeline miteinander verbunden sind. Die folgende DAG zeigt ein Beispiel für einen Pipeline-Workflow:

![\[Ein azyklisch gerichtetes Diagramm (DAG) einer Beispielpipeline.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/pipeline-full.png)


Sie können Schritte `AbaloneTrain` und `AbaloneEval` in einer selektiven Ausführung auswählen, aber Sie können nicht nur `AbaloneTrain` die `AbaloneMSECond` Schritte auswählen, da diese Schritte in der DAG nicht miteinander verbunden sind. Bei nicht ausgewählten Schritten im Workflow werden bei der selektiven Ausführung die Ausgaben einer Referenz-Pipeline-Ausführung wiederverwendet, anstatt die Schritte neu auszuführen. Außerdem werden nicht ausgewählte Schritte, die den ausgewählten Schritten nachgelagert sind, nicht in einer selektiven Ausführung ausgeführt. 

Wenn Sie sich dafür entscheiden, eine Teilmenge von Zwischenschritten in Ihrer Pipeline auszuführen, können Ihre Schritte von den vorherigen Schritten abhängen. SageMaker KI benötigt eine Referenz-Pipeline-Ausführung, von der aus diese Abhängigkeiten mit Ressourcen versorgt werden können. Wenn Sie sich beispielsweise dafür entscheiden, die Schritte `AbaloneTrain` und `AbaloneEval` auszuführen, benötigen Sie die Ausgaben aus Schritt `AbaloneProcess`. Sie können entweder einen Referenzausführungs-ARN angeben oder SageMaker KI anweisen, die neueste Pipeline-Ausführung zu verwenden, was das Standardverhalten ist. Wenn Sie über eine Referenzausführung verfügen, können Sie die Laufzeitparameter auch aus Ihrem Referenzlauf erstellen und sie mit allen Überschreibungen für Ihren ausgewählten Ausführungslauf bereitstellen. Details hierzu finden Sie unter [Wiederverwenden von Laufzeitparameterwerten aus einer Referenzausführung](#pipelines-selective-ex-reuse).

Im Einzelnen geben Sie eine Konfiguration für Ihre selektive Ausführungspipeline an, die mit `SelectiveExecutionConfig` ausgeführt wird. Wenn Sie einen ARN für eine Referenz-Pipeline-Ausführung (mit dem `source_pipeline_execution_arn` Argument) angeben, verwendet SageMaker AI die Abhängigkeiten des vorherigen Schritts aus der von Ihnen angegebenen Pipeline-Ausführung. Wenn Sie keinen ARN angeben und eine letzte Pipeline-Ausführung vorhanden ist, verwendet SageMaker AI diese standardmäßig als Referenz. Wenn Sie keinen ARN angeben und nicht möchten, dass SageMaker KI Ihre letzte Pipeline-Ausführung verwendet, setzen Sie `reference_latest_execution` auf`False`. Die Pipeline-Ausführung, die SageMaker AI letztendlich als Referenz verwendet, unabhängig davon, ob es sich um die neueste oder die vom Benutzer angegebene handelt, muss sich im `Failed` Status `Success` oder befinden.

In der folgenden Tabelle wird zusammengefasst, wie SageMaker AI eine Referenzausführung auswählt.


| Der Wert des Arguments `source_pipeline_execution_arn` | Der Wert des Arguments `reference_latest_execution` | Die verwendete Referenzausführung | 
| --- | --- | --- | 
| Ein Pipeline-ARN | `True` oder nicht spezifiziert | Der angegebene Pipeline-ARN | 
| Ein Pipeline-ARN | `False` | Der angegebene Pipeline-ARN | 
| null oder nicht spezifiziert | `True` oder nicht spezifiziert | Die letzte Pipeline-Ausführung | 
| null oder nicht spezifiziert | `False` | Keine – Wählen Sie in diesem Fall Schritte ohne Upstream-Abhängigkeiten | 

Weitere Informationen zu den Konfigurationsanforderungen für die selektive Ausführung finden Sie unter [sagemaker.workflow.selective\$1execution\$1config. SelectiveExecutionConfig](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#selective-execution-config)Dokumentation.

Die folgende Beschreibung enthält Beispiele für die Fälle, in denen Sie eine Pipeline-Referenzausführung angeben, die neueste Pipeline-Ausführung als Referenz verwenden oder eine selektive Ausführung ohne Referenz-Pipeline-Ausführung ausführen möchten.

## Selektive Ausführung mit einer benutzerdefinierten Pipeline-Referenz
<a name="pipelines-selective-ex-arn"></a>

Das folgende Beispiel veranschaulicht eine selektive Ausführung der Schritte `AbaloneTrain` und `AbaloneEval` unter Verwendung einer Referenz-Pipeline-Ausführung.

```
from sagemaker.workflow.selective_execution_config import SelectiveExecutionConfig

selective_execution_config = SelectiveExecutionConfig(
    source_pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef", 
    selected_steps=["AbaloneTrain", "AbaloneEval"]
)

selective_execution = pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Selektive Ausführung mit der letzten Pipeline-Ausführung als Referenz
<a name="pipelines-selective-ex-latest"></a>

Das folgende Beispiel veranschaulicht eine selektive Ausführung der Schritte `AbaloneTrain` und `AbaloneEval` unter Verwendung der letzten Pipeline-Ausführung als Referenz. Da SageMaker AI standardmäßig die neueste Pipeline-Ausführung verwendet, können Sie das `reference_latest_execution` Argument optional auf setzen`True`.

```
# Prepare a new selective execution. Select only the first step in the pipeline without providing source_pipeline_execution_arn.
selective_execution_config = SelectiveExecutionConfig(
    selected_steps=["AbaloneTrain", "AbaloneEval"],
    # optional
    reference_latest_execution=True
)

# Start pipeline execution without source_pipeline_execution_arn
pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Selektive Ausführung ohne Referenz-Pipeline
<a name="pipelines-selective-ex-none"></a>

Das folgende Beispiel zeigt eine selektive Ausführung der Schritte `AbaloneProcess` `AbaloneTrain` ohne Angabe eines Referenz-ARN und ohne Ausschalten der Option, den letzten Pipeline-Lauf als Referenz zu verwenden. SageMaker KI erlaubt diese Konfiguration, da diese Teilmenge von Schritten nicht von vorherigen Schritten abhängt.

```
# Prepare a new selective execution. Select only the first step in the pipeline without providing source_pipeline_execution_arn.
selective_execution_config = SelectiveExecutionConfig(
    selected_steps=["AbaloneProcess", "AbaloneTrain"],
    reference_latest_execution=False
)

# Start pipeline execution without source_pipeline_execution_arn
pipeline.start(
    execution_display_name=f"Sample-Selective-Execution-1",
    parameters={"MaxDepth":6, "NumRound":60},
    selective_execution_config=selective_execution_config,
)
```

## Wiederverwenden von Laufzeitparameterwerten aus einer Referenzausführung
<a name="pipelines-selective-ex-reuse"></a>

Sie können die Parameter aus der Ausführung Ihrer Referenzpipeline mithilfe von `build_parameters_from_execution` erstellen und das Ergebnis an Ihre selektive Ausführungspipeline übergeben. Sie können die ursprünglichen Parameter aus der Referenzausführung verwenden oder mithilfe des `parameter_value_overrides` Arguments beliebige Überschreibungen anwenden.

Das folgende Beispiel zeigt, wie Sie Parameter aus einer Referenzausführung erstellen und eine Überschreibung für den `MseThreshold` Parameter anwenden.

```
# Prepare a new selective execution.
selective_execution_config = SelectiveExecutionConfig(
    source_pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef",
    selected_steps=["AbaloneTrain", "AbaloneEval", "AbaloneMSECond"],
)
# Define a new parameters list to test.
new_parameters_mse={
    "MseThreshold": 5,
}

# Build parameters from reference execution and override with new parameters to test.
new_parameters = pipeline.build_parameters_from_execution(
    pipeline_execution_arn="arn:aws:sagemaker:us-west-2:123123123123:pipeline/abalone/execution/123ab12cd3ef",
    parameter_value_overrides=new_parameters_mse
)

# Start pipeline execution with new parameters.
execution = pipeline.start(
    selective_execution_config=selective_execution_config,
    parameters=new_parameters
)
```

# Basisberechnung, Drifterkennung und Lebenszyklus mit ClarifyCheck und QualityCheck Schritte in Amazon SageMaker Pipelines
<a name="pipelines-quality-clarify-baseline-lifecycle"></a>

Im folgenden Thema wird erläutert, wie sich Baselines und Modellversionen in den SageMaker Amazon-Pipelines entwickeln, wenn die Schritte und verwendet werden. [`ClarifyCheck`](build-and-manage-steps-types.md#step-type-clarify-check) [`QualityCheck`](build-and-manage-steps-types.md#step-type-quality-check)

Für diesen `ClarifyCheck` Schritt ist eine Baseline eine einzelne Datei, die sich in den Schritteigenschaften mit dem Suffix `constraints` befindet. Für den `QualityCheck` Schritt ist eine Baseline eine Kombination aus zwei Dateien, die sich in den Schritteigenschaften befinden: eine mit dem Suffix `statistics` und die andere mit dem Suffix `constraints`. In den folgenden Themen behandeln wir diese Eigenschaften mit einem Präfix, das beschreibt, wie sie verwendet werden, was sich auf das Basisverhalten und den Lebenszyklus in diesen beiden Pipeline-Schritten auswirkt. Beispielsweise berechnet der `ClarifyCheck` Schritt immer die neuen Basislinien in der `CalculatedBaselineConstraints` Eigenschaft und weist sie zu, und der `QualityCheck` Schritt macht dasselbe in den Eigenschaften `CalculatedBaselineConstraints` und `CalculatedBaselineStatistics`.

## Basisberechnung und Registrierung für und Schritte ClarifyCheck QualityCheck
<a name="pipelines-quality-clarify-baseline-calculations"></a>

Sowohl in den `ClarifyCheck` Schritten als auch in den `QualityCheck` Schritten werden immer neue Basislinien auf der Grundlage von Schritteingaben während der Ausführung des zugrundeliegenden Verarbeitungsauftrags berechnet. Auf diese neu berechneten Basislinien wird über die Eigenschaften mit dem Präfix `CalculatedBaseline` zugegriffen. Sie können diese Eigenschaften als `ModelMetrics` Ihres Modellpakets in die [Modellschritt](build-and-manage-steps-types.md#step-type-model) aufnehmen. Dieses Modellpaket kann mit 5 verschiedenen Baselines registriert werden. Sie können es mit einem Prüftyp für jeden Prüftyp registrieren: Datenverzerrung, Modellabweichung und Modellerklärbarkeit durch die Ausführung des `ClarifyCheck` Schritts und Modellqualität sowie Datenqualität aufgrund der Ausführung des `QualityCheck` Schritts. Der `register_new_baseline` Parameter bestimmt den Wert, der in den Eigenschaften mit dem Präfix `BaselineUsedForDriftCheck` festgelegt wird, nachdem ein Schritt ausgeführt wurde.

Die folgende Tabelle mit möglichen Anwendungsfällen zeigt verschiedene Verhaltensweisen, die sich aus den Schrittparametern ergeben, die Sie für die Schritte `ClarifyCheck` und `QualityCheck` festlegen können:


| Möglicher Anwendungsfall, den Sie bei der Auswahl dieser Konfiguration in Betracht ziehen könnten  | `skip_check` / `register_new_baseline` | Führt STEP einen Drift-Check durch? | Wert der Schritteigenschaft `CalculatedBaseline` | Wert der Schritteigenschaft `BaselineUsedForDriftCheck` | 
| --- | --- | --- | --- | --- | 
| Sie führen regelmäßiges Neutraining durch, bei denen Prüfungen aktiviert sind, um eine neue Modellversion zu erhalten, *möchten aber die vorherigen Baselines* als `DriftCheckBaselines` in der Modellregistrierung für Ihre neue Modellversion übernehmen. | False/ False | Die Driftprüfung wird anhand vorhandener Baselines ausgeführt | Neue Baselines, die durch Ausführen des Schritts berechnet werden | Basiswert aus dem zuletzt zugelassenen Modell in der Modellregistrierung oder aus dem als Schrittparameter angegebenen Basiswert | 
| Sie führen regelmäßiges Neutraining mit aktivierten Prüfungen durch, um eine neue Modellversion zu erhalten, *möchten aber die `DriftCheckBaselines` in der Modellregistrierung mit den neu berechneten Basiswerten* für Ihre neue Modellversion aktualisieren. | False/ True | Die Driftprüfung wird anhand vorhandener Baselines ausgeführt | Neue Baselines, die durch Ausführen des Schritts berechnet werden | Neu berechneter Basiswert durch Ausführen des Schritts (Wert der Eigenschaft CalculatedBaseline) | 
| Sie initiieren die Pipeline, um eine neue Modellversion neu zu trainieren, weil Amazon SageMaker Model Monitor auf einem Endpunkt einen Verstoß für eine bestimmte Art von Prüfung erkannt hat, und Sie möchten *diese Art der Prüfung gegenüber der vorherigen Baseline überspringen, aber die vorherige Baseline wie `DriftCheckBaselines` in der Modellregistrierung für Ihre neue Modellversion übernehmen*. | True/ False | Kein Abweichungscheck | Neue Baselines wurden durch Ausführen berechnet | Basiswert aus dem letzten genehmigten Modell in der Modellregistrierung oder aus dem als Schrittparameter angegebenen Basiswert | 
| Dies ist in den folgenden Fällen möglich: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/pipelines-quality-clarify-baseline-lifecycle.html)  | True/ True | Kein Abweichungscheck | Neue Basislinien, die durch Ausführen des Schritts berechnet wurden | Neu berechneter Basiswert durch Ausführen des Schritts (Wert der Eigenschaft CalculatedBaseline) | 

**Anmerkung**  
Wenn Sie in Ihrer Einschränkung wissenschaftliche Schreibweise verwenden, müssen Sie die Einschränkung in eine Gleitkommazahl umwandeln. Ein Beispiel für ein Vorverarbeitungsskript finden Sie unter [Erstellen einer Modellqualitätsbasislinie](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-model-quality-baseline.html).

Wenn Sie ein Modell mit [Modellschritt](build-and-manage-steps-types.md#step-type-model) registrieren, können Sie die `BaselineUsedForDriftCheck` Eigenschaft als `DriftCheckBaselines` registrieren. Diese Basisdateien können dann von Model Monitor für Modell- und Datenqualitätsprüfungen verwendet werden. Darüber hinaus können diese Baselines auch im `QualityCheck` Schritt ClarifyCheckStep und verwendet werden, um neu trainierte Modelle mit den vorhandenen Modellen zu vergleichen, die in der Modellregistrierung für future Pipeline-Läufe registriert sind.

## Erkennung von Abweichungen im Vergleich zu früheren Baselines in Pipelines
<a name="pipelines-quality-clarify-baseline-drift-detection"></a>

Im Falle des `QualityCheck`-Schrittes, wenn Sie die Pipeline für regelmäßiges Neutraining initiieren, um eine neue Modellversion zu erhalten, möchten Sie den Trainingsschritt möglicherweise nicht ausführen, wenn die Datenqualität und die Datenverzerrung [Schema für Verstöße (Datei constraint\$1violations.json)](model-monitor-interpreting-violations.md) auf den Grundlinien Ihrer vorherigen genehmigten Modellversion ist. Möglicherweise möchten Sie die neu trainierte Modellversion auch nicht registrieren, wenn die Qualität, die Modellabweichung oder die Erklärbarkeit des Modells bei der Ausführung des `ClarifyCheck`-Schritts gegen die registrierte Basisversion Ihrer vorherigen genehmigten Modellversion verstoßen. In diesen Fällen können Sie die gewünschten Prüfungen aktivieren, indem Sie die Eigenschaft `skip_check` des entsprechenden Prüfschritts auf `False` setzen, was dazu führt, dass `ClarifyCheck` und der `QualityCheck`-Schritt fehlschlagen, wenn ein Verstoß gegen frühere Baselines festgestellt wird. Der Pipeline-Prozess wird dann nicht fortgesetzt, so dass das von der Basislinie abweichende Modell nicht registriert wird. – `ClarifyCheck`und `QualityCheck`-Schritte sind in der Lage, `DriftCheckBaselines` der letzten genehmigten Modellversion einer bestimmten Modellpaketgruppe zu erhalten, mit der verglichen werden kann. Frühere Basispläne können auch direkt bereitgestellt werden `supplied_baseline_constraints` (zusätzlich, `supplied_baseline_statistics` ob es sich um einen `QualityCheck` Schritt handelt) und haben immer Vorrang vor allen Basisplänen, die aus der Modellpaketgruppe abgerufen wurden. 

## Lebenszyklus und Weiterentwicklung von Baselines und Modellversionen mit Pipelines
<a name="pipelines-quality-clarify-baseline-evolution"></a>

Indem Sie `register_new_baseline` Ihres `ClarifyCheck` und `QualityCheck`-Schrittes auf `False` setzen, ist Ihre vorherige Grundlinie über das Schritt-Eigenschaftspräfix `BaselineUsedForDriftCheck` zugänglich. Sie können diese Baselines dann als `DriftCheckBaselines` in der neuen Modellversion registrieren, wenn Sie ein Modell mit [Modellschritt](build-and-manage-steps-types.md#step-type-model) registrieren. Sobald Sie diese neue Modellversion in der Modellregistrierung genehmigen, wird der `DriftCheckBaseline` in dieser Modellversion für die Schritte `ClarifyCheck` und `QualityCheck` im nächsten Pipeline-Prozess verfügbar. Wenn Sie die Basislinie einer bestimmten Prüfungsart für zukünftige Modellversionen aktualisieren möchten, können Sie `register_new_baseline` auf `True` setzen, so dass die Eigenschaften mit dem Präfix `BaselineUsedForDriftCheck` zur neu berechneten Basislinie werden. Auf diese Weise können Sie Ihre bevorzugten Basislinien für ein in der future trainiertes Modell beibehalten oder die Basislinien bei Bedarf für Driftchecks aktualisieren und so Ihre Basisentwicklung und Ihren Lebenszyklus während Ihrer Modelltrainingsiterationen verwalten. 

Das folgende Diagramm zeigt einen model-version-centric Überblick über die Basisentwicklung und den Lebenszyklus.

![\[Ein model-version-centric Überblick über die Basisentwicklung und den Lebenszyklus.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/pipelines/Baseline-Lifecycle.png)


# Planen von Pipeline-Läufen
<a name="pipeline-eventbridge"></a>

[Sie können Ihre Amazon SageMaker Pipelines-Ausführungen mit Amazon planen. EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) Amazon SageMaker Pipelines wird in [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) als Ziel unterstützt. Auf diese Weise können Sie die Ausführung Ihrer Modellerstellungspipeline auf der Grundlage eines beliebigen Ereignisses in Ihrem Event-Bus einleiten. Mit EventBridge können Sie Ihre Pipeline-Ausführungen automatisieren und automatisch auf Ereignisse wie Änderungen des Trainingsauftrags oder des Endpunktstatus reagieren. Zu den Ereignissen gehören das Hochladen einer neuen Datei in Ihren Amazon S3 S3-Bucket, eine Änderung des Status Ihres Amazon SageMaker AI-Endpunkts aufgrund von Drift und Themen zu *Amazon Simple Notification Service* (SNS).

Die folgenden Pipeline-Aktionen können automatisch initiiert werden:  
+  `StartPipelineExecution` 

Weitere Informationen zur Planung von SageMaker KI-Jobs finden Sie unter [Automatisieren von SageMaker KI mit Amazon EventBridge](https://docs.aws.amazon.com/sagemaker/latest/dg/automating-sagemaker-with-eventbridge.html). 

**Topics**
+ [Planen Sie eine Pipeline mit Amazon EventBridge](#pipeline-eventbridge-schedule)
+ [Planen Sie eine Pipeline mit dem SageMaker Python-SDK](#build-and-manage-scheduling)

## Planen Sie eine Pipeline mit Amazon EventBridge
<a name="pipeline-eventbridge-schedule"></a>

Um eine Pipeline-Ausführung mit Amazon CloudWatch Events zu starten, müssen Sie eine EventBridge [Regel](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_Rule.html) erstellen. Wenn Sie eine Regel für Ereignisse erstellen, geben Sie eine Zielaktion an, die ausgeführt werden soll, wenn EventBridge ein Ereignis eintrifft, das der Regel entspricht. Wenn ein Ereignis der Regel entspricht, wird das Ereignis an das angegebene Ziel EventBridge gesendet und die in der Regel definierte Aktion eingeleitet. 

 Die folgenden Tutorials zeigen, wie Sie die Ausführung einer Pipeline EventBridge mithilfe der EventBridge Konsole oder der AWS CLI planen.  

### Voraussetzungen
<a name="pipeline-eventbridge-schedule-prerequisites"></a>
+ Eine Rolle, die mit der `SageMaker::StartPipelineExecution` Genehmigung übernommen werden EventBridge kann. Diese Rolle kann automatisch erstellt werden, wenn Sie eine Regel von der EventBridge Konsole aus erstellen. Andernfalls müssen Sie diese Rolle selbst erstellen. Informationen zum Erstellen einer SageMaker KI-Rolle finden Sie unter [SageMaker Rollen](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html).
+ Eine Amazon SageMaker AI-Pipeline muss geplant werden. Informationen zum Erstellen einer Amazon SageMaker AI-Pipeline finden Sie unter [Definieren einer Pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/define-pipeline.html).

### Erstellen Sie eine EventBridge Regel mithilfe der EventBridge Konsole
<a name="pipeline-eventbridge-schedule-console"></a>

 Das folgende Verfahren zeigt, wie Sie eine EventBridge Regel mithilfe der EventBridge Konsole erstellen.  

1. Navigieren Sie zur [EventBridge -Konsole](https://console.aws.amazon.com/events). 

1. Wählen Sie auf der linken Seite **Regeln** aus. 

1.  Wählen Sie `Create Rule`. 

1. Geben Sie für Ihre Regel einen Namen und eine Beschreibung ein.

1.  Wählen Sie aus, wie Sie diese Regel initiieren möchten. Sie haben folgende Möglichkeiten für Ihre Regel: 
   + **Ereignismuster**: Ihre Regel wird ausgelöst, wenn ein Ereignis eintritt, das dem Muster entspricht. Sie können ein vordefiniertes Muster wählen, das einem bestimmten Ereignistyp entspricht, oder Sie können ein benutzerdefiniertes Muster erstellen. Wenn Sie ein vordefiniertes Muster auswählen, können Sie das Muster bearbeiten, um es anzupassen. Weitere Informationen zu Ereignismustern finden Sie unter [Ereignismuster in CloudWatch Ereignissen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html). 
   + **Zeitplan**: Ihre Regel wird regelmäßig nach einem bestimmten Zeitplan initiiert. Sie können einen festen Tarif verwenden, der regelmäßig für eine bestimmte Anzahl von Minuten, Stunden oder Wochen initiiert wird. Sie können auch einen [Cron-Ausdruck](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions) verwenden, um einen detaillierteren Zeitplan zu erstellen, z. B. „jeden ersten Montag im Monat um 8 Uhr.“ Der Zeitplan wird für benutzerdefinierte Ereignisse oder Partner-Ereignisse nicht unterstützt. 

1. Wählen Sie den gewünschten Eventbus aus. 

1. Wählen Sie das/die Ziel/e aus, die aufgerufen werden sollen, wenn ein Ereignis Ihrem Ereignismuster entspricht oder wenn der Zeitplan initiiert wird. Sie können bis zu 5 Ziele pro Regel hinzufügen. Wählen Sie `SageMaker Pipeline` in der Dropdown-Liste für das Ziel aus. 

1. Wählen Sie die Pipeline, die Sie initiieren möchten, aus der Pipeline-Dropdown-Liste aus. 

1. Fügen Sie mithilfe eines Namens- und Wertepaars Parameter hinzu, die an Ihre Pipeline-Ausführung übergeben werden sollen. Die Parameterwerte können statisch oder dynamisch sein. Weitere Informationen zu den Amazon SageMaker AI Pipeline-Parametern finden Sie unter [AWS::Events::Rule SagemakerPipelineParameters](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-pipeline.html#aws-resource-sagemaker-pipeline-properties).
   + Statische Werte werden jedes Mal, wenn die Pipeline initiiert wird, an die Pipeline-Ausführung übergeben. Wenn beispielsweise in der Parameterliste angegeben `{"Name": "Instance_type", "Value": "ml.4xlarge"}` ist, wird es bei `StartPipelineExecutionRequest` jeder EventBridge Initiierung der Pipeline als Parameter übergeben. 
   + Dynamische Werte werden mithilfe eines JSON-Pfads angegeben. EventBridge analysiert den Wert aus einer Ereignisnutzlast und übergibt ihn dann an die Pipeline-Ausführung. Beispiel: *`$.detail.param.value`* 

1. Wählen Sie die Rolle aus, die für diese Regel verwendet werden soll. Sie können entweder eine bereits vorhandene Rolle verwenden oder eine neue Rolle erstellen. 

1. (Optional) Tags hinzufügen. 

1. Wählen Sie `Create` diese Option aus, um Ihre Regel fertigzustellen. 

 Ihre Regel ist jetzt gültig und bereit, Ihre Pipeline-Ausführungen zu initiieren. 

### Erstellen Sie eine EventBridge Regel mit dem [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/events/index.html)
<a name="pipeline-eventbridge-schedule-cli"></a>

 Das folgende Verfahren zeigt, wie Sie eine EventBridge Regel mit dem erstellen AWS CLI. 

1. Erstellen Sie eine Regel, die initiiert werden soll. Wenn Sie eine EventBridge Regel mithilfe von erstellen AWS CLI, haben Sie zwei Optionen, wie Ihre Regel initiiert wird: Ereignismuster und Zeitplan.
   +  **Ereignismuster**: Ihre Regel wird ausgelöst, wenn ein Ereignis eintritt, das dem Muster entspricht. Sie können ein vordefiniertes Muster wählen, das einem bestimmten Ereignistyp entspricht, oder Sie können ein benutzerdefiniertes Muster erstellen. Wenn Sie ein vordefiniertes Muster auswählen, können Sie das Muster bearbeiten, um es anzupassen.  Mit dem folgenden Befehl können Sie eine Regel mit einem Ereignismuster erstellen: 

     ```
     aws events put-rule --name <RULE_NAME> ----event-pattern <YOUR_EVENT_PATTERN> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
     ```
   +  **Zeitplan**: Ihre Regel wird regelmäßig nach einem bestimmten Zeitplan initiiert. Sie können einen festen Tarif verwenden, der regelmäßig für eine bestimmte Anzahl von Minuten, Stunden oder Wochen initiiert wird. Sie können auch einen Cron-Ausdruck verwenden, um einen detaillierteren Zeitplan zu erstellen, z. B. „jeden ersten Montag im Monat um 8 Uhr“. Der Zeitplan wird für benutzerdefinierte Ereignisse oder Partner-Ereignisse nicht unterstützt. Sie können eine Regel mit Zeitplan mit dem folgenden Befehl erstellen: 

     ```
     aws events put-rule --name <RULE_NAME> --schedule-expression <YOUR_CRON_EXPRESSION> --description <RULE_DESCRIPTION> --role-arn <ROLE_TO_EXECUTE_PIPELINE> --tags <TAGS>
     ```

1. Fügen Sie Ziele hinzu, die aufgerufen werden sollen, wenn ein Ereignis Ihrem Ereignismuster entspricht oder wenn der Zeitplan initiiert wird. Sie können bis zu 5 Ziele pro Regel hinzufügen.  Für jedes Ziel müssen Sie Folgendes angeben:  
   +  ARN: Der Ressourcen-ARN Ihrer Pipeline. 
   +  Rollen-ARN: Der ARN der Rolle EventBridge sollte die Ausführung der Pipeline übernehmen. 
   +  Parameter: Zu übergebende Amazon SageMaker AI-Pipeline-Parameter. 

1. Führen Sie den folgenden Befehl aus, um mithilfe von [put-targets](https://docs.aws.amazon.com/cli/latest/reference/events/put-targets.html) eine Amazon SageMaker AI-Pipeline als Ziel an Ihre Regel zu übergeben: 

   ```
   aws events put-targets --rule <RULE_NAME> --event-bus-name <EVENT_BUS_NAME> --targets "[{\"Id\": <ID>, \"Arn\": <RESOURCE_ARN>, \"RoleArn\": <ROLE_ARN>, \"SageMakerPipelineParameter\": { \"SageMakerParameterList\": [{\"Name\": <NAME>, \"Value\": <VALUE>}]} }]"] 
   ```

## Planen Sie eine Pipeline mit dem SageMaker Python-SDK
<a name="build-and-manage-scheduling"></a>

In den folgenden Abschnitten erfahren Sie, wie Sie mit dem SageMaker Python-SDK Berechtigungen für den Zugriff auf EventBridge Ressourcen einrichten und Ihren Pipeline-Zeitplan erstellen. 

### Erforderliche Berechtigungen
<a name="build-and-manage-scheduling-permissions"></a>

Sie benötigen die erforderlichen Berechtigungen, um den Pipeline-Scheduler zu verwenden. Führen Sie die folgenden Schritte aus, um Ihre Berechtigungen einzurichten.

1. Fügen Sie der IAM-Rolle, die zum Erstellen der Pipeline-Trigger verwendet wurde, die folgende Richtlinie für Mindestberechtigungen hinzu, oder verwenden Sie die AWS verwaltete Richtlinie`AmazonEventBridgeSchedulerFullAccess`.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement":
       [
           {
               "Action":
               [
                   "scheduler:ListSchedules",
                   "scheduler:GetSchedule",
                   "scheduler:CreateSchedule",
                   "scheduler:UpdateSchedule",
                   "scheduler:DeleteSchedule"
               ],
               "Effect": "Allow",
               "Resource":
               [
                   "*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*", 
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": "scheduler.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------

1. Stellen Sie eine Vertrauensbeziehung mit her, EventBridge indem Sie den Dienstprinzipal `scheduler.amazonaws.com` zur Vertrauensrichtlinie dieser Rolle hinzufügen. Stellen Sie sicher, dass Sie der Ausführungsrolle die folgende Vertrauensrichtlinie zuordnen, wenn Sie das Notebook in SageMaker Studio starten.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "scheduler.amazonaws.com",
                    "sagemaker.amazonaws.com"
                ]
            },
        "Action": "sts:AssumeRole"
        }
    ]
}
```

------

### Erstellen eines Pipeline-Zeitplans
<a name="build-and-manage-scheduling-create"></a>

Mithilfe des `PipelineSchedule` Konstruktors können Sie eine Pipeline so planen, dass sie einmal oder in einem festgelegten Intervall ausgeführt wird. Ein Pipelineplan muss vom Typ `at``rate`, oder `cron` sein. Diese Gruppe von Zeitplanungstypen ist eine Erweiterung der [EventBridge Planungsoptionen](https://docs.aws.amazon.com/scheduler/latest/UserGuide/schedule-types.html). Weitere Informationen zur Verwendung der `PipelineSchedule` Klasse finden Sie unter [sagemaker.workflow.triggers. PipelineSchedule](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#pipeline-schedule). Das folgende Beispiel zeigt, wie Sie jeden Planungstyp mit erstellen`PipelineSchedule`.

```
from sagemaker.workflow.triggers import PipelineSchedule

# schedules a pipeline run for 12/13/2023 at time 10:15:20 UTC
my_datetime_schedule = PipelineSchedule(
    name="<schedule-name>", 
    at=datetime(2023, 12, 13, 10, 15, 20)
)

# schedules a pipeline run every 5 minutes
my_rate_schedule = PipelineSchedule(
    name="<schedule-name>", 
    rate=(5, "minutes")
)

# schedules a pipeline run at 10:15am UTC on the last Friday of each month during the years 2022 to 2023
my_cron_schedule = PipelineSchedule(
    name="<schedule-name>", 
    cron="15 10 ? * 6L 2022-2023"
)
```

**Anmerkung**  
Wenn Sie einen einmaligen Zeitplan erstellen und auf die aktuelle Uhrzeit zugreifen müssen, verwenden Sie `datetime.utcnow()` statt`datetime.now()`. Letzteres speichert den aktuellen Zonenkontext nicht und führt zu einer falschen Zeitangabe EventBridge.

### Hängen Sie den Trigger an Ihre Pipeline an
<a name="build-and-manage-scheduling-attach"></a>

Um Ihren an Ihre `PipelineSchedule` Pipeline anzuhängen, rufen Sie den `put_triggers` Aufruf für Ihr erstelltes Pipeline-Objekt mit einer Liste von Triggern auf. Wenn Sie einen Antwort-ARN erhalten, haben Sie den Zeitplan erfolgreich in Ihrem Konto erstellt und EventBridge beginnen, die Zielpipeline zum angegebenen Zeitpunkt oder mit der angegebenen Rate aufzurufen. Sie müssen eine Rolle mit den richtigen Berechtigungen angeben, um Trigger an eine übergeordnete Pipeline anzuhängen. Wenn Sie keine angeben, ruft Pipelines die Standardrolle, die zum Erstellen der Pipeline verwendet wurde, aus der [Konfigurationsdatei](https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-decorator-config.html) ab.

Das folgende Beispiel zeigt, wie ein Zeitplan an eine Pipeline angehängt wird.

```
scheduled_pipeline = Pipeline(
    name="<pipeline-name>",
    steps=[...],
    sagemaker_session=<sagemaker-session>,
)
custom_schedule = PipelineSchedule(
    name="<schedule-name>", 
    at=datetime(year=2023, month=12, date=25, hour=10, minute=30, second=30)
)
scheduled_pipeline.put_triggers(triggers=[custom_schedule], role_arn=<role>)
```

### Beschreiben Sie die aktuellen Auslöser
<a name="build-and-manage-scheduling-describe"></a>

Um Informationen über Ihre erstellten Pipeline-Trigger abzurufen, können Sie die `describe_trigger()` API mit dem Namen des Triggers aufrufen. Dieser Befehl gibt Details zum erstellten Zeitplanausdruck zurück, wie beispielsweise die Startzeit, den Aktivierungsstatus und andere nützliche Informationen. Der folgende Ausschnitt zeigt einen Beispielaufruf:

```
scheduled_pipeline.describe_trigger(name="<schedule-name>")
```

### Bereinigungs-Trigger-Ressourcen
<a name="build-and-manage-scheduling-clean"></a>

Bevor Sie Ihre Pipeline löschen, sollten Sie vorhandene Auslöser bereinigen, um ein Ressourcenleck in Ihrem Konto zu vermeiden. Sie sollten die Trigger löschen, bevor Sie die übergeordnete Pipeline zerstören. Sie können Ihre Trigger löschen, indem Sie eine Liste mit Triggernamen an die `delete_triggers` API übergeben. Das folgende Snippet zeigt, wie Sie Trigger löschen.

```
pipeline.delete_triggers(trigger_names=["<schedule-name>"])
```

**Anmerkung**  
Beachten Sie die folgenden Einschränkungen, wenn Sie Ihre Trigger löschen:  
Die Option zum Löschen der Trigger durch Angabe von Triggernamen ist nur im SageMaker Python-SDK verfügbar. Durch das Löschen der Pipeline in der CLI oder bei einem `DeletePipeline` API-Aufruf werden Ihre Trigger nicht gelöscht. Infolgedessen werden die Trigger verwaist und die SageMaker KI versucht, einen Run für eine nicht existierende Pipeline zu starten.
Wenn Sie eine andere Notebook-Sitzung verwenden oder das Pipeline-Ziel bereits gelöscht haben, bereinigen Sie außerdem verwaiste Zeitpläne über die [Scheduler-CLI oder EventBridge -Konsole](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/scheduler/delete-schedule.html).

# Integration von Amazon SageMaker Experiments
<a name="pipelines-experiments"></a>

Amazon SageMaker Pipelines ist eng mit Amazon SageMaker Experiments integriert. Wenn Pipelines eine Pipeline erstellt und ausführt, werden standardmäßig die folgenden SageMaker Experiments-Entitäten erstellt, sofern sie nicht existieren:
+ Ein Experiment für die Pipeline
+ Eine Ausführungsgruppe für jede Ausführung der Pipeline
+ Ein Lauf, der der Ausführungsgruppe für jeden SageMaker AI-Job hinzugefügt wird, der in einem Pipeline-Ausführungsschritt erstellt wurde

Sie können Metriken wie die Genauigkeit des Modelltrainings über mehrere Pipeline-Ausführungen hinweg vergleichen, genauso wie Sie solche Metriken in mehreren Ausführungsgruppen eines SageMaker KI-Modell-Trainingsexperiments vergleichen können.

Das folgende Beispiel zeigt die relevanten Parameter der [Pipeline-Klasse](https://github.com/aws/sagemaker-python-sdk/blob/v2.41.0/src/sagemaker/workflow/pipeline.py) im [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable).

```
Pipeline(
    name="MyPipeline",
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      ExecutionVariables.PIPELINE_NAME,
      ExecutionVariables.PIPELINE_EXECUTION_ID
    ),
    steps=[...]
)
```

Wenn Sie nicht möchten, dass eine Experiment- und Laufgruppe für die Pipeline erstellt wird, setzen Sie `pipeline_experiment_config` auf `None`.

**Anmerkung**  
Die Integration von Experimenten wurde im Amazon SageMaker Python SDK v2.41.0 eingeführt.

Je nachdem, was Sie für die Parameter `ExperimentName` und `TrialName` von `pipeline_experiment_config` angeben, gelten die folgenden Benennungsregeln:
+ Wenn Sie `ExperimentName` nicht angeben, wird die Pipeline `name` für den Experimentnamen verwendet.

  Wenn Sie `ExperimentName` angeben, wird es für den Namen des Experiments verwendet. Wenn ein Experiment mit diesem Namen existiert, werden die von der Pipeline erstellten Versuchsgruppen dem vorhandenen Experiment hinzugefügt. Wenn ein Experiment mit diesem Namen nicht existiert, wird ein neues Experiment erstellt.
+ Wenn Sie `TrialName` nicht angeben, wird die Pipeline-Ausführungs-ID für den Namen der Ausführungsgruppe verwendet.

  Wenn Sie `TrialName` angeben, wird sie für den Namen der Ausführungsgruppe verwendet. Wenn eine Ausführungsgruppe mit diesem Namen existiert, werden die von der Pipeline erstellten Verläufe der vorhandenen Ausführungsgruppe hinzugefügt. Wenn eine Ausführungsgruppe mit diesem Namen nicht existiert, wird eine neue Ausführungsgruppe erstellt.

**Anmerkung**  
Die Experiment-Entitäten werden nicht gelöscht, wenn die Pipeline, die die Entitäten erstellt hat, gelöscht wird. Sie können die SageMaker Experiments-API verwenden, um die Entitäten zu löschen.

Informationen zum Anzeigen der mit einer Pipeline verknüpften SageMaker AI Experiment-Entitäten finden Sie unter[Greifen Sie auf Versuchsdaten aus einer Pipeline zu](pipelines-studio-experiments.md). Weitere Informationen zu SageMaker Experimenten finden Sie unter[SageMaker Amazon-Experimente in Studio Classic](experiments.md).

Die folgenden Abschnitte zeigen Beispiele für die vorherigen Regeln und wie sie in der Pipeline-Definitionsdatei dargestellt werden. Weitere Informationen zu Pipeline-Definitionsdateien finden Sie unter [Übersicht über die Pipelines](pipelines-overview.md).

**Topics**
+ [Standardverhalten](pipelines-experiments-default.md)
+ [Deaktivieren Sie die Integration von Experimenten](pipelines-experiments-none.md)
+ [Geben Sie einen benutzerdefinierten Experimentnamen an](pipelines-experiments-custom-experiment.md)
+ [Geben Sie einen benutzerdefinierten Namen für die Ausführungsgruppe an](pipelines-experiments-custom-trial.md)

# Standardverhalten
<a name="pipelines-experiments-default"></a>

**Erstellen Sie eine Pipeline**

Das Standardverhalten beim Erstellen einer SageMaker KI-Pipeline besteht darin, sie automatisch in SageMaker Experimente zu integrieren. Wenn Sie keine benutzerdefinierte Konfiguration angeben, erstellt SageMaker AI ein Experiment mit demselben Namen wie die Pipeline, eine Ausführungsgruppe für jede Ausführung der Pipeline mit der Pipeline-Ausführungs-ID als Namen und einzelne Läufe innerhalb jeder Ausführungsgruppe für jeden SageMaker AI-Job, der als Teil der Pipeline-Schritte gestartet wird. Sie können Metriken verschiedener Pipeline-Ausführungen nahtlos verfolgen und vergleichen, ähnlich wie Sie ein Modelltrainingsexperiment analysieren würden. Im folgenden Abschnitt wird dieses Standardverhalten bei der Definition einer Pipeline ohne explizite Konfiguration der Experimentintegration veranschaulicht.

Das `pipeline_experiment_config` ist weggelassen. `ExperimentName` ist standardmäßig auf die Pipeline `name` eingestellt. `TrialName` ist standardmäßig die Ausführungs-ID.

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    steps=[step_train]
)
```

**Pipeline-Definitionsdatei**

```
{
  "Version": "2020-12-01",
  "Parameters": [
    {
      "Name": "InputDataSource"
    },
    {
      "Name": "InstanceCount",
      "Type": "Integer",
      "DefaultValue": 1
    }
  ],
  "PipelineExperimentConfig": {
    "ExperimentName": {"Get": "Execution.PipelineName"},
    "TrialName": {"Get": "Execution.PipelineExecutionId"}
  },
  "Steps": [...]
}
```

# Deaktivieren Sie die Integration von Experimenten
<a name="pipelines-experiments-none"></a>

**Erstellen Sie eine Pipeline**

Sie können die Integration Ihrer Pipeline mit SageMaker Experimenten deaktivieren, indem Sie den `pipeline_experiment_config` Parameter `None` bei der Definition Ihrer Pipeline auf setzen. Auf diese Weise erstellt SageMaker KI nicht automatisch ein Experiment, führt Gruppen oder einzelne Läufe durch, um Metriken und Artefakte im Zusammenhang mit Ihren Pipeline-Ausführungen zu verfolgen. Im folgenden Beispiel wird der Pipeline-Konfigurationsparameter auf gesetzt`None`.

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=None,
    steps=[step_train]
)
```

**Pipeline-Definitionsdatei**

Dies entspricht dem vorherigen Standardbeispiel, ohne die `PipelineExperimentConfig`.

# Geben Sie einen benutzerdefinierten Experimentnamen an
<a name="pipelines-experiments-custom-experiment"></a>

Das Standardverhalten besteht zwar darin, den Pipeline-Namen als Experimentnamen in SageMaker Experimenten zu verwenden, Sie können dies jedoch überschreiben und stattdessen einen benutzerdefinierten Experimentnamen angeben. Dies kann nützlich sein, wenn Sie mehrere Pipeline-Ausführungen unter demselben Experiment gruppieren möchten, um die Analyse und den Vergleich zu vereinfachen. Als Name der Ausführungsgruppe wird weiterhin standardmäßig die Pipeline-Ausführungs-ID verwendet, sofern Sie nicht auch explizit einen benutzerdefinierten Namen dafür festlegen. Im folgenden Abschnitt wird gezeigt, wie Sie eine Pipeline mit einem benutzerdefinierten Experimentnamen erstellen und dabei den Namen der Ausführungsgruppe als Standard-Ausführungs-ID beibehalten.

**Erstellen Sie eine Pipeline**

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      "CustomExperimentName",
      ExecutionVariables.PIPELINE_EXECUTION_ID
    ),
    steps=[step_train]
)
```

**Pipeline-Definitionsdatei**

```
{
  ...,
  "PipelineExperimentConfig": {
    "ExperimentName": "CustomExperimentName",
    "TrialName": {"Get": "Execution.PipelineExecutionId"}
  },
  "Steps": [...]
}
```

# Geben Sie einen benutzerdefinierten Namen für die Ausführungsgruppe an
<a name="pipelines-experiments-custom-trial"></a>

Sie können nicht nur einen benutzerdefinierten Experimentnamen festlegen, sondern auch einen benutzerdefinierten Namen für die Ausführungsgruppen angeben, die von SageMaker Experiments während der Pipeline-Ausführung erstellt wurden. An diesen Namen wird die Ausführungs-ID der Pipeline angehängt, um die Eindeutigkeit zu gewährleisten. Sie können einen benutzerdefinierten Namen für die Ausführungsgruppe angeben, um verwandte Pipeline-Läufe innerhalb desselben Experiments zu identifizieren und zu analysieren. Im folgenden Abschnitt wird gezeigt, wie Sie eine Pipeline mit einem benutzerdefinierten Namen für die Ausführungsgruppe definieren und dabei den Standardnamen der Pipeline als Namen für das Experiment verwenden.

**Erstellen Sie eine Pipeline**

```
pipeline_name = f"MyPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[...],
    pipeline_experiment_config=PipelineExperimentConfig(
      ExecutionVariables.PIPELINE_NAME,
      Join(on="-", values=["CustomTrialName", ExecutionVariables.PIPELINE_EXECUTION_ID])
    ),
    steps=[step_train]
)
```

**Pipeline-Definitionsdatei**

```
{
  ...,
  "PipelineExperimentConfig": {
    "ExperimentName": {"Get": "Execution.PipelineName"},
    "TrialName": {
      "On": "-",
      "Values": [
         "CustomTrialName",
         {"Get": "Execution.PipelineExecutionId"}
       ]
    }
  },
  "Steps": [...]
}
```

# Führen Sie Pipelines im lokalen Modus aus
<a name="pipelines-local-mode"></a>

SageMaker Der lokale Modus von Pipelines ist eine einfache Möglichkeit, Ihre Trainings-, Verarbeitungs- und Inferenzskripts sowie die Laufzeitkompatibilität der [Pipeline-Parameter zu testen, bevor Sie Ihre Pipeline](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#pipeline-parameters) auf dem verwalteten SageMaker AI-Service ausführen. Im lokalen Modus können Sie Ihre SageMaker KI-Pipeline lokal mit einem kleineren Datensatz testen. Dies ermöglicht ein schnelles und einfaches Debuggen von Fehlern in Benutzerskripten und der Pipeline-Definition selbst, ohne dass die Kosten für die Nutzung des verwalteten Services anfallen. Das folgende Thema zeigt Ihnen, wie Sie Pipelines lokal definieren und ausführen.

Der lokale Modus von Pipelines nutzt den [lokalen Modus von SageMaker KI-Jobs](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode) unter der Haube. Dies ist eine Funktion im SageMaker Python-SDK, mit der Sie integrierte oder benutzerdefinierte SageMaker KI-Images lokal mithilfe von Docker-Containern ausführen können. Der lokale Modus von Pipelines basiert auf dem lokalen Modus für SageMaker KI-Jobs. Daher können Sie erwarten, dieselben Ergebnisse zu sehen, als ob Sie diese Jobs separat ausführen würden. Beispielsweise verwendet der lokale Modus immer noch Amazon S3, um Modellartefakte hochzuladen und Ausgaben zu verarbeiten. Wenn Sie möchten, dass durch lokale Jobs generierte Daten auf einer lokalen Festplatte gespeichert werden, können Sie das unter [Lokaler Modus](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode) beschriebene Setup verwenden.

Der lokale Pipeline-Modus unterstützt derzeit die folgenden Schritttypen:
+ [Schritt des Trainings](build-and-manage-steps-types.md#step-type-training)
+ [Verarbeitungsschritt](build-and-manage-steps-types.md#step-type-processing)
+ [Schritt Transformieren](build-and-manage-steps-types.md#step-type-transform)
+ [Model-Schritt](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-model-create) (nur mit Argumenten vom Typ „Modell erstellen“)
+ [Bedingungsschritt](build-and-manage-steps-types.md#step-type-condition)
+ [Schritt „Fehlschlagen“](build-and-manage-steps-types.md#step-type-fail)

Im Gegensatz zum Managed Pipelines Service, der die parallele Ausführung mehrerer Schritte mithilfe der [Parallelism Configuration ermöglicht, führt der lokale Pipeline-Executor](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#parallelism-configuration) die Schritte sequentiell aus. Daher kann die allgemeine Ausführungsleistung einer lokalen Pipeline schlechter sein als die einer Pipeline, die in der Cloud läuft. Dies hängt hauptsächlich von der Größe des Datensatzes, dem Algorithmus sowie der Leistung Ihres lokalen Computers ab. [Beachten Sie auch, dass Pipelines, die im lokalen Modus ausgeführt werden, nicht in SageMaker Experimenten aufgezeichnet werden.](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-experiments.html)

**Anmerkung**  
Der lokale Modus von Pipelines ist nicht kompatibel mit SageMaker KI-Algorithmen wie. XGBoost Wenn Sie diese Algorithmen verwenden möchten, müssen Sie diese im [Skriptmodus](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-script-mode/sagemaker-script-mode.html) verwenden.

Um eine Pipeline lokal ausführen zu können, müssen die `sagemaker_session` Felder, die den Pipeline-Schritten und der Pipeline selbst zugeordnet sind, vom Typ `LocalPipelineSession` sein. Das folgende Beispiel zeigt, wie Sie eine SageMaker KI-Pipeline definieren können, die lokal ausgeführt wird.

```
from sagemaker.workflow.pipeline_context import LocalPipelineSession
from sagemaker.pytorch import PyTorch
from sagemaker.workflow.steps import TrainingStep
from sagemaker.workflow.pipeline import Pipeline

local_pipeline_session = LocalPipelineSession()

pytorch_estimator = PyTorch(
    sagemaker_session=local_pipeline_session,
    role=sagemaker.get_execution_role(),
    instance_type="ml.c5.xlarge",
    instance_count=1,
    framework_version="1.8.0",
    py_version="py36",
    entry_point="./entry_point.py",
)

step = TrainingStep(
    name="MyTrainingStep",
    step_args=pytorch_estimator.fit(
        inputs=TrainingInput(s3_data="s3://amzn-s3-demo-bucket/my-data/train"),
    )
)

pipeline = Pipeline(
    name="MyPipeline",
    steps=[step],
    sagemaker_session=local_pipeline_session
)

pipeline.create(
    role_arn=sagemaker.get_execution_role(), 
    description="local pipeline example"
)

// pipeline will execute locally
execution = pipeline.start()

steps = execution.list_steps()

training_job_name = steps['PipelineExecutionSteps'][0]['Metadata']['TrainingJob']['Arn']

step_outputs = pipeline_session.sagemaker_client.describe_training_job(TrainingJobName = training_job_name)
```

Sobald Sie bereit sind, die Pipeline auf dem verwalteten SageMaker Pipelines-Service auszuführen, können Sie dies tun, indem Sie den vorherigen Codeausschnitt durch `PipelineSession` (wie im folgenden Codebeispiel gezeigt) ersetzen `LocalPipelineSession` und den Code erneut ausführen.

```
from sagemaker.workflow.pipeline_context import PipelineSession

pipeline_session = PipelineSession()
```

# Fehlerbehebung bei Amazon SageMaker Pipelines
<a name="pipelines-troubleshooting"></a>

Bei der Verwendung von Amazon SageMaker Pipelines können aus verschiedenen Gründen Probleme auftreten. Dieses Thema enthält Informationen zu häufigen Fehlern und zu deren Behebung. 

 **Probleme mit der Pipeline-Definition** 

Ihre Pipeline-Definition ist möglicherweise nicht richtig formatiert. Dies kann dazu führen, dass Ihre  Ausführung fehlschlägt oder Ihr Job ungenau ist. Diese Fehler können bei der Erstellung der Pipeline oder bei einer Ausführung erkannt werden. Wenn Ihre Definition nicht validiert wird, gibt Pipelines eine Fehlermeldung zurück, die das Zeichen identifiziert, bei dem die JSON-Datei falsch formatiert ist. Um dieses Problem zu beheben, überprüfen Sie die mit dem SageMaker AI Python SDK erstellten Schritte auf ihre Richtigkeit. 

Sie können Schritte nur einmal in eine Pipeline-Definition aufnehmen. Aus diesem Grund können Schritte nicht als Teil eines Bedingungsschritts *und* einer Pipeline in derselben Pipeline existieren. 

 **Pipeline-Protokolle werden untersucht** 

Sie können den Status Ihrer Schritte mit dem folgenden Befehl anzeigen: 

```
execution.list_steps()
```

Jeder Schritt enthält die folgenden Informationen:
+ Der ARN der Entität, die von der Pipeline gestartet wurde, z. B. SageMaker AI-Job-ARN, Modell-ARN oder Modellpaket-ARN. 
+ Die Fehlerursache beinhaltet eine kurze Erläuterung des Schritts, der fehlschlägt.
+ Wenn es sich bei dem Schritt um einen Bedingungsschritt handelt, beinhaltet er, ob die Bedingung als wahr oder falsch bewertet wird.  
+ Wenn bei der Ausführung eine frühere Jobausführung wiederverwendet wird, wird die Quellausführung `CacheHit` aufgeführt.  

Sie können die Fehlermeldungen und Protokolle auch in der Amazon SageMaker Studio-Oberfläche anzeigen. Weitere Informationen zum Anzeigen der Protokolle in Studio finden Sie unter [Anzeige der Details eines Pipeline-Laufs](pipelines-studio-view-execution.md).

 **Fehlende Berechtigungen** 

Für die Rolle, die die Pipeline-Ausführung erstellt, und für die Schritte, mit denen die einzelnen Jobs in Ihrer Pipeline-Ausführung erstellt werden, sind die richtigen Berechtigungen erforderlich. Ohne diese Berechtigungen können Sie Ihre Pipeline-Ausführung möglicherweise nicht wie erwartet einreichen oder Ihre SageMaker KI-Jobs ausführen. Informationen dazu, wie Sie sicherstellen können, dass Ihre Berechtigungen ordnungsgemäß eingerichtet sind, finden Sie unter [IAM-Zugriffsverwaltung](build-and-manage-access.md). 

 **Fehler bei der Auftragsausführung** 

Bei der Ausführung Ihrer Schritte können Probleme auftreten, die auf Probleme in den Skripten zurückzuführen sind, die die Funktionalität Ihrer SageMaker KI-Jobs definieren. Jeder Job hat eine Reihe von CloudWatch Protokollen. Informationen zum Anzeigen dieser Protokolle in Studio finden Sie unter[Anzeige der Details eines Pipeline-Laufs](pipelines-studio-view-execution.md). Informationen zur Verwendung von CloudWatch Protokollen mit SageMaker KI finden Sie unter[CloudWatch Protokolle für Amazon SageMaker AI](logging-cloudwatch.md). 

 **Fehler in der Eigenschaftendatei** 

Möglicherweise treten Probleme auf, wenn Sie Eigenschaftendateien mit Ihrer Pipeline falsch implementieren. Informationen dazu, wie Sie sicherstellen können, dass Ihre Implementierung von Eigenschaftendateien erwartungsgemäß funktioniert, finden Sie unter [Daten zwischen Schritten weitergeben](build-and-manage-propertyfile.md). 

 **Probleme beim Kopieren des Skripts in den Container in der Dockerfile** 

Sie können das Skript entweder in den Container kopieren oder es über das Argument (Ihrer Schätzfunktion-Entität) oder das `entry_point`-Argument (Ihrer Prozessoreinheit) `code` übergeben, wie im folgenden Codebeispiel gezeigt.

```
step_process = ProcessingStep(
    name="PreprocessAbaloneData",
    processor=sklearn_processor,
    inputs = [
        ProcessingInput(
            input_name='dataset',
            source=...,
            destination="/opt/ml/processing/code",
        )
    ],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train", destination = processed_data_path),
        ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation", destination = processed_data_path),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test", destination = processed_data_path),
    ],
    code=os.path.join(BASE_DIR, "process.py"), ## Code is passed through an argument
    cache_config = cache_config,
    job_arguments = ['--input', 'arg1']
)

sklearn_estimator = SKLearn(
    entry_point=os.path.join(BASE_DIR, "train.py"), ## Code is passed through the entry_point
    framework_version="0.23-1",
    instance_type=training_instance_type,
    role=role,
    output_path=model_path, # New
    sagemaker_session=sagemaker_session, # New
    instance_count=1, # New
    base_job_name=f"{base_job_prefix}/pilot-train",
    metric_definitions=[
        {'Name': 'train:accuracy', 'Regex': 'accuracy_train=(.*?);'},
        {'Name': 'validation:accuracy', 'Regex': 'accuracy_validation=(.*?);'}
    ],
)
```

# Pipeline-Aktionen
<a name="pipelines-build"></a>

Sie können entweder das Amazon SageMaker Pipelines Python SDK oder den drag-and-drop Visual Designer in Amazon SageMaker Studio verwenden, um Ihre ML-Workflows zu erstellen, anzuzeigen, zu bearbeiten, auszuführen und zu überwachen.

Der folgende Screenshot zeigt den visuellen Designer, mit dem Sie Ihre SageMaker Amazon-Pipelines erstellen und verwalten können.

![\[Screenshot der visuellen drag-and-drop Oberfläche für Pipelines in Studio.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


Nachdem Ihre Pipeline bereitgestellt wurde, können Sie den Directed Acyclic Graph (DAG) für Ihre Pipeline anzeigen und Ihre Ausführungen mit Amazon Studio verwalten. SageMaker Mit SageMaker Studio können Sie Informationen über Ihre aktuellen und historischen Pipelines abrufen, Ausführungen vergleichen, die DAG für Ihre Ausführungen einsehen, Metadateninformationen abrufen und vieles mehr. Weitere Informationen zum Anzeigen von Pipelines in Studio finden Sie unter [Anzeige der Details einer Pipeline](pipelines-studio-list.md). 

**Topics**
+ [Definieren einer Pipeline](define-pipeline.md)
+ [Bearbeiten einer Pipeline](edit-pipeline-before-execution.md)
+ [Ausführen Sie eine Pipeline](run-pipeline.md)
+ [Stopp Sie eine Pipeline](pipelines-studio-stop.md)
+ [Anzeige der Details einer Pipeline](pipelines-studio-list.md)
+ [Anzeige der Details eines Pipeline-Laufs](pipelines-studio-view-execution.md)
+ [Laden Sie eine Pipeline-Definitionsdatei herunter](pipelines-studio-download.md)
+ [Greifen Sie auf Versuchsdaten aus einer Pipeline zu](pipelines-studio-experiments.md)
+ [Verfolgen der Herkunft einer Pipeline](pipelines-lineage-tracking.md)

# Definieren einer Pipeline
<a name="define-pipeline"></a>

Um Ihre Workflows mit Amazon SageMaker Pipelines zu orchestrieren, müssen Sie einen gerichteten azyklischen Graphen (DAG) in Form einer JSON-Pipeline-Definition generieren. Der DAG legt die verschiedenen Schritte Ihres ML-Prozesses fest, wie beispielsweise die Datenvorverarbeitung, das Modelltraining, die Modellbewertung und die Modellbereitstellung, sowie die Abhängigkeiten und den Datenfluss zwischen diesen Schritten. Im folgenden Thema wird gezeigt, wie Sie eine Pipeline-Definition generieren.

Sie können Ihre JSON-Pipeline-Definition entweder mit dem SageMaker Python-SDK oder der visuellen drag-and-drop Pipeline-Designer-Funktion in Amazon SageMaker Studio generieren. Die folgende Abbildung zeigt die Pipeline-DAG, die Sie in diesem Tutorial erstellen:

![\[Screenshot der visuellen drag-and-drop Oberfläche für Pipelines in Studio.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/pipelines/pipelines-studio-overview.png)


Die Pipeline, die Sie in den folgenden Abschnitten definieren, löst ein Regressionsproblem, um das Alter einer Abalone anhand ihrer physikalischen Maße zu bestimmen. Ein lauffähiges Jupyter-Notizbuch, das den Inhalt dieses Tutorials enthält, finden Sie unter [Orchestrating Jobs](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.html) with Amazon Model Building Pipelines. SageMaker 

**Anmerkung**  
[Sie können auf die Modellposition als Eigenschaft des Trainingsschritts verweisen, wie in der Beispielpipeline auf Github gezeigt. end-to-end CustomerChurn ](https://github.com/aws-samples/customer-churn-sagemaker-pipelines-sample/blob/main/pipelines/customerchurn/pipeline.py)

**Topics**

## Definieren Sie eine Pipeline (Pipeline Designer)
<a name="create-pipeline-designer"></a>

Die folgende exemplarische Vorgehensweise führt Sie durch die Schritte zum Erstellen einer Barebones-Pipeline mit dem drag-and-drop Pipeline Designer. **Wenn Sie Ihre Pipeline-Bearbeitungssitzung im Visual Designer zu einem beliebigen Zeitpunkt unterbrechen oder beenden müssen, klicken Sie auf die Option Exportieren.** Auf diese Weise können Sie die aktuelle Definition Ihrer Pipeline in Ihre lokale Umgebung herunterladen. Später, wenn Sie den Pipeline-Bearbeitungsprozess fortsetzen möchten, können Sie dieselbe JSON-Definitionsdatei in den Visual Designer importieren.

### Erstellen eines Verarbeitungsschritts
<a name="create-processing-step"></a>

Gehen Sie wie folgt vor, um einen Datenverarbeitungsauftrag zu erstellen:

1. Öffnen Sie die Studio-Konsole, indem Sie den Anweisungen unter [Starten Sie Amazon SageMaker Studio](studio-updated-launch.md) folgen.

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. Wählen Sie **Erstellen** aus.

1. **Wählen Sie Leer.**

1. Wählen Sie in der linken Seitenleiste die Option **Daten verarbeiten** und ziehen Sie sie auf die Arbeitsfläche.

1. Wählen Sie auf der Arbeitsfläche den Schritt „**Daten verarbeiten**“ aus, den Sie hinzugefügt haben.

1. Um einen Eingabedatensatz **hinzuzufügen**, wählen Sie in der rechten Seitenleiste unter **Daten (Eingabe)** die Option Hinzufügen und wählen Sie einen Datensatz aus.

1. Um einen Speicherort für Ausgabe-Datasets **hinzuzufügen**, wählen Sie in der rechten Seitenleiste unter **Daten (Ausgabe)** die Option Hinzufügen und navigieren Sie zum Ziel.

1. Füllen Sie die verbleibenden Felder in der rechten Seitenleiste aus. [Informationen zu den Feldern auf diesen Registerkarten finden Sie unter sagemaker.workflow.steps. ProcessingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.ProcessingStep).

### Erstellen Sie einen Trainingsschritt
<a name="create-training-step"></a>

Gehen Sie zum Einrichten eines Modell-Trainingsschritts wie folgt vor:

1. Wählen Sie in der linken Seitenleiste **Train Model** und ziehen Sie es auf die Leinwand.

1. Wählen Sie auf der Arbeitsfläche den Schritt **Train Model** aus, den Sie hinzugefügt haben.

1. Um einen Eingabedatensatz **hinzuzufügen**, wählen Sie in der rechten Seitenleiste unter **Daten (Eingabe)** die Option Hinzufügen und wählen Sie einen Datensatz aus.

1. Um einen Speicherort für Ihre Modellartefakte auszuwählen, geben Sie eine Amazon-S3-URI in das Feld **Standort (S3-URI)** ein oder wählen Sie **S3 durchsuchen** aus, um zum Zielort zu navigieren.

1. Füllen Sie die verbleibenden Felder in der rechten Seitenleiste aus. Informationen zu den Feldern in diesen Tabs finden Sie unter [sagemaker.workflow.steps. TrainingStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.steps.TrainingStep).

1. Klicken und ziehen Sie den Cursor aus dem **Prozessdatenschritt**, den Sie im vorherigen Abschnitt hinzugefügt haben, in den Schritt Modell **trainieren**, um eine Kante zu erzeugen, die die beiden Schritte verbindet.

### Erstellen Sie ein Modellpaket mit dem Schritt Modell registrieren
<a name="create-register-model-step"></a>

Um ein Modellpaket mit einem Modellregistrierungsschritt zu erstellen, führen Sie die folgenden Schritte aus:

1. Wählen Sie in der linken Seitenleiste **Modell registrieren** und ziehen Sie es auf die Arbeitsfläche.

1. Wählen Sie auf der Arbeitsfläche den Schritt **Modell registrieren** aus, den Sie hinzugefügt haben.

1. Um ein Modell für die Registrierung auszuwählen, wählen Sie unter **Modell (Eingabe)** die Option **Hinzufügen** aus.

1. Wählen Sie **Modellgruppe erstellen**, um Ihr Modell zu einer neuen Modellgruppe hinzuzufügen.

1. Füllen Sie die verbleibenden Felder in der rechten Seitenleiste aus. Informationen zu den Feldern in diesen Tabs finden Sie unter [sagemaker.workflow.step\$1collections. RegisterModel](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.step_collections.RegisterModel).

1. **Klicken und ziehen Sie den Cursor aus dem Schritt **Modell trainieren, den Sie im vorherigen Abschnitt hinzugefügt haben, in den Schritt Modell** registrieren, um eine Kante zu erzeugen, die die beiden Schritte verbindet.**

### Stellen Sie das Modell mit dem Schritt Modell bereitstellen (Endpunkt) auf einem Endpunkt bereit
<a name="create-deploy-endpoint-step"></a>

Um Ihr Modell mit einem Modellbereitstellungsschritt bereitzustellen, führen Sie die folgenden Schritte aus:

1. Wählen Sie in der linken Seitenleiste **Modell bereitstellen (Endpunkt)** aus und ziehen Sie es auf die Leinwand.

1. Wählen Sie auf der Arbeitsfläche den Schritt **Modell bereitstellen (Endpunkt)** aus, den Sie hinzugefügt haben.

1. Um ein Modell für die Bereitstellung auszuwählen, wählen Sie unter **Modell (Eingabe)** die Option **Hinzufügen** aus.

1. Wählen Sie das Optionsfeld **Endpunkt erstellen**, um einen neuen Endpunkt zu erstellen.

1. Geben Sie einen **Namen** und eine **Beschreibung** für den Endpunkt ein.

1. Klicken und ziehen Sie den Cursor aus dem Schritt **Modell registrieren**, den Sie im vorherigen Abschnitt hinzugefügt haben, in den Schritt **Modell bereitstellen (Endpunkt)**, um eine Kante zu erstellen, die die beiden Schritte verbindet.

1. Füllen Sie die verbleibenden Felder in der rechten Seitenleiste aus.

### Definieren Sie die Pipeline-Parameter
<a name="define-pipeline-parameters"></a>

Sie können eine Reihe von Pipeline-Parametern konfigurieren, deren Werte für jede Ausführung aktualisiert werden können. Um die Pipeline-Parameter zu definieren und die Standardwerte festzulegen, klicken Sie auf das Zahnradsymbol unten im Visual Designer.

### Pipeline speichern
<a name="save-pipeline"></a>

Nachdem Sie alle erforderlichen Informationen eingegeben haben, um Ihre Pipeline zu erstellen, klicken Sie unten im visuellen Designer auf **Speichern**. Dadurch wird Ihre Pipeline zur Laufzeit auf mögliche Fehler überprüft und Sie werden benachrichtigt. Der **Speichervorgang** ist erst erfolgreich, wenn Sie alle Fehler behoben haben, die durch die automatischen Validierungsprüfungen gekennzeichnet wurden. Wenn Sie die Bearbeitung zu einem späteren Zeitpunkt fortsetzen möchten, können Sie Ihre Pipeline in Bearbeitung als JSON-Definition in Ihrer lokalen Umgebung speichern. Sie können Ihre Pipeline als JSON-Definitionsdatei **exportieren, indem Sie unten im Visual Designer auf die Schaltfläche Exportieren** klicken. Um später mit der Aktualisierung Ihrer Pipeline fortzufahren, laden Sie diese JSON-Definitionsdatei hoch, indem Sie auf die Schaltfläche **Importieren** klicken.

## Definieren Sie eine Pipeline (SageMaker Python SDK)
<a name="create-pipeline-wrap"></a>

### Voraussetzungen
<a name="define-pipeline-prereq"></a>

 Zur Ausführung des folgenden Tutorials gehen Sie wie folgt vor: 
+ Richten Sie Ihre Notebook-Instance wie unter [Notebook-Instance erstellen](https://docs.aws.amazon.com/sagemaker/latest/dg/howitworks-create-ws.html) beschrieben ein. Dadurch erhält Ihre Rolle Lese- und Schreibberechtigungen für Amazon S3 sowie zum Erstellen von Schulungs-, Batch-Transform- und Verarbeitungsaufträgen in SageMaker KI. 
+ Erteilen Sie Ihrem Notebook Berechtigungen zum Abrufen und Weitergeben seiner eigenen Rolle, wie unter Richtlinie zu [Rollenberechtigungen ändern](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy) beschrieben. Fügen Sie den folgenden JSON-Snippet hinzu, um diese Richtlinie an Ihre Rolle anzuhängen. Ersetzen Sie `<your-role-arn>` durch den ARN, der zum Erstellen Ihrer Notebook-Instance verwendet wurde. 

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iam:GetRole",
                  "iam:PassRole"
              ],
              "Resource": "arn:aws:iam::111122223333:role/role-name"
          }
      ]
  }
  ```

------
+  Vertrauen Sie dem SageMaker AI-Serviceprinzipal, indem Sie die Schritte unter [Ändern einer Rollenvertrauensrichtlinie befolgen](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-cli.html#roles-managingrole_edit-trust-policy-cli). Fügen Sie das folgende Anweisungsfragment zur Vertrauensstellung Ihrer Rolle hinzu: 

  ```
  {
        "Sid": "",
        "Effect": "Allow",
        "Principal": {
          "Service": "sagemaker.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
  ```

#### So richten Sie Ihre Umgebung ein
<a name="define-pipeline-prereq-setup"></a>

Erstellen Sie eine neue SageMaker AI-Sitzung mit dem folgenden Codeblock. Dadurch wird der Rollen-ARN für die Sitzung zurückgegeben. Bei diesem Rollen-ARN sollte es sich um den ARN für die Ausführungsrolle handeln, den Sie als Voraussetzung eingerichtet haben. 

```
import boto3
import sagemaker
import sagemaker.session
from sagemaker.workflow.pipeline_context import PipelineSession

region = boto3.Session().region_name
sagemaker_session = sagemaker.session.Session()
role = sagemaker.get_execution_role()
default_bucket = sagemaker_session.default_bucket()

pipeline_session = PipelineSession()

model_package_group_name = f"AbaloneModelPackageGroupName"
```

### Erstellen Sie eine Pipeline
<a name="define-pipeline-create"></a>

**Wichtig**  
Benutzerdefinierte IAM-Richtlinien, die es Amazon SageMaker Studio oder Amazon SageMaker Studio Classic ermöglichen, SageMaker Amazon-Ressourcen zu erstellen, müssen auch Berechtigungen zum Hinzufügen von Tags zu diesen Ressourcen gewähren. Die Berechtigung zum Hinzufügen von Tags zu Ressourcen ist erforderlich, da Studio und Studio Classic automatisch alle von ihnen erstellten Ressourcen taggen. Wenn eine IAM-Richtlinie Studio und Studio Classic das Erstellen von Ressourcen, aber kein Tagging erlaubt, können "AccessDenied" Fehler beim Versuch, Ressourcen zu erstellen, auftreten. Weitere Informationen finden Sie unter [Erteilen Sie Berechtigungen für das Taggen von SageMaker KI-Ressourcen](security_iam_id-based-policy-examples.md#grant-tagging-permissions).  
[AWS verwaltete Richtlinien für Amazon SageMaker AI](security-iam-awsmanpol.md)die Berechtigungen zum Erstellen von SageMaker Ressourcen gewähren, beinhalten bereits Berechtigungen zum Hinzufügen von Tags beim Erstellen dieser Ressourcen.

Führen Sie die folgenden Schritte von Ihrer SageMaker KI-Notebook-Instanz aus, um eine Pipeline zu erstellen, die Schritte für Folgendes umfasst:
+ Vorverarbeitung
+ Training
+ Bewertung
+ bedingte Bewertung
+ Modellregistrierung

**Anmerkung**  
Sie können die [Join-Funktion](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#execution-variables) verwenden [ExecutionVariables](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#execution-variables), um Ihren Ausgabeort anzugeben. `ExecutionVariables`wird zur Laufzeit aufgelöst. `ExecutionVariables.PIPELINE_EXECUTION_ID` wird beispielsweise in die ID der aktuellen Ausführung aufgelöst, die als eindeutige Kennung für verschiedene Läufe verwendet werden kann.

#### Schritt 1: Herunterladen des Datensatzes
<a name="define-pipeline-data-download"></a>

Dieses Notebook verwendet den UCI Machine Learning Abalone Datensatz. Der Datensatz enthält folgende Merkmale: 
+ `length`– Die längste Schalenmessung der Abalone.
+ `diameter`– Der Durchmesser der Abalone senkrecht zu ihrer Länge.
+ `height`– Die Höhe der Abalone mit Fleisch in der Schale.
+ `whole_weight`– Das Gewicht der ganzen Abalone.
+ `shucked_weight`– Das Gewicht des aus der Abalone entnommenen Fleisches.
+ `viscera_weight`– Das Gewicht der Eingeweide der Abalone nach der Blutung.
+ `shell_weight`– Das Gewicht der Abalone-Schale nach dem Entnehmen und Trocknen des Fleisches.
+ `sex`– Das Geschlecht der Abalone. Eines von „M“, „F“ oder „I“, wobei „I“ für eine Säuglingsabalone steht.
+ `rings`– Die Anzahl der Ringe in der Abalone-Schale.

Die Anzahl der Ringe in der Abalone-Schale ist anhand der Formel `age=rings + 1.5` eine gute Näherung für ihr Alter. Das Abrufen dieser Zahl ist jedoch eine zeitaufwändige Aufgabe. Sie müssen die Schale durch den Kegel schneiden, den Abschnitt färben und die Anzahl der Ringe durch ein Mikroskop zählen. Die anderen physikalischen Messungen sind jedoch einfacher abzurufen. Dieses Notebook verwendet den Datensatz, um anhand der anderen physikalischen Messungen ein Vorhersagemodell der variablen Ringe zu erstellen.

**Zum Herunterladen des Datensatzes**

1. Laden Sie den Datensatz in den standardmäßigen Amazon-S3-Bucket Ihres Kontos herunter.

   ```
   !mkdir -p data
   local_path = "data/abalone-dataset.csv"
   
   s3 = boto3.resource("s3")
   s3.Bucket(f"sagemaker-servicecatalog-seedcode-{region}").download_file(
       "dataset/abalone-dataset.csv",
       local_path
   )
   
   base_uri = f"s3://{default_bucket}/abalone"
   input_data_uri = sagemaker.s3.S3Uploader.upload(
       local_path=local_path, 
       desired_s3_uri=base_uri,
   )
   print(input_data_uri)
   ```

1. Laden Sie nach der Erstellung Ihres Modells einen zweiten Datensatz für die Batch-Transformation herunter.

   ```
   local_path = "data/abalone-dataset-batch.csv"
   
   s3 = boto3.resource("s3")
   s3.Bucket(f"sagemaker-servicecatalog-seedcode-{region}").download_file(
       "dataset/abalone-dataset-batch",
       local_path
   )
   
   base_uri = f"s3://{default_bucket}/abalone"
   batch_data_uri = sagemaker.s3.S3Uploader.upload(
       local_path=local_path, 
       desired_s3_uri=base_uri,
   )
   print(batch_data_uri)
   ```

#### Schritt 2: Definieren von Pipeline-Parametern
<a name="define-pipeline-parameters"></a>

 Dieser Codeblock definiert die folgenden Parameter für Ihre Pipeline: 
+  `processing_instance_count` – Die Anzahl der Instances des Verarbeitungsjobs. 
+  `input_data` – Der Amazon S3-Speicherort der Eingabedaten.. 
+  `batch_data` – Der Amazon-S3-Speicherort der Eingabedaten für die Batch-Transformation. 
+  `model_approval_status` – Der Genehmigungsstatus, mit dem das trainierte Modell für CI/CD registriert werden soll. Weitere Informationen finden Sie unter [MLOps Automatisierung mit SageMaker Projekten](sagemaker-projects.md).

```
from sagemaker.workflow.parameters import (
    ParameterInteger,
    ParameterString,
)

processing_instance_count = ParameterInteger(
    name="ProcessingInstanceCount",
    default_value=1
)
model_approval_status = ParameterString(
    name="ModelApprovalStatus",
    default_value="PendingManualApproval"
)
input_data = ParameterString(
    name="InputData",
    default_value=input_data_uri,
)
batch_data = ParameterString(
    name="BatchData",
    default_value=batch_data_uri,
)
```

#### Schritt 3: Definieren eines Verarbeitungsschritts für Feature Engineering
<a name="define-pipeline-processing-feature"></a>

In diesem Abschnitt wird erläutert, wie Sie einen Verarbeitungsschritt erstellen, um die Daten aus dem Datensatz für das Training vorzubereiten.

**Um einen Verarbeitungsschritt zu erstellen**

1.  Erstellen Sie ein Verzeichnis für das Verarbeitungsskript.

   ```
   !mkdir -p abalone
   ```

1. Erstellen Sie im Verzeichnis `/abalone` eine Datei namens `preprocessing.py` mit folgendem Inhalt. Dieses Vorverarbeitungsskript wird an den Verarbeitungsschritt zur Ausführung der Eingabedaten übergeben. Der Trainingsschritt verwendet dann die vorverarbeiteten Trainingsmerkmale und Labels, um ein Modell zu trainieren. Der Bewertungsschritt verwendet das trainierte Modell und die vorverarbeiteten Testmerkmale und Labels, um das Modell zu evaluieren. Das Skript verwendet `scikit-learn` für die folgenden Aufgaben:
   +  Füllen Sie fehlende `sex` kategoriale Daten aus und codieren Sie sie so, dass sie für das Training geeignet sind. 
   +  Skalieren und normalisieren Sie alle numerischen Felder außer `rings` und `sex`. 
   +  Teilen Sie die Daten in Trainings-, Test- und Validierungsdatensätze auf. 

   ```
   %%writefile abalone/preprocessing.py
   import argparse
   import os
   import requests
   import tempfile
   import numpy as np
   import pandas as pd
   
   
   from sklearn.compose import ColumnTransformer
   from sklearn.impute import SimpleImputer
   from sklearn.pipeline import Pipeline
   from sklearn.preprocessing import StandardScaler, OneHotEncoder
   
   
   # Because this is a headerless CSV file, specify the column names here.
   feature_columns_names = [
       "sex",
       "length",
       "diameter",
       "height",
       "whole_weight",
       "shucked_weight",
       "viscera_weight",
       "shell_weight",
   ]
   label_column = "rings"
   
   feature_columns_dtype = {
       "sex": str,
       "length": np.float64,
       "diameter": np.float64,
       "height": np.float64,
       "whole_weight": np.float64,
       "shucked_weight": np.float64,
       "viscera_weight": np.float64,
       "shell_weight": np.float64
   }
   label_column_dtype = {"rings": np.float64}
   
   
   def merge_two_dicts(x, y):
       z = x.copy()
       z.update(y)
       return z
   
   
   if __name__ == "__main__":
       base_dir = "/opt/ml/processing"
   
       df = pd.read_csv(
           f"{base_dir}/input/abalone-dataset.csv",
           header=None, 
           names=feature_columns_names + [label_column],
           dtype=merge_two_dicts(feature_columns_dtype, label_column_dtype)
       )
       numeric_features = list(feature_columns_names)
       numeric_features.remove("sex")
       numeric_transformer = Pipeline(
           steps=[
               ("imputer", SimpleImputer(strategy="median")),
               ("scaler", StandardScaler())
           ]
       )
   
       categorical_features = ["sex"]
       categorical_transformer = Pipeline(
           steps=[
               ("imputer", SimpleImputer(strategy="constant", fill_value="missing")),
               ("onehot", OneHotEncoder(handle_unknown="ignore"))
           ]
       )
   
       preprocess = ColumnTransformer(
           transformers=[
               ("num", numeric_transformer, numeric_features),
               ("cat", categorical_transformer, categorical_features)
           ]
       )
       
       y = df.pop("rings")
       X_pre = preprocess.fit_transform(df)
       y_pre = y.to_numpy().reshape(len(y), 1)
       
       X = np.concatenate((y_pre, X_pre), axis=1)
       
       np.random.shuffle(X)
       train, validation, test = np.split(X, [int(.7*len(X)), int(.85*len(X))])
   
       
       pd.DataFrame(train).to_csv(f"{base_dir}/train/train.csv", header=False, index=False)
       pd.DataFrame(validation).to_csv(f"{base_dir}/validation/validation.csv", header=False, index=False)
       pd.DataFrame(test).to_csv(f"{base_dir}/test/test.csv", header=False, index=False)
   ```

1.  Erstellen Sie eine Instance von `SKLearnProcessor`, die an den Verarbeitungsschritt übergeben werden soll. 

   ```
   from sagemaker.sklearn.processing import SKLearnProcessor
   
   
   framework_version = "0.23-1"
   
   sklearn_processor = SKLearnProcessor(
       framework_version=framework_version,
       instance_type="ml.m5.xlarge",
       instance_count=processing_instance_count,
       base_job_name="sklearn-abalone-process",
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1. Erstellen Sie einen Verarbeitungsschritt. In diesem Schritt werden die `SKLearnProcessor` Eingabe- und Ausgabekanäle sowie das von Ihnen erstellte `preprocessing.py` Skript berücksichtigt. Dies ist der `run` Methode einer Prozessorinstanz im SageMaker AI Python SDK sehr ähnlich. Der Parameter `input_data`, der an `ProcessingStep` übergeben wird, sind die Eingabedaten des Schrittes selbst. Diese Eingabedaten werden von der Prozessor-Instance verwendet, wenn sie ausgeführt wird. 

    Beachten Sie die in der Ausgabekonfiguration für den Verarbeitungsauftrag angegebenen `"train`, `"validation`, und `"test"` benannten Kanäle. Schritte `Properties` wie diese können in nachfolgenden Schritten verwendet werden und werden bei der Laufzeit in ihre Laufzeitwerte umgewandelt. 

   ```
   from sagemaker.processing import ProcessingInput, ProcessingOutput
   from sagemaker.workflow.steps import ProcessingStep
      
   
   processor_args = sklearn_processor.run(
       inputs=[
         ProcessingInput(source=input_data, destination="/opt/ml/processing/input"),  
       ],
       outputs=[
           ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
           ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
           ProcessingOutput(output_name="test", source="/opt/ml/processing/test")
       ],
       code="abalone/preprocessing.py",
   ) 
   
   step_process = ProcessingStep(
       name="AbaloneProcess",
       step_args=processor_args
   )
   ```

#### Schritt 4: Definieren eines Trainingsschritts
<a name="define-pipeline-training"></a>

In diesem Abschnitt wird gezeigt, wie der SageMaker [XGBoostKI-Algorithmus](https://docs.aws.amazon.com/sagemaker/latest/dg/xgboost.html) verwendet wird, um ein Modell anhand der Trainingsdaten zu trainieren, die aus den Verarbeitungsschritten ausgegeben werden. 

**Um einen Trainingsschritt zu definieren**

1.  Geben Sie den Modellpfad an, in dem Sie die Modelle aus dem Training speichern möchten. 

   ```
   model_path = f"s3://{default_bucket}/AbaloneTrain"
   ```

1. Konfigurieren Sie einen Schätzer für den XGBoost Algorithmus und den Eingabedatensatz. Der Typ der Trainings-Instance wird an den Schätzer übergeben. Ein typisches Trainingsskript:
   + lädt Daten aus den Eingangskanälen
   + konfiguriert das Training mit Hyperparametern
   + trainiert ein Modell
   + speichert ein Modell unter, `model_dir` sodass es später gehostet werden kann

   SageMaker Die KI lädt das Modell in Form eines Jobs `model.tar.gz` am Ende der Schulung auf Amazon S3 hoch.

   ```
   from sagemaker.estimator import Estimator
   
   
   image_uri = sagemaker.image_uris.retrieve(
       framework="xgboost",
       region=region,
       version="1.0-1",
       py_version="py3",
       instance_type="ml.m5.xlarge"
   )
   xgb_train = Estimator(
       image_uri=image_uri,
       instance_type="ml.m5.xlarge",
       instance_count=1,
       output_path=model_path,
       sagemaker_session=pipeline_session,
       role=role,
   )
   xgb_train.set_hyperparameters(
       objective="reg:linear",
       num_round=50,
       max_depth=5,
       eta=0.2,
       gamma=4,
       min_child_weight=6,
       subsample=0.7,
       silent=0
   )
   ```

1. Erstellen Sie einen `TrainingStep` unter Verwendung der Schätzfunktion-Instance und der Eigenschaften des `ProcessingStep`. Übergeben Sie den `S3Uri` des `"train"`- und `"validation"`-Ausgangskanals an den `TrainingStep`.  

   ```
   from sagemaker.inputs import TrainingInput
   from sagemaker.workflow.steps import TrainingStep
   
   
   train_args = xgb_train.fit(
       inputs={
           "train": TrainingInput(
               s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                   "train"
               ].S3Output.S3Uri,
               content_type="text/csv"
           ),
           "validation": TrainingInput(
               s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                   "validation"
               ].S3Output.S3Uri,
               content_type="text/csv"
           )
       },
   )
   
   step_train = TrainingStep(
       name="AbaloneTrain",
       step_args = train_args
   )
   ```

#### Schritt 5: Definieren eines Verarbeitungsschritts für die Modellbewertung
<a name="define-pipeline-processing-model"></a>

In diesem Abschnitt wird erläutert, wie Sie einen Verarbeitungsschritt erstellen, um die Genauigkeit des Modells zu bewerten. Das Ergebnis dieser Modellauswertung wird im Schritt „Bedingung“ verwendet, um zu bestimmen, welcher Ausführungspfad gewählt werden soll.

**Um einen Verarbeitungsschritt für die Modellevaluierung zu definieren**

1. Erstellen Sie im Verzeichnis `/abalone` eine Datei mit dem Namen `evaluation.py`. Dieses Skript wird in einem Verarbeitungsschritt zur Durchführung der Modellevaluierung verwendet. Es verwendet ein trainiertes Modell und den Testdatensatz als Eingabe und erstellt dann eine JSON-Datei mit Bewertungsmetriken für die Klassifizierung.

   ```
   %%writefile abalone/evaluation.py
   import json
   import pathlib
   import pickle
   import tarfile
   import joblib
   import numpy as np
   import pandas as pd
   import xgboost
   
   
   from sklearn.metrics import mean_squared_error
   
   
   if __name__ == "__main__":
       model_path = f"/opt/ml/processing/model/model.tar.gz"
       with tarfile.open(model_path) as tar:
           tar.extractall(path=".")
       
       model = pickle.load(open("xgboost-model", "rb"))
   
       test_path = "/opt/ml/processing/test/test.csv"
       df = pd.read_csv(test_path, header=None)
       
       y_test = df.iloc[:, 0].to_numpy()
       df.drop(df.columns[0], axis=1, inplace=True)
       
       X_test = xgboost.DMatrix(df.values)
       
       predictions = model.predict(X_test)
   
       mse = mean_squared_error(y_test, predictions)
       std = np.std(y_test - predictions)
       report_dict = {
           "regression_metrics": {
               "mse": {
                   "value": mse,
                   "standard_deviation": std
               },
           },
       }
   
       output_dir = "/opt/ml/processing/evaluation"
       pathlib.Path(output_dir).mkdir(parents=True, exist_ok=True)
       
       evaluation_path = f"{output_dir}/evaluation.json"
       with open(evaluation_path, "w") as f:
           f.write(json.dumps(report_dict))
   ```

1.  Erstellen Sie eine Instance von `ScriptProcessor`, die verwendet wird, um eine `ProcessingStep` zu erstellen. 

   ```
   from sagemaker.processing import ScriptProcessor
   
   
   script_eval = ScriptProcessor(
       image_uri=image_uri,
       command=["python3"],
       instance_type="ml.m5.xlarge",
       instance_count=1,
       base_job_name="script-abalone-eval",
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1.  Erstellen Sie einen `ProcessingStep` unter Verwendung der Prozessorinstanz, der Eingangs- und Ausgangskanäle und des `evaluation.py`-Skripts. Übergeben Sie:
   + die `S3ModelArtifacts`-Eigenschaft aus dem `step_train`-Trainingsschritt
   + der `S3Uri` des `"test"` Ausgangskanals des `step_process` Verarbeitungsschritts

   Dies ist der `run` Methode einer Prozessorinstanz im SageMaker AI Python SDK sehr ähnlich.  

   ```
   from sagemaker.workflow.properties import PropertyFile
   
   
   evaluation_report = PropertyFile(
       name="EvaluationReport",
       output_name="evaluation",
       path="evaluation.json"
   )
   
   eval_args = script_eval.run(
           inputs=[
           ProcessingInput(
               source=step_train.properties.ModelArtifacts.S3ModelArtifacts,
               destination="/opt/ml/processing/model"
           ),
           ProcessingInput(
               source=step_process.properties.ProcessingOutputConfig.Outputs[
                   "test"
               ].S3Output.S3Uri,
               destination="/opt/ml/processing/test"
           )
       ],
       outputs=[
           ProcessingOutput(output_name="evaluation", source="/opt/ml/processing/evaluation"),
       ],
       code="abalone/evaluation.py",
   )
   
   step_eval = ProcessingStep(
       name="AbaloneEval",
       step_args=eval_args,
       property_files=[evaluation_report],
   )
   ```

#### Schritt 6: Definieren Sie eine CreateModelStep für die Batch-Transformation
<a name="define-pipeline-create-model"></a>

**Wichtig**  
Wir empfehlen [Modellschritt](build-and-manage-steps-types.md#step-type-model) die Verwendung zum Erstellen von Modellen ab Version 2.90.0 des SageMaker Python-SDK. `CreateModelStep`funktioniert weiterhin in früheren Versionen des SageMaker Python-SDK, wird aber nicht mehr aktiv unterstützt.

In diesem Abschnitt wird gezeigt, wie aus der Ausgabe des Trainingsschritts ein SageMaker KI-Modell erstellt wird. Dieses Modell wird für die Batch-Transformation eines neuen Datensatzes verwendet. Dieser Schritt wird an den Bedingungsschritt übergeben und nur ausgeführt, wenn der Bedingungsschritt den Wert `true` ergibt.

**Um eine Transformation CreateModelStep für Batch zu definieren**

1.  Erstellen Sie ein SageMaker KI-Modell. Übergeben Sie die `S3ModelArtifacts` Eigenschaft aus dem `step_train` Trainingsschritt.

   ```
   from sagemaker.model import Model
   
   
   model = Model(
       image_uri=image_uri,
       model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
       sagemaker_session=pipeline_session,
       role=role,
   )
   ```

1. Definieren Sie die Modelleingabe für Ihr SageMaker KI-Modell.

   ```
   from sagemaker.inputs import CreateModelInput
   
   
   inputs = CreateModelInput(
       instance_type="ml.m5.large",
       accelerator_type="ml.eia1.medium",
   )
   ```

1. Erstellen Sie Ihre `CreateModelStep` unter Verwendung der `CreateModelInput` von Ihnen definierten SageMaker AI-Modellinstanz.

   ```
   from sagemaker.workflow.steps import CreateModelStep
   
   
   step_create_model = CreateModelStep(
       name="AbaloneCreateModel",
       model=model,
       inputs=inputs,
   )
   ```

#### Schritt 7: Definieren Sie eine TransformStep , um eine Batch-Transformation durchzuführen
<a name="define-pipeline-transform"></a>

In diesem Abschnitt wird gezeigt, wie ein `TransformStep` erstellt wird, um eine Batch-Transformation an einem Datensatz durchzuführen, nachdem das Modell trainiert wurde. Dieser Schritt wird an den Bedingungsschritt übergeben und nur ausgeführt, wenn der Bedingungsschritt den Wert `true` ergibt.

**Um eine zu definieren TransformStep , um eine Batch-Transformation durchzuführen**

1. Erstellen Sie eine Transformer-Instance mit dem entsprechenden Compute-Instance-Typ, der Instance-Anzahl und der gewünschten Amazon S3-Output-Bucket-URI. Übergeben Sie die `ModelName` Eigenschaft aus dem `step_create_model` `CreateModel` Schritt. 

   ```
   from sagemaker.transformer import Transformer
   
   
   transformer = Transformer(
       model_name=step_create_model.properties.ModelName,
       instance_type="ml.m5.xlarge",
       instance_count=1,
       output_path=f"s3://{default_bucket}/AbaloneTransform"
   )
   ```

1. Erstellen Sie eine `TransformStep` mit der Transformer-Instance, die Sie definiert haben, und dem `batch_data` Pipeline-Parameter.

   ```
   from sagemaker.inputs import TransformInput
   from sagemaker.workflow.steps import TransformStep
   
   
   step_transform = TransformStep(
       name="AbaloneTransform",
       transformer=transformer,
       inputs=TransformInput(data=batch_data)
   )
   ```

#### Schritt 8: Definieren Sie einen RegisterModel Schritt zum Erstellen eines Modellpakets
<a name="define-pipeline-register"></a>

**Wichtig**  
Wir empfehlen [Modellschritt](build-and-manage-steps-types.md#step-type-model) die Verwendung zur Registrierung von Modellen ab Version 2.90.0 des SageMaker Python SDK. `RegisterModel`funktioniert weiterhin in früheren Versionen des SageMaker Python-SDK, wird aber nicht mehr aktiv unterstützt.

In diesem Abschnitt wird erläutert, wie eine Instance von `RegisterModel` erstellt wird. Das Ergebnis der Ausführung von `RegisterModel` in einer Pipeline ist ein Modellpaket. Ein Modellpaket ist eine wiederverwendbare Abstraktion von Modellartefakten, die alle für die Inferenz erforderlichen Bestandteile verpackt. Es besteht aus einer Inferenzspezifikation, die das zu verwendende Inferenz-Image zusammen mit einer optionalen Position der Modellgewichte definiert. Eine Modellpaketgruppe ist eine Sammlung von Modellpaketen. Sie können `ModelPackageGroup` für Pipelines verwenden, um der Gruppe für jede Pipeline-Ausführung eine neue Version und ein neues Modellpaket hinzuzufügen. Weitere Informationen zur Modellregistrierung finden Sie unter [Bereitstellung von Modellregistrierung mit Model Registry](model-registry.md).

Dieser Schritt wird an den Bedingungsschritt übergeben und nur ausgeführt, wenn der Bedingungsschritt den Wert `true` ergibt.

**Um einen RegisterModel Schritt zum Erstellen eines Modellpakets zu definieren**
+  Konstruieren Sie einen `RegisterModel` Schritt mit der Estimator-Instance, die Sie für den Trainingsschritt verwendet haben. Übergeben Sie die `S3ModelArtifacts` Eigenschaft aus dem `step_train` Trainingsschritt und geben Sie `ModelPackageGroup` an. Pipelines erstellt diese `ModelPackageGroup` für Sie.

  ```
  from sagemaker.model_metrics import MetricsSource, ModelMetrics 
  from sagemaker.workflow.step_collections import RegisterModel
  
  
  model_metrics = ModelMetrics(
      model_statistics=MetricsSource(
          s3_uri="{}/evaluation.json".format(
              step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"]
          ),
          content_type="application/json"
      )
  )
  step_register = RegisterModel(
      name="AbaloneRegisterModel",
      estimator=xgb_train,
      model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
      content_types=["text/csv"],
      response_types=["text/csv"],
      inference_instances=["ml.t2.medium", "ml.m5.xlarge"],
      transform_instances=["ml.m5.xlarge"],
      model_package_group_name=model_package_group_name,
      approval_status=model_approval_status,
      model_metrics=model_metrics
  )
  ```

#### Schritt 9: Definieren eines Bedingungsschritts zur Überprüfung der Modellgenauigkeit
<a name="define-pipeline-condition"></a>

Ein `ConditionStep` ermöglicht es Pipelines, die bedingte Ausführung in Ihrer Pipeline-DAG basierend auf dem Zustand der Schritteigenschaften zu unterstützen. In diesem Fall möchten Sie ein Modellpaket nur registrieren, wenn die Genauigkeit dieses Modells den erforderlichen Wert übersteigt. Die Genauigkeit des Modells wird durch den Schritt der Modellbewertung bestimmt. Wenn die Genauigkeit den erforderlichen Wert überschreitet, erstellt die Pipeline auch ein SageMaker KI-Modell und führt eine Batch-Transformation für einen Datensatz durch. In diesem Abschnitt wird erläutert, wie der Schritt Bedingung definiert wird.

**Um einen Bedingungsschritt zur Überprüfung der Modellgenauigkeit zu definieren**

1.  Definieren Sie eine `ConditionLessThanOrEqualTo` Bedingung anhand des Genauigkeitswerts, der in der Ausgabe des Verarbeitungsschritts der Modellbewertung ermittelt wurde, `step_eval`. Verwenden Sie für diese Ausgabe die Eigenschaftendatei, die Sie im Verarbeitungsschritt indexiert haben, und den entsprechenden quadratischen Fehlerwert JSONPath des mittleren Quadrats. `"mse"`

   ```
   from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo
   from sagemaker.workflow.condition_step import ConditionStep
   from sagemaker.workflow.functions import JsonGet
   
   
   cond_lte = ConditionLessThanOrEqualTo(
       left=JsonGet(
           step_name=step_eval.name,
           property_file=evaluation_report,
           json_path="regression_metrics.mse.value"
       ),
       right=6.0
   )
   ```

1.  Konstruieren Sie ein `ConditionStep`. Übergeben Sie die `ConditionEquals` Bedingung und legen Sie dann die Schritte zur Registrierung des Modellpakets und zur Batch-Transformation als nächste Schritte fest, wenn die Bedingung erfüllt ist. 

   ```
   step_cond = ConditionStep(
       name="AbaloneMSECond",
       conditions=[cond_lte],
       if_steps=[step_register, step_create_model, step_transform],
       else_steps=[], 
   )
   ```

#### Schritt 10: Erstellen einer Pipeline
<a name="define-pipeline-pipeline"></a>

Nachdem Sie nun alle Schritte erstellt haben, können Sie sie zu einer Pipeline zusammenfassen.

**So erstellen Sie eine Pipeline**

1.  Definieren Sie Folgendes für Ihre Pipeline: `name`, `parameters`, und`steps`. Die Namen müssen innerhalb eines `(account, region)`-Paares eindeutig sein.
**Anmerkung**  
Ein Schritt kann entweder in der Schrittliste der Pipeline oder in den if/else-Schrittlisten des Bedingungsschritts nur einmal vorkommen. Er kann nicht in beiden vorkommen. 

   ```
   from sagemaker.workflow.pipeline import Pipeline
   
   
   pipeline_name = f"AbalonePipeline"
   pipeline = Pipeline(
       name=pipeline_name,
       parameters=[
           processing_instance_count,
           model_approval_status,
           input_data,
           batch_data,
       ],
       steps=[step_process, step_train, step_eval, step_cond],
   )
   ```

1.  (Optional) Untersuchen Sie die JSON-Pipeline-Definition, um sicherzustellen, dass sie korrekt formatiert ist.

   ```
   import json
   
   json.loads(pipeline.definition())
   ```

 Diese Pipeline-Definition ist bereit, an KI übermittelt zu werden SageMaker . Im nächsten Tutorial reichen Sie diese Pipeline an SageMaker AI ein und starten einen Lauf. 

## Definieren Sie eine Pipeline (JSON)
<a name="collapsible-section-1"></a>

Sie können auch [boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_pipeline) oder [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-pipeline.html)zum Erstellen einer Pipeline verwenden. Das Erstellen einer Pipeline erfordert eine Pipeline-Definition, bei der es sich um ein JSON-Objekt handelt, das jeden Schritt der Pipeline definiert. Das SageMaker SDK bietet eine einfache Möglichkeit, die Pipeline-Definition zu erstellen, die Sie mit jeder der APIs zuvor genannten Methoden verwenden können, um die Pipeline selbst zu erstellen. Ohne das SDK zu verwenden, müssen Benutzer die rohe JSON-Definition schreiben, um die Pipeline ohne die vom SageMaker Python-SDK bereitgestellten Fehlerprüfungen zu erstellen. Das Schema für die JSON-Definition der Pipeline finden Sie unter [JSON-Schema der SageMaker KI-Pipeline-Definition](https://aws-sagemaker-mlops.github.io/sagemaker-model-building-pipeline-definition-JSON-schema/). Das folgende Codebeispiel zeigt ein Beispiel für ein JSON-Objekt mit einer SageMaker AI-Pipeline-Definition:

```
{'Version': '2020-12-01',
 'Metadata': {},
 'Parameters': [{'Name': 'ProcessingInstanceType',
   'Type': 'String',
   'DefaultValue': 'ml.m5.xlarge'},
  {'Name': 'ProcessingInstanceCount', 'Type': 'Integer', 'DefaultValue': 1},
  {'Name': 'TrainingInstanceType',
   'Type': 'String',
   'DefaultValue': 'ml.m5.xlarge'},
  {'Name': 'ModelApprovalStatus',
   'Type': 'String',
   'DefaultValue': 'PendingManualApproval'},
  {'Name': 'ProcessedData',
   'Type': 'String',
   'DefaultValue': 'S3_URL',
{'Name': 'InputDataUrl',
   'Type': 'String',
   'DefaultValue': 'S3_URL',
 'PipelineExperimentConfig': {'ExperimentName': {'Get': 'Execution.PipelineName'},
  'TrialName': {'Get': 'Execution.PipelineExecutionId'}},
 'Steps': [{'Name': 'ReadTrainDataFromFS',
   'Type': 'Processing',
   'Arguments': {'ProcessingResources': {'ClusterConfig': {'InstanceType': 'ml.m5.4xlarge',
      'InstanceCount': 2,
      'VolumeSizeInGB': 30}},
    'AppSpecification': {'ImageUri': 'IMAGE_URI',
     'ContainerArguments': [....]},
    'RoleArn': 'ROLE',
      'ProcessingInputs': [...],
    'ProcessingOutputConfig': {'Outputs': [.....]},
    'StoppingCondition': {'MaxRuntimeInSeconds': 86400}},
   'CacheConfig': {'Enabled': True, 'ExpireAfter': '30d'}},
   ...
   ...
   ...
  }
```

 **Nächster Schritt:** [Ausführen Sie eine Pipeline](run-pipeline.md) 

# Bearbeiten einer Pipeline
<a name="edit-pipeline-before-execution"></a>

Gehen Sie wie folgt vor, um Änderungen an einer Pipeline vorzunehmen:

1. Öffnen Sie SageMaker Studio, indem Sie den Anweisungen unter [Amazon SageMaker Studio starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html) folgen.

1. Wählen Sie im linken Navigationsbereich von Studio die Option **Pipelines** aus.

1. Wählen Sie einen Pipelinamen aus, um Details zur Pipeline anzuzeigen.

1. Wählen Sie die Registerkarte **Ausführungen**.

1. Wählen Sie den Namen einer Pipeline-Ausführung aus.

1. Wählen Sie **Bearbeiten**, um den Pipeline Designer zu öffnen.

1. Aktualisieren Sie die Kanten zwischen den Schritten oder die Schrittkonfiguration nach Bedarf und klicken Sie auf **Speichern**. 

   Beim Speichern einer Pipeline nach der Bearbeitung wird automatisch eine neue Versionsnummer generiert.

1. Klicken Sie auf **Ausführen**.

# Ausführen Sie eine Pipeline
<a name="run-pipeline"></a>

Nachdem Sie die Schritte Ihrer Pipeline als gerichteten azyklischen Graphen (DAG) definiert haben, können Sie Ihre Pipeline ausführen, die die in Ihrer DAG definierten Schritte ausführt. Die folgenden exemplarischen Vorgehensweisen zeigen Ihnen, wie Sie eine Amazon SageMaker AI-Pipeline entweder mit dem drag-and-drop visuellen Editor in Amazon SageMaker Studio oder dem Amazon SageMaker Python SDK ausführen.

## Führen Sie eine Pipeline aus (Pipeline-Designer)
<a name="run-pipeline-designer"></a>

Gehen Sie wie folgt vor, um eine neue Ausführung Ihrer Pipeline zu starten:

------
#### [ Studio ]

1. Öffnen Sie SageMaker Studio, indem Sie den Anweisungen unter [Amazon SageMaker Studio starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html) folgen.

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. (Optional) Um die Liste der Pipelines nach Namen zu filtern, geben Sie einen vollständigen Namen oder einen Teil in das Suchfeld ein.

1. Wählen Sie einen Pipeline-Namen aus, um die Pipeline-Detailansicht zu öffnen.

1. Wählen Sie oben rechts **Visual Editor** aus.

1. Um eine Ausführung von der neuesten Version aus zu starten, wählen Sie **Ausführungen.**

1. Gehen Sie folgendermaßen vor, um eine Ausführung von einer bestimmten Version aus zu starten:
   + Wählen Sie das Versionssymbol in der unteren Werkzeugleiste, um das Versionsfenster zu öffnen.
   + Wählen Sie die Pipeline-Version aus, die Sie anzeigen möchten.
   + **Zeigen Sie mit der Maus auf das Versionselement, um das Dreipunktmenü einzublenden, und wählen Sie Ausführen.**
   + (Optional) Um eine frühere Version der Pipeline anzuzeigen, wählen Sie im Versionsfenster aus dem Dreipunktmenü die Option **Vorschau** aus. Sie können die Version auch bearbeiten, indem Sie in der Benachrichtigungsleiste auf **Bearbeiten** klicken.

**Anmerkung**  
Wenn Ihre Pipeline ausfällt, zeigt das Statusbanner den Status **Fehlgeschlagen** an. Nachdem Sie den fehlgeschlagenen Schritt behoben haben, wählen Sie im Statusbanner die Option **Erneut versuchen** aus, um die Pipeline von diesem Schritt aus weiter auszuführen.

------
#### [ Studio Classic ]

1. Melden Sie sich bei Amazon SageMaker Studio Classic an. Weitere Informationen finden Sie unter [Amazon SageMaker Studio Classic starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Wählen Sie in der Studio-Classic Seitenleiste das Symbol **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/studio/icons/house.png)) aus.

1. Wählen Sie im Menü **Pipelines** aus.

1. Um die Liste der Pipelines nach Namen einzugrenzen, geben Sie einen vollständigen oder teilweisen Pipelinenamen in das Suchfeld ein.

1. Wählen Sie einen Pipelinamen aus.

1. Wählen Sie in der **Ausführungsliste auf der Registerkarte Ausführungen** oder **Diagramm** die Option Ausführung **erstellen** aus.

1. Geben Sie die folgenden Informationen ein oder aktualisieren Sie sie:
   + **Name** – Muss für Ihr Konto in der AWS -Region eindeutig sein.
   + **ProcessingInstanceCount**— Die Anzahl der Instances, die für die Verarbeitung verwendet werden sollen.
   + **ModelApprovalStatus**— Zu Ihrer Bequemlichkeit.
   + **InputDataUrl**— Die Amazon S3 S3-URI der Eingabedaten.

1. Wählen Sie **Starten**.

Sobald Ihre Pipeline läuft, können Sie sich die Details der Ausführung ansehen, indem Sie im Statusbanner auf **Details anzeigen** klicken.

Um die Ausführung zu beenden, wählen Sie im Statusbanner die Option **Stopp**. Um die Ausführung an der Stelle fortzusetzen, an der sie gestoppt wurde, wählen Sie im Statusbanner die Option **Fortfahren** aus.

**Anmerkung**  
Wenn Ihre Pipeline ausfällt, zeigt das Statusbanner den Status **Fehlgeschlagen** an. Nachdem Sie den fehlgeschlagenen Schritt behoben haben, wählen Sie im Statusbanner die Option **Erneut versuchen** aus, um die Pipeline von diesem Schritt aus weiter auszuführen.

------

## Eine Pipeline ausführen (SageMaker Python SDK)
<a name="run-pipeline-sdk"></a>

Nachdem Sie mit dem SageMaker AI Python SDK eine Pipeline-Definition erstellt haben, können Sie sie an SageMaker AI senden, um mit der Ausführung zu beginnen. Das folgende Tutorial zeigt, wie Sie eine Pipeline einreichen, eine Ausführung starten, die Ergebnisse dieser Ausführung untersuchen und Ihre Pipeline löschen. 

**Topics**
+ [Voraussetzungen](#run-pipeline-prereq)
+ [Schritt 1: Starten der Pipeline](#run-pipeline-submit)
+ [Schritt 2: Untersuchen Sie eine Pipeline-Ausführung](#run-pipeline-examine)
+ [Schritt 3: Überschreiben Sie die Standardparameter für eine Pipeline-Ausführung](#run-pipeline-parametrized)
+ [Schritt 4: Stoppen und löschen Sie eine Pipeline-Ausführung](#run-pipeline-delete)

### Voraussetzungen
<a name="run-pipeline-prereq"></a>

Für dieses Tutorial benötigen Sie Folgendes: 
+  Eine SageMaker Notebook-Instanz.  
+  Eine Pipeline-Definition. In diesem Tutorial wird davon ausgegangen, dass Sie die Pipeline-Definition verwenden, die Sie nach Abschluss des [Definieren einer Pipeline](define-pipeline.md) Tutorials erstellt haben. 

### Schritt 1: Starten der Pipeline
<a name="run-pipeline-submit"></a>

Zuerst müssen Sie die Pipeline starten. 

**Um die Pipeline zu starten**

1. Untersuchen Sie die JSON-Pipeline-Definition, um sicherzustellen, dass sie wohlgeformt ist.

   ```
   import json
   
   json.loads(pipeline.definition())
   ```

1. Übermitteln Sie die Pipeline-Definition an den Pipelines-Dienst, um eine Pipeline zu erstellen, falls diese noch nicht vorhanden ist, oder um die Pipeline zu aktualisieren, falls sie bereits vorhanden ist. Die übergebene Rolle wird von Pipelines verwendet, um alle in den Schritten definierten Aufträge zu erstellen. 

   ```
   pipeline.upsert(role_arn=role)
   ```

1. Pipeline-Ausführung starten.

   ```
   execution = pipeline.start()
   ```

### Schritt 2: Untersuchen Sie eine Pipeline-Ausführung
<a name="run-pipeline-examine"></a>

Als Nächstes müssen Sie die Pipeline-Ausführung untersuchen. 

**Um eine Pipeline-Ausführung zu untersuchen**

1.  Beschreiben Sie den Ausführungsstatus der Pipeline, um sicherzustellen, dass sie erfolgreich erstellt und gestartet wurde.

   ```
   execution.describe()
   ```

1. Warten Sie bis die Ausführung abgeschlossen ist. 

   ```
   execution.wait()
   ```

1. Listet die Ausführungsschritte und ihren Status auf.

   ```
   execution.list_steps()
   ```

   Die Ausgabe sollte folgendermaßen aussehen:

   ```
   [{'StepName': 'AbaloneTransform',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 870000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 45, 50, 492000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'TransformJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:transform-job/pipelines-cfvy1tjuxdq8-abalonetransform-ptyjoef3jy'}}},
    {'StepName': 'AbaloneRegisterModel',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 929000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 28, 15000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'RegisterModel': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model-package/abalonemodelpackagegroupname/1'}}},
    {'StepName': 'AbaloneCreateModel',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 895000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 708000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'Model': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model/pipelines-cfvy1tjuxdq8-abalonecreatemodel-jl94rai0ra'}}},
    {'StepName': 'AbaloneMSECond',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 25, 558000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 329000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'Condition': {'Outcome': 'True'}}},
    {'StepName': 'AbaloneEval',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 767000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 18, 80000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneeval-zfraozhmny'}}},
    {'StepName': 'AbaloneTrain',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 34, 55, 867000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 34000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'TrainingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:training-job/pipelines-cfvy1tjuxdq8-abalonetrain-tavd6f3wdf'}}},
    {'StepName': 'AbaloneProcess',
     'StartTime': datetime.datetime(2020, 11, 21, 2, 30, 27, 160000, tzinfo=tzlocal()),
     'EndTime': datetime.datetime(2020, 11, 21, 2, 34, 48, 390000, tzinfo=tzlocal()),
     'StepStatus': 'Succeeded',
     'CacheHitResult': {'SourcePipelineExecutionArn': ''},
     'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneprocess-mgqyfdujcj'}}}]
   ```

1. Nachdem Ihre Pipeline-Ausführung abgeschlossen ist, laden Sie die resultierende `evaluation.json` Datei von Amazon S3 herunter, um den Bericht zu überprüfen. 

   ```
   evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format(
       step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"]
   ))
   json.loads(evaluation_json)
   ```

### Schritt 3: Überschreiben Sie die Standardparameter für eine Pipeline-Ausführung
<a name="run-pipeline-parametrized"></a>

Sie können zusätzliche Ausführungen der Pipeline ausführen, indem Sie verschiedene Pipeline-Parameter angeben, um die Standardwerte zu überschreiben.

**Um Standardparameter zu überschreiben**

1. Erstellen Sie die Pipeline-Ausführung. Dadurch wird eine weitere Pipeline-Ausführung gestartet, wobei die Überschreibung des Modellgenehmigungsstatus auf „Genehmigt“ gesetzt ist. Das bedeutet, dass die durch den `RegisterModel` Schritt generierte Modellpaketversion automatisch für die Bereitstellung über CI/CD Pipelines bereit ist, z. B. bei SageMaker Projekten. Weitere Informationen finden Sie unter [MLOps Automatisierung mit SageMaker Projekten](sagemaker-projects.md).

   ```
   execution = pipeline.start(
       parameters=dict(
           ModelApprovalStatus="Approved",
       )
   )
   ```

1. Warten Sie bis die Ausführung abgeschlossen ist. 

   ```
   execution.wait()
   ```

1. Listet die Ausführungsschritte und ihren Status auf.

   ```
   execution.list_steps()
   ```

1. Nachdem Ihre Pipeline-Ausführung abgeschlossen ist, laden Sie die resultierende `evaluation.json` Datei von Amazon S3 herunter, um den Bericht zu überprüfen. 

   ```
   evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format(
       step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"]
   ))
   json.loads(evaluation_json)
   ```

### Schritt 4: Stoppen und löschen Sie eine Pipeline-Ausführung
<a name="run-pipeline-delete"></a>

Wenn Sie mit Ihrer Pipeline fertig sind, können Sie alle laufenden Ausführungen beenden und die Pipeline löschen.

**Um eine Pipeline-Ausführung zu beenden und zu löschen**

1. Stoppen der Pipeline-Ausführung.

   ```
   execution.stop()
   ```

1. Löschen der Pipeline.

   ```
   pipeline.delete()
   ```

# Stopp Sie eine Pipeline
<a name="pipelines-studio-stop"></a>

Sie können einen Pipeline-Lauf in der Amazon SageMaker Studio-Konsole beenden.

Um eine Pipeline-Ausführung in der Amazon SageMaker Studio-Konsole zu beenden, führen Sie die folgenden Schritte aus, je nachdem, ob Sie Studio oder Studio Classic verwenden.

------
#### [ Studio ]

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. (Optional) Um die Liste der Pipelines nach Namen zu filtern, geben Sie einen vollständigen Namen oder einen Teil in das Suchfeld ein.

1. Wählen Sie einen Pipelinamen aus.

1. Wählen Sie die Registerkarte **Ausführungen**.

1. Wählen Sie die Ausführung aus, die beendet werden soll.

1. Wählen Sie **Beenden** aus. Um die Ausführung an der Stelle fortzusetzen, an der sie gestoppt wurde, wählen Sie **Fortfahren** aus.

------
#### [ Studio Classic ]

1. Melden Sie sich bei Amazon SageMaker Studio Classic an. Weitere Informationen finden Sie unter [Amazon SageMaker Studio Classic starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Wählen Sie in der Studio-Classic Seitenleiste das Symbol **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/studio/icons/house.png)) aus.

1. Wählen Sie im Menü **Pipelines** aus.

1. Um die Liste der Pipelines nach Namen einzugrenzen, geben Sie einen vollständigen oder teilweisen Pipelinenamen in das Suchfeld ein.

1. Um einen Pipeline-Lauf zu beenden, wählen Sie im Statusbanner der Pipeline **Details anzeigen** und dann **Stopp** aus. Um die Ausführung an der Stelle fortzusetzen, an der sie gestoppt wurde, wählen Sie die Option **Fortfahren** aus.

------

# Anzeige der Details einer Pipeline
<a name="pipelines-studio-list"></a>

Sie können sich die Details einer SageMaker KI-Pipeline ansehen, um ihre Parameter und die Abhängigkeiten ihrer Schritte zu verstehen oder ihren Fortschritt und Status zu überwachen. Dies kann Ihnen helfen, Fehler zu beheben oder Ihren Arbeitsablauf zu optimieren. Sie können über die Amazon SageMaker Studio-Konsole auf die Details einer bestimmten Pipeline zugreifen und deren Ausführungsverlauf, Definition, Parameter und Metadaten untersuchen.

Wenn Ihre Pipeline mit einem SageMaker KI-Projekt verknüpft ist, können Sie alternativ über die Detailseite des Projekts auf die Pipeline-Details zugreifen. Weitere Informationen finden Sie unter [Projektressourcen anzeigen](sagemaker-projects-resources.md).

Um die Details einer SageMaker AI-Pipeline anzuzeigen, führen Sie die folgenden Schritte aus, je nachdem, ob Sie Studio oder Studio Classic verwenden.

**Anmerkung**  
Das Umpacken von Modellen erfolgt, wenn die Pipeline ein benutzerdefiniertes Skript in die komprimierte Modelldatei (model.tar.gz) aufnehmen muss, die auf Amazon S3 hochgeladen und zur Bereitstellung eines Modells auf einem SageMaker KI-Endpunkt verwendet werden soll. Wenn die SageMaker KI-Pipeline ein Modell trainiert und es in der Modellregistrierung registriert, wird ein Umpack-Schritt eingeführt, *falls* die Ausgabe des trainierten Modells aus dem Trainingsjob ein benutzerdefiniertes Inferenzskript enthalten muss. Beim Repack-Schritt wird das Modell dekomprimiert, ein neues Skript hinzugefügt und das Modell erneut komprimiert. Beim Ausführen der Pipeline wird der Repack-Schritt als Trainingsjob hinzugefügt.

------
#### [ Studio ]

1. Öffnen Sie die SageMaker Studio-Konsole, indem Sie den Anweisungen unter [Amazon SageMaker Studio starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html) folgen.

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. (Optional) Um die Liste der Pipelines nach Namen zu filtern, geben Sie einen vollständigen Namen oder einen Teil in das Suchfeld ein.

1. Wählen Sie einen Pipelinamen aus, um Details zur Pipeline anzuzeigen.

1. Wählen Sie eine der folgenden Registerkarten, um Pipeline-Details anzuzeigen:
   + **Ausführungen** – Details zu den Ausführungen.
   + **Grafik** – Das Pipeline-Diagramm, einschließlich aller Schritte.
   + **Parameter** – Die Ausführungsparameter und Metriken, die sich auf die Pipeline beziehen.
   + **Information** – Die mit der Pipeline verknüpften Metadaten, wie Tags, der Amazon Resource Name (ARN) der Pipeline und der Rollen-ARN. Sie können die Pipeline-Beschreibung auch von dieser Seite aus bearbeiten.

------
#### [ Studio Classic ]

1. Melden Sie sich bei Amazon SageMaker Studio Classic an. Weitere Informationen finden Sie unter [Amazon SageMaker Studio Classic starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Wählen Sie in der Studio-Classic Seitenleiste das Symbol **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/studio/icons/house.png)) aus.

1. Wählen Sie im Menü **Pipelines** aus.

1. Um die Liste der Pipelines nach Namen einzugrenzen, geben Sie einen vollständigen oder teilweisen Pipelinenamen in das Suchfeld ein.

1. Wählen Sie einen Pipelinamen aus, um Details zur Pipeline anzuzeigen. Die Registerkarte Pipeline-Details wird geöffnet und zeigt eine Liste der Pipeline-Ausführungen an. Sie können eine Ausführung starten oder eine der anderen Registerkarten wählen, um weitere Informationen zur Pipeline zu erhalten. Verwenden Sie das Symbol **Eigenschafteninspektor** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/studio/icons/gears.png)), um auszuwählen, welche Spalten angezeigt werden sollen.

1. Wählen Sie auf der Seite mit den Pipeline-Details eine der folgenden Registerkarten, um Details zur Pipeline anzuzeigen:
   + **Ausführungen** – Details zu den Ausführungen. Sie können eine Ausführung auf dieser Registerkarte oder auf der Registerkarte **Diagramm** erstellen.
   + **Graph** – Die DAG für die Pipeline.
   + **Parameter** – Beinhaltet den Status der Modellgenehmigung.
   + **Einstellungen** – Die mit der Pipeline verknüpften Metadaten. Auf dieser Registerkarte können Sie die Pipeline-Definitionsdatei herunterladen und den Namen und die Beschreibung der Pipeline bearbeiten.

------

# Anzeige der Details eines Pipeline-Laufs
<a name="pipelines-studio-view-execution"></a>

Sie können die Details eines bestimmten SageMaker AI-Pipeline-Laufs überprüfen. Das kann Ihnen bei Folgendem helfen:
+ Identifizieren und beheben Sie Probleme, die während der Ausführung aufgetreten sein könnten, wie beispielsweise fehlgeschlagene Schritte oder unerwartete Fehler.
+ Vergleichen Sie die Ergebnisse verschiedener Pipeline-Ausführungen, um zu verstehen, wie sich Änderungen der Eingabedaten oder Parameter auf den gesamten Arbeitsablauf auswirken.
+ Identifizieren Sie Engpässe und Optimierungsmöglichkeiten.

Um die Details eines Pipeline-Laufs anzuzeigen, führen Sie bitte die folgenden Schritte aus, je nachdem, ob Sie Studio oder Studio Classic verwenden.

------
#### [ Studio ]

1. Öffnen Sie die SageMaker Studio-Konsole, indem Sie den Anweisungen unter [Amazon SageMaker Studio starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html) folgen.

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. (Optional) Um die Liste der Pipelines nach Namen zu filtern, geben Sie einen vollständigen Namen oder einen Teil in das Suchfeld ein.

1. Wählen Sie einen Pipelinamen aus, um Details zur Pipeline anzuzeigen.

1. Wählen Sie die Registerkarte **Ausführungen**.

1. Wählen Sie den Namen einer Pipeline-Ausführung aus, die Sie anzeigen möchten. Das Pipeline-Diagramm für diese Ausführung wird angezeigt.

1. Wählen Sie einen der Pipeline-Schritte in der Grafik aus, um die Schritteinstellungen in der rechten Seitenleiste anzuzeigen.

1. Wählen Sie eine der folgenden Registerkarten, um weitere Pipeline-Details anzuzeigen:
   + **Definition** – Das Pipeline-Diagramm, einschließlich aller Schritte.
   + **Parameter** – Beinhaltet den Status der Modellgenehmigung.
   + **Details** – Die mit der Pipeline verknüpften Metadaten, wie Tags, der Amazon Resource Name (ARN) der Pipeline und der Rollen-ARN. Sie können die Pipeline-Beschreibung auch von dieser Seite aus bearbeiten.

------
#### [ Studio Classic ]

1. Melden Sie sich bei Amazon SageMaker Studio Classic an. Weitere Informationen finden Sie unter [Amazon SageMaker Studio Classic starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Wählen Sie in der Studio-Classic Seitenleiste das Symbol **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/studio/icons/house.png)) aus.

1. Wählen Sie im Menü **Pipelines** aus.

1. Um die Liste der Pipelines nach Namen einzugrenzen, geben Sie einen vollständigen oder teilweisen Pipelinenamen in das Suchfeld ein.

1. Wählen Sie einen Pipelinamen aus. Die Seite „**Ausführungen**“ der Pipeline wird geöffnet.

1. Wählen Sie auf der Seite **Ausführungen** einen Ausführungsnamen aus, um Details zur Ausführung anzuzeigen. Die Registerkarte mit den Ausführungsdetails wird geöffnet und zeigt ein Diagramm der Schritte in der Pipeline an.

1. Um nach einem Schritt anhand des Namens zu suchen, geben Sie Zeichen, die einem Schrittnamen entsprechen, in das Suchfeld ein. Verwenden Sie die Größenänderungssymbole unten rechts im Diagramm, um das Diagramm zu vergrößern und zu verkleinern, das Diagramm an den Bildschirm anzupassen und das Diagramm auf Vollbild anzuzeigen. Um sich auf einen bestimmten Teil des Diagramms zu konzentrieren, können Sie einen leeren Bereich des Diagramms auswählen und das Diagramm so ziehen, dass es in der Mitte dieses Bereichs liegt.   
![\[\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/yosemite/execution-graph-w-input.png)

1. Wählen Sie einen der Pipeline-Schritte in der Grafik aus, um Details zu dem Schritt anzuzeigen. Im vorherigen Screenshot wird ein Trainingsschritt ausgewählt und es werden die folgenden Tabs angezeigt:
   + **Eingabe** – Die Trainingseingaben. Wenn eine Eingabequelle von Amazon Simple Storage Service (Amazon S3) stammt, wählen Sie den Link aus, um die Datei in der Amazon S3-Konsole anzuzeigen.
   + **Ergebnis** – Die Trainingsergebnisse, wie Metriken, Diagramme, Dateien und Bewertungsergebnisse. Die Grafiken werden mit dem [Tracker](https://sagemaker-experiments.readthedocs.io/en/latest/tracker.html#smexperiments.tracker.Tracker.log_precision_recall) erstellt APIs.
   + **Logs** — Die CloudWatch Amazon-Logs, die durch den Schritt erstellt wurden.
   + **Info** – Die mit dem Schritt verknüpften Parameter und Metadaten.  
![\[\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/yosemite/execution-graph-info.png)

------

# Laden Sie eine Pipeline-Definitionsdatei herunter
<a name="pipelines-studio-download"></a>

Sie können die Definitionsdatei für Ihre SageMaker AI-Pipeline direkt von der Amazon SageMaker Studio-Benutzeroberfläche herunterladen. Sie können diese Pipeline-Definitionsdatei verwenden für:
+ Sicherung und Wiederherstellung: Verwenden Sie die heruntergeladene Datei, um eine Backup Ihrer Pipeline-Konfiguration zu erstellen, die Sie bei Infrastrukturausfällen oder versehentlichen Änderungen wiederherstellen können.
+ Versionskontrolle: Speichern Sie die Pipeline-Definitionsdatei in einem Quellcodeverwaltungssystem, um Änderungen an der Pipeline nachzuverfolgen und bei Bedarf zu früheren Versionen zurückzukehren.
+ Programmatische Interaktionen: Verwenden Sie die Pipeline-Definitionsdatei als Eingabe für das SageMaker SDK oder AWS CLI.
+ Integration mit Automatisierungsprozessen: Integrieren Sie die Pipeline-Definition in Ihre CI/CD Workflows oder andere Automatisierungsprozesse.

Um die Definitionsdatei einer Pipeline herunterzuladen, führen Sie die folgenden Schritte aus, je nachdem, ob Sie Studio oder Studio Classic verwenden.

------
#### [ Studio ]

1. Öffnen Sie die SageMaker Studio-Konsole, indem Sie den Anweisungen unter [Amazon SageMaker Studio starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html) folgen.

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. (Optional) Um die Liste der Pipelines nach Namen zu filtern, geben Sie einen vollständigen Namen oder einen Teil in das Suchfeld ein.

1. Wählen Sie einen Pipelinamen aus. Die Seite **Ausführungen** wird geöffnet und zeigt eine Liste der Pipeline-Ausführungen an.

1. Bleiben Sie auf der Seite „**Ausführungen**“ oder wählen Sie links neben der Tabelle mit den Pipeline-Ausführungen die Seite „**Grafik**“, „**Informationen**“ oder „**Parameter**“. Sie können die Pipeline-Definition von jeder dieser Seiten herunterladen.

1. Wählen Sie oben rechts auf der Seite die vertikalen Auslassungspunkte und dann **Pipeline-Definition herunterladen (JSON)** aus.

------
#### [ Studio Classic ]

1. Melden Sie sich bei Amazon SageMaker Studio Classic an. Weitere Informationen finden Sie unter [Amazon SageMaker Studio Classic starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Wählen Sie in der Studio-Classic Seitenleiste das Symbol **Home** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/studio/icons/house.png)) aus.

1. Wählen Sie im Menü **Pipelines** aus.

1. Um die Liste der Pipelines nach Namen einzugrenzen, geben Sie einen vollständigen oder teilweisen Pipelinenamen in das Suchfeld ein.

1. Wählen Sie einen Pipelinamen aus.

1. Wählen Sie die Registerkarte **Einstellungen**.

1. Wählen Sie **Pipeline-Definitionsdatei herunterladen** aus.

------

# Greifen Sie auf Versuchsdaten aus einer Pipeline zu
<a name="pipelines-studio-experiments"></a>

**Anmerkung**  
SageMaker Experiments ist eine Funktion, die nur in Studio Classic verfügbar ist.

Wenn Sie eine Pipeline erstellen und [pipeline\$1experiment\$1config](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.pipeline.Pipeline.pipeline_experiment_config) angeben, erstellt Pipelines standardmäßig die folgenden SageMaker Experiments-Entitäten, sofern sie nicht existieren:
+ Ein Experiment für die Pipeline
+ Eine Ausführungsgruppe für jede Ausführung der Pipeline
+ Ein Lauf für jeden SageMaker AI-Job, der in einem Pipeline-Schritt erstellt wurde

Informationen darüber, wie Experimente in Pipelines integriert werden, finden Sie unter [Integration von Amazon SageMaker Experiments](pipelines-experiments.md). Weitere Informationen zu SageMaker Experimenten finden Sie unter[SageMaker Amazon-Experimente in Studio Classic](experiments.md).

Sie können die Liste der mit einer Pipeline verknüpften Läufe entweder über die Liste der Pipeline-Ausführungen oder über die Liste der Experimente aufrufen.

**Um die Liste der Durchläufe von der Pipeline-Ausführungsliste aus anzuzeigen**

1. Um die Liste der Pipeline-Ausführungen anzuzeigen, folgen Sie den ersten fünf Schritten in der Registerkarte *Studio Classic* von [Anzeige der Details einer Pipeline](pipelines-studio-list.md).

1. Wählen Sie oben rechts auf dem Bildschirm das Symbol **Filte** (![\[Funnel or filter icon representing data filtering or narrowing down options.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/jumpstart/jumpstart-filter-icon.png)) aus.

1. Wählen Sie **Experiment** aus. Wenn die Experimentintegration bei der Erstellung der Pipeline nicht deaktiviert wurde, wird der Name des Experiments in der Ausführungsliste angezeigt. 
**Anmerkung**  
Die Integration von Experimenten wurde in Version 2.41.0 des [Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) SDK eingeführt. Pipelines, die mit einer früheren Version des SDK erstellt wurden, sind standardmäßig nicht in Experimente integriert.

1. Wählen Sie das Experiment Ihrer Wahl aus, um Ausführungsgruppen und Läufe im Zusammenhang mit diesem Experiment anzuzeigen.

**Um die Liste der Durchläufe aus der Experimentliste anzuzeigen**

1. Wählen Sie in der linken Seitenleiste von Studio Classic das Symbol **Start** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/studio/icons/house.png)) aus.

1. Wählen Sie im Menü **Experimente** aus.

1. Verwenden Sie die Suchleiste oder das Symbol **Filter** (![\[Funnel or filter icon representing data filtering or narrowing down options.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/jumpstart/jumpstart-filter-icon.png)), um die Liste nach Experimenten zu filtern, die von einer Pipeline erstellt wurden.

1. Öffnen Sie einen Experimentnamen und sehen Sie sich eine Liste der Durchläufe an, die von der Pipeline erstellt wurden.

# Verfolgen der Herkunft einer Pipeline
<a name="pipelines-lineage-tracking"></a>

In diesem Tutorial verwenden Sie Amazon SageMaker Studio, um die Herkunft einer Amazon SageMaker AI ML-Pipeline zu verfolgen.

Die Pipeline wurde mit dem Notizbuch [Orchestrating Jobs with Amazon SageMaker Model Building Pipelines](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-pipelines/tabular/abalone_build_train_deploy/sagemaker-pipelines-preprocess-train-evaluate-batch-transform.html) im [ SageMaker GitHub Amazon-Beispiel-Repository](https://github.com/awslabs/amazon-sagemaker-examples) erstellt. Ausführliche Informationen zur Erstellung der Pipeline finden Sie unter [Definieren einer Pipeline](define-pipeline.md).

Lineage-Tracking in Studio basiert auf einem azyklisch gerichteten Diagramm (DAG). Die DAG stellt die Schritte in einer Pipeline dar. Von der DAG aus können Sie die Herkunft von jedem Schritt zu jedem anderen Schritt verfolgen. Das folgende Diagramm zeigt die einzelnen Schritte in der Pipeline. Diese Schritte werden in Studio als DAG angezeigt.

![\[\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/yosemite/pipeline-tutorial-steps.png)


Um die Herkunft einer Pipeline in der Amazon SageMaker Studio-Konsole nachzuverfolgen, führen Sie die folgenden Schritte aus, je nachdem, ob Sie Studio oder Studio Classic verwenden.

------
#### [ Studio ]

**Um die Herkunft einer Pipeline zu verfolgen**

1. Öffnen Sie die SageMaker Studio-Konsole, indem Sie den Anweisungen unter [Amazon SageMaker Studio starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html) folgen.

1. Wählen Sie im linken Navigationsbereich die Option **Pipelines** aus.

1. (Optional) Um die Liste der Pipelines nach Namen zu filtern, geben Sie einen vollständigen Namen oder einen Teil in das Suchfeld ein.

1. Wählen Sie in der Spalte **Name** einen Pipeline-Namen aus, um Details zur Pipeline anzuzeigen.

1. Wählen Sie die Registerkarte **Ausführungen**.

1. Wählen Sie in der Spalte **Name** der Tabelle **Ausführungen** den Namen einer Pipeline-Ausführung aus, die Sie anzeigen möchten.

1. Wählen Sie oben rechts auf der Seite **Ausführungen** die vertikalen Auslassungspunkte und dann **Pipeline-Definition herunterladen (**JSON) aus. Sie können sich die Datei ansehen, um zu sehen, wie das Pipeline-Diagramm definiert wurde. 

1. Wählen Sie **Bearbeiten**, um den Pipeline Designer zu öffnen.

1. Verwenden Sie die Steuerelemente zur Größenänderung und zum Zoomen in der oberen rechten Ecke der Leinwand, um das Diagramm zu vergrößern und zu verkleinern, das Diagramm an den Bildschirm anzupassen oder das Diagramm auf den Vollbildmodus zu erweitern.

1. Führen Sie die folgenden Schritte aus, um Ihre Trainings-, Validierungs- und Testdatensätze anzuzeigen:

   1. Wählen Sie in Ihrem Pipeline-Diagramm den Verarbeitungsschritt aus.

   1. Wählen Sie in der rechten Seitenleiste den Tab „**Übersicht**“.

   1. Suchen Sie im Abschnitt **Dateien** die Amazon-S3-Pfade zu den Trainings-, Validierungs- und Testdatensätzen.

1. Um Ihre Modellartefakte anzuzeigen, führen Sie die folgenden Schritte aus:

   1. Wählen Sie in Ihrem Pipeline-Diagramm den Trainingsschritt aus.

   1. Wählen Sie in der rechten Seitenleiste den Tab „**Übersicht**“.

   1. Suchen Sie im Abschnitt **Dateien** nach den Amazon-S3-Pfaden zum Modellartefakt.

1. Führen Sie die folgenden Schritte aus, um das Modellpaket ARN zu finden:

   1. Wählen Sie den Schritt Modell registrieren aus.

   1. Wählen Sie in der rechten Seitenleiste den Tab „**Übersicht**“.

   1. Suchen Sie im Abschnitt **Dateien** nach dem ARN des Modellpakets.

------
#### [ Studio Classic ]

**Um die Herkunft einer Pipeline zu verfolgen**

1. Melden Sie sich bei Amazon SageMaker Studio Classic an. Weitere Informationen finden Sie unter [Amazon SageMaker Studio Classic starten](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Wählen Sie in der linken Seitenleiste von Studio das Symbol **Startseite** ( ![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/studio/icons/house.png)).

1. **Wählen Sie im Menü Pipelines aus.**

1. Verwenden Sie das **Suchfeld**, um die Liste der Pipelines zu filtern.

1. Wählen Sie die `AbalonePipeline`-Pipeline aus, um die Ausführungsliste und andere Details zur Pipeline anzuzeigen.

1. Wählen Sie das Symbol **Eigenschafteninspektor** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/studio/icons/gears.png)) in der rechten Seitenleiste, um den Bereich **TABELLENEIGENSCHAFTEN** zu öffnen, in dem Sie auswählen können, welche Eigenschaften angezeigt werden sollen.

1. Wählen Sie die Registerkarte **Einstellungen** und dann **Pipeline-Definitionsdatei herunterladen**. Sie können sich die Datei ansehen, um zu sehen, wie das Pipeline-Diagramm definiert wurde.

1. Wählen Sie auf der Registerkarte **Ausführung** die erste Zeile in der Ausführungsliste aus, um das zugehörige Ausführungsdiagramm und weitere Details zur Ausführung anzuzeigen. Beachten Sie, dass das Diagramm mit dem Diagramm übereinstimmt, das zu Beginn des Tutorials angezeigt wurde.

   Verwenden Sie die Größenänderungssymbole unten rechts im Diagramm, um das Diagramm zu vergrößern oder zu verkleinern, das Diagramm an den Bildschirm anzupassen oder das Diagramm auf Vollbild anzuzeigen. Um sich auf einen bestimmten Teil des Diagramms zu konzentrieren, können Sie einen leeren Bereich des Diagramms auswählen und das Diagramm so ziehen, dass es in der Mitte dieses Bereichs liegt. Der Einschub unten rechts im Diagramm zeigt Ihre Position im Diagramm an.  
![\[\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/yosemite/pipeline-tutorial-execution-graph.png)

1. Wählen Sie auf der Registerkarte **Diagramm** den `AbaloneProcess` Schritt aus, um Details zu dem Schritt anzuzeigen.

1. Die Amazon S3-Pfade zu den Trainings-, Validierungs- und Testdatensätzen finden Sie auf der Registerkarte **Ausgabe** unter **Dateien**.
**Anmerkung**  
Um die vollständigen Pfade zu erhalten, klicken Sie mit der rechten Maustaste auf den Pfad und wählen Sie dann **Zelleninhalt kopieren**.

   ```
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/train
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/validation
   s3://sagemaker-eu-west-1-acct-id/sklearn-abalone-process-2020-12-05-17-28-28-509/output/test
   ```

1. Wählen Sie den Schritt `AbaloneTrain`.

1. Suchen Sie den Amazon S3-Pfad zum Modellartefakt auf der Registerkarte **Ausgabe** unter **Dateien**:

   ```
   s3://sagemaker-eu-west-1-acct-id/AbaloneTrain/pipelines-6locnsqz4bfu-AbaloneTrain-NtfEpI0Ahu/output/model.tar.gz
   ```

1. Wählen Sie den Schritt `AbaloneRegisterModel`.

1. Suchen Sie den ARN des Modellpakets auf der Registerkarte **Ausgabe** unter **Dateien**:

   ```
   arn:aws:sagemaker:eu-west-1:acct-id:model-package/abalonemodelpackagegroupname/2
   ```

------

# Kubernetes-Orchestrierung
<a name="kubernetes-workflows"></a>

Sie können Ihre SageMaker Trainings- und Inferenzjobs mit SageMaker KI Operators for Kubernetes und AI Components for Kubeflow Pipelines orchestrieren. SageMaker SageMaker KI-Operatoren für Kubernetes erleichtern es Entwicklern und Datenwissenschaftlern, die Kubernetes verwenden, Modelle für maschinelles Lernen (ML) in KI zu trainieren, zu optimieren und bereitzustellen. SageMaker SageMaker Mit KI-Komponenten für Kubeflow-Pipelines können Sie Ihre Datenverarbeitungs- und Trainingsaufgaben vom Kubernetes-Cluster auf den für maschinelles Lernen optimierten Managed Service von KI verlagern. SageMaker 

**Topics**
+ [SageMaker KI-Operatoren für Kubernetes](kubernetes-sagemaker-operators.md)
+ [SageMaker KI-Komponenten für Kubeflow-Pipelines](kubernetes-sagemaker-components-for-kubeflow-pipelines.md)

# SageMaker KI-Operatoren für Kubernetes
<a name="kubernetes-sagemaker-operators"></a>

SageMaker KI-Operatoren für Kubernetes erleichtern es Entwicklern und Datenwissenschaftlern, die Kubernetes verwenden, Modelle für maschinelles Lernen (ML) in KI zu trainieren, zu optimieren und bereitzustellen. SageMaker Sie können diese SageMaker KI-Operatoren auf Ihrem Kubernetes-Cluster in Amazon Elastic Kubernetes Service (Amazon EKS) installieren, um SageMaker KI-Jobs nativ mithilfe der Kubernetes-API und Kubernetes-Befehlszeilentools wie. `kubectl` Diese Anleitung zeigt, wie Sie die Operatoren einrichten und verwenden, um Modelltraining, Hyperparameter-Tuning oder Inferenz (Echtzeit und Batch) auf KI von einem Kubernetes-Cluster aus durchzuführen. SageMaker Bei den Verfahren und Richtlinien in diesem Kapitel wird davon ausgegangen, dass Sie mit Kubernetes und seinen grundlegenden Befehlen vertraut sind.

**Wichtig**  
[Wir stellen die Entwicklung und den technischen Support der Originalversion von Operators for Kubernetes ein. SageMaker ](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master)  
Wenn Sie derzeit die Version `v1.2.2` oder eine niedrigere Version von [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) verwenden, empfehlen wir, Ihre Ressourcen auf den [ACK Service Controller](https://github.com/aws-controllers-k8s/sagemaker-controller) für Amazon zu migrieren. SageMaker Der ACK Service Controller ist eine neue Generation von SageMaker Operatoren für Kubernetes, die auf [AWS Controllers for](https://aws-controllers-k8s.github.io/community/) Kubernetes (ACK) basieren.  
Informationen zu den Migrationsschritten finden Sie unter [Migrieren Sie Ressourcen zu den neuesten Operatoren](kubernetes-sagemaker-operators-migrate.md).  
Antworten auf häufig gestellte Fragen zum Ende der Unterstützung für die Originalversion von SageMaker Operators for Kubernetes finden Sie unter [Ankündigung des Endes der Support der Originalversion von SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

**Anmerkung**  
Für die Nutzung dieser Operatoren fallen keine zusätzlichen Gebühren an. Für alle SageMaker KI-Ressourcen, die Sie über diese Betreiber nutzen, fallen Gebühren an.

## Was ist ein Operator?
<a name="kubernetes-sagemaker-operators-overview"></a>

Ein Kubernetes-Operator ist ein Anwendungscontroller, der Anwendungen im Namen eines Kubernetes-Benutzers verwaltet. Die Controller der Steuerebene bestehen aus verschiedenen Regelkreisen, die einem Central State Manager (ETCD) zuhören, um den Status der von ihnen kontrollierten Anwendung zu regulieren. Beispiele für solche Anwendungen sind [C loud-controller-manager](https://kubernetes.io/docs/concepts/architecture/cloud-controller/) und`[kube-controller-manager](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/)`. Betreiber bieten in der Regel eine Abstraktion auf höherer Ebene als die reine Kubernetes-API, was es Benutzern erleichtert, Anwendungen bereitzustellen und zu verwalten. Um Kubernetes um neue Funktionen zu erweitern, können Entwickler die Kubernetes-API erweitern, indem sie eine **benutzerdefinierte Ressource** erstellen, die ihre anwendungs- oder domainspezifische Logik und Komponenten enthält. Operatoren in Kubernetes ermöglichen es Benutzern, diese benutzerdefinierten Ressourcen nativ aufzurufen und die zugehörigen Workflows zu automatisieren.

### Wie funktioniert AWS Controllers for Kubernetes (ACK)?
<a name="kubernetes-sagemaker-operators-explained"></a>

Mit den SageMaker KI Operators for Kubernetes können Sie Jobs in SageMaker KI von Ihrem Kubernetes-Cluster aus verwalten. Die neueste Version von SageMaker AI Operators for Kubernetes basiert auf AWS Controllers for Kubernetes (ACK). ACK umfasst eine gemeinsame Controller-Laufzeit, einen Codegenerator und eine Reihe von AWS dienstspezifischen Controllern, von denen einer der KI-Controller ist. SageMaker 

Das folgende Diagramm veranschaulicht diese Funktionsweise.

![\[ACK-basierter SageMaker KI-Operator für Kubernetes erklärt.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-ack-controller.png)


In diesem Diagramm möchte ein Kubernetes-Benutzer mithilfe der Kubernetes-API Modelltraining auf SageMaker KI innerhalb des Kubernetes-Clusters ausführen. Der Benutzer ruft an und übergibt dabei eine Datei`kubectl apply`, die eine benutzerdefinierte Kubernetes-Ressource beschreibt, die den Trainingsjob beschreibt. SageMaker `kubectl apply`übergibt diese als Manifest bezeichnete Datei an den Kubernetes-API-Server, der im Kubernetes-Controller-Knoten ausgeführt wird (Schritt *1* im Workflow-Diagramm). *Der Kubernetes-API-Server empfängt das Manifest mit der SageMaker Trainingsjobspezifikation und bestimmt, ob der Benutzer berechtigt ist, eine benutzerdefinierte Ressource zu erstellen`sageMaker.services.k8s.aws/TrainingJob`, und ob die benutzerdefinierte Ressource ordnungsgemäß formatiert ist (Schritt 2).* Wenn der Benutzer autorisiert ist und die benutzerdefinierte Ressource gültig ist, schreibt der Kubernetes-API-Server (Schritt *3*) die benutzerdefinierte Ressource in seinen etcd-Datenspeicher und antwortet dann (Schritt *4*) dem Benutzer, dass die benutzerdefinierte Ressource erstellt wurde. Der SageMaker KI-Controller, der auf einem Kubernetes-Worker-Knoten im Kontext eines normalen Kubernetes-Pods läuft, wird benachrichtigt (Schritt *5*), dass eine neue benutzerdefinierte Ressource dieser Art erstellt wurde. `sageMaker.services.k8s.aws/TrainingJob` Der SageMaker KI-Controller kommuniziert dann (Schritt *6*) mit der SageMaker API und ruft die SageMaker `CreateTrainingJob` KI-API auf, um den Trainingsjob in zu erstellen. AWS Nach der Kommunikation mit der SageMaker API ruft der SageMaker KI-Controller den Kubernetes-API-Server auf, um den Status der benutzerdefinierten Ressource mit Informationen zu aktualisieren (Schritt *7*), die sie von der KI erhalten hat. SageMaker Der SageMaker KI-Controller stellt den Entwicklern daher dieselben Informationen zur Verfügung, die sie mit dem AWS SDK erhalten hätten.

### Übersicht über die Berechtigungen
<a name="kubernetes-sagemaker-operators-authentication"></a>

Die Betreiber greifen in Ihrem Namen auf SageMaker KI-Ressourcen zu. Die IAM-Rolle, die der Operator für die Interaktion mit AWS Ressourcen annimmt, unterscheidet sich von den Anmeldeinformationen, die Sie für den Zugriff auf den Kubernetes-Cluster verwenden. Die Rolle unterscheidet sich auch von der Rolle, AWS die Sie bei der Ausführung Ihrer Machine-Learning-Jobs einnehmen. 

In der folgenden Abbildung werden die verschiedenen Authentifizierungsebenen erklärt.

![\[SageMaker AI Operator für Kubernetes, verschiedene Authentifizierungsebenen.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/k8s-orchestration/sagemaker-operators-for-kubernetes-authentication.png)


# Aktuelle SageMaker KI-Operatoren für Kubernetes
<a name="kubernetes-sagemaker-operators-ack"></a>

Dieser Abschnitt basiert auf der neuesten Version von SageMaker AI Operators for Kubernetes, die AWS Controllers for Kubernetes (ACK) verwendet.

**Wichtig**  
Wenn Sie derzeit die Version `v1.2.2` oder eine niedrigere Version von [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) verwenden, empfehlen wir, Ihre Ressourcen auf den [ACK Service Controller](https://github.com/aws-controllers-k8s/sagemaker-controller) für Amazon zu migrieren. SageMaker Der ACK Service Controller ist eine neue Generation von SageMaker Operatoren für Kubernetes, die auf [AWS Controllers for](https://aws-controllers-k8s.github.io/community/) Kubernetes (ACK) basieren.  
Informationen zu den Migrationsschritten finden Sie unter [Migrieren Sie Ressourcen zu den neuesten Operatoren](kubernetes-sagemaker-operators-migrate.md).  
Antworten auf häufig gestellte Fragen zum Ende der Unterstützung für die Originalversion von SageMaker Operators for Kubernetes finden Sie unter [Ankündigung des Endes der Support der Originalversion von SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

Die neueste Version von [SageMaker AI Operators for Kubernetes](https://github.com/aws-controllers-k8s/sagemaker-controller) basiert auf [AWS Controllers for Kubernetes (ACK)](https://aws-controllers-k8s.github.io/community/ ), einem Framework zum Erstellen benutzerdefinierter Kubernetes-Controller, bei dem jeder Controller mit einer Service-API kommuniziert. AWS Diese Controller ermöglichen es Kubernetes-Benutzern, AWS -Ressourcen wie Datenbanken oder Nachrichtenwarteschlangen mithilfe der Kubernetes-API bereitzustellen.

Gehen Sie wie folgt vor, um ACK zu installieren und zu verwenden, um Modelle für maschinelles Lernen mit Amazon SageMaker AI zu trainieren, zu optimieren und bereitzustellen.

**Topics**
+ [Installieren Sie SageMaker AI Operators für Kubernetes](#kubernetes-sagemaker-operators-ack-install)
+ [Verwenden Sie SageMaker KI-Operatoren für Kubernetes](#kubernetes-sagemaker-operators-ack-use)
+ [Referenz](#kubernetes-sagemaker-operators-ack-reference)

## Installieren Sie SageMaker AI Operators für Kubernetes
<a name="kubernetes-sagemaker-operators-ack-install"></a>

Informationen zum Einrichten der neuesten verfügbaren Version von SageMaker AI Operators for Kubernetes finden Sie im Abschnitt *Einrichtung* unter [Machine Learning mit dem ACK SageMaker AI Controller](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup).

## Verwenden Sie SageMaker KI-Operatoren für Kubernetes
<a name="kubernetes-sagemaker-operators-ack-use"></a>

Ein Tutorial zum Trainieren eines Modells für maschinelles Lernen mit dem ACK Service Controller für Amazon SageMaker AI mithilfe von Amazon EKS finden Sie unter [Machine Learning with the ACK SageMaker AI Controller](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/).

Ein Beispiel für Autoscaling finden Sie unter [Skalieren von SageMaker KI-Workloads mit Application](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/) Auto Scaling

## Referenz
<a name="kubernetes-sagemaker-operators-ack-reference"></a>

Sehen Sie sich auch das [ACK Service Controller for Amazon SageMaker AI GitHub Repository](https://github.com/aws-controllers-k8s/sagemaker-controller) an oder lesen Sie die Dokumentation zu [AWS Controllers for Kubernetes](https://aws-controllers-k8s.github.io/community/docs/community/overview/). 

# Alte SageMaker KI-Operatoren für Kubernetes
<a name="kubernetes-sagemaker-operators-end-of-support"></a>

Dieser Abschnitt basiert auf der Originalversion von [SageMaker AI Operators for](https://github.com/aws/amazon-sagemaker-operator-for-k8s) Kubernetes.

**Wichtig**  
Wir stellen die Entwicklung und den technischen Support der Originalversion von [ SageMaker Operators for](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) Kubernetes ein.  
Wenn Sie derzeit die Version `v1.2.2` oder eine niedrigere Version von [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) verwenden, empfehlen wir, Ihre Ressourcen auf den [ACK Service Controller](https://github.com/aws-controllers-k8s/sagemaker-controller) für Amazon zu migrieren. SageMaker Der ACK Service Controller ist eine neue Generation von SageMaker Operatoren für Kubernetes, die auf [AWS Controllers for](https://aws-controllers-k8s.github.io/community/) Kubernetes (ACK) basieren.  
Informationen zu den Migrationsschritten finden Sie unter [Migrieren Sie Ressourcen zu den neuesten Operatoren](kubernetes-sagemaker-operators-migrate.md).  
Antworten auf häufig gestellte Fragen zum Ende der Unterstützung für die Originalversion von SageMaker Operators for Kubernetes finden Sie unter [Ankündigung des Endes der Support der Originalversion von SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

**Topics**
+ [Installieren Sie SageMaker AI Operators für Kubernetes](#kubernetes-sagemaker-operators-eos-install)
+ [Verwenden Sie Amazon SageMaker AI Jobs](kubernetes-sagemaker-jobs.md)
+ [Migrieren Sie Ressourcen zu den neuesten Operatoren](kubernetes-sagemaker-operators-migrate.md)
+ [Ankündigung des Endes der Support der Originalversion von SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

## Installieren Sie SageMaker AI Operators für Kubernetes
<a name="kubernetes-sagemaker-operators-eos-install"></a>

Gehen Sie wie folgt vor, um SageMaker AI Operators for Kubernetes zu installieren und zu verwenden, um Modelle für maschinelles Lernen mit Amazon SageMaker AI zu trainieren, zu optimieren und bereitzustellen.

**Topics**
+ [Auf IAM-Rolle basierende Einrichtung und Bereitstellung eines Operators](#iam-role-based-setup-and-operator-deployment)
+ [Bereinigen von Ressourcen](#cleanup-operator-resources)
+ [Operatoren löschen](#delete-operators)
+ [Fehlerbehebung](#troubleshooting)
+ [Bilder und SMlogs in jeder Region](#images-and-smlogs-in-each-region)

### Auf IAM-Rolle basierende Einrichtung und Bereitstellung eines Operators
<a name="iam-role-based-setup-and-operator-deployment"></a>

In den folgenden Abschnitten werden die Schritte zum Einrichten und Bereitstellen der Originalversion des Operators beschrieben.

**Warnung**  
**Erinnerung: Mit** den folgenden Schritten wird nicht die neueste Version von SageMaker AI Operators for Kubernetes installiert. Informationen zur Installation der neuen ACK-basierten SageMaker KI-Operatoren für Kubernetes finden Sie unter. [Aktuelle SageMaker KI-Operatoren für Kubernetes](kubernetes-sagemaker-operators-ack.md)

#### Voraussetzungen
<a name="prerequisites"></a>

In diesem Leitfaden wird davon ausgegangen, dass Sie die folgenden Voraussetzungen erfüllt haben: 
+ Installieren Sie die folgenden Tools auf dem Client-Computer, der für den Zugriff auf Ihren Kubernetes-Cluster verwendet wird: 
  + [https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html), Version 1.13 oder höher. Verwenden Sie eine `kubectl`-Version, die innerhalb einer Nebenversion Ihrer Amazon EKS-Cluster-Kontrollebene liegt. Ein 1.13 `kubectl`-Client funktioniert zum Beispiel mit Kubernetes 1.13- und 1.14-Clustern. OpenID Connect (OIDC) wird in Versionen vor 1.13 nicht unterstützt. 
  + [https://github.com/weaveworks/eksctl](https://github.com/weaveworks/eksctl)-Version 0.7.0 oder höher 
  + [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) Version 1.16.232 oder höher 
  + (optional) [Helm](https://helm.sh/docs/intro/install/)-Version 3.0 oder höher 
  + [aws-iam-authenticator](https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html) 
+ IAM-Berechtigungen zum Erstellen von Rollen und zum Zuordnen von Richtlinien zu Rollen haben.
+ Es wurde ein Kubernetes-Cluster erstellt, auf dem die Operatoren ausgeführt werden sollen. Es sollte entweder Kubernetes Version 1.13 oder 1.14 sein. Informationen zur automatisierten Clustererstellung mithilfe von finden Sie unter [Starten mit eksctl`eksctl`](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html). Die Bereitstellung eines Clusters dauert 20-30 Minuten. 

#### Bereitstellung im Clusterbereich
<a name="cluster-scoped-deployment"></a>

Bevor Sie Ihren Operator mithilfe einer IAM-Rolle bereitstellen können, ordnen Sie Ihrer Rolle einen OpenID Connect (OIDC) Identity Provider (IdP) zu, um sich beim IAM-Service zu authentifizieren.

##### Erstellen Sie einen OIDC-Anbieter für Ihren Cluster
<a name="create-an-openid-connect-provider-for-your-cluster"></a>

Die folgenden Anweisungen zeigen, wie Sie einen OIDC-Anbieter erstellen und Ihrem Amazon EKS-Cluster zuordnen.

1. Legen Sie die lokalen Variablen `CLUSTER_NAME` und die `AWS_REGION`-Umgebungsvariablen wie folgt fest:

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="<your cluster name>"
   export AWS_REGION="<your region>"
   ```

1. Verwenden Sie den folgenden Befehl, um den OIDC-Anbieter Ihrem Cluster zuzuordnen. Weitere Informationen finden Sie unter [Aktivieren von IAM-Rollen für Service-Konten in Ihrem Cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
         --region ${AWS_REGION} --approve
   ```

   Die Ausgabe sollte folgendermaßen aussehen: 

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Da der Cluster nun über einen OIDC-Identitätsanbieter verfügt, können Sie eine Rolle erstellen und Kubernetes ServiceAccount die Erlaubnis erteilen, die Rolle zu übernehmen.

##### Holen Sie sich die OIDC-ID
<a name="get-the-oidc-id"></a>

Rufen Sie zur Einrichtung die URL des ServiceAccount OIDC-Ausstellers mit dem folgenden Befehl ab:

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

Der Befehl gibt eine URL wie die folgende zurück: 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

In dieser URL ist der Wert `D48675832CA65BD10A532F597OIDCID` die OIDC-ID. Die OIDC-ID für Ihren Cluster ist unterschiedlich. Sie benötigen diesen OIDC-ID-Wert, um eine Rolle zu erstellen. 

 Wenn Ihre Ausgabe `None` ist, bedeutet das, dass Ihre Client-Version alt ist. Führen Sie zum Umgehen des Problems den folgenden Befehl aus: 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

Die OIDC-URL wird wie folgt zurückgegeben: 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Erstellen einer IAM-Rolle
<a name="create-an-iam-role"></a>

1. Erstellen Sie eine Datei mit dem Namen `trust.json` und fügen Sie den folgenden Vertrauensstellungs-Codeblock ein. Achten Sie darauf, alle `<OIDC ID>`, `<AWS account number>`, und `<EKS Cluster region>`-Platzhalter durch Werte zu ersetzen, die Ihrem Cluster entsprechen. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
               "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Führen Sie den folgenden Befehl aus, um eine Rolle mit der unter `trust.json` definierten Vertrauensstellung zu erstellen. Diese Rolle ermöglicht es dem Amazon EKS-Cluster, Anmeldeinformationen von IAM abzurufen und zu aktualisieren. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name <role name> --assume-role-policy-document file://trust.json --output=text
   ```

   Die Ausgabe sollte folgendermaßen aussehen: 

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
   ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
   STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
   STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default
   PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

    Achten Sie auf `ROLE ARN`; Sie übergeben diesen Wert an Ihren Operator. 

##### Hängen Sie die AmazonSageMakerFullAccess Richtlinie an die Rolle an
<a name="attach-the-amazonsagemakerfullaccess-policy-to-the-role"></a>

Um der Rolle Zugriff auf SageMaker KI zu gewähren, fügen Sie die [AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)Richtlinie bei. Wenn Sie die Berechtigungen auf den Operator beschränken möchten, können Sie Ihre eigene benutzerdefinierte Richtlinie erstellen und diese anhängen. 

 Um `AmazonSageMakerFullAccess` anzuhängen, führen Sie den folgenden Befehl aus: 

```
aws iam attach-role-policy --role-name <role name>  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

Die Kubernetes ServiceAccount `sagemaker-k8s-operator-default` sollten über Berechtigungen verfügen`AmazonSageMakerFullAccess`. Bestätigen Sie dies, wenn Sie den Operator installieren. 

##### Bereitstellen des Operators
<a name="deploy-the-operator"></a>

Bei der Bereitstellung Ihres Operators können Sie entweder eine YAML-Datei oder Helm-Diagramme verwenden. 

##### Stellen Sie den Operator mit YAML bereit
<a name="deploy-the-operator-using-yaml"></a>

Dies ist die einfachste Möglichkeit, Ihre Operatoren bereitzustellen. Der Prozess läuft folgendermaßen ab: 

1. Laden Sie das Installationsskript mit dem folgenden Befehl herunter: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/installer.yaml
   ```

1. Bearbeiten Sie die zu ersetzende `installer.yaml` Datei`eks.amazonaws.com/role-arn`. Ersetzen Sie den ARN hier durch den Amazon-Ressourcennamen (ARN) für die OIDC-basierte Rolle, die Sie erstellt haben. 

1. Verwenden Sie den folgenden Befehl, um den Cluster bereitzustellen: 

   ```
   kubectl apply -f installer.yaml
   ```

##### Stellen Sie den Operator mithilfe von Helm Charts bereit
<a name="deploy-the-operator-using-helm-charts"></a>

Verwenden Sie das mitgelieferte Helm-Diagramm, um den Operator zu installieren. 

1. Klonen Sie das Helm-Installationsverzeichnis mit dem folgenden Befehl: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Navigieren Sie zum Verzeichnis `amazon-sagemaker-operator-for-k8s/hack/charts/installer`. Bearbeiten Sie die `rolebased/values.yaml` Datei, die allgemeine Parameter für das Diagramm enthält. Ersetzen Sie hier den Rollen-ARN durch den Amazon-Ressourcennamen (ARN) für die OIDC-basierte Rolle, die Sie erstellt haben. 

1. Installieren Sie das Helm Diagramm mit dem folgenden Befehl: 

   ```
   kubectl create namespace sagemaker-k8s-operator-system
     helm install --namespace sagemaker-k8s-operator-system sagemaker-operator rolebased/
   ```

   Wenn Sie den Operator in einem anderen als dem angegebenen Namespace installieren möchten, müssen Sie den in der IAM-Rollen–`trust.json`datei definierten Namespace entsprechend anpassen. 

1. Nach einem Moment wird das Diagramm mit einem zufällig generierten Namen installiert. Überprüfen Sie, ob die Installation erfolgreich war, indem Sie den folgenden Befehl ausführen: 

   ```
   helm ls
   ```

   Die Ausgabe sollte folgendermaßen aussehen: 

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
     sagemaker-operator      sagemaker-k8s-operator-system   1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Überprüfen Sie den Einsatz des Operators
<a name="verify-the-operator-deployment"></a>

1. Sie sollten in der Lage sein, die benutzerdefinierten SageMaker KI-Ressourcendefinitionen (CRDs) für jeden in Ihrem Cluster bereitgestellten Operator zu sehen, indem Sie den folgenden Befehl ausführen: 

   ```
   kubectl get crd | grep sagemaker
   ```

   Die Ausgabe sollte folgendermaßen aussehen: 

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Stellen Sie sicher, dass der Operator-Pod erfolgreich ausgeführt wird. Verwenden Sie den folgenden Befehl, um alle Pods aufzulisten: 

   ```
   kubectl -n sagemaker-k8s-operator-system get pods
   ```

   Sie sollten einen Pod mit dem Namen `sagemaker-k8s-operator-controller-manager-*****` im Namespace `sagemaker-k8s-operator-system` wie folgt sehen: 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Bereitstellung im Namespace-Bereich
<a name="namespace-scoped-deployment"></a>

Sie haben die Möglichkeit, Ihren Operator im Rahmen eines individuellen Kubernetes-Namespace zu installieren. In diesem Modus überwacht der Controller Ressourcen nur dann und gleicht sie mit SageMaker KI ab, wenn die Ressourcen in diesem Namespace erstellt wurden. Dies ermöglicht eine genauere Kontrolle darüber, welcher Controller welche Ressourcen verwaltet. Dies ist nützlich, wenn Sie die Bereitstellung für mehrere AWS Konten durchführen oder kontrollieren möchten, welche Benutzer Zugriff auf bestimmte Jobs haben. 

In dieser Anleitung wird beschrieben, wie ein Operator in einem bestimmten, vordefinierten Namespace installiert wird. Um einen Controller in einem zweiten Namespace bereitzustellen, folgen Sie der Anleitung von Anfang bis Ende und ändern Sie den Namespace in jedem Schritt. 

##### Erstellen Sie einen OIDC-Anbieter für Ihren Amazon EKS-Cluster
<a name="create-an-openid-connect-provider-for-your-eks-cluster"></a>

Die folgenden Anweisungen zeigen, wie Sie einen OIDC-Anbieter erstellen und mit Ihrem Amazon EKS-Cluster verknüpfen. 

1. Legen Sie die lokalen Variablen `CLUSTER_NAME` und die `AWS_REGION`-Umgebungsvariablen wie folgt fest: 

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="<your cluster name>"
   export AWS_REGION="<your region>"
   ```

1. Verwenden Sie den folgenden Befehl, um den OIDC-Anbieter Ihrem Cluster zuzuordnen. Weitere Informationen finden Sie unter [Aktivieren von IAM-Rollen für Service-Konten in Ihrem Cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
         --region ${AWS_REGION} --approve
   ```

   Die Ausgabe sollte folgendermaßen aussehen: 

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Da der Cluster nun über einen OIDC-Identitätsanbieter verfügt, erstellen Sie eine Rolle und erteilen Sie Kubernetes die ServiceAccount Erlaubnis, die Rolle zu übernehmen. 

##### Holen Sie sich Ihre OIDC-ID
<a name="get-your-oidc-id"></a>

Um das einzurichten ServiceAccount, rufen Sie zunächst die OpenID Connect-Aussteller-URL mit dem folgenden Befehl ab: 

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

Die Ausgabe des Befehls ähnelt der Folgenden: 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

In dieser URL ist der Wert CA65 BD10 D48675832 A532F597OIDCID die OIDC-ID. Die OIDC-ID für Ihren Cluster ist unterschiedlich. Sie benötigen diesen OIDC-ID-Wert, um eine Rolle zu erstellen. 

 Wenn Ihre Ausgabe `None` ist, bedeutet das, dass Ihre Client-Version alt ist. Führen Sie zum Umgehen des Problems den folgenden Befehl aus: 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

Die OIDC-URL wird wie folgt zurückgegeben: 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Erstellen Sie Ihre IAM-Rolle
<a name="create-your-iam-role"></a>

1. Erstellen Sie eine Datei mit dem Namen `trust.json` und fügen Sie den folgenden Codeblock für Vertrauensbeziehungen ein. Achten Sie darauf, alle `<OIDC ID>`, `<AWS account number>`, `<EKS Cluster region>`, und `<Namespace>` und Platzhalter durch Werte zu ersetzen, die Ihrem Cluster entsprechen. Für die Zwecke dieses Handbuchs `my-namespace` wird für den `<Namespace>` Wert verwendet. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
           "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:<Namespace>:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::111122223333:oidc-provider/oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:aud": "sts.amazonaws.com",
                 "oidc.eks.<EKS Cluster region>.amazonaws.com/id/<OIDC ID>:sub": "system:serviceaccount:<Namespace>:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Führen Sie den folgenden Befehl aus, um eine Rolle mit der unter `trust.json` definierten Vertrauensstellung zu erstellen. Diese Rolle ermöglicht es dem Amazon EKS-Cluster, Anmeldeinformationen von IAM abzurufen und zu aktualisieren. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name <role name> --assume-role-policy-document file://trust.json --output=text
   ```

   Die Ausgabe sollte folgendermaßen aussehen: 

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
     ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
     STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
     STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:my-namespace:sagemaker-k8s-operator-default
     PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

Beachten Sie `ROLE ARN`. Sie geben diesen Wert an Ihren Operator weiter. 

##### AmazonSageMakerFullAccess Ordnen Sie die Richtlinie Ihrer Rolle zu
<a name="attach-the-amazonsagemakerfullaccess-policy-to-your-role"></a>

Um der Rolle Zugriff auf SageMaker KI zu gewähren, fügen Sie die [https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)Richtlinie bei. Wenn Sie die Berechtigungen auf den Operator beschränken möchten, können Sie Ihre eigene benutzerdefinierte Richtlinie erstellen und diese anhängen. 

 Um `AmazonSageMakerFullAccess` anzuhängen, führen Sie den folgenden Befehl aus: 

```
aws iam attach-role-policy --role-name <role name>  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

Die Kubernetes ServiceAccount `sagemaker-k8s-operator-default` sollten über Berechtigungen verfügen`AmazonSageMakerFullAccess`. Bestätigen Sie dies, wenn Sie den Operator installieren. 

##### Stellen Sie den Operator in Ihrem Namespace bereit
<a name="deploy-the-operator-to-your-namespace"></a>

Bei der Bereitstellung Ihres Operators können Sie entweder eine YAML-Datei oder Helm-Diagramme verwenden. 

##### Stellen Sie den Operator mithilfe von YAML in Ihrem Namespace bereit
<a name="deploy-the-operator-to-your-namespace-using-yaml"></a>

Die Bereitstellung eines Operators innerhalb eines Namespaces besteht aus zwei Teilen. Der erste ist der Satz davon CRDs , der auf Clusterebene installiert ist. Diese Ressourcendefinitionen müssen nur einmal pro Kubernetes-Cluster installiert werden. Der zweite Teil betrifft die Bedienerberechtigungen und die Bereitstellung selbst. 

 Wenn Sie das CRDs noch nicht im Cluster installiert haben, wenden Sie das CRD-Installationsprogramm YAML mit dem folgenden Befehl an: 

```
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
```

Um den Operator auf dem Cluster zu installieren: 

1. Laden Sie das Operator-Installationsprogramm YAML mit dem folgenden Befehl herunter: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/operator.yaml
   ```

1. Aktualisieren Sie das Installationsprogramm YAML mit dem folgenden Befehl, sodass die Ressourcen in Ihrem angegebenen Namespace platziert werden: 

   ```
   sed -i -e 's/PLACEHOLDER-NAMESPACE/<YOUR NAMESPACE>/g' operator.yaml
   ```

1. Bearbeiten Sie die `operator.yaml` Datei, um Ressourcen in Ihrem `eks.amazonaws.com/role-arn` zu platzieren. Ersetzen Sie den ARN hier durch den Amazon-Ressourcennamen (ARN) für die OIDC-basierte Rolle, die Sie erstellt haben. 

1. Verwenden Sie den folgenden Befehl, um den Cluster bereitzustellen: 

   ```
   kubectl apply -f operator.yaml
   ```

##### Stellen Sie den Operator mithilfe von Helm Charts in Ihrem Namespace bereit
<a name="deploy-the-operator-to-your-namespace-using-helm-charts"></a>

Für die Bereitstellung eines Operators im Rahmen eines Namespaces sind zwei Teile erforderlich. Der erste ist der Satz CRDs , der auf Clusterebene installiert ist. Diese Ressourcendefinitionen müssen nur einmal pro Kubernetes-Cluster installiert werden. Der zweite Teil betrifft die Bedienerberechtigungen und die Bereitstellung selbst. Wenn Sie Helm Charts verwenden, müssen Sie zuerst den Namespace mit `kubectl` erstellen. 

1. Klonen Sie das Helm-Installationsverzeichnis mit dem folgenden Befehl: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Navigieren Sie zum Verzeichnis `amazon-sagemaker-operator-for-k8s/hack/charts/installer/namespaced`. Bearbeiten Sie die `rolebased/values.yaml` Datei, die allgemeine Parameter für das Diagramm enthält. Ersetzen Sie hier den Rollen-ARN durch den Amazon-Ressourcennamen (ARN) für die OIDC-basierte Rolle, die Sie erstellt haben. 

1. Installieren Sie das Helm Chart mit dem folgenden Befehl: 

   ```
   helm install crds crd_chart/
   ```

1. Erstellen Sie den erforderlichen Namespace und installieren Sie den Operator mit dem folgenden Befehl: 

   ```
   kubectl create namespace <namespace>
   helm install --n <namespace> op operator_chart/
   ```

1. Nach einem Moment wird das Diagramm mit dem Namen `sagemaker-operator` installiert. Überprüfen Sie, ob die Installation erfolgreich war, indem Sie den folgenden Befehl ausführen: 

   ```
   helm ls
   ```

   Die Ausgabe sollte folgendermaßen aussehen: 

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
   sagemaker-operator      my-namespace                    1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Überprüfen Sie die Operator-Bereitstellung in Ihrem Namespace
<a name="verify-the-operator-deployment-to-your-namespace"></a>

1. Sie sollten in der Lage sein, die benutzerdefinierten SageMaker KI-Ressourcendefinitionen (CRDs) für jeden in Ihrem Cluster bereitgestellten Operator zu sehen, indem Sie den folgenden Befehl ausführen: 

   ```
   kubectl get crd | grep sagemaker
   ```

   Die Ausgabe sollte folgendermaßen aussehen: 

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Stellen Sie sicher, dass der Operator-Pod erfolgreich ausgeführt wird. Verwenden Sie den folgenden Befehl, um alle Pods aufzulisten: 

   ```
   kubectl -n my-namespace get pods
   ```

   Sie sollten einen Pod mit dem Namen `sagemaker-k8s-operator-controller-manager-*****` im Namespace `my-namespace` wie folgt sehen: 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Installieren Sie das SageMaker `kubectl` KI-Logs-Plugin
<a name="install-the-amazon-sagemaker-logs-kubectl-plugin"></a>

 Als Teil der SageMaker AI Operators for Kubernetes können Sie das `smlogs` [Plugin](https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/) für verwenden. `kubectl` Dadurch können SageMaker CloudWatch KI-Logs mit gestreamt werden. `kubectl` `kubectl`muss auf Ihrem [PATH](http://www.linfo.org/path_env_var.html) installiert sein. Die folgenden Befehle platzieren die Binärdatei in dem `sagemaker-k8s-bin` Verzeichnis in Ihrem Home-Verzeichnis und fügen dieses Verzeichnis Ihrem `PATH` hinzu. 

```
export os="linux"
  
wget https://amazon-sagemaker-operator-for-k8s-us-east-1.s3.amazonaws.com/kubectl-smlogs-plugin/v1/${os}.amd64.tar.gz
tar xvzf ${os}.amd64.tar.gz
  
# Move binaries to a directory in your homedir.
mkdir ~/sagemaker-k8s-bin
cp ./kubectl-smlogs.${os}.amd64/kubectl-smlogs ~/sagemaker-k8s-bin/.
  
# This line adds the binaries to your PATH in your .bashrc.
  
echo 'export PATH=$PATH:~/sagemaker-k8s-bin' >> ~/.bashrc
  
# Source your .bashrc to update environment variables:
source ~/.bashrc
```

Verwenden Sie den folgenden Befehl, um zu überprüfen, ob das`kubectl`-Plugin korrekt installiert ist: 

```
kubectl smlogs
```

Wenn das `kubectl`-Plugin korrekt installiert ist, sollte Ihre Ausgabe wie folgt aussehen: 

```
View SageMaker AI logs via Kubernetes
  
Usage:
  smlogs [command]
  
Aliases:
  smlogs, SMLogs, Smlogs
  
Available Commands:
  BatchTransformJob       View BatchTransformJob logs via Kubernetes
  TrainingJob             View TrainingJob logs via Kubernetes
  help                    Help about any command
  
Flags:
   -h, --help   help for smlogs
  
Use "smlogs [command] --help" for more information about a command.
```

### Bereinigen von Ressourcen
<a name="cleanup-operator-resources"></a>

Um den Operator aus Ihrem Cluster zu deinstallieren, müssen Sie zunächst sicherstellen, dass Sie alle SageMaker KI-Ressourcen aus dem Cluster löschen. Wenn Sie dies nicht tun, hängt der Löschvorgang des Operators ab. Führen Sie die folgenden Befehle aus, um alle Aufträge zu stoppen: 

```
# Delete all SageMaker AI jobs from Kubernetes
kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
```

Die Ausgabe sollte folgendermaßen oder ähnlich aussehen: 

```
$ kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
trainingjobs.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
  
$ kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
  
$ kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
  
$ kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
```

Nachdem Sie alle SageMaker KI-Jobs gelöscht haben, finden Sie weitere Informationen [Operatoren löschen](#delete-operators) zum Löschen des Operators aus Ihrem Cluster.

### Operatoren löschen
<a name="delete-operators"></a>

#### Löschen Sie clusterbasierte Operatoren
<a name="delete-cluster-based-operators"></a>

##### Operatoren, die mit YAML installiert wurden
<a name="operators-installed-using-yaml"></a>

Um den Operator aus Ihrem Cluster zu deinstallieren, stellen Sie sicher, dass alle SageMaker KI-Ressourcen aus dem Cluster gelöscht wurden. Wenn Sie dies nicht tun, hängt der Löschvorgang des Operators ab.

**Anmerkung**  
Stellen Sie vor dem Löschen Ihres Clusters sicher, dass Sie alle SageMaker KI-Ressourcen aus dem Cluster löschen. Weitere Informationen finden Sie unter [Bereinigen von Ressourcen](#cleanup-operator-resources).

Nachdem Sie alle SageMaker KI-Jobs gelöscht haben, verwenden Sie, `kubectl` um den Operator aus dem Cluster zu löschen:

```
# Delete the operator and its resources
kubectl delete -f /installer.yaml
```

Die Ausgabe sollte folgendermaßen oder ähnlich aussehen: 

```
$ kubectl delete -f raw-yaml/installer.yaml
namespace "sagemaker-k8s-operator-system" deleted
customresourcedefinition.apiextensions.k8s.io "batchtransformjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "endpointconfigs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hostingdeployments.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hyperparametertuningjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "models.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "trainingjobs.sagemaker.aws.amazon.com" deleted
role.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-role" deleted
rolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-rolebinding" deleted
service "sagemaker-k8s-operator-controller-manager-metrics-service" deleted
deployment.apps "sagemaker-k8s-operator-controller-manager" deleted
secrets "sagemaker-k8s-operator-abcde" deleted
```

##### Mithilfe von Helm Charts installierte Operatoren
<a name="operators-installed-using-helm-charts"></a>

Um den Operator zu löschen CRDs, löschen Sie zunächst alle laufenden Jobs. Löschen Sie dann das Helm-Diagramm, das für die Bereitstellung der Operatoren verwendet wurde, mithilfe der folgenden Befehle: 

```
# get the helm charts
helm ls
  
# delete the charts
helm delete <chart_name>
```

#### Löschen Sie Namespace-basierte Operatoren
<a name="delete-namespace-based-operators"></a>

##### Mit YAML installierte Operatoren
<a name="operators-installed-with-yaml"></a>

Um den Operator aus Ihrem Cluster zu deinstallieren, stellen Sie zunächst sicher, dass alle SageMaker KI-Ressourcen aus dem Cluster gelöscht wurden. Wenn Sie dies nicht tun, hängt der Löschvorgang des Operators ab.

**Anmerkung**  
Stellen Sie vor dem Löschen Ihres Clusters sicher, dass Sie alle SageMaker KI-Ressourcen aus dem Cluster löschen. Weitere Informationen finden Sie unter [Bereinigen von Ressourcen](#cleanup-operator-resources).

Nachdem Sie alle SageMaker KI-Jobs gelöscht haben, verwenden Sie, `kubectl` um zuerst den Operator aus dem Namespace und dann CRDs aus dem Cluster zu löschen. Führen Sie die folgenden Befehle aus, um den Operator aus dem Cluster zu löschen: 

```
# Delete the operator using the same yaml file that was used to install the operator
kubectl delete -f operator.yaml
  
# Now delete the CRDs using the CRD installer yaml
kubectl delete -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
  
# Now you can delete the namespace if you want
kubectl delete namespace <namespace>
```

##### Operatoren, die mit Helm Charts installiert wurden
<a name="operators-installed-with-helm-charts"></a>

Um den Operator zu löschen CRDs, löschen Sie zunächst alle laufenden Jobs. Löschen Sie dann das Helm-Diagramm, das für die Bereitstellung der Operatoren verwendet wurde, mithilfe der folgenden Befehle: 

```
# Delete the operator
helm delete <chart_name>
  
# delete the crds
helm delete crds
  
# optionally delete the namespace
kubectl delete namespace <namespace>
```

### Fehlerbehebung
<a name="troubleshooting"></a>

#### Debuggen eines fehlgeschlagenen Jobs
<a name="debugging-a-failed-job"></a>

Gehen Sie wie folgt vor, um einen fehlgeschlagenen Job zu debuggen.
+ Überprüfen Sie den Auftragsstatus, indem Sie Folgendes ausführen: 

  ```
  kubectl get <CRD Type> <job name>
  ```
+ Wenn der Job in SageMaker AI erstellt wurde, können Sie den folgenden Befehl verwenden, um das `STATUS` und das zu sehen`SageMaker Job Name`: 

  ```
  kubectl get <crd type> <job name>
  ```
+ Sie können `smlogs` verwenden, um die Ursache des Problems mit dem folgenden Befehl zu finden: 

  ```
  kubectl smlogs <crd type> <job name>
  ```
+  Sie können den `describe` Befehl auch verwenden, um weitere Details zum Job mithilfe des folgenden Befehls anzuzeigen. Die Ausgabe enthält ein `additional` Feld mit weiteren Informationen zum Status des Jobs. 

  ```
  kubectl describe <crd type> <job name>
  ```
+ Wenn der Job nicht in SageMaker AI erstellt wurde, verwenden Sie die Protokolle des Pods des Operators, um die Ursache des Problems wie folgt zu ermitteln: 

  ```
  $ kubectl get pods -A | grep sagemaker
  # Output:
  sagemaker-k8s-operator-system   sagemaker-k8s-operator-controller-manager-5cd7df4d74-wh22z   2/2     Running   0          3h33m
    
  $ kubectl logs -p <pod name> -c manager -n sagemaker-k8s-operator-system
  ```

#### Löschen einer Bediener-CRD
<a name="deleting-an-operator-crd"></a>

Wenn das Löschen eines Jobs nicht funktioniert, überprüfen Sie, ob der Operator läuft. Wenn der Operator nicht läuft, müssen Sie den Finalizer mit den folgenden Schritten löschen: 

1. Öffnen Sie den Auftrag in einem neuen Terminal in einem Editor mit `kubectl edit` wie folgt: 

   ```
   kubectl edit <crd type> <job name>
   ```

1. Bearbeiten Sie den Job, um den Finalizer zu löschen, indem Sie die folgenden zwei Zeilen aus der Datei entfernen. Speichern Sie die Datei und der Job wird gelöscht. 

   ```
   finalizers:
     - sagemaker-operator-finalizer
   ```

### Bilder und SMlogs in jeder Region
<a name="images-and-smlogs-in-each-region"></a>

In der folgenden Tabelle sind die verfügbaren Operator-Bilder für jede Region aufgeführt. SMLogs 


|  Region  |  Controller-Bild  |  Linux SMLogs  | 
| --- | --- | --- | 
|  us-east-1  |  957583890962.dkr.ecr.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-east-2  |  922499468684.dkr.ecr.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-west-2  |  640106867763.dkr.ecr.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  eu-west-1  |  613661167059.dkr.ecr.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 

# Verwenden Sie Amazon SageMaker AI Jobs
<a name="kubernetes-sagemaker-jobs"></a>

Dieser Abschnitt basiert auf der Originalversion von [SageMaker AI Operators for](https://github.com/aws/amazon-sagemaker-operator-for-k8s) Kubernetes.

**Wichtig**  
Wir stellen die Entwicklung und den technischen Support der Originalversion von [ SageMaker Operators for](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) Kubernetes ein.  
Wenn Sie derzeit die Version `v1.2.2` oder eine niedrigere Version von [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) verwenden, empfehlen wir, Ihre Ressourcen auf den [ACK Service Controller](https://github.com/aws-controllers-k8s/sagemaker-controller) für Amazon zu migrieren. SageMaker Der ACK Service Controller ist eine neue Generation von SageMaker Operatoren für Kubernetes, die auf [AWS Controllers for](https://aws-controllers-k8s.github.io/community/) Kubernetes (ACK) basieren.  
Informationen zu den Migrationsschritten finden Sie unter [Migrieren Sie Ressourcen zu den neuesten Operatoren](kubernetes-sagemaker-operators-migrate.md).  
Antworten auf häufig gestellte Fragen zum Ende der Unterstützung für die Originalversion von SageMaker Operators for Kubernetes finden Sie unter [Ankündigung des Endes der Support der Originalversion von SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

Um einen Amazon SageMaker AI-Job mit den Operatoren für Kubernetes auszuführen, können Sie entweder eine YAML-Datei anwenden oder die mitgelieferten Helm Charts verwenden. 

Alle Beispiel-Operator-Jobs in den folgenden Tutorials verwenden Beispieldaten aus einem öffentlichen MNIST-Datensatz. Um diese Beispiele auszuführen, laden Sie den Datensatz in Ihren Amazon-S3-Bucket herunter. Sie finden den Datensatz unter [MNIST-Datensatz herunterladen](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-preprocess-data-pull-data.html). 

**Topics**
+ [Der Operator TrainingJob](#trainingjob-operator)
+ [Der HyperParameterTuningJob Betreiber](#hyperparametertuningjobs-operator)
+ [Der BatchTransformJob Betreiber](#batchtransformjobs-operator)
+ [Der HostingDeployment Betreiber](#hosting-deployment-operator)
+ [Der Betreiber ProcessingJob](#kubernetes-processing-job-operator)
+ [HostingAutoscalingPolicy (HAP) Betreiber](#kubernetes-hap-operator)

## Der Operator TrainingJob
<a name="trainingjob-operator"></a>

Die Mitarbeiter der Schulungsstelle stimmen Ihre spezifizierten Ausbildungsberufsspezifikationen mit der SageMaker KI ab, indem sie sie für Sie in SageMaker der KI starten. In der SageMaker [CreateTrainingJob KI-API-Dokumentation](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html) erfahren Sie mehr über SageMaker Trainingsjobs. 

**Topics**
+ [Erstellen Sie eine TrainingJob mit einer YAML-Datei](#create-a-trainingjob-using-a-simple-yaml-file)
+ [Erstellen Sie ein Diagramm TrainingJob mit Hilfe eines Helms](#create-a-trainingjob-using-a-helm-chart)
+ [Liste TrainingJobs](#list-training-jobs)
+ [Beschreiben Sie ein TrainingJob](#describe-a-training-job)
+ [Protokolle anzeigen von TrainingJobs](#view-logs-from-training-jobs)
+ [Löschen TrainingJobs](#delete-training-jobs)

### Erstellen Sie eine TrainingJob mit einer YAML-Datei
<a name="create-a-trainingjob-using-a-simple-yaml-file"></a>

1. Laden Sie die YAML-Beispieldatei für das Training mit dem folgenden Befehl herunter: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-trainingjob.yaml
   ```

1. Bearbeiten Sie die `xgboost-mnist-trainingjob.yaml` Datei`<sagemaker-execution-role>`, um den `roleArn` Parameter durch Ihren und `outputPath` Ihren Amazon S3 S3-Bucket zu ersetzen, auf den die SageMaker AI-Ausführungsrolle Schreibzugriff hat. Sie `roleArn` müssen über Berechtigungen verfügen, damit SageMaker KI in Ihrem Namen auf Amazon S3 CloudWatch, Amazon und andere Dienste zugreifen kann. Weitere Informationen zur Erstellung einer SageMaker KI finden Sie ExecutionRole unter [SageMaker KI-Rollen](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms). Wenden Sie die YAML-Datei mit folgendem Befehl an: 

   ```
   kubectl apply -f xgboost-mnist-trainingjob.yaml
   ```

### Erstellen Sie ein Diagramm TrainingJob mit Hilfe eines Helms
<a name="create-a-trainingjob-using-a-helm-chart"></a>

Sie können Helm Charts zum Laufen verwenden TrainingJobs. 

1. Klonen Sie das GitHub Repository, um die Quelle abzurufen, indem Sie den folgenden Befehl verwenden: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Navigieren Sie zum `amazon-sagemaker-operator-for-k8s/hack/charts/training-jobs/` Ordner und bearbeiten Sie die `values.yaml` Datei, um Werte wie `rolearn` und `outputpath` durch Werte zu ersetzen, die Ihrem Konto entsprechen. Das RoleARN muss über Berechtigungen verfügen, damit SageMaker KI in Ihrem Namen auf Amazon S3 CloudWatch, Amazon und andere Dienste zugreifen kann. Weitere Informationen zur Erstellung einer SageMaker KI finden Sie ExecutionRole unter [SageMaker KI-Rollen](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms). 

#### Erstellen Sie die TrainingJob
<a name="create-the-training-job"></a>

Nachdem die Rollen und Amazon-S3-Buckets durch die entsprechenden Werte in `values.yaml` ersetzt wurden, können Sie mit dem folgenden Befehl einen Trainingsjob erstellen: 

```
helm install . --generate-name
```

Die Ausgabe sollte folgendermaßen aussehen: 

```
NAME: chart-12345678
LAST DEPLOYED: Wed Nov 20 23:35:49 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thanks for installing the sagemaker-k8s-trainingjob.
```

#### Überprüfen Sie Ihre Trainings-Helmtabelle
<a name="verify-your-training-helm-chart"></a>

Um zu überprüfen, ob das Helm Chart erfolgreich erstellt wurde, führe folgenden Befehl aus: 

```
helm ls
```

Die Ausgabe sollte folgendermaßen aussehen: 

```
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
chart-12345678        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
rolebased-12345678    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
```

`helm install` erstellt eine `TrainingJob` Kubernetes-Ressource. Der Operator startet den eigentlichen Schulungsjob in SageMaker KI und aktualisiert die `TrainingJob` Kubernetes-Ressource, um den Status des Jobs in SageMaker KI widerzuspiegeln. Es fallen Gebühren für SageMaker KI-Ressourcen an, die Sie während der Dauer Ihres Jobs nutzen. Sobald Ihr Auftrag abgeschlossen oder beendet ist, fallen für Sie keine Gebühren an. 

**Hinweis**: Mit SageMaker KI können Sie einen Lauftrainingsjob nicht aktualisieren. Sie können keinen Parameter bearbeiten und die Konfigurationsdatei erneut anwenden. Ändern Sie entweder den Namen der Metadaten oder löschen Sie den vorhandenen Job und erstellen Sie einen neuen. Ähnlich wie bei bestehenden Trainingsjobs werden Operatoren wie TFJob in Kubeflow nicht `update` unterstützt. 

### Liste TrainingJobs
<a name="list-training-jobs"></a>

Verwenden Sie den folgenden Befehl, um alle Aufträge aufzulisten, die mit dem Kubernetes-Operator erstellt wurden: 

```
kubectl get TrainingJob
```

Die Ausgabe, die alle Aufträge auflistet, sollte wie folgt aussehen: 

```
kubectl get trainingjobs
NAME                        STATUS       SECONDARY-STATUS   CREATION-TIME          SAGEMAKER-JOB-NAME
xgboost-mnist-from-for-s3   InProgress   Starting           2019-11-20T23:42:35Z   xgboost-mnist-from-for-s3-examplef11eab94e0ed4671d5a8f
```

Ein Trainingsjob wird weiterhin aufgeführt, nachdem der Job abgeschlossen wurde oder fehlgeschlagen ist. Sie können einen `TrainingJob` Job aus der Liste entfernen, indem Sie die folgenden [Löschen TrainingJobs](#delete-training-jobs) Schritte ausführen. Für Aufträge, die abgeschlossen oder beendet wurden, fallen keine Gebühren für SageMaker KI-Ressourcen an. 

#### TrainingJob Statuswerte
<a name="training-job-status-values"></a>

Das Feld `STATUS` kann einen der folgenden Werte annehmen: 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

Diese Status stammen direkt aus der offiziellen [API-Dokumentation](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-TrainingJobStatus) von SageMaker AI. 

Zusätzlich zum offiziellen SageMaker KI-Status ist es möglich, auch `STATUS` zu sein`SynchronizingK8sJobWithSageMaker`. Das bedeutet, dass der Bediener den Auftrag noch nicht bearbeitet hat. 

#### Sekundäre Statuswerte
<a name="secondary-status-values"></a>

Die sekundären Status stammen direkt aus der offiziellen [API-Dokumentation](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-SecondaryStatus) von SageMaker AI. Sie enthalten detailliertere Informationen zum Status des Jobs. 

### Beschreiben Sie ein TrainingJob
<a name="describe-a-training-job"></a>

Weitere Informationen zum Trainingsjob erhalten Sie mit dem `describe` `kubectl` Befehl. Dies wird normalerweise zum Debuggen eines Problems oder zum Überprüfen der Parameter eines Trainingsauftrags verwendet. Um Informationen zu Ihrem Ausbildungsberuf zu erhalten, verwenden Sie den folgenden Befehl: 

```
kubectl describe trainingjob xgboost-mnist-from-for-s3
```

Die Ausgabe für Ihren Trainingsjob sollte wie folgt aussehen: 

```
Name:         xgboost-mnist-from-for-s3
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  sagemaker.aws.amazon.com/v1
Kind:         TrainingJob
Metadata:
  Creation Timestamp:  2019-11-20T23:42:35Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  23119
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/trainingjobs/xgboost-mnist-from-for-s3
  UID:               6d7uiui-0bef-11ea-b94e-0ed467example
Spec:
  Algorithm Specification:
    Training Image:       8256416981234.dkr.ecr.us-east-2.amazonaws.com/xgboost:1
    Training Input Mode:  File
  Hyper Parameters:
    Name:   eta
    Value:  0.2
    Name:   gamma
    Value:  4
    Name:   max_depth
    Value:  5
    Name:   min_child_weight
    Value:  6
    Name:   num_class
    Value:  10
    Name:   num_round
    Value:  10
    Name:   objective
    Value:  multi:softmax
    Name:   silent
    Value:  0
  Input Data Config:
    Channel Name:      train
    Compression Type:  None
    Content Type:      text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Distribution Type:  FullyReplicated
        S 3 Data Type:               S3Prefix
        S 3 Uri:                     https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/
    Channel Name:                    validation
    Compression Type:                None
    Content Type:                    text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Distribution Type:  FullyReplicated
        S 3 Data Type:               S3Prefix
        S 3 Uri:                     https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/
  Output Data Config:
    S 3 Output Path:  s3://amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost/
  Region:             us-east-2
  Resource Config:
    Instance Count:     1
    Instance Type:      ml.m4.xlarge
    Volume Size In GB:  5
  Role Arn:             arn:aws:iam::12345678910:role/service-role/AmazonSageMaker-ExecutionRole
  Stopping Condition:
    Max Runtime In Seconds:  86400
  Training Job Name:         xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0example
Status:
  Cloud Watch Log URL:           https://us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logStream:group=/aws/sagemaker/TrainingJobs;prefix=<example>;streamFilter=typeLogStreamPrefix
  Last Check Time:               2019-11-20T23:44:29Z
  Sage Maker Training Job Name:  xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94eexample
  Secondary Status:              Downloading
  Training Job Status:           InProgress
Events:                          <none>
```

### Protokolle anzeigen von TrainingJobs
<a name="view-logs-from-training-jobs"></a>

Verwenden Sie den folgenden Befehl, um die Protokolle des `kmeans-mnist` Trainingsauftrags einzusehen: 

```
kubectl smlogs trainingjob xgboost-mnist-from-for-s3
```

Ihre Ausgabe sollte in etwa wie folgt aussehen. Die Protokolle der Instances sind chronologisch angeordnet. 

```
"xgboost-mnist-from-for-s3" has SageMaker TrainingJobName "xgboost-mnist-from-for-s3-123456789" in region "us-east-2", status "InProgress" and secondary status "Starting"
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC Arguments: train
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Running standalone xgboost training.
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] File size need to be processed in the node: 1122.95mb. Available memory size in the node: 8586.0mb
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [2019-11-20:23:45:22:INFO] Determined delimiter of CSV input is ','
xgboost-mnist-from-for-s3-6d7fa0af0bef11eab94e0ed46example/algo-1-1574293123 2019-11-20 23:45:24.7 +0000 UTC [23:45:22] S3DistributionType set as FullyReplicated
```

### Löschen TrainingJobs
<a name="delete-training-jobs"></a>

Verwenden Sie den folgenden Befehl, um einen Trainingsjob auf Amazon SageMaker AI zu beenden: 

```
kubectl delete trainingjob xgboost-mnist-from-for-s3
```

Dieser Befehl entfernt den SageMaker Trainingsjob aus Kubernetes. Dieser Befehl liefert die folgende Ausgabe: 

```
trainingjob.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
```

Wenn der Job auf SageMaker KI noch in Bearbeitung ist, wird der Job beendet. Nach Beendigung oder Abschluss Ihres Jobs fallen für Sie keine Gebühren für SageMaker KI-Ressourcen an. 

**Hinweis**: SageMaker KI löscht keine Schulungsjobs. Beendete Jobs werden weiterhin auf der SageMaker AI-Konsole angezeigt. Der `delete` Befehl benötigt etwa 2 Minuten, um die Ressourcen von der SageMaker KI zu bereinigen. 

## Der HyperParameterTuningJob Betreiber
<a name="hyperparametertuningjobs-operator"></a>

Die Operatoren für Hyperparameter-Tuning-Jobs stimmen Ihre angegebene Spezifikation für Hyperparameter-Tuning-Jobs mit der KI ab, indem sie sie in SageMaker AI starten. SageMaker [Weitere Informationen zu SageMaker KI-Hyperparameter-Tuning-Jobs finden Sie in der AI-API-Dokumentation. SageMaker CreateHyperParameterTuningJob ](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateHyperParameterTuningJob.html) 

**Topics**
+ [Erstellen Sie eine HyperparameterTuningJob mit einer YAML-Datei](#create-a-hyperparametertuningjob-using-a-simple-yaml-file)
+ [Erstellen Sie ein HyperparameterTuningJob mithilfe eines Helm-Diagramms](#create-a-hyperparametertuningjob-using-a-helm-chart)
+ [Liste HyperparameterTuningJobs](#list-hyperparameter-tuning-jobs)
+ [Beschreibe ein HyperparameterTuningJob](#describe-a-hyperparameter-tuning-job)
+ [Logs anzeigen von HyperparameterTuningJobs](#view-logs-from-hyperparametertuning-jobs)
+ [Lösche ein HyperparameterTuningJob](#delete-hyperparametertuning-jobs)

### Erstellen Sie eine HyperparameterTuningJob mit einer YAML-Datei
<a name="create-a-hyperparametertuningjob-using-a-simple-yaml-file"></a>

1. Laden Sie die YAML-Beispieldatei für den Hyperparameter-Tuning-Job mit dem folgenden Befehl herunter: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hpo.yaml
   ```

1. Bearbeiten Sie die `xgboost-mnist-hpo.yaml` Datei, um den `roleArn` Parameter durch Ihren `sagemaker-execution-role` zu ersetzen. Damit der Hyperparameter-Tuning-Job erfolgreich ist, müssen Sie auch die Werte `s3InputPath` und `s3OutputPath` in Werte ändern, die Ihrem Konto entsprechen. Wenden Sie die aktualisierte YAML-Datei mit folgendem Befehl an: 

   ```
   kubectl apply -f xgboost-mnist-hpo.yaml
   ```

### Erstellen Sie ein HyperparameterTuningJob mithilfe eines Helm-Diagramms
<a name="create-a-hyperparametertuningjob-using-a-helm-chart"></a>

Sie können Helm Charts verwenden, um Hyperparameter-Tuning-Jobs auszuführen. 

1. Klonen Sie das GitHub Repository mit dem folgenden Befehl, um die Quelle abzurufen: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Navigieren Sie zum Verzeichnis `amazon-sagemaker-operator-for-k8s/hack/charts/hyperparameter-tuning-jobs/`. 

1. Bearbeiten Sie die `values.yaml` Datei, um den `roleArn` Parameter durch Ihren `sagemaker-execution-role` zu ersetzen. Damit der Hyperparameter-Tuning-Job erfolgreich ist, müssen Sie auch die `s3InputPath` und `s3OutputPath` in Werte ändern, die Ihrem Konto entsprechen. 

#### Erstellen Sie das HyperparameterTuningJob
<a name="create-the-hpo-job"></a>

Nachdem die Rollen und Amazon S3-Pfade durch die entsprechenden Werte in `values.yaml` ersetzt wurden, können Sie mit dem folgenden Befehl einen Hyperparameter-Tuning-Job erstellen: 

```
helm install . --generate-name
```

Ihre Ausgabe sollte wie folgt aussehen: 

```
NAME: chart-1574292948
LAST DEPLOYED: Wed Nov 20 23:35:49 2019
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thanks for installing the sagemaker-k8s-hyperparametertuningjob.
```

#### Überprüfen der Karteninstallation
<a name="verify-chart-installation"></a>

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das Helm-Diagramm erfolgreich erstellt wurde: 

```
helm ls
```

Die Ausgabe sollte folgendermaßen aussehen: 

```
NAME                    NAMESPACE       REVISION        UPDATED
chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-hyperparametertuningjob-0.1.0                               STATUS          CHART                           APP VERSION
chart-1574292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
rolebased-1574291698    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
```

`helm install` erstellt eine `HyperParameterTuningJob` Kubernetes-Ressource. Der Operator startet den eigentlichen Job zur Hyperparameter-Optimierung in SageMaker KI und aktualisiert die `HyperParameterTuningJob` Kubernetes-Ressource, um den Status des Jobs in KI widerzuspiegeln. SageMaker Es fallen Gebühren für SageMaker KI-Ressourcen an, die Sie während der Dauer Ihres Jobs nutzen. Sobald Ihr Auftrag abgeschlossen oder beendet ist, fallen für Sie keine Gebühren an. 

**Hinweis**: Mit SageMaker KI können Sie einen laufenden Hyperparameter-Tuning-Job nicht aktualisieren. Sie können keinen Parameter bearbeiten und die Konfigurationsdatei erneut anwenden. Sie müssen entweder den Metadatennamen ändern oder den vorhandenen Auftrag löschen und einen neuen erstellen. Ähnlich wie bei bestehenden Trainingsjobs, wie z. B. `TFJob` in Kubeflow, wird `update` nicht unterstützt. 

### Liste HyperparameterTuningJobs
<a name="list-hyperparameter-tuning-jobs"></a>

Verwenden Sie den folgenden Befehl, um alle Aufträge aufzulisten, die mit dem Kubernetes-Operator erstellt wurden: 

```
kubectl get hyperparametertuningjob
```

Die Ausgabe sollte folgendermaßen aussehen: 

```
NAME         STATUS      CREATION-TIME          COMPLETED   INPROGRESS   ERRORS   STOPPED   BEST-TRAINING-JOB                               SAGEMAKER-JOB-NAME
xgboost-mnist-hpo   Completed   2019-10-17T01:15:52Z   10          0            0        0         xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a123   xgboostha92f5e3cf07b11e9bf6c123
```

Ein Hyperparameter-Optimierungsjob wird weiterhin aufgeführt, nachdem der Job abgeschlossen wurde oder fehlgeschlagen ist. Sie können einen `hyperparametertuningjob` aus der Liste entfernen, indem Sie die Schritte unter [Lösche ein HyperparameterTuningJob](#delete-hyperparametertuning-jobs) befolgen. Für Aufträge, die abgeschlossen oder beendet wurden, fallen keine Gebühren für SageMaker KI-Ressourcen an.

#### Statuswerte für Hyperparameter-Tuning-Jobs
<a name="hyperparameter-tuning-job-status-values"></a>

Das `STATUS`-Feld kann einen der folgenden Werte annehmen: 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

Diese Status stammen direkt aus der offiziellen [API-Dokumentation](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus) von SageMaker AI. 

Zusätzlich zum offiziellen SageMaker KI-Status ist es möglich, auch `STATUS` zu sein`SynchronizingK8sJobWithSageMaker`. Das bedeutet, dass der Bediener den Auftrag noch nicht bearbeitet hat. 

#### Statuszähler
<a name="status-counters"></a>

Die Ausgabe hat mehrere Zähler, wie `COMPLETED` und `INPROGRESS`. Diese geben an, wie viele Ausbildungsberufe abgeschlossen wurden bzw. noch in Bearbeitung sind. Weitere Informationen darüber, wie diese ermittelt werden, finden Sie [TrainingJobStatusCounters](https://docs.aws.amazon.com/sagemaker/latest/dg/API_TrainingJobStatusCounters.html)in der SageMaker API-Dokumentation. 

#### Am besten TrainingJob
<a name="best-training-job"></a>

Diese Spalte enthält den Namen der Metrik`TrainingJob`, die die ausgewählte Metrik am besten optimiert hat. 

Führen Sie zum Anzeigen einer Zusammenfassung der eingestellten Hyperparameter den folgenden Befehl aus: 

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

Um detaillierte Informationen über `TrainingJob` zu erhalten, führen Sie aus: 

```
kubectl describe trainingjobs <job name>
```

#### Laichen TrainingJobs
<a name="spawned-training-jobs"></a>

Sie können auch alle 10 Trainingsaufträge in Kubernetes verfolgen, die von `HyperparameterTuningJob` gestartet wurden, indem Sie den folgenden Befehl ausführen: 

```
kubectl get trainingjobs
```

### Beschreibe ein HyperparameterTuningJob
<a name="describe-a-hyperparameter-tuning-job"></a>

Sie können Debugging-Details mit dem Befehl `describe` `kubectl` abrufen.

```
kubectl describe hyperparametertuningjob xgboost-mnist-hpo
```

Zusätzlich zu den Informationen über den Tuning-Job macht der SageMaker AI Operator for Kubernetes in der Ausgabe auch den [besten Trainingsjob](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-monitor.html#automatic-model-tuning-best-training-job), der vom Hyperparameter-Optimierungsjob gefunden wurde, wie folgt verfügbar: `describe` 

```
Name:         xgboost-mnist-hpo
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HyperparameterTuningJob","metadata":{"annotations":{},"name":"xgboost-mnist-hpo","namespace":...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         HyperparameterTuningJob
Metadata:
  Creation Timestamp:  2019-10-17T01:15:52Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  8167
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hyperparametertuningjobs/xgboost-mnist-hpo
  UID:               a92f5e3c-f07b-11e9-bf6c-06d6f303uidu
Spec:
  Hyper Parameter Tuning Job Config:
    Hyper Parameter Tuning Job Objective:
      Metric Name:  validation:error
      Type:         Minimize
    Parameter Ranges:
      Integer Parameter Ranges:
        Max Value:     20
        Min Value:     10
        Name:          num_round
        Scaling Type:  Linear
    Resource Limits:
      Max Number Of Training Jobs:     10
      Max Parallel Training Jobs:      10
    Strategy:                          Bayesian
    Training Job Early Stopping Type:  Off
  Hyper Parameter Tuning Job Name:     xgboostha92f5e3cf07b11e9bf6c06d6
  Region:                              us-east-2
  Training Job Definition:
    Algorithm Specification:
      Training Image:       12345678910.dkr.ecr.us-east-2.amazonaws.com/xgboost:1
      Training Input Mode:  File
    Input Data Config:
      Channel Name:  train
      Content Type:  text/csv
      Data Source:
        s3DataSource:
          s3DataDistributionType:  FullyReplicated
          s3DataType:              S3Prefix
          s3Uri:                   https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/train/
      Channel Name:                validation
      Content Type:                text/csv
      Data Source:
        s3DataSource:
          s3DataDistributionType:  FullyReplicated
          s3DataType:              S3Prefix
          s3Uri:                   https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/validation/
    Output Data Config:
      s3OutputPath:  https://s3-us-east-2.amazonaws.com/amzn-s3-demo-bucket/sagemaker/xgboost-mnist/xgboost
    Resource Config:
      Instance Count:     1
      Instance Type:      ml.m4.xlarge
      Volume Size In GB:  5
    Role Arn:             arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
    Static Hyper Parameters:
      Name:   base_score
      Value:  0.5
      Name:   booster
      Value:  gbtree
      Name:   csv_weights
      Value:  0
      Name:   dsplit
      Value:  row
      Name:   grow_policy
      Value:  depthwise
      Name:   lambda_bias
      Value:  0.0
      Name:   max_bin
      Value:  256
      Name:   max_leaves
      Value:  0
      Name:   normalize_type
      Value:  tree
      Name:   objective
      Value:  reg:linear
      Name:   one_drop
      Value:  0
      Name:   prob_buffer_row
      Value:  1.0
      Name:   process_type
      Value:  default
      Name:   rate_drop
      Value:  0.0
      Name:   refresh_leaf
      Value:  1
      Name:   sample_type
      Value:  uniform
      Name:   scale_pos_weight
      Value:  1.0
      Name:   silent
      Value:  0
      Name:   sketch_eps
      Value:  0.03
      Name:   skip_drop
      Value:  0.0
      Name:   tree_method
      Value:  auto
      Name:   tweedie_variance_power
      Value:  1.5
    Stopping Condition:
      Max Runtime In Seconds:  86400
Status:
  Best Training Job:
    Creation Time:  2019-10-17T01:16:14Z
    Final Hyper Parameter Tuning Job Objective Metric:
      Metric Name:        validation:error
      Value:
    Objective Status:     Succeeded
    Training End Time:    2019-10-17T01:20:24Z
    Training Job Arn:     arn:aws:sagemaker:us-east-2:123456789012:training-job/xgboostha92f5e3cf07b11e9bf6c06d6-009-4sample
    Training Job Name:    xgboostha92f5e3cf07b11e9bf6c06d6-009-4c7a3059
    Training Job Status:  Completed
    Training Start Time:  2019-10-17T01:18:35Z
    Tuned Hyper Parameters:
      Name:                                    num_round
      Value:                                   18
  Hyper Parameter Tuning Job Status:           Completed
  Last Check Time:                             2019-10-17T01:21:01Z
  Sage Maker Hyper Parameter Tuning Job Name:  xgboostha92f5e3cf07b11e9bf6c06d6
  Training Job Status Counters:
    Completed:            10
    In Progress:          0
    Non Retryable Error:  0
    Retryable Error:      0
    Stopped:              0
    Total Error:          0
Events:                   <none>
```

### Logs anzeigen von HyperparameterTuningJobs
<a name="view-logs-from-hyperparametertuning-jobs"></a>

Hyperparameter-Optimierungsaufträge haben keine Protokolle, aber alle von ihnen gestarteten Trainingsaufträge haben Protokolle. Auf diese Protokolle kann wie auf normale Trainingsaufgaben zugegriffen werden. Weitere Informationen finden Sie unter [Protokolle anzeigen von TrainingJobs](#view-logs-from-training-jobs).

### Lösche ein HyperparameterTuningJob
<a name="delete-hyperparametertuning-jobs"></a>

Verwenden Sie den folgenden Befehl, um einen Hyperparameter-Job in SageMaker AI zu beenden. 

```
kubectl delete hyperparametertuningjob xgboost-mnist-hpo
```

Dieser Befehl entfernt den Hyperparameter-Tuning-Job und die zugehörigen Trainingsjobs aus Ihrem Kubernetes-Cluster und stoppt sie in AI. SageMaker Für Jobs, die gestoppt oder abgeschlossen wurden, fallen keine Gebühren für KI-Ressourcen an. SageMaker SageMaker KI löscht keine Hyperparameter-Tuning-Jobs. Gestoppte Jobs werden weiterhin auf der SageMaker AI-Konsole angezeigt. 

Die Ausgabe sollte folgendermaßen aussehen: 

```
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
```

**Hinweis**: Der Befehl delete benötigt etwa 2 Minuten, um die Ressourcen aus der SageMaker KI zu bereinigen. 

## Der BatchTransformJob Betreiber
<a name="batchtransformjobs-operator"></a>

Batch-Transform-Job-Operatoren stimmen Ihre angegebenen Batch-Transform-Jobspezifikationen mit SageMaker KI ab, indem sie sie in SageMaker KI starten. In der [CreateTransformJob AI-API-Dokumentation](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html) erfahren Sie mehr über den SageMaker AI-Batch-Transformationsjob. SageMaker 

**Topics**
+ [Erstellen Sie eine BatchTransformJob mit einer YAML-Datei](#create-a-batchtransformjob-using-a-simple-yaml-file)
+ [Erstellen Sie ein Diagramm BatchTransformJob mithilfe eines Helm-Diagramms](#create-a-batchtransformjob-using-a-helm-chart)
+ [Liste BatchTransformJobs](#list-batch-transform-jobs)
+ [Beschreibe ein BatchTransformJob](#describe-a-batch-transform-job)
+ [Protokolle anzeigen von BatchTransformJobs](#view-logs-from-batch-transform-jobs)
+ [Lösche ein BatchTransformJob](#delete-a-batch-transform-job)

### Erstellen Sie eine BatchTransformJob mit einer YAML-Datei
<a name="create-a-batchtransformjob-using-a-simple-yaml-file"></a>

1. Laden Sie die YAML-Beispieldatei für den Batch-Transformationsauftrag mit dem folgenden Befehl herunter: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-batchtransform.yaml
   ```

1. Bearbeiten Sie die Datei`xgboost-mnist-batchtransform.yaml`, um die erforderlichen Parameter zu ändern und sie `inputdataconfig` durch Ihre Eingabedaten und `s3OutputPath` durch Ihre Amazon S3 S3-Buckets zu ersetzen, auf die die SageMaker AI-Ausführungsrolle Schreibzugriff hat. 

1. Wenden Sie die YAML-Datei mit folgendem Befehl an: 

   ```
   kubectl apply -f xgboost-mnist-batchtransform.yaml
   ```

### Erstellen Sie ein Diagramm BatchTransformJob mithilfe eines Helm-Diagramms
<a name="create-a-batchtransformjob-using-a-helm-chart"></a>

Sie können Helm Charts verwenden, um Batch-Transformationsauftrags auszuführen. 

#### Holen Sie sich das Helm-Installationsverzeichnis
<a name="get-the-helm-installer-directory"></a>

Klonen Sie das GitHub Repository mit dem folgenden Befehl, um die Quelle abzurufen: 

```
git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
```

#### Konfigurieren Sie das Helm-Diagramm
<a name="configure-the-helm-chart"></a>

Navigieren Sie zum Verzeichnis `amazon-sagemaker-operator-for-k8s/hack/charts/batch-transform-jobs/`. 

Bearbeiten Sie die `values.yaml` Datei, um die `inputdataconfig` durch Ihre Eingabedaten und OutputPath durch Ihre S3-Buckets zu ersetzen, auf die die SageMaker AI-Ausführungsrolle Schreibzugriff hat. 

#### Erstellen Sie ein BatchTransformJob
<a name="create-a-batch-transform-job"></a>

1. Verwenden Sie den folgenden Befehl, um einen Batch-Transformationsauftrag zu erstellen: 

   ```
   helm install . --generate-name
   ```

   Die Ausgabe sollte folgendermaßen aussehen: 

   ```
   NAME: chart-1574292948
   LAST DEPLOYED: Wed Nov 20 23:35:49 2019
   NAMESPACE: default
   STATUS: deployed
   REVISION: 1
   TEST SUITE: None
   NOTES:
   Thanks for installing the sagemaker-k8s-batch-transform-job.
   ```

1. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das Helm-Diagramm erfolgreich erstellt wurde: 

   ```
   helm ls
   NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
   chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-batchtransformjob-0.1.0
   chart-1474292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-hyperparametertuningjob-0.1.0
   chart-1574292948        default         1               2019-11-20 23:35:49.9136092 +0000 UTC   deployed        sagemaker-k8s-trainingjob-0.1.0
   rolebased-1574291698    default         1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

   Dieser Befehl erstellt eine `BatchTransformJob` Kubernetes-Ressource. Der Operator startet den eigentlichen Transformationsjob in SageMaker KI und aktualisiert die `BatchTransformJob` Kubernetes-Ressource, um den Status des Jobs in SageMaker KI widerzuspiegeln. Es fallen Gebühren für SageMaker KI-Ressourcen an, die Sie während der Dauer Ihres Jobs nutzen. Sobald Ihr Auftrag abgeschlossen oder beendet ist, fallen für Sie keine Gebühren an. 

**Hinweis**: Mit SageMaker KI können Sie einen laufenden Batch-Transformationsjob nicht aktualisieren. Sie können keinen Parameter bearbeiten und die Konfigurationsdatei erneut anwenden. Sie müssen entweder den Metadatennamen ändern oder den vorhandenen Auftrag löschen und einen neuen erstellen. Ähnlich wie bei bestehenden Trainingsjobs, wie z. B. `TFJob` in Kubeflow, wird `update` nicht unterstützt. 

### Liste BatchTransformJobs
<a name="list-batch-transform-jobs"></a>

Verwenden Sie den folgenden Befehl, um alle Aufträge aufzulisten, die mit dem Kubernetes-Operator erstellt wurden: 

```
kubectl get batchtransformjob
```

Die Ausgabe sollte folgendermaßen aussehen: 

```
NAME                                STATUS      CREATION-TIME          SAGEMAKER-JOB-NAME
xgboost-mnist-batch-transform       Completed   2019-11-18T03:44:00Z   xgboost-mnist-a88fb19809b511eaac440aa8axgboost
```

Ein Batch-Transformationsauftrag wird weiterhin aufgeführt, nachdem der Auftrag abgeschlossen wurde oder fehlgeschlagen ist. Sie können einen `hyperparametertuningjob` aus der Liste entfernen, indem Sie die folgenden [Lösche ein BatchTransformJob](#delete-a-batch-transform-job) Schritte ausführen. Für Aufträge, die abgeschlossen oder beendet wurden, fallen keine Gebühren für SageMaker KI-Ressourcen an. 

#### Statuswerte für Batch-Transformation
<a name="batch-transform-status-values"></a>

Das Feld `STATUS` kann einen der folgenden Werte annehmen: 
+ `Completed` 
+ `InProgress` 
+ `Failed` 
+ `Stopped` 
+ `Stopping` 

Diese Status stammen direkt aus der offiziellen [API-Dokumentation](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus) von SageMaker AI. 

Zusätzlich zum offiziellen SageMaker KI-Status ist es möglich, auch `STATUS` zu sein`SynchronizingK8sJobWithSageMaker`. Das bedeutet, dass der Bediener den Auftrag noch nicht bearbeitet hat.

### Beschreibe ein BatchTransformJob
<a name="describe-a-batch-transform-job"></a>

Sie können Debugging-Details mit dem Befehl `describe` `kubectl` abrufen.

```
kubectl describe batchtransformjob xgboost-mnist-batch-transform
```

Die Ausgabe sollte folgendermaßen aussehen: 

```
Name:         xgboost-mnist-batch-transform
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"BatchTransformJob","metadata":{"annotations":{},"name":"xgboost-mnist","namespace"...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         BatchTransformJob
Metadata:
  Creation Timestamp:  2019-11-18T03:44:00Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  21990924
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/batchtransformjobs/xgboost-mnist
  UID:               a88fb198-09b5-11ea-ac44-0aa8a9UIDNUM
Spec:
  Model Name:  TrainingJob-20190814SMJOb-IKEB
  Region:      us-east-1
  Transform Input:
    Content Type:  text/csv
    Data Source:
      S 3 Data Source:
        S 3 Data Type:  S3Prefix
        S 3 Uri:        s3://amzn-s3-demo-bucket/mnist_kmeans_example/input
  Transform Job Name:   xgboost-mnist-a88fb19809b511eaac440aa8a9SMJOB
  Transform Output:
    S 3 Output Path:  s3://amzn-s3-demo-bucket/mnist_kmeans_example/output
  Transform Resources:
    Instance Count:  1
    Instance Type:   ml.m4.xlarge
Status:
  Last Check Time:                2019-11-19T22:50:40Z
  Sage Maker Transform Job Name:  xgboost-mnist-a88fb19809b511eaac440aaSMJOB
  Transform Job Status:           Completed
Events:                           <none>
```

### Protokolle anzeigen von BatchTransformJobs
<a name="view-logs-from-batch-transform-jobs"></a>

Verwenden Sie den folgenden Befehl, um die Protokolle des `xgboost-mnist` Batch-Transformationsjobs anzuzeigen: 

```
kubectl smlogs batchtransformjob xgboost-mnist-batch-transform
```

### Lösche ein BatchTransformJob
<a name="delete-a-batch-transform-job"></a>

Verwenden Sie den folgenden Befehl, um einen Batch-Transformationsauftrag in SageMaker AI zu beenden. 

```
kubectl delete batchTransformJob xgboost-mnist-batch-transform
```

Die Ausgabe sollte folgendermaßen aussehen: 

```
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
```

Dieser Befehl entfernt den Batch-Transformationsjob aus Ihrem Kubernetes-Cluster und stoppt ihn auch in SageMaker AI. Für Jobs, die gestoppt oder abgeschlossen wurden, fallen keine Gebühren für SageMaker KI-Ressourcen an. Das Löschen dauert etwa 2 Minuten, um die Ressourcen aus der SageMaker KI zu bereinigen. 

**Hinweis**: SageMaker AI löscht keine Batch-Transformationsaufträge. Gestoppte Jobs werden weiterhin auf der SageMaker AI-Konsole angezeigt. 

## Der HostingDeployment Betreiber
<a name="hosting-deployment-operator"></a>

HostingDeployment Operatoren unterstützen das Erstellen und Löschen eines Endpunkts sowie das Aktualisieren eines vorhandenen Endpunkts, um daraus Rückschlüsse in Echtzeit ziehen zu können. Der Hosting-Bereitstellungs-Operator stimmt Ihre angegebene Jobspezifikation für die Hosting-Bereitstellung mit SageMaker KI ab, indem er Modelle, Endpunktkonfigurationen und Endpunkte in KI erstellt. SageMaker [Weitere Informationen zur KI-Inferenz finden Sie in der SageMaker KI-API-Dokumentation. SageMaker CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html) 

**Topics**
+ [Konfigurieren Sie eine Ressource HostingDeployment](#configure-a-hostingdeployment-resource)
+ [Erstellen Sie eine HostingDeployment](#create-a-hostingdeployment)
+ [Liste HostingDeployments](#list-hostingdeployments)
+ [Beschreiben Sie ein HostingDeployment](#describe-a-hostingdeployment)
+ [Aufrufen des Endpunkts](#invoking-the-endpoint)
+ [Aktualisieren HostingDeployment](#update-hostingdeployment)
+ [Löschen Sie die HostingDeployment](#delete-the-hostingdeployment)

### Konfigurieren Sie eine Ressource HostingDeployment
<a name="configure-a-hostingdeployment-resource"></a>

Laden Sie die YAML-Beispieldatei für den Hosting-Bereitstellungsauftrags mit dem folgenden Befehl herunter: 

```
wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/xgboost-mnist-hostingdeployment.yaml
```

Die `xgboost-mnist-hostingdeployment.yaml` Datei enthält die folgenden Komponenten, die nach Bedarf bearbeitet werden können: 
+ *ProductionVariants*. Eine Produktionsvariante ist eine Reihe von Instanzen, die ein einzelnes Modell bedienen. SageMaker KI verteilt die Lasten zwischen allen Produktionsvarianten anhand festgelegter Gewichte. 
+ *Modelle*. Ein Modell ist der ARN für Container und Ausführungsrollen, die für die Bereitstellung eines Modells erforderlich sind. Es erfordert mindestens einen einzelnen Container. 
+ *Container*. Ein Container spezifiziert den Datensatz und das Serving-Image. Wenn Sie Ihren eigenen benutzerdefinierten Algorithmus anstelle eines von SageMaker KI bereitgestellten Algorithmus verwenden, muss der Inferenzcode die SageMaker KI-Anforderungen erfüllen. Weitere Informationen finden Sie unter [Verwenden eigener Algorithmen mit SageMaker KI](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html). 

### Erstellen Sie eine HostingDeployment
<a name="create-a-hostingdeployment"></a>

Um eine zu erstellen HostingDeployment, verwenden Sie, `kubectl` um die Datei `hosting.yaml` mit dem folgenden Befehl anzuwenden: 

```
kubectl apply -f hosting.yaml
```

SageMaker AI erstellt einen Endpunkt mit der angegebenen Konfiguration. Es fallen Gebühren für SageMaker KI-Ressourcen an, die während der Lebensdauer Ihres Endgeräts genutzt werden. Sobald Ihr Endpunkt gelöscht wurde, fallen für Sie keine Gebühren an. 

Der Erstellungsprozess dauert etwa 10 Minuten. 

### Liste HostingDeployments
<a name="list-hostingdeployments"></a>

Verwenden Sie den folgenden Befehl, um zu überprüfen, ob die erstellt HostingDeployment wurde: 

```
kubectl get hostingdeployments
```

Die Ausgabe sollte folgendermaßen aussehen: 

```
NAME           STATUS     SAGEMAKER-ENDPOINT-NAME
host-xgboost   Creating   host-xgboost-def0e83e0d5f11eaaa450aSMLOGS
```

#### HostingDeployment Statuswerte
<a name="hostingdeployment-status-values"></a>

Das Statusfeld kann einer von mehreren Werten sein: 
+ `SynchronizingK8sJobWithSageMaker`: Der Operator bereitet die Erstellung des Endpunkts vor. 
+ `ReconcilingEndpoint`: Der Operator erstellt, aktualisiert oder löscht Endpunktressourcen. HostingDeployment Bleibt der in diesem Zustand, sehen `kubectl describe` Sie hier den Grund im `Additional` Feld. 
+ `OutOfService`: Der Endpunkt ist nicht verfügbar, um eingehende Anfragen entgegenzunehmen. 
+ `Creating`: [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html)läuft. 
+ `Updating`: [UpdateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpoint.html)oder [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)läuft. 
+ `SystemUpdating`: Der Endpunkt wird gerade gewartet und kann erst aktualisiert, gelöscht oder neu skaliert werden, wenn der Vorgang abgeschlossen ist. Durch diesen Wartungsvorgang werden keine vom Kunden angegebenen Werte wie VPC-Konfiguration, AWS KMS Verschlüsselung, Modell, Instance-Typ oder Instance-Anzahl geändert. 
+ `RollingBack`: Der Endpunkt kann weder nach oben noch nach unten skaliert oder seine Variantenstärke geändert werden und ist gerade dabei, zur vorherigen Konfiguration zurückzukehren. Sobald das Rollback abgeschlossen ist, kehrt der Endpunkt in einen `InService` Status zurück. Dieser Übergangsstatus gilt nur für einen Endpunkt, für den Autoscaling aktiviert ist und bei dem im Rahmen eines [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)Aufrufs oder wenn der [UpdateEndpointWeightsAndCapacities](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html)Vorgang explizit aufgerufen wird, unterschiedliche Gewichts- oder Kapazitätsänderungen vorgenommen werden. 
+ `InService`: Der Endpunkt ist für die Verarbeitung eingehender Anfragen verfügbar. 
+ `Deleting`: [DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html)läuft. 
+ `Failed`: Der Endpunkt konnte nicht erstellt, aktualisiert oder neu skaliert werden. Verwenden Sie [DescribeEndpoint: FailureReason](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html#SageMaker-DescribeEndpoint-response-FailureReason) für Informationen über den Fehler. [DeleteEndpoint](https://docs.aws.amazon.com/sagemaker/latest/dg/API_DeleteEndpoint.html)ist der einzige Vorgang, der an einem ausgefallenen Endpunkt ausgeführt werden kann. 

### Beschreiben Sie ein HostingDeployment
<a name="describe-a-hostingdeployment"></a>

Sie können Debugging-Details mit dem Befehl `describe` `kubectl` abrufen.

```
kubectl describe hostingdeployment
```

Die Ausgabe sollte folgendermaßen aussehen: 

```
Name:         host-xgboost
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"HostingDeployment","metadata":{"annotations":{},"name":"host-xgboost","namespace":"def..."
API Version:  sagemaker.aws.amazon.com/v1
Kind:         HostingDeployment
Metadata:
  Creation Timestamp:  2019-11-22T19:40:00Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        1
  Resource Version:  4258134
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/hostingdeployments/host-xgboost
  UID:               def0e83e-0d5f-11ea-aa45-0a3507uiduid
Spec:
  Containers:
    Container Hostname:  xgboost
    Image:               123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
    Model Data URL:      s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz
  Models:
    Containers:
      xgboost
    Execution Role Arn:  arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
    Name:                xgboost-model
    Primary Container:   xgboost
  Production Variants:
    Initial Instance Count:  1
    Instance Type:           ml.c5.large
    Model Name:              xgboost-model
    Variant Name:            all-traffic
  Region:                    us-east-2
Status:
  Creation Time:         2019-11-22T19:40:04Z
  Endpoint Arn:          arn:aws:sagemaker:us-east-2:123456789012:endpoint/host-xgboost-def0e83e0d5f11eaaaexample
  Endpoint Config Name:  host-xgboost-1-def0e83e0d5f11e-e08f6c510d5f11eaaa450aexample
  Endpoint Name:         host-xgboost-def0e83e0d5f11eaaa450a350733ba06
  Endpoint Status:       Creating
  Endpoint URL:          https://runtime.sagemaker.us-east-2.amazonaws.com/endpoints/host-xgboost-def0e83e0d5f11eaaaexample/invocations
  Last Check Time:       2019-11-22T19:43:57Z
  Last Modified Time:    2019-11-22T19:40:04Z
  Model Names:
    Name:   xgboost-model
    Value:  xgboost-model-1-def0e83e0d5f11-df5cc9fd0d5f11eaaa450aexample
Events:     <none>
```

Das Statusfeld enthält weitere Informationen mithilfe der folgenden Felder: 
+ `Additional`: Zusätzliche Informationen über den Status des Hosting-Einsatzes. Dieses Feld ist optional und wird nur im Falle eines Fehlers ausgefüllt. 
+ `Creation Time`: Als der Endpunkt in SageMaker KI erstellt wurde. 
+ `Endpoint ARN`: Der SageMaker KI-Endpunkt ARN. 
+ `Endpoint Config Name`: Der SageMaker AI-Name der Endpunktkonfiguration. 
+ `Endpoint Name`: Der SageMaker AI-Name des Endpunkts. 
+ `Endpoint Status`: Der Status des Endpunkts. 
+ `Endpoint URL`: Die HTTPS-URL, die für den Zugriff auf den Endpunkt verwendet werden kann. Weitere Informationen finden Sie unter [Bereitstellen eines Modells auf SageMaker KI-Hostingdiensten](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html). 
+ `FailureReason`: Wenn ein Befehl zum Erstellen, Aktualisieren oder Löschen fehlschlägt, wird die Ursache hier angezeigt. 
+ `Last Check Time`: Das letzte Mal, dass der Operator den Status des Endpunkts überprüft hat. 
+ `Last Modified Time`: Das letzte Mal wurde der Endpunkt geändert. 
+ `Model Names`: Ein Schlüssel-Wert-Paar von HostingDeployment Modellnamen zu SageMaker KI-Modellnamen. 

### Aufrufen des Endpunkts
<a name="invoking-the-endpoint"></a>

Sobald der Endpunktstatus lautet`InService`, können Sie den Endpunkt auf zwei Arten aufrufen: mit der AWS CLI, die Authentifizierung und URL-Anforderungssignierung durchführt, oder mit einem HTTP-Client wie cURL. Wenn Sie Ihren eigenen Client verwenden, müssen Sie die AWS v4-URL-Signatur und -Authentifizierung selbst durchführen. 

Führen Sie den folgenden Befehl aus, um den Endpunkt mit der AWS CLI aufzurufen. Achten Sie darauf, die Region und den Endpunktnamen durch den Regions- und SageMaker AI-Endpunktnamen Ihres Endpunkts zu ersetzen. Diese Informationen können der Ausgabe von `kubectl describe` entnommen werden. 

```
# Invoke the endpoint with mock input data.
aws sagemaker-runtime invoke-endpoint \
  --region us-east-2 \
  --endpoint-name <endpoint name> \
  --body $(seq 784 | xargs echo | sed 's/ /,/g') \
  >(cat) \
  --content-type text/csv > /dev/null
```

Wenn Ihre Region beispielsweise lautet `us-east-2` und Ihr Endpunkt-Konfigurationsname lautet `host-xgboost-f56b6b280d7511ea824b129926example`, würde der folgende Befehl den Endpunkt aufrufen: 

```
aws sagemaker-runtime invoke-endpoint \
  --region us-east-2 \
  --endpoint-name host-xgboost-f56b6b280d7511ea824b1299example \
  --body $(seq 784 | xargs echo | sed 's/ /,/g') \
  >(cat) \
  --content-type text/csv > /dev/null
4.95847082138
```

Hier ist `4.95847082138` die Vorhersage aus dem Modell für die Scheindaten. 

### Aktualisieren HostingDeployment
<a name="update-hostingdeployment"></a>

1. Sobald a den Status HostingDeployment hat`InService`, kann es aktualisiert werden. Es kann etwa 10 Minuten dauern HostingDeployment , bis es in Betrieb ist. Um zu überprüfen, ob der Status `InService` ist, verwenden Sie den folgenden Befehl: 

   ```
   kubectl get hostingdeployments
   ```

1. Der HostingDeployment kann aktualisiert werden, bevor der Status lautet`InService`. Der Operator wartet, bis der SageMaker KI-Endpunkt erreicht ist, `InService` bevor er das Update anwendet. 

   Um ein Update anzuwenden, ändern Sie die `hosting.yaml`-Datei. Ändern Sie das `initialInstanceCount` Feld beispielsweise wie folgt von 1 auf 2: 

   ```
   apiVersion: sagemaker.aws.amazon.com/v1
   kind: HostingDeployment
   metadata:
     name: host-xgboost
   spec:
       region: us-east-2
       productionVariants:
           - variantName: all-traffic
             modelName: xgboost-model
             initialInstanceCount: 2
             instanceType: ml.c5.large
       models:
           - name: xgboost-model
             executionRoleArn: arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole
             primaryContainer: xgboost
             containers:
               - xgboost
       containers:
           - containerHostname: xgboost
             modelDataUrl: s3://amzn-s3-demo-bucket/inference/xgboost-mnist/model.tar.gz
             image: 123456789012.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest
   ```

1. Speichern Sie die Datei und verwenden Sie `kubectl` sie dann, um Ihr Update wie folgt anzuwenden. Der Status sollte sich von `InService` zu `ReconcilingEndpoint` und dann zu `Updating` ändern. 

   ```
   $ kubectl apply -f hosting.yaml
   hostingdeployment.sagemaker.aws.amazon.com/host-xgboost configured
   
   $ kubectl get hostingdeployments
   NAME           STATUS                SAGEMAKER-ENDPOINT-NAME
   host-xgboost   ReconcilingEndpoint   host-xgboost-def0e83e0d5f11eaaa450a350abcdef
   
   $ kubectl get hostingdeployments
   NAME           STATUS     SAGEMAKER-ENDPOINT-NAME
   host-xgboost   Updating   host-xgboost-def0e83e0d5f11eaaa450a3507abcdef
   ```

SageMaker KI stellt eine neue Gruppe von Instanzen mit Ihren Modellen bereit, leitet den Datenverkehr auf die neuen Instanzen um und entleert die alten Instanzen. Sobald dieser Prozess beginnt, wird der Status `Updating`. Nachdem das Update abgeschlossen ist, wird Ihr Endpunkt `InService`. Dieser Vorgang dauert ca. 10 Minuten. 

### Löschen Sie die HostingDeployment
<a name="delete-the-hostingdeployment"></a>

1. Verwenden Sie`kubectl`, um eine HostingDeployment mit dem folgenden Befehl zu löschen: 

   ```
   kubectl delete hostingdeployments host-xgboost
   ```

   Die Ausgabe sollte folgendermaßen aussehen: 

   ```
   hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
   ```

1. Verwenden Sie den folgenden Befehl, um zu überprüfen, ob die Hosting-Bereitstellung gelöscht wurde: 

   ```
   kubectl get hostingdeployments
   No resources found.
   ```

Für gelöschte Endpunkte fallen keine Gebühren für SageMaker KI-Ressourcen an. 

## Der Betreiber ProcessingJob
<a name="kubernetes-processing-job-operator"></a>

ProcessingJob Operatoren werden verwendet, um SageMaker Amazon-Verarbeitungsaufträge zu starten. Weitere Informationen zur SageMaker Verarbeitung von Aufträgen finden Sie unter [CreateProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html). 

**Topics**
+ [Erstellen Sie eine ProcessingJob mit einer YAML-Datei](#kubernetes-processing-job-yaml)
+ [Liste ProcessingJobs](#kubernetes-processing-job-list)
+ [Beschreiben Sie ein ProcessingJob](#kubernetes-processing-job-description)
+ [Lösche ein ProcessingJob](#kubernetes-processing-job-delete)

### Erstellen Sie eine ProcessingJob mit einer YAML-Datei
<a name="kubernetes-processing-job-yaml"></a>

Gehen Sie wie folgt vor, um mithilfe einer YAML-Datei einen SageMaker Amazon-Verarbeitungsauftrag zu erstellen:

1. Laden Sie das Vorverarbeitungsskript `kmeans_preprocessing.py` herunter.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans_preprocessing.py
   ```

1. Erstellen Sie in einem Ihrer Amazon Simple Storage Service (Amazon S3) -Buckets einen `mnist_kmeans_example/processing_code` Ordner und laden Sie das Skript in den Ordner hoch.

1. Laden Sie die Datei `kmeans-mnist-processingjob.yaml` herunter.

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/kmeans-mnist-processingjob.yaml
   ```

1. Bearbeiten Sie die YAML-Datei, um Ihren `sagemaker-execution-role` zu spezifizieren, und ersetzen Sie alle Instances von `amzn-s3-demo-bucket` durch Ihren S3-Bucket.

   ```
   ...
   metadata:
     name: kmeans-mnist-processing
   ...
     roleArn: arn:aws:iam::<acct-id>:role/service-role/<sagemaker-execution-role>
     ...
     processingOutputConfig:
       outputs:
         ...
             s3Output:
               s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/output/
     ...
     processingInputs:
       ...
           s3Input:
             s3Uri: s3://<amzn-s3-demo-bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
   ```

   Sie `sagemaker-execution-role` müssen über Berechtigungen verfügen, damit SageMaker KI in Ihrem Namen auf Ihren S3-Bucket CloudWatch, Amazon und andere Dienste zugreifen kann. Weitere Informationen zum Erstellen einer Ausführungsrolle finden Sie unter [SageMaker KI-Rollen](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html#sagemaker-roles-createtrainingjob-perms).

1. Wenden Sie die YAML-Datei mit einem der folgenden Befehle an.

   Für eine Installation im Clusterbereich:

   ```
   kubectl apply -f kmeans-mnist-processingjob.yaml
   ```

   Für eine Installation im Namespace-Bereich:

   ```
   kubectl apply -f kmeans-mnist-processingjob.yaml -n <NAMESPACE>
   ```

### Liste ProcessingJobs
<a name="kubernetes-processing-job-list"></a>

Verwenden Sie einen der folgenden Befehle, um alle Jobs aufzulisten, die mit dem ProcessingJob Operator erstellt wurden. `SAGEMAKER-JOB-NAME `stammt aus dem `metadata` Abschnitt der YAML-Datei.

Für eine Installation im Clusterbereich:

```
kubectl get ProcessingJob kmeans-mnist-processing
```

Für eine Installation im Namespace-Bereich:

```
kubectl get ProcessingJob -n <NAMESPACE> kmeans-mnist-processing
```

Ihre Ausgabe sollte wie folgt aussehen:

```
NAME                    STATUS     CREATION-TIME        SAGEMAKER-JOB-NAME
kmeans-mnist-processing InProgress 2020-09-22T21:13:25Z kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385
```

In der Ausgabe werden alle Aufträge unabhängig von ihrem Status aufgeführt. Informationen zum Entfernen eines Auftrags aus der Liste finden Sie unter [Löschen eines Verarbeitungsauftrags](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-processing-job-operator.html#kubernetes-processing-job-delete).

**ProcessingJob Status**
+ `SynchronizingK8sJobWithSageMaker`– Der Auftrag wird zuerst an den Cluster übermittelt. Der Operator hat die Anforderung erhalten und bereitet die Erstellung des Verarbeitungsauftrags vor.
+ `Reconciling`– Der Operator initialisiert oder behebt vorübergehende Fehler und andere Fehler. Bleibt der Verarbeitungsauftrag in diesem Status, verwenden Sie den `kubectl` `describe` Befehl, um den Grund im Feld `Additional` zu ermitteln.
+ `InProgress | Completed | Failed | Stopping | Stopped`— Status des SageMaker Verarbeitungsauftrags. Weitere Informationen finden Sie unter [DescribeProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html#sagemaker-DescribeProcessingJob-response-ProcessingJobStatus).
+ `Error`– Der Operator kann die Wiederherstellung nicht durch einen Abgleich durchführen.

Für Aufträge, die abgeschlossen, gestoppt oder fehlgeschlagen sind, fallen keine weiteren Gebühren für SageMaker KI-Ressourcen an.

### Beschreiben Sie ein ProcessingJob
<a name="kubernetes-processing-job-description"></a>

Verwenden Sie einen der folgenden Befehle, um weitere Informationen zu einem Verarbeitungsauftrag zu erhalten. Diese Befehle werden normalerweise zum Debuggen eines Problems oder zum Überprüfen der Parameter eines Verarbeitungsauftrags verwendet.

Für eine Installation im Clusterbereich:

```
kubectl describe processingjob kmeans-mnist-processing
```

Für eine Installation im Namespace-Bereich:

```
kubectl describe processingjob kmeans-mnist-processing -n <NAMESPACE>
```

Die Ausgabe Ihres Verarbeitungsauftrags sollte in etwa so aussehen wie die folgende.

```
$ kubectl describe ProcessingJob kmeans-mnist-processing
Name:         kmeans-mnist-processing
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"sagemaker.aws.amazon.com/v1","kind":"ProcessingJob","metadata":{"annotations":{},"name":"kmeans-mnist-processing",...
API Version:  sagemaker.aws.amazon.com/v1
Kind:         ProcessingJob
Metadata:
  Creation Timestamp:  2020-09-22T21:13:25Z
  Finalizers:
    sagemaker-operator-finalizer
  Generation:        2
  Resource Version:  21746658
  Self Link:         /apis/sagemaker.aws.amazon.com/v1/namespaces/default/processingjobs/kmeans-mnist-processing
  UID:               7410ed52-fd18-11ea-b19a-165ae9f9e385
Spec:
  App Specification:
    Container Entrypoint:
      python
      /opt/ml/processing/code/kmeans_preprocessing.py
    Image Uri:  763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:1.5.0-cpu-py36-ubuntu16.04
  Environment:
    Name:   MYVAR
    Value:  my_value
    Name:   MYVAR2
    Value:  my_value2
  Network Config:
  Processing Inputs:
    Input Name:  mnist_tar
    s3Input:
      Local Path:   /opt/ml/processing/input
      s3DataType:   S3Prefix
      s3InputMode:  File
      s3Uri:        s3://<s3bucket>-us-west-2/algorithms/kmeans/mnist/mnist.pkl.gz
    Input Name:     source_code
    s3Input:
      Local Path:   /opt/ml/processing/code
      s3DataType:   S3Prefix
      s3InputMode:  File
      s3Uri:        s3://<s3bucket>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
  Processing Output Config:
    Outputs:
      Output Name:  train_data
      s3Output:
        Local Path:    /opt/ml/processing/output_train/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
      Output Name:     test_data
      s3Output:
        Local Path:    /opt/ml/processing/output_test/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
      Output Name:     valid_data
      s3Output:
        Local Path:    /opt/ml/processing/output_valid/
        s3UploadMode:  EndOfJob
        s3Uri:         s3://<s3bucket>/mnist_kmeans_example/output/
  Processing Resources:
    Cluster Config:
      Instance Count:     1
      Instance Type:      ml.m5.xlarge
      Volume Size In GB:  20
  Region:                 us-west-2
  Role Arn:               arn:aws:iam::<acct-id>:role/m-sagemaker-role
  Stopping Condition:
    Max Runtime In Seconds:  1800
  Tags:
    Key:    tagKey
    Value:  tagValue
Status:
  Cloud Watch Log URL:             https://us-west-2.console.aws.amazon.com/cloudwatch/home?region=us-west-2#logStream:group=/aws/sagemaker/ProcessingJobs;prefix=kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385;streamFilter=typeLogStreamPrefix
  Last Check Time:                 2020-09-22T21:14:29Z
  Processing Job Status:           InProgress
  Sage Maker Processing Job Name:  kmeans-mnist-processing-7410ed52fd1811eab19a165ae9f9e385
Events:                            <none>
```

### Lösche ein ProcessingJob
<a name="kubernetes-processing-job-delete"></a>

Wenn Sie einen Verarbeitungsjob löschen, wird der SageMaker Verarbeitungsjob aus Kubernetes entfernt, der Job wird jedoch nicht aus SageMaker AI gelöscht. Wenn der Jobstatus in SageMaker AI lautet, ist `InProgress` der Job gestoppt. Für die Verarbeitung von Jobs, die gestoppt wurden, fallen keine Gebühren für SageMaker KI-Ressourcen an. Verwenden Sie einen der folgenden Befehle, um einen Verarbeitungsauftrag zu löschen. 

Für eine Installation im Clusterbereich:

```
kubectl delete processingjob kmeans-mnist-processing
```

Für eine Installation im Namespace-Bereich:

```
kubectl delete processingjob kmeans-mnist-processing -n <NAMESPACE>
```

Die Ausgabe Ihres Verarbeitungsauftrags sollte in etwa so aussehen wie die folgende.

```
processingjob.sagemaker.aws.amazon.com "kmeans-mnist-processing" deleted
```



**Anmerkung**  
SageMaker AI löscht den Verarbeitungsjob nicht. Gestoppte Jobs werden weiterhin in der SageMaker AI-Konsole angezeigt. Der `delete` Befehl benötigt einige Minuten, um die Ressourcen aus der SageMaker KI zu bereinigen.

## HostingAutoscalingPolicy (HAP) Betreiber
<a name="kubernetes-hap-operator"></a>

Der Operator HostingAutoscalingPolicy (HAP) verwendet eine Liste von Ressourcen IDs als Eingabe und wendet auf jede von ihnen dieselbe Richtlinie an. Jede Ressourcen-ID ist eine Kombination aus einem Endpunktnamen und einem Variantennamen. Der HAP-Operator führt zwei Schritte aus: Er registriert die Ressource IDs und wendet dann die Skalierungsrichtlinie auf jede Ressourcen-ID an. `Delete`macht beide Aktionen rückgängig. [Sie können das HAP auf einen vorhandenen SageMaker KI-Endpunkt anwenden oder mithilfe des Operators einen neuen SageMaker KI-Endpunkt erstellen. HostingDeployment ](https://docs.aws.amazon.com/sagemaker/latest/dg/hosting-deployment-operator.html#create-a-hostingdeployment) Weitere Informationen zur automatischen Skalierung von SageMaker KI finden Sie in der Dokumentation zur Richtlinie zur [automatischen Skalierung von Anwendungen](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html).

**Anmerkung**  
In Ihren `kubectl` Befehlen können Sie anstelle von `hostingautoscalingpolicy` die Kurzform, `hap`, verwenden.

**Topics**
+ [Erstellen Sie eine HostingAutoscalingPolicy mithilfe einer YAML-Datei](#kubernetes-hap-job-yaml)
+ [Liste HostingAutoscalingPolicies](#kubernetes-hap-list)
+ [Beschreiben Sie ein HostingAutoscalingPolicy](#kubernetes-hap-describe)
+ [Aktualisieren Sie ein HostingAutoscalingPolicy](#kubernetes-hap-update)
+ [Lösche ein HostingAutoscalingPolicy](#kubernetes-hap-delete)
+ [Aktualisieren oder löschen Sie einen Endpunkt mit einem HostingAutoscalingPolicy](#kubernetes-hap-update-delete-endpoint)

### Erstellen Sie eine HostingAutoscalingPolicy mithilfe einer YAML-Datei
<a name="kubernetes-hap-job-yaml"></a>

Verwenden Sie eine YAML-Datei, um eine HostingAutoscalingPolicy (HAP) zu erstellen, die eine vordefinierte oder benutzerdefinierte Metrik auf einen oder mehrere SageMaker KI-Endpunkte anwendet.

Amazon SageMaker AI benötigt bestimmte Werte, um Autoscaling auf Ihre Variante anzuwenden. Wenn diese Werte in der YAML-Spezifikation nicht angegeben sind, wendet der HAP-Operator die folgenden Standardwerte an.

```
# Do not change
Namespace                    = "sagemaker"
# Do not change
ScalableDimension            = "sagemaker:variant:DesiredInstanceCount"
# Only one supported
PolicyType                   = "TargetTrackingScaling"
# This is the default policy name but can be changed to apply a custom policy
DefaultAutoscalingPolicyName = "SageMakerEndpointInvocationScalingPolicy"
```

Verwenden Sie die folgenden Beispiele, um ein HAP zu erstellen, das eine vordefinierte oder benutzerdefinierte Metrik auf einen oder mehrere Endpunkte anwendet.

#### Beispiel 1: Wenden Sie eine vordefinierte Metrik auf eine einzelne Endpunktvariante an
<a name="kubernetes-hap-predefined-metric"></a>

1. Laden Sie die YAML-Beispieldatei für eine vordefinierte Metrik mit dem folgenden Befehl herunter:

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. Bearbeiten Sie die YAML-Datei, um Ihr `endpointName`, `variantName`, und `Region` anzugeben.

1. Verwenden Sie einen der folgenden Befehle, um eine vordefinierte Metrik auf eine einzelne Ressourcen-ID (Kombination aus Endpunktname und Variantenname) anzuwenden.

   Für eine Installation im Clusterbereich:

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

   Für eine Installation im Namespace-Bereich:

   ```
   kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>
   ```

#### Beispiel 2: Wenden Sie eine benutzerdefinierte Metrik auf eine einzelne Endpunktvariante an
<a name="kubernetes-hap-custom-metric"></a>

1. Laden Sie die YAML-Beispieldatei für eine benutzerdefinierte Metrik mit dem folgenden Befehl herunter:

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-custom-metric.yaml
   ```

1. Bearbeiten Sie die YAML-Datei, um Ihr `endpointName`, `variantName`, und `Region` anzugeben.

1. Verwenden Sie einen der folgenden Befehle, um anstelle der empfohlenen `SageMakerVariantInvocationsPerInstance` eine benutzerdefinierte Metrik auf eine einzelne Ressourcen-ID (Kombination aus Endpunktname und Variantenname) anzuwenden.
**Anmerkung**  
Amazon SageMaker AI überprüft nicht die Gültigkeit Ihrer YAML-Spezifikation.

   Für eine Installation im Clusterbereich:

   ```
   kubectl apply -f hap-custom-metric.yaml
   ```

   Für eine Installation im Namespace-Bereich:

   ```
   kubectl apply -f hap-custom-metric.yaml -n <NAMESPACE>
   ```

#### Beispiel 3: Wenden Sie eine Skalierungsrichtlinie auf mehrere Endpunkte und Varianten an
<a name="kubernetes-hap-scaling-policy"></a>

Sie können den HAP-Operator verwenden, um dieselbe Skalierungsrichtlinie auf mehrere Ressourcen anzuwenden. IDs Für jede Ressourcen-ID (Kombination aus Endpunktname und Variantenname) wird eine separate `scaling_policy` Anfrage erstellt.

1. Laden Sie die YAML-Beispieldatei für eine vordefinierte Metrik mit dem folgenden Befehl herunter:

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/samples/hap-predefined-metric.yaml
   ```

1. Bearbeiten Sie die YAML-Datei, um Ihr `Region` und mehrere `endpointName` und `variantName`-Werte anzugeben.

1. Verwenden Sie einen der folgenden Befehle, um eine vordefinierte Metrik auf mehrere Ressourcen anzuwenden IDs (Kombinationen aus Endpunktname und Variantenname).

   Für eine Installation im Clusterbereich:

   ```
   kubectl apply -f hap-predefined-metric.yaml
   ```

   Für eine Installation im Namespace-Bereich:

   ```
   kubectl apply -f hap-predefined-metric.yaml -n <NAMESPACE>
   ```

#### Überlegungen HostingAutoscalingPolicies für mehrere Endpunkte und Varianten
<a name="kubernetes-hap-scaling-considerations"></a>

Die folgenden Überlegungen gelten, wenn Sie mehrere Ressourcen IDs verwenden:
+ Wenn Sie eine einzelne Richtlinie auf mehrere Ressourcen anwenden IDs, wird ein PolicyArn pro Ressourcen-ID erstellt. Fünf Endpunkte haben fünf Richtlinien. ARNs Wenn Sie den `describe` Befehl für die Richtlinie ausführen, werden die Antworten als ein Auftrag angezeigt und enthalten einen einzelnen Auftragsstatus.
+ Wenn Sie eine benutzerdefinierte Metrik auf mehrere Ressourcen anwenden IDs, wird dieselbe Dimension oder derselbe Wert für alle Ressourcen-ID-Werte (Variante) verwendet. Wenn Sie beispielsweise eine Kundenmetrik für die Instances 1-5 anwenden und die Dimension der Endpunktvariante der Variante 1 zugeordnet wird, werden alle Endpunkte nach oben oder unten skaliert, wenn Variante 1 die Metriken überschreitet.
+ Der HAP-Operator unterstützt die Aktualisierung der IDs Ressourcenliste. Wenn Sie eine Ressource IDs zur Spezifikation ändern, hinzufügen oder löschen, wird die Autoscaling-Richtlinie aus der vorherigen Variantenliste entfernt und auf die neu angegebenen Ressourcen-ID-Kombinationen angewendet. Verwenden Sie den [https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe](https://docs.aws.amazon.com/sagemaker/latest/dg/kubernetes-hap-operator.html#kubernetes-hap-describe)Befehl, um die Ressource aufzulisten IDs , auf die die Richtlinie derzeit angewendet wird.

### Liste HostingAutoscalingPolicies
<a name="kubernetes-hap-list"></a>

Verwenden Sie einen der folgenden Befehle, um alle HostingAutoscalingPolicies (HAPs) aufzulisten, die mit dem HAP-Operator erstellt wurden.

Für eine Installation im Clusterbereich:

```
kubectl get hap
```

Für eine Installation im Namespace-Bereich:

```
kubectl get hap -n <NAMESPACE>
```

Ihre Ausgabe sollte wie folgt aussehen:

```
NAME             STATUS   CREATION-TIME
hap-predefined   Created  2021-07-13T21:32:21Z
```

Verwenden Sie den folgenden Befehl, um den Status Ihres HostingAutoscalingPolicy (HAP) zu überprüfen.

```
kubectl get hap <job-name>
```

Es wird einer der folgenden Werte zurückgegeben:
+ `Reconciling` – Bei bestimmten Fehlertypen wird der Status als `Reconciling` statt als `Error` angezeigt. Einige Beispiele sind serverseitige Fehler und Endpunkte im Status `Creating` oder `Updating`. Prüfen Sie das Feld `Additional` in den Status- oder Bedienerprotokollen für weitere Einzelheiten.
+ `Created`
+ `Error`

**Um den Autoscaling-Endpunkt anzuzeigen, auf den Sie die Richtlinie angewendet haben**

1. Öffnen Sie die Amazon SageMaker AI-Konsole unter [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Erweitern Sie im linken Seitenbereich die Option **Inferenz**.

1. Wählen Sie **Endpunkte** aus.

1. Wählen Sie den Namen des interessierenden Endpunkts aus.

1. Blättern Sie zum Abschnitt **Endpunkt-Laufzeiteinstellungen**.

### Beschreiben Sie ein HostingAutoscalingPolicy
<a name="kubernetes-hap-describe"></a>

Verwenden Sie den folgenden Befehl, um weitere Informationen zu a HostingAutoscalingPolicy (HAP) zu erhalten. Diese Befehle werden normalerweise zum Debuggen eines Problems oder zum Überprüfen der Ressource IDs (Kombinationen aus Endpunktname und Variantennamen) eines HAP verwendet.

```
kubectl describe hap <job-name>
```

### Aktualisieren Sie ein HostingAutoscalingPolicy
<a name="kubernetes-hap-update"></a>

Der Operator HostingAutoscalingPolicy (HAP) unterstützt Updates. Sie können Ihre YAML-Spezifikation bearbeiten, um die Werte zu ändern, und dann die Richtlinie erneut anwenden. Der HAP-Operator löscht die bestehende Richtlinie und wendet die neue Richtlinie an.

### Lösche ein HostingAutoscalingPolicy
<a name="kubernetes-hap-delete"></a>

Verwenden Sie einen der folgenden Befehle, um eine HostingAutoscalingPolicy (HAP-) Richtlinie zu löschen.

Für eine Installation im Clusterbereich:

```
kubectl delete hap hap-predefined
```

Für eine Installation im Namespace-Bereich:

```
kubectl delete hap hap-predefined -n <NAMESPACE>
```

Dieser Befehl löscht die Skalierungsrichtlinie und hebt die Registrierung des Skalierungsziels bei Kubernetes auf. Dieser Befehl liefert die folgende Ausgabe:

```
hostingautoscalingpolicies.sagemaker.aws.amazon.com "hap-predefined" deleted
```

### Aktualisieren oder löschen Sie einen Endpunkt mit einem HostingAutoscalingPolicy
<a name="kubernetes-hap-update-delete-endpoint"></a>

Um einen Endpunkt mit einem HostingAutoscalingPolicy (HAP) zu aktualisieren, verwenden Sie den `kubectl` `delete` Befehl, um das HAP zu entfernen, den Endpunkt zu aktualisieren und das HAP dann erneut anzuwenden.

Um einen Endpunkt zu löschen, der über ein HAP verfügt, verwenden Sie den `kubectl` `delete` Befehl, um das HAP zu entfernen, bevor Sie den Endpunkt löschen.

# Migrieren Sie Ressourcen zu den neuesten Operatoren
<a name="kubernetes-sagemaker-operators-migrate"></a>

Wir stellen die Entwicklung und den technischen Support der Originalversion von [ SageMaker Operators](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) for Kubernetes ein.

Wenn Sie derzeit die Version `v1.2.2` oder eine niedrigere Version von [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) verwenden, empfehlen wir, Ihre Ressourcen auf den [ACK Service Controller](https://github.com/aws-controllers-k8s/sagemaker-controller) für Amazon zu migrieren. SageMaker Der ACK Service Controller ist eine neue Generation von SageMaker Operatoren für Kubernetes, die auf [AWS Controllers for](https://aws-controllers-k8s.github.io/community/) Kubernetes (ACK) basieren.

Antworten auf häufig gestellte Fragen zum Ende der Unterstützung für die Originalversion von SageMaker Operators for Kubernetes finden Sie unter [Ankündigung des Endes der Support der Originalversion von SageMaker AI Operators for Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

Gehen Sie wie folgt vor, um Ihre Ressourcen zu migrieren, und verwenden Sie ACK, um Modelle für maschinelles Lernen mit Amazon SageMaker AI zu trainieren, zu optimieren und bereitzustellen.

**Anmerkung**  
Die neuesten SageMaker KI-Operatoren für Kubernetes sind nicht abwärtskompatibel.

**Topics**
+ [Voraussetzungen](#migrate-resources-to-new-operators-prerequisites)
+ [Ressourcen übernehmen](#migrate-resources-to-new-operators-steps)
+ [Alte Ressourcen bereinigen](#migrate-resources-to-new-operators-cleanup)
+ [Verwenden Sie die neuen SageMaker KI-Operatoren für Kubernetes](#migrate-resources-to-new-operators-tutorials)

## Voraussetzungen
<a name="migrate-resources-to-new-operators-prerequisites"></a>

Um Ressourcen erfolgreich auf die neuesten SageMaker KI-Operatoren für Kubernetes zu migrieren, müssen Sie wie folgt vorgehen:

1. Installieren Sie die neuesten SageMaker KI-Operatoren für Kubernetes. step-by-stepAnweisungen finden Sie unter [Einrichtung](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup) in *Machine Learning mit dem SageMaker ACK AI Controller*.

1. Wenn Sie [HostingAutoscalingPolicy Ressourcen](#migrate-resources-to-new-operators-hap) verwenden, installieren Sie die neuen Application Auto Scaling Operators. step-by-stepAnweisungen finden Sie unter [Einrichtung](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/#setup) unter *Skalieren von SageMaker KI-Workloads mit Application Auto Scaling*. Dieser Schritt ist optional, wenn Sie keine HostingAutoScalingPolicy Ressourcen verwenden.

Wenn die Berechtigungen korrekt konfiguriert sind, kann der ACK SageMaker AI-Service Controller die Spezifikation und den Status der Ressource ermitteln und die AWS Ressource abgleichen, als ob der ACK-Controller sie ursprünglich erstellt hätte.

## Ressourcen übernehmen
<a name="migrate-resources-to-new-operators-steps"></a>

Die neuen SageMaker KI-Operatoren für Kubernetes bieten die Möglichkeit, Ressourcen zu übernehmen, die ursprünglich nicht vom ACK Service Controller erstellt wurden. Weitere Informationen finden Sie in der [ACK-Dokumentation unter Adoption vorhandener AWS Ressourcen](https://aws-controllers-k8s.github.io/community/docs/user-docs/adopted-resource/).

Die folgenden Schritte zeigen, wie die neuen SageMaker KI-Operatoren für Kubernetes einen vorhandenen SageMaker KI-Endpunkt übernehmen können. Speichern Sie das folgende Beispiel in einer Datei mit dem Namen `adopt-endpoint-sample.yaml`. 

```
apiVersion: services.k8s.aws/v1alpha1
kind: AdoptedResource
metadata:
  name: adopt-endpoint-sample
spec:  
  aws:
    # resource to adopt, not created by ACK
    nameOrID: xgboost-endpoint
  kubernetes:
    group: sagemaker.services.k8s.aws
    kind: Endpoint
    metadata:
      # target K8s CR name
      name: xgboost-endpoint
```

Reichen Sie die benutzerdefinierte Ressource (CR) ein mit: `kubectl apply`

```
kubectl apply -f adopt-endpoint-sample.yaml
```

Verwenden Sie `kubectl describe` diese Option, um die Statusbedingungen Ihrer verwendeten Ressource zu überprüfen.

```
kubectl describe adoptedresource adopt-endpoint-sample
```

Stellen Sie sicher, dass der `ACK.Adopted` Zustand `True` ist. Die Ausgabe sollte ähnlich wie im folgenden Beispiel aussehen:

```
---
kind: AdoptedResource
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"services.k8s.aws/v1alpha1","kind":"AdoptedResource","metadata":{"annotations":{},"name":"xgboost-endpoint","namespace":"default"},"spec":{"aws":{"nameOrID":"xgboost-endpoint"},"kubernetes":{"group":"sagemaker.services.k8s.aws","kind":"Endpoint","metadata":{"name":"xgboost-endpoint"}}}}'
  creationTimestamp: '2021-04-27T02:49:14Z'
  finalizers:
  - finalizers.services.k8s.aws/AdoptedResource
  generation: 1
  name: adopt-endpoint-sample
  namespace: default
  resourceVersion: '12669876'
  selfLink: "/apis/services.k8s.aws/v1alpha1/namespaces/default/adoptedresources/adopt-endpoint-sample"
  uid: 35f8fa92-29dd-4040-9d0d-0b07bbd7ca0b
spec:
  aws:
    nameOrID: xgboost-endpoint
  kubernetes:
    group: sagemaker.services.k8s.aws
    kind: Endpoint
    metadata:
      name: xgboost-endpoint
status:
  conditions:
  - status: 'True'
    type: ACK.Adopted
```

Überprüfen Sie, ob Ihre Ressource in Ihrem Cluster vorhanden ist:

```
kubectl describe endpoints.sagemaker xgboost-endpoint
```

### HostingAutoscalingPolicy Ressourcen
<a name="migrate-resources-to-new-operators-hap"></a>

Die `HostingAutoscalingPolicy` (HAP) -Ressource besteht aus mehreren Application Auto Scaling-Ressourcen: `ScalableTarget` und `ScalingPolicy`. Wenn Sie eine HAP-Ressource mit ACK verwenden, installieren Sie zuerst den [Application Auto Scaling-Controller](https://github.com/aws-controllers-k8s/applicationautoscaling-controller). Um HAP-Ressourcen einzusetzen, müssen Sie sowohl `ScalableTarget` als auch `ScalingPolicy` Ressourcen einsetzen. Die Ressourcen-ID für diese Ressourcen finden Sie im Status der `HostingAutoscalingPolicy` Ressource (`status.ResourceIDList`).

### HostingDeployment Ressourcen
<a name="migrate-resources-to-new-operators-hosting-deployment"></a>

Die `HostingDeployment` Ressource besteht aus mehreren SageMaker KI-Ressourcen: `Endpoint``EndpointConfig`, und jeder`Model`. Wenn Sie einen SageMaker KI-Endpunkt in ACK verwenden, müssen Sie die `Endpoint``EndpointConfig`, und jeweils `Model` separat übernehmen. Die Namen `Endpoint`, `EndpointConfig` und `Model` sind im Status der Ressource `HostingDeployment` zu finden (`status.endpointName`, `status.endpointConfigName`, und `status.modelNames`).

Eine Liste aller unterstützten SageMaker KI-Ressourcen finden Sie in der [ACK-API-Referenz](https://aws-controllers-k8s.github.io/community/reference/).

## Alte Ressourcen bereinigen
<a name="migrate-resources-to-new-operators-cleanup"></a>

Nachdem die neuen SageMaker AI Operators for Kubernetes Ihre Ressourcen übernommen haben, können Sie alte Operatoren deinstallieren und alte Ressourcen bereinigen.

### Schritt 1: Deinstallieren Sie den alten Operator
<a name="migrate-resources-to-new-operators-uninstall"></a>

Informationen zur Deinstallation des alten Operators finden Sie unter [Operatoren löschen](kubernetes-sagemaker-operators-end-of-support.md#delete-operators).

**Warnung**  
Deinstallieren Sie den alten Operator, bevor Sie alte Ressourcen löschen.

### Schritt 2: Entfernen Sie die Finalizer und löschen Sie alte Ressourcen
<a name="migrate-resources-to-new-operators-delete-resources"></a>

**Warnung**  
Stellen Sie vor dem Löschen alter Ressourcen sicher, dass Sie den alten Operator deinstalliert haben.

Nach der Deinstallation des alten Operators müssen Sie die Finalizer explizit entfernen, um alte Operatorressourcen zu löschen. Das folgende Beispielskript zeigt, wie Sie alle Trainingsauftrags löschen, die vom alten Operator in einem bestimmten Namespace verwaltet wurden. Sie können ein ähnliches Muster verwenden, um zusätzliche Ressourcen zu löschen, sobald sie vom neuen Operator übernommen wurden.

**Anmerkung**  
Sie müssen die vollständigen Ressourcennamen verwenden, um Ressourcen abzurufen. Verwenden Sie z. B. `kubectl get trainingjobs.sagemaker.aws.amazon.com` statt `kubectl get trainingjob`.

```
namespace=sagemaker_namespace
training_jobs=$(kubectl get trainingjobs.sagemaker.aws.amazon.com -n $namespace -ojson | jq -r '.items | .[] | .metadata.name')
 
for job in $training_jobs
do
    echo "Deleting $job resource in $namespace namespace"
    kubectl patch trainingjobs.sagemaker.aws.amazon.com $job -n $namespace -p '{"metadata":{"finalizers":null}}' --type=merge
    kubectl delete trainingjobs.sagemaker.aws.amazon.com $job -n $namespace
done
```

## Verwenden Sie die neuen SageMaker KI-Operatoren für Kubernetes
<a name="migrate-resources-to-new-operators-tutorials"></a>

Ausführliche Anleitungen zur Verwendung der neuen SageMaker KI-Operatoren für Kubernetes finden Sie unter [Verwenden Sie SageMaker KI-Operatoren für Kubernetes](kubernetes-sagemaker-operators-ack.md#kubernetes-sagemaker-operators-ack-use)

# Ankündigung des Endes der Support der Originalversion von SageMaker AI Operators for Kubernetes
<a name="kubernetes-sagemaker-operators-eos-announcement"></a>

Diese Seite kündigt das Ende des Supports für die Originalversion von [SageMaker AI Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s) an und bietet Antworten auf häufig gestellte Fragen sowie Migrationsinformationen zum [ACK Service Controller für Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller), einer neuen Generation vollständig unterstützter SageMaker AI Operators for Kubernetes. Allgemeine Informationen zu den neuen SageMaker KI-Operatoren für Kubernetes finden Sie unter. [Aktuelle SageMaker KI-Operatoren für Kubernetes](kubernetes-sagemaker-operators-ack.md) 

## Ende des Support Häufig gestellte Fragen
<a name="kubernetes-sagemaker-operators-eos-faq"></a>

**Topics**
+ [Warum beenden wir den Support für die Originalversion von SageMaker AI Operators for Kubernetes?](#kubernetes-sagemaker-operators-eos-faq-why)
+ [Wo finde ich weitere Informationen zu den neuen SageMaker KI-Operatoren für Kubernetes und ACK?](#kubernetes-sagemaker-operators-eos-faq-more)
+ [Was bedeutet Ende des Supports (EOS)?](#kubernetes-sagemaker-operators-eos-faq-definition)
+ [Wie kann ich meinen Workload zu Trainings- und Inferenzzwecken auf die neuen SageMaker AI Operators for Kubernetes migrieren?](#kubernetes-sagemaker-operators-eos-faq-how)
+ [Zu welcher Version von ACK sollte ich migrieren?](#kubernetes-sagemaker-operators-eos-faq-version)
+ [Sind die ursprünglichen SageMaker KI-Operatoren für Kubernetes und die neuen Operators (ACK Service Controller für Amazon SageMaker AI) funktionell gleichwertig?](#kubernetes-sagemaker-operators-eos-faq-parity)

### Warum beenden wir den Support für die Originalversion von SageMaker AI Operators for Kubernetes?
<a name="kubernetes-sagemaker-operators-eos-faq-why"></a>

Benutzer können jetzt den [ACK Service Controller für Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller) nutzen. Der ACK Service Controller ist eine neue Generation von SageMaker KI-Operatoren für Kubernetes, die auf [AWS Controllers for Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK) basieren, einem von der Community betriebenen Projekt, das für die Produktion optimiert ist und die Art und Weise der Bereitstellung von Diensten über einen Kubernetes-Operator standardisiert. AWS [Wir kündigen daher das Ende des Supports (EOS) für die Originalversion (nicht ACK-basiert) von AI Operators for Kubernetes an. SageMaker ](https://github.com/aws/amazon-sagemaker-operator-for-k8s) Der Support endet am **15. Februar 2023** zusammen mit [Amazon Elastic Kubernetes Service Kubernetes 1.21](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-release-calendar). 

Weitere Informationen zu ACK finden Sie unter [Geschichte und Grundsätze von ACK](https://aws-controllers-k8s.github.io/community/docs/community/background/).

### Wo finde ich weitere Informationen zu den neuen SageMaker KI-Operatoren für Kubernetes und ACK?
<a name="kubernetes-sagemaker-operators-eos-faq-more"></a>
+ Weitere Informationen zu den neuen SageMaker KI-Operatoren für Kubernetes finden Sie im [ACK Service Controller for Amazon SageMaker GitHub AI-Repository](https://github.com/aws-controllers-k8s/sagemaker-controller) oder in der Dokumentation zu [AWS Controllers for Kubernetes](https://aws-controllers-k8s.github.io/community/docs/community/overview/).
+ Ein Tutorial zum Trainieren eines Modells für maschinelles Lernen mit dem ACK Service Controller für Amazon SageMaker AI mithilfe von Amazon EKS finden Sie in diesem [SageMaker KI-Beispiel](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/).

  Ein Beispiel für Autoscaling finden Sie unter [Skalieren von SageMaker KI-Workloads mit Application Auto](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/) Scaling.
+ Informationen zu AWS Controller für Kubernetes (ACK) finden Sie in der Dokumentation zu [AWS Controllers für Kubernetes](https://aws-controllers-k8s.github.io/community/) (ACK).
+ Eine Liste der unterstützten SageMaker KI-Ressourcen finden Sie unter [ACK API-Referenz](https://aws-controllers-k8s.github.io/community/reference/).

### Was bedeutet Ende des Supports (EOS)?
<a name="kubernetes-sagemaker-operators-eos-faq-definition"></a>

Benutzer können zwar weiterhin ihre aktuellen Betreiber verwenden, wir entwickeln jedoch keine neuen Funktionen mehr für die Betreiber und werden auch keine Patches oder Sicherheitsupdates für festgestellte Probleme veröffentlichen. `v1.2.2`ist die letzte Version von [SageMaker AI Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master). Benutzer sollten ihre Workloads migrieren, um den [ACK Service Controller für Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller) zu verwenden.

### Wie kann ich meinen Workload zu Trainings- und Inferenzzwecken auf die neuen SageMaker AI Operators for Kubernetes migrieren?
<a name="kubernetes-sagemaker-operators-eos-faq-how"></a>

Informationen zur Migration von Ressourcen von den alten zu den neuen SageMaker KI-Operatoren für Kubernetes finden Sie im Folgenden. [Migrieren Sie Ressourcen zu den neuesten Operatoren](kubernetes-sagemaker-operators-migrate.md)

### Zu welcher Version von ACK sollte ich migrieren?
<a name="kubernetes-sagemaker-operators-eos-faq-version"></a>

Benutzer sollten auf die neueste veröffentlichte Version des [ACK Service Controllers für Amazon SageMaker AI](https://github.com/aws-controllers-k8s/sagemaker-controller/tags) migrieren.

### Sind die ursprünglichen SageMaker KI-Operatoren für Kubernetes und die neuen Operators (ACK Service Controller für Amazon SageMaker AI) funktionell gleichwertig?
<a name="kubernetes-sagemaker-operators-eos-faq-parity"></a>

Ja, sie entsprechen den gleichen Funktionen.

Zu den wichtigsten nennenswerten Unterschieden zwischen den beiden Versionen gehören:
+ Die von den ACK-basierten SageMaker KI-Operatoren für Kubernetes verwendeten benutzerdefinierten Ressourcendefinitionen (CRD) folgen der AWS API-Definition und sind daher nicht mit den benutzerdefinierten Ressourcenspezifikationen der SageMaker AI Operators for Kubernetes in der Originalversion kompatibel. Informationen zur Übernahme der [CRDs](https://github.com/aws-controllers-k8s/sagemaker-controller/tree/main/helm/crds)Ressourcen und zur Verwendung des neuen Controllers finden Sie im neuen Controller oder im Migrationsleitfaden. 
+ Die `Hosting Autoscaling` Richtlinie ist nicht mehr Teil der neuen SageMaker AI Operators for Kubernetes und wurde auf den ACK-Controller für [automatische Skalierung von Anwendungen](https://github.com/aws-controllers-k8s/applicationautoscaling-controller) migriert. [Um zu erfahren, wie Sie den Controller für die automatische Skalierung von Anwendungen verwenden, um Autoscaling auf SageMaker KI-Endpunkten zu konfigurieren, folgen Sie diesem Autoscaling-Beispiel.](https://aws-controllers-k8s.github.io/community/docs/tutorials/autoscaling-example/) 
+ Die `HostingDeployment` Ressource wurde verwendet, um Modelle, Endpunktkonfigurationen und Endpunkte in einer CRD zu erstellen. Die neuen SageMaker AI Operators for Kubernetes verfügen über eine separate CRD für jede dieser Ressourcen. 

# SageMaker KI-Komponenten für Kubeflow-Pipelines
<a name="kubernetes-sagemaker-components-for-kubeflow-pipelines"></a>

Mit SageMaker KI-Komponenten für Kubeflow-Pipelines können Sie native SageMaker KI-Trainings-, Tuning-, Endpunktbereitstellungs- und Batch-Transformationsjobs in Ihren Kubeflow-Pipelines erstellen und überwachen. Indem Sie Kubeflow Pipeline-Jobs auf SageMaker KI ausführen, verlagern Sie Datenverarbeitungs- und Trainingsjobs vom Kubernetes-Cluster in den für maschinelles Lernen optimierten Managed Service von KI. SageMaker In diesem Dokument werden Vorkenntnisse über Kubernetes und Kubeflow vorausgesetzt. 

**Topics**
+ [Was sind Kubeflow-Pipelines?](#what-is-kubeflow-pipelines)
+ [Was sind Kubeflow Pipeline-Komponenten?](#kubeflow-pipeline-components)
+ [Warum sollten Sie SageMaker KI-Komponenten für Kubeflow-Pipelines verwenden?](#why-use-sagemaker-components)
+ [SageMaker KI-Komponenten für Versionen von Kubeflow Pipelines](#sagemaker-components-versions)
+ [Liste der SageMaker KI-Komponenten für Kubeflow-Pipelines](#sagemaker-components-list)
+ [IAM-Berechtigungen](#iam-permissions)
+ [Pipelines zur Verwendung von KI konvertieren SageMaker](#converting-pipelines-to-use-amazon-sagemaker)
+ [Installieren von Kubeflow Pipelines](kubernetes-sagemaker-components-install.md)
+ [Verwenden Sie KI-Komponenten SageMaker](kubernetes-sagemaker-components-tutorials.md)

## Was sind Kubeflow-Pipelines?
<a name="what-is-kubeflow-pipelines"></a>

Kubeflow Pipelines (KFP) ist eine Plattform für die Erstellung und Bereitstellung portabler, skalierbarer Workflows für Machine Learning (ML) auf der Basis von Docker-Containern. Die Kubeflow Pipelines-Plattform besteht aus Folgendem:
+ Eine Benutzeroberfläche (UI) zur Verwaltung und Nachverfolgung von Experimenten, Aufträgen und Läufen. 
+ Eine Engine (Argo) zur Planung mehrstufiger ML-Workflows.
+ Ein SDK zum Definieren und Bearbeiten von Pipelines und Komponenten.
+ Notebooks für die Interaktion mit dem System mithilfe des SDK.

Eine Pipeline ist eine Beschreibung eines ML-Workflows, ausgedrückt als [gerichteter azyklischer Graph](https://www.kubeflow.org/docs/pipelines/concepts/graph/). [Jeder Schritt im Workflow wird als Kubeflow-Pipeline-Komponente ausgedrückt, bei der es sich um ein Modul handelt.](https://www.kubeflow.org/docs/pipelines/overview/concepts/component/) AWS SDK für Python (Boto3) 

Weitere Informationen zu Kubeflow Pipelines finden Sie in der [Dokumentation zu Kubeflow Pipelines](https://www.kubeflow.org/docs/pipelines/). 

## Was sind Kubeflow Pipeline-Komponenten?
<a name="kubeflow-pipeline-components"></a>

Eine Kubeflow-Pipeline-Komponente ist ein Codesatz, der zur Ausführung eines Schritts einer Kubeflow-Pipeline verwendet wird. Komponenten werden durch ein Python-Modul dargestellt, das in ein Docker-Image integriert ist. Wenn die Pipeline ausgeführt wird, wird der Container der Komponente auf einem der Worker-Knoten auf dem Kubernetes-Cluster instanziiert, auf dem Kubeflow ausgeführt wird, und Ihre Logik wird ausgeführt. Pipeline-Komponenten können Ausgaben der vorherigen Komponenten lesen und Ausgaben erstellen, die die nächste Komponente in der Pipeline verarbeiten kann. Diese Komponenten machen es schnell und einfach, Pipelines für Experimentier- und Produktionsumgebungen zu schreiben, ohne mit der zugrunde liegenden Kubernetes-Infrastruktur interagieren zu müssen.

Sie können SageMaker KI-Komponenten in Ihrer Kubeflow-Pipeline verwenden. Anstatt Ihre Logik in einem benutzerdefinierten Container zu kapseln, laden Sie einfach die Komponenten und beschreiben Ihre Pipeline mithilfe des Kubeflow Pipelines SDK. Wenn die Pipeline läuft, werden Ihre Anweisungen in einen SageMaker KI-Job oder eine KI-Bereitstellung übersetzt. Der Workload wird dann auf der vollständig verwalteten SageMaker KI-Infrastruktur ausgeführt. 

## Warum sollten Sie SageMaker KI-Komponenten für Kubeflow-Pipelines verwenden?
<a name="why-use-sagemaker-components"></a>

SageMaker KI-Komponenten für Kubeflow-Pipelines bieten eine Alternative zum Starten Ihrer rechenintensiven Jobs über KI. SageMaker Die Komponenten integrieren SageMaker KI in die Portabilität und Orchestrierung von Kubeflow Pipelines. Mithilfe der SageMaker KI-Komponenten für Kubeflow Pipelines können Sie Ihre SageMaker KI-Ressourcen als Teil eines Kubeflow Pipelines Workflows erstellen und überwachen. Jeder der Jobs in Ihren Pipelines wird auf SageMaker KI statt auf dem lokalen Kubernetes-Cluster ausgeführt, sodass Sie wichtige SageMaker KI-Funktionen wie Datenkennzeichnung, umfangreiche Hyperparameter-Tuning- und verteilte Trainingsjobs oder die sichere und skalierbare Modellbereitstellung mit einem Klick nutzen können. Die Jobparameter, der Status, die Protokolle und die Ausgaben von SageMaker KI sind weiterhin über die Benutzeroberfläche von Kubeflow Pipelines zugänglich. 

Die SageMaker KI-Komponenten integrieren wichtige SageMaker KI-Funktionen in Ihre ML-Workflows, von der Datenvorbereitung bis hin zur Erstellung, Schulung und Bereitstellung von ML-Modellen. Sie können eine Kubeflow-Pipeline erstellen, die vollständig aus diesen Komponenten besteht, oder einzelne Komponenten nach Bedarf in Ihren Workflow integrieren. Die Komponenten sind in einer oder zwei Versionen erhältlich. Jede Version einer Komponente nutzt ein anderes Backend. Weitere Informationen zu diesen Versionen finden Sie unter [SageMaker KI-Komponenten für Versionen von Kubeflow Pipelines](#sagemaker-components-versions).

Für die Verwendung von SageMaker KI-Komponenten für Kubeflow-Pipelines fallen keine zusätzlichen Gebühren an. Für alle SageMaker KI-Ressourcen, die Sie über diese Komponenten nutzen, fallen Gebühren an.

## SageMaker KI-Komponenten für Versionen von Kubeflow Pipelines
<a name="sagemaker-components-versions"></a>

SageMaker KI-Komponenten für Kubeflow-Pipelines gibt es in zwei Versionen. Jede Version nutzt ein anderes Backend, um Ressourcen auf KI zu erstellen und zu verwalten. SageMaker 
+ **[Die SageMaker KI-Komponenten für Kubeflow Pipelines Version 1 (v1.x oder niedriger) verwenden Boto3 () als Backend.](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html)**AWS SDK für Python (Boto3)
+ [Die Version 2 (v2.0.0-alpha2 und höher) von SageMaker AI Components for Kubeflow Pipelines verwendet AI Operator for Kubernetes (ACK). SageMaker ](https://github.com/aws-controllers-k8s/sagemaker-controller) 

  AWS führte [ACK ein, um eine Kubernetes-native Art der Verwaltung von Cloud-Ressourcen](https://aws-controllers-k8s.github.io/community/) zu ermöglichen. AWS ACK umfasst eine Reihe von AWS dienstspezifischen Controllern, von denen einer der KI-Controller ist. SageMaker Der SageMaker KI-Controller erleichtert Entwicklern und Datenwissenschaftlern, die Kubernetes als Steuerungsebene verwenden, das Trainieren, Optimieren und Bereitstellen von Modellen für maschinelles Lernen (ML) in KI. SageMaker Weitere Informationen finden Sie unter [SageMaker KI-Operatoren](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/) für Kubernetes 

Beide Versionen der SageMaker KI-Komponenten für Kubeflow-Pipelines werden unterstützt. Die Version 2 bietet jedoch einige zusätzliche Vorteile. Insbesondere bietet sie: 

1. Eine konsistente Erfahrung bei der Verwaltung Ihrer SageMaker KI-Ressourcen von jeder Anwendung aus, unabhängig davon, ob Sie Kubeflow-Pipelines, Kubernetes CLI (`kubectl`) oder andere Kubeflow-Anwendungen wie Notebooks verwenden. 

1. Die Flexibilität, Ihre SageMaker KI-Ressourcen außerhalb des Kubeflow-Pipeline-Workflows zu verwalten und zu überwachen. 

1. Keine Einrichtungszeit für die Verwendung der SageMaker KI-Komponenten, wenn Sie den vollständigen [Kubeflow](https://awslabs.github.io/kubeflow-manifests/docs/about/) bei der AWS Veröffentlichung bereitgestellt haben, da der SageMaker AI-Operator Teil der Bereitstellung ist. 

## Liste der SageMaker KI-Komponenten für Kubeflow-Pipelines
<a name="sagemaker-components-list"></a>

Im Folgenden finden Sie eine Liste aller SageMaker KI-Komponenten für Kubeflow-Pipelines und ihrer verfügbaren Versionen. Alternativ finden Sie alle [SageMaker KI-Komponenten für Kubeflow-Pipelines](https://github.com/kubeflow/pipelines/tree/master/components/aws/sagemaker#versioning) in. GitHub

**Anmerkung**  
Wir empfehlen Benutzern, Version 2 einer SageMaker KI-Komponente zu verwenden, wo immer sie verfügbar ist.

### Ground-Truth-Komponenten
<a name="ground-truth-components"></a>
+ **Ground Truth**

  Mit der Ground Truth Komponente können Sie SageMaker AI Ground Truth Labeling-Jobs direkt aus einem Kubeflow Pipelines Workflow einreichen.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Arbeitsteam**

  Mit der Workteam-Komponente können Sie private SageMaker KI-Jobs für Arbeitsteams direkt aus einem Kubeflow Pipelines-Workflow erstellen.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Datenverarbeitungskomponenten
<a name="data-processing-components"></a>
+ **Verarbeitung**

  Mit der Verarbeitungskomponente können Sie Verarbeitungsaufträge direkt aus einem Kubeflow Pipelines-Workflow an SageMaker AI senden.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Trainingskomponenten
<a name="training-components"></a>
+ **Training**

  Mit der Trainingskomponente können Sie SageMaker Trainingsjobs direkt aus einem Kubeflow Pipelines-Workflow einreichen.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Optimierung der Hyperparameter**

  Mit der Komponente Hyperparameter-Optimierung können Sie Hyperparameter-Tuning-Jobs direkt aus einem Kubeflow SageMaker Pipelines-Workflow an AI senden.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

### Inferenzkomponenten
<a name="inference-components-kfp"></a>
+ **Hosting und Bereitstellung**

  Mit den Hosting-Komponenten können Sie ein Modell mithilfe von SageMaker KI-Hosting-Diensten aus einem Kubeflow Pipelines-Workflow bereitstellen.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Stapeltransformation**

  Mit der Batch Transform-Komponente können Sie Inferenzjobs für einen gesamten Datensatz in SageMaker AI aus einem Kubeflow Pipelines Workflow ausführen.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)
+ **Model Monitor**

  Mit den Model Monitor-Komponenten können Sie die Qualität von SageMaker KI-Modellen für maschinelles Lernen in der Produktion anhand eines Kubeflow Pipelines Workflows überwachen.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/kubernetes-sagemaker-components-for-kubeflow-pipelines.html)

## IAM-Berechtigungen
<a name="iam-permissions"></a>

Für die Bereitstellung von Kubeflow-Pipelines mit SageMaker KI-Komponenten sind die folgenden drei Authentifizierungsebenen erforderlich: 
+ Eine IAM-Rolle, die Ihrem Gateway-Knoten (bei dem es sich um Ihren lokalen Computer oder eine Remote-Instance handeln kann) Zugriff auf den Amazon Elastic Kubernetes Service (Amazon EKS) -Cluster gewährt.

  Der Benutzer, der auf den Gateway-Knoten zugreift, übernimmt diese Rolle, um:
  + Erstellen Sie einen Amazon-EKS-Cluster und installieren Sie KFP
  + Erstellen Sie IAM-Rollen
  + Erstellen Sie Amazon-S3-Buckets für Ihre Beispieleingabedaten

  Die Rolle erfordert die folgenden Berechtigungen:
  + CloudWatchLogsFullAccess 
  + [https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess](https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess) 
  + IAMFullZugriff
  + Amazon S3 FullAccess
  + Amazon EC2 FullAccess
  + EKSAdminAmazon-Richtlinie (Erstellen Sie diese Richtlinie mithilfe des Schemas aus [Amazon EKS-Beispielen für identitätsbasierte Richtlinien](https://docs.aws.amazon.com/eks/latest/userguide/security_iam_id-based-policy-examples.html)) 
+ Eine Kubernetes-IAM-Ausführungsrolle, die von den Kubernetes-Pipeline-Pods (**kfp-example-pod-role**) oder dem SageMaker KI-Operator für den Kubernetes-Controller-Pod für den Zugriff auf KI übernommen wurde. SageMaker Diese Rolle wird verwendet, um KI-Jobs von Kubernetes aus zu erstellen und zu überwachen. SageMaker 

  Für die Rolle ist die folgende Berechtigung erforderlich:
  + AmazonSageMakerFullAccess 

  Sie können die Berechtigungen auf die KFP- und Controller-Pods beschränken, indem Sie Ihre eigene benutzerdefinierte Richtlinie erstellen und anhängen.
+ Eine SageMaker KI-IAM-Ausführungsrolle, die von SageMaker KI-Jobs für den Zugriff auf AWS Ressourcen wie Amazon S3 oder Amazon ECR (**kfp-example-sagemaker-execution-role**) übernommen wird.

  SageMaker KI-Jobs verwenden diese Rolle für:
  + Greifen Sie auf SageMaker KI-Ressourcen zu
  + Eingabedaten aus Amazon S3
  + Speichern Sie Ihr Ausgabemodell in Amazon S3

  Die Rolle erfordert die folgenden Berechtigungen:
  + AmazonSageMakerFullAccess 
  + Amazon S3 FullAccess 

## Pipelines zur Verwendung von KI konvertieren SageMaker
<a name="converting-pipelines-to-use-amazon-sagemaker"></a>

Sie können eine bestehende Pipeline auf SageMaker KI umstellen, indem Sie Ihre generischen [Python-Verarbeitungscontainer](https://docs.aws.amazon.com/sagemaker/latest/dg/amazon-sagemaker-containers.html) und [Trainingscontainer](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html) portieren. Wenn Sie SageMaker KI für Inferenz verwenden, müssen Sie Ihrem Cluster auch IAM-Berechtigungen zuweisen und ein Artefakt in ein Modell konvertieren.

# Installieren von Kubeflow Pipelines
<a name="kubernetes-sagemaker-components-install"></a>

[Kubeflow Pipelines (KFP)](https://www.kubeflow.org/docs/components/pipelines/v2/introduction/) ist die Pipeline-Orchestrierungskomponente von Kubeflow.

Sie können Kubeflow Pipelines (KFP) auf einem vorhandenen Amazon Elastic Kubernetes Service (Amazon EKS) bereitstellen oder einen neuen Amazon EKS-Cluster erstellen. Verwenden Sie einen Gateway-Knoten, um mit Ihrem Cluster zu interagieren. Der Gateway-Knoten kann Ihr lokaler Computer oder eine Amazon-EC2-Instance sein.

Der folgende Abschnitt führt Sie durch die Schritte zur Einrichtung und Konfiguration dieser Ressourcen.

**Topics**
+ [Eine Installationsoption auswählen](#choose-install-option)
+ [Konfigurieren Sie Ihre Pipeline-Berechtigungen für den Zugriff auf KI SageMaker](#configure-permissions-for-pipeline)
+ [Greifen Sie auf die KFP-Benutzeroberfläche zu (Kubeflow Dashboard)](#access-the-kfp-ui)

## Eine Installationsoption auswählen
<a name="choose-install-option"></a>

Kubeflow Pipelines ist als Kernkomponente der vollständigen Distribution von Kubeflow auf oder als eigenständige Installation verfügbar. AWS 

Wählen Sie die Option aus, die für Ihren Anwendungsfall gilt:

1. [Vollständiger Kubeflow bei der Bereitstellung AWS](#full-kubeflow-deployment)

   Um zusätzlich zu Kubeflow Pipelines weitere Kubeflow-Komponenten zu verwenden, wählen Sie die vollständige [AWS Distribution von Kubeflow](https://awslabs.github.io/kubeflow-manifests) Bereitstellung. 

1. [Eigenständige Bereitstellung von Kubeflow Pipelines](#kubeflow-pipelines-standalone)

   Um die Kubeflow-Pipelines ohne die anderen Komponenten von Kubeflow zu verwenden, installieren Sie Kubeflow-Pipelines eigenständig. 

### Vollständiger Kubeflow bei der Bereitstellung AWS
<a name="full-kubeflow-deployment"></a>

Um die Vollversion von Kubeflow on zu installieren AWS, wählen Sie die Vanilla-Bereitstellungsoption aus dem [Kubeflow on AWS Deployment Guide](https://awslabs.github.io/kubeflow-manifests/docs/deployment/) oder eine andere Bereitstellungsoption, die Integrationen mit verschiedenen AWS Diensten (Amazon S3, Amazon RDS, Amazon Cognito) unterstützt.

### Eigenständige Bereitstellung von Kubeflow Pipelines
<a name="kubeflow-pipelines-standalone"></a>

In diesem Abschnitt wird davon ausgegangen, dass Ihr Benutzer berechtigt ist, Rollen zu erstellen und Richtlinien für die Rolle zu definieren.

#### Einrichten eines Gateway-Knotens
<a name="set-up-a-gateway-node"></a>

Sie können Ihren lokalen Computer oder eine Amazon-EC2-Instance als Gateway-Knoten verwenden. Ein Gateway-Knoten wird verwendet, um einen Amazon EKS-Cluster zu erstellen und auf die Kubeflow Pipelines UI zuzugreifen. 

Führen Sie die folgenden Schritte aus, um Ihren Knoten einzurichten. 

1. 

**Erstellen Sie einen Gateway-Knoten.**

   Sie können eine bestehende Amazon-EC2-Instance verwenden oder eine neue Instance mit der neuesten Ubuntu 18.04 DLAMI-Version erstellen, indem Sie die Schritte unter [Starten und Konfigurieren einer DLAMI](https://docs.aws.amazon.com/dlami/latest/devguide/launch-config.html) ausführen.

1. 

**Erstellen Sie eine IAM-Rolle, um Ihrem Gateway-Knoten Zugriff auf Ressourcen zu gewähren. AWS**

   Erstellen Sie eine IAM-Rolle mit Berechtigungen für die folgenden Ressourcen: CloudWatch,, IAM CloudFormation, Amazon EC2, Amazon S3, Amazon EKS.

   Weisen Sie der IAM-Rolle die folgenden Richtlinien zu:
   + CloudWatchLogsFullAccess 
   + [https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess](https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2FAWSCloudFormationFullAccess)
   + IAMFullZugriff 
   + Amazon S3 FullAccess 
   + Amazon EC2 FullAccess 
   + EKSAdminAmazon-Richtlinie (Erstellen Sie diese Richtlinie mithilfe des Schemas aus [Amazon EKS-Beispielen für identitätsbasierte Richtlinien](https://docs.aws.amazon.com/eks/latest/userguide/security_iam_id-based-policy-examples.html)) 

   Informationen zum Hinzufügen von IAM-Berechtigungen zu einer IAM-Rolle finden Sie unter [Hinzufügen und Entfernen von IAM-Identitätsberechtigungen](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).

1. 

**Installieren Sie die folgenden Tools und Clients**

   Installieren und konfigurieren Sie die folgenden Tools und Ressourcen auf Ihrem Gateway-Knoten, um auf den Amazon EKS-Cluster und die KFP-Benutzeroberfläche (UI) zuzugreifen. 
   + [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html): Das Befehlszeilentool für die Arbeit mit AWS Services. Informationen zur AWS CLI Konfiguration finden Sie unter [Konfiguration von AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html). 
   + [aws-iam-authenticator](https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html)Version 0.1.31 und höher: Ein Tool zur Verwendung von AWS IAM-Anmeldeinformationen zur Authentifizierung bei einem Kubernetes-Cluster.
   + [https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html) Version über 0.15: Das Befehlszeilentool für die Arbeit mit Amazon EKS-Clustern.
   + [https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl) – Das Befehlszeilenwerkzeug für die Arbeit mit Kubernetes-Clustern. Die Version muss innerhalb einer Nebenversion mit Ihrer Kubernetes-Version übereinstimmen.
   + [https://aws.amazon.com/sdk-for-python/](https://aws.amazon.com/sdk-for-python/).

     ```
     pip install boto3
     ```

#### Einrichten eines Amazon EKS-Clusters
<a name="set-up-anamazon-eks-cluster"></a>

1. Wenn Sie noch keinen Amazon EKS-Cluster haben, führen Sie die folgenden Schritte von der Befehlszeile Ihres Gateway-Knotens aus. Andernfalls überspringen Sie diesen Schritt.

   1. Führen Sie den folgenden Befehl aus, um einen Amazon EKS-Cluster mit Version 1.17 oder höher zu erstellen. Ersetzen Sie `<clustername>` durch einen beliebigen Namen für Ihren Cluster. 

      ```
      eksctl create cluster --name <clustername> --region us-east-1 --auto-kubeconfig --timeout=50m --managed --nodes=1
      ```

   1. Wenn die Cluster-Erstellung abgeschlossen ist, stellen Sie sicher, dass Sie Zugriff auf Ihren Cluster haben, indem Sie die Knoten des Clusters auflisten. 

      ```
      kubectl get nodes
      ```

1. Stellen Sie mit dem folgenden Befehl sicher, dass der aktuelle `kubectl` Kontext auf Ihren Cluster verweist. Der aktuelle Kontext ist in der Ausgabe mit einem Sternchen (\$1) gekennzeichnet.

   ```
   kubectl config get-contexts
   
   CURRENT NAME     CLUSTER
   *   <username>@<clustername>.us-east-1.eksctl.io   <clustername>.us-east-1.eksctl.io
   ```

1. Wenn der gewünschte Cluster nicht als Ihr aktueller Standard konfiguriert ist, aktualisieren Sie den Standard mit dem folgenden Befehl. 

   ```
   aws eks update-kubeconfig --name <clustername> --region us-east-1
   ```

#### Installieren von Kubeflow Pipelines
<a name="install-kubeflow-pipelines"></a>

Führen Sie die folgenden Schritte vom Terminal Ihres Gateway-Knotens aus, um Kubeflow Pipelines auf Ihrem Cluster zu installieren.

1. Installieren Sie alle [Cert-Manager-Komponenten](https://cert-manager.io/docs/installation/kubectl/).

   ```
   kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.yaml
   ```

1. Installieren Sie die Kubeflow-Pipelines.

   ```
   export PIPELINE_VERSION=2.0.0-alpha.5
   kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/cluster-scoped-resources?ref=$KFP_VERSION"
   kubectl wait --for condition=established --timeout=60s crd/applications.app.k8s.io
   kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/dev?ref=$KFP_VERSION"
   ```

1. Stellen Sie sicher, dass der Kubeflow Pipelines Service und andere zugehörige Ressourcen laufen.

   ```
   kubectl -n kubeflow get all | grep pipeline
   ```

   Die Ausgabe sollte wie folgt aussehen.

   ```
   pod/ml-pipeline-6b88c67994-kdtjv                      1/1     Running            0          2d
   pod/ml-pipeline-persistenceagent-64d74dfdbf-66stk     1/1     Running            0          2d
   pod/ml-pipeline-scheduledworkflow-65bdf46db7-5x9qj    1/1     Running            0          2d
   pod/ml-pipeline-ui-66cc4cffb6-cmsdb                   1/1     Running            0          2d
   pod/ml-pipeline-viewer-crd-6db65ccc4-wqlzj            1/1     Running            0          2d
   pod/ml-pipeline-visualizationserver-9c47576f4-bqmx4   1/1     Running            0          2d
   service/ml-pipeline                       ClusterIP   10.100.170.170   <none>        8888/TCP,8887/TCP   2d
   service/ml-pipeline-ui                    ClusterIP   10.100.38.71     <none>        80/TCP              2d
   service/ml-pipeline-visualizationserver   ClusterIP   10.100.61.47     <none>        8888/TCP            2d
   deployment.apps/ml-pipeline                       1/1     1            1           2d
   deployment.apps/ml-pipeline-persistenceagent      1/1     1            1           2d
   deployment.apps/ml-pipeline-scheduledworkflow     1/1     1            1           2d
   deployment.apps/ml-pipeline-ui                    1/1     1            1           2d
   deployment.apps/ml-pipeline-viewer-crd            1/1     1            1           2d
   deployment.apps/ml-pipeline-visualizationserver   1/1     1            1           2d
   replicaset.apps/ml-pipeline-6b88c67994                      1         1         1       2d
   replicaset.apps/ml-pipeline-persistenceagent-64d74dfdbf     1         1         1       2d
   replicaset.apps/ml-pipeline-scheduledworkflow-65bdf46db7    1         1         1       2d
   replicaset.apps/ml-pipeline-ui-66cc4cffb6                   1         1         1       2d
   replicaset.apps/ml-pipeline-viewer-crd-6db65ccc4            1         1         1       2d
   replicaset.apps/ml-pipeline-visualizationserver-9c47576f4   1         1         1       2d
   ```

## Konfigurieren Sie Ihre Pipeline-Berechtigungen für den Zugriff auf KI SageMaker
<a name="configure-permissions-for-pipeline"></a>

In diesem Abschnitt erstellen Sie eine IAM-Ausführungsrolle, die Kubeflow Pipeline-Pods Zugriff SageMaker auf KI-Dienste gewährt. 

### Konfiguration für SageMaker KI-Komponenten, Version 2
<a name="permissions-for-SM-v2"></a>

Um SageMaker AI Components Version 2 für Kubeflow Pipelines auszuführen, müssen Sie [SageMaker AI Operator for Kubernetes installieren und Role-Based Access Control (RBAC) konfigurieren, sodass die Kubeflow](https://github.com/aws-controllers-k8s/sagemaker-controller) Pipelines Pods benutzerdefinierte KI-Ressourcen in Ihrem Kubernetes-Cluster erstellen können. SageMaker 

**Wichtig**  
Folgen Sie diesem Abschnitt, wenn Sie die eigenständige Bereitstellung von Kubeflow-Pipelines verwenden. Wenn Sie die AWS Distribution von Kubeflow Version 1.6.0-aws-b1.0.0 oder höher verwenden, sind die KI-Komponenten Version 2 bereits eingerichtet. SageMaker 

1. Installieren Sie SageMaker AI Operator for Kubernetes, um die KI-Komponenten Version 2 zu verwenden. SageMaker 

   Folgen Sie dem Abschnitt „*Einrichtung*“ des [Tutorials „Machine Learning mit SageMaker ACK AI Controller](https://aws-controllers-k8s.github.io/community/docs/tutorials/sagemaker-example/#setup)“.

1. Konfigurieren Sie RBAC-Berechtigungen für die Ausführungsrolle (Service-Konto), die von den Kubeflow Pipelines-Pods verwendet wird. Bei der eigenständigen Bereitstellung von Kubeflow-Pipelines werden die Pipelineläufe im namespace`kubeflow` unter Verwendung des Service-Kontos `pipeline-runner` ausgeführt.

   1. Erstellen Sie eine [RoleBinding](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#rolebinding-example), die dem Dienstkonto die Erlaubnis erteilt, benutzerdefinierte SageMaker KI-Ressourcen zu verwalten.

      ```
      cat > manage_sagemaker_cr.yaml <<EOF
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
      name: manage-sagemaker-cr  
      namespace: kubeflow
      subjects:
      - kind: ServiceAccount
      name: pipeline-runner
      namespace: kubeflow
      roleRef:
      kind: ClusterRole
      name: ack-sagemaker-controller 
      apiGroup: rbac.authorization.k8s.io
      EOF
      ```

      ```
      kubectl apply -f manage_sagemaker_cr.yaml
      ```

   1. Stellen Sie sicher, dass die Rollenbindung erstellt wurde, indem Sie Folgendes ausführen:

      ```
      kubectl get rolebinding manage-sagemaker-cr -n kubeflow -o yaml
      ```

### Konfiguration für SageMaker KI-Komponenten, Version 1
<a name="permissions-for-SM-v1"></a>

Um SageMaker AI Components Version 1 für Kubeflow Pipelines ausführen zu können, benötigen die Kubeflow Pipeline-Pods Zugriff auf KI. SageMaker 

**Wichtig**  
Folgen Sie diesem Abschnitt, unabhängig davon, ob Sie die vollständige Version von Kubeflow bei der Bereitstellung oder die eigenständige Version von Kubeflow Pilepines verwenden. AWS 

Gehen Sie wie folgt vor, um eine IAM-Ausführungsrolle zu erstellen, die den Kubeflow-Pipeline-Pods Zugriff auf KI gewährt: SageMaker 

1. Exportieren Sie Ihren Clusternamen (z. B. *my-cluster-name*) und Ihre Cluster-Region (z. B. *us-east-1*).

   ```
   export CLUSTER_NAME=my-cluster-name
   export CLUSTER_REGION=us-east-1
   ```

1. Exportieren Sie den Namespace und den Namen des Service-Kontos entsprechend Ihrer Installation.
   + Für den vollständigen Kubeflow bei der AWS Installation exportieren Sie Ihr Profil `namespace` (z. B. *kubeflow-user-example-com*) und den *Standardeditor* als Dienstkonto.

     ```
     export NAMESPACE=kubeflow-user-example-com
     export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=default-editor
     ```
   + Exportieren Sie für die eigenständige Pipelines-Bereitstellung *Kubeflow* als `namespace` und *Pipeline-Runner* als Service-Konto.

     ```
     export NAMESPACE=kubeflow
     export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=pipeline-runner
     ```

1. Erstellen Sie einen [ IAM OIDC-Anbieter für den Amazon EKS-Cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) mit dem folgenden Befehl.

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
               --region ${CLUSTER_REGION} --approve
   ```

1. Erstellen Sie eine IAM-Ausführungsrolle für die KFP-Pods, um auf Dienste (AI,) zuzugreifen. AWS SageMaker CloudWatch

   ```
   eksctl create iamserviceaccount \
   --name ${KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT} \
   --namespace ${NAMESPACE} --cluster ${CLUSTER_NAME} \
   --region ${CLUSTER_REGION} \
   --attach-policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess \
   --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess \
   --override-existing-serviceaccounts \
   --approve
   ```

[Sobald Ihre Pipeline-Berechtigungen für den Zugriff auf SageMaker AI Components Version 1 konfiguriert sind, folgen Sie dem Leitfaden SageMaker KI-Komponenten für Kubeflow-Pipelines in der Kubeflow-Dokumentation. AWS](https://awslabs.github.io/kubeflow-manifests/docs/amazon-sagemaker-integration/sagemaker-components-for-kubeflow-pipelines/)

## Greifen Sie auf die KFP-Benutzeroberfläche zu (Kubeflow Dashboard)
<a name="access-the-kfp-ui"></a>

Die Kubeflow Pipelines UI wird für die Verwaltung und Nachverfolgung von Experimenten, Aufträge und Läufen in Ihrem Cluster verwendet. Anweisungen zum Zugriff auf die Kubeflow Pipelines UI von Ihrem Gateway-Knoten aus finden Sie in diesem Abschnitt in den Schritten, die für Ihre Bereitstellungsoption gelten.

### AWS Vollständiger Kubeflow bei der Bereitstellung
<a name="access-kfp-ui-full-kubeflow-deployment"></a>

Folgen Sie den Anweisungen auf der [Kubeflow AWS on-Website](https://awslabs.github.io/kubeflow-manifests/docs/deployment/connect-kubeflow-dashboard/), um eine Verbindung zum Kubeflow-Dashboard herzustellen und zur Registerkarte Pipelines zu navigieren.

### Eigenständige Bereitstellung von Kubeflow-Pipelines
<a name="access-kfp-ui-standalone-kubeflow-pipelines-deployment"></a>

Verwenden Sie die Portweiterleitung, um von Ihrem Gateway-Knoten aus auf die Benutzeroberfläche von Kubeflow Pipelines zuzugreifen, indem Sie die folgenden Schritte ausführen.

#### Richten Sie die Portweiterleitung zum KFP UI-Service ein
<a name="set-up-port-forwarding-to-the-kfp-ui-service"></a>

Führen Sie den folgenden Befehl von der Befehlszeile Ihres Gateway-Knotens aus.

1. Vergewissern Sie sich mit folgendem Befehl, dass der KFP-UI-Service ausgeführt wird.

   ```
   kubectl -n kubeflow get service ml-pipeline-ui
   
   NAME             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
   ml-pipeline-ui   ClusterIP   10.100.38.71   <none>        80/TCP    2d22h
   ```

1. Führen Sie den folgenden Befehl aus, um die Portweiterleitung zum KFP UI Service einzurichten. Dadurch wird die KFP-Benutzeroberfläche an Port 8080 auf Ihrem Gateway-Knoten weitergeleitet und Sie können von Ihrem Browser aus auf die KFP-Benutzeroberfläche zugreifen. 

   ```
   kubectl port-forward -n kubeflow service/ml-pipeline-ui 8080:80
   ```

   Die Portweiterleitung von Ihrem Remote-Computer wird unterbrochen, wenn keine Aktivität stattfindet. Führen Sie diesen Befehl erneut aus, wenn Ihr Dashboard keine Protokolle oder Updates abrufen kann. Wenn die Befehle einen Fehler zurückgeben, stellen Sie sicher, dass auf dem Port, den Sie verwenden möchten, bereits kein Prozess läuft. 

#### Greifen Sie auf den KFP-UI-Service zu
<a name="set-up-port-forwarding-to-the-kfp-ui-service-access"></a>

Ihre Methode für den Zugriff auf die KFP-Benutzeroberfläche hängt von Ihrem Gateway-Knotentyp ab.
+ Lokaler Computer als Gateway-Knoten:

  1. Greifen Sie wie folgt auf das Dashboard in Ihrem Browser zu: 

     ```
     http://localhost:8080
     ```

  1. Wählen Sie **Pipelines**, um auf die Pipeline-Benutzeroberfläche zuzugreifen. 
+ Amazon-EC2-Instance als Gateway-Knoten:

  1. Sie müssen einen SSH-Tunnel auf Ihrer Amazon-EC2-Instance einrichten, um über den Browser Ihres lokalen Computers auf das Kubeflow-Dashboard zuzugreifen. 

     Führen Sie in einer neuen Terminalsitzung auf Ihrem lokalen Computer Folgendes aus. Ersetzen Sie `<public-DNS-of-gateway-node>` durch die IP-Adresse Ihrer Instance auf der Amazon-EC2-Konsole. Sie können auch das öffentliche DNS verwenden. Ersetzen Sie `<path_to_key>` durch den Pfad zu dem PEM-Schlüssel, der für den Zugriff auf den Gateway-Knoten verwendet wird. 

     ```
     public_DNS_address=<public-DNS-of-gateway-node>
     key=<path_to_key>
     
     on Ubuntu:
     ssh -i ${key} -L 9000:localhost:8080 ubuntu@${public_DNS_address}
     
     or on Amazon Linux:
     ssh -i ${key} -L 9000:localhost:8080 ec2-user@${public_DNS_address}
     ```

  1. Greifen Sie in Ihrem Browser auf das Dashboard zu. 

     ```
     http://localhost:9000
     ```

  1. Wählen Sie **Pipelines**, um auf die KFP-Benutzeroberfläche zuzugreifen. 

#### (Optional) Gewähren Sie SageMaker KI-Notebook-Instances Zugriff auf Amazon EKS und führen Sie KFP-Pipelines von Ihrem Notebook aus aus aus.
<a name="add-access-to-additional-iam-users-or-roles"></a>

Eine SageMaker Notebook-Instance ist eine vollständig verwaltete Amazon EC2 EC2-Recheninstanz, auf der die Jupyter Notebook App ausgeführt wird. Sie können eine Notebook-Instance verwenden, um Jupyter Notebooks zu erstellen und zu verwalten und dann Ihre KFP-Pipelines mithilfe von AWS SDK für Python (Boto3) oder der KFP-CLI zu definieren, zu kompilieren, bereitzustellen und auszuführen. 

1. Folgen Sie den Schritten unter Notebook-Instance [erstellen, um Ihre SageMaker Notebook-Instance](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-setup-working-env.html) zu erstellen, und fügen Sie dann die `S3FullAccess` Richtlinie der zugehörigen IAM-Ausführungsrolle hinzu.

1. Führen Sie in der Befehlszeile Ihres Gateway-Knotens den folgenden Befehl aus, um den IAM-Rollen-ARN der von Ihnen erstellten Notebook-Instance abzurufen. Ersetzen Sie `<instance-name>` durch den Namen Ihrer Instance.

   ```
   aws sagemaker describe-notebook-instance --notebook-instance-name <instance-name> --region <region> --output text --query 'RoleArn'
   ```

   Dieser Befehl gibt die IAM-Rolle ARN im folgenden `arn:aws:iam::<account-id>:role/<role-name>` Format aus. Notieren Sie sich diesen ARN.

1. Führen Sie diesen Befehl aus, um die folgenden Richtlinien (Amazon AmazonSageMakerFullAccess EKSWorkerNodePolicy, AmazonS3FullAccess) an diese IAM-Rolle anzuhängen. Ersetzen Sie `<role-name>` durch `<role-name>` in Ihrem ARN. 

   ```
   aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
   aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
   aws iam attach-role-policy --role-name <role-name> --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
   ```

1. Amazon EKS-Cluster verwenden IAM-Rollen, um den Zugriff auf den Cluster zu steuern. Die Regeln sind in einer Konfigurationsübersicht mit dem Namen `aws-auth` implementiert. `eksctl` stellt Befehle zum Lesen und Bearbeiten der `aws-auth` Config-Map bereit. Nur Benutzer, die Zugriff auf den Cluster haben, können diese Konfigurationsübersicht bearbeiten.

   `system:masters` ist eine der Standardbenutzergruppen mit Superuser-Rechten für den Cluster. Fügen Sie Ihren Benutzer zu dieser Gruppe hinzu oder erstellen Sie eine Gruppe mit restriktiveren Berechtigungen.

1. Binden Sie die Rolle an Ihren Cluster, indem Sie den folgenden Befehl ausführen. Ersetzen Sie `<IAM-Role-arn>` durch den ARN der IAM-Rolle. `<your_username>` kann ein beliebiger eindeutiger Benutzername sein.

   ```
   eksctl create iamidentitymapping \
   --cluster <cluster-name> \
   --arn <IAM-Role-arn> \
   --group system:masters \
   --username <your-username> \
   --region <region>
   ```

1. Öffnen Sie ein Jupyter-Notebook auf Ihrer SageMaker AI-Instance und führen Sie den folgenden Befehl aus, um sicherzustellen, dass es Zugriff auf den Cluster hat.

   ```
   aws eks --region <region> update-kubeconfig --name <cluster-name>
   kubectl -n kubeflow get all | grep pipeline
   ```

# Verwenden Sie KI-Komponenten SageMaker
<a name="kubernetes-sagemaker-components-tutorials"></a>

In diesem Tutorial führen Sie eine Pipeline mit SageMaker KI-Komponenten für Kubeflow-Pipelines aus, um ein Klassifikationsmodell mithilfe von Kmeans mit dem MNIST-Datensatz auf KI zu trainieren. SageMaker Der Workflow verwendet Kubeflow Pipelines als Orchestrator und SageMaker KI, um jeden Schritt des Workflows auszuführen. Das Beispiel wurde einem vorhandenen [ SageMaker KI-Beispiel entnommen und so geändert, dass es mit SageMaker KI-Komponenten](https://github.com/aws/amazon-sagemaker-examples/blob/8279abfcc78bad091608a4a7135e50a0bd0ec8bb/sagemaker-python-sdk/1P_kmeans_highlevel/kmeans_mnist.ipynb) für Kubeflow-Pipelines funktioniert.

Sie können Ihre Pipeline in Python definieren, indem Sie AWS SDK für Python (Boto3) dann das KFP-Dashboard, die KFP-CLI oder Boto3 verwenden, um Ihre Workflows zu kompilieren, bereitzustellen und auszuführen. Der vollständige Code für das Beispiel für die MNIST-Klassifizierungspipeline ist im [Kubeflow Github-Repository](https://github.com/kubeflow/pipelines/tree/master/samples/contrib/aws-samples/mnist-kmeans-sagemaker#mnist-classification-with-kmeans) verfügbar. Um es zu verwenden, klonen Sie die Python-Dateien auf Ihren Gateway-Knoten.

Weitere Beispiele für [ SageMaker KI Kubeflow](https://github.com/kubeflow/pipelines/tree/master/samples/contrib/aws-samples) Pipelines finden Sie unter. GitHub [Informationen zu den verwendeten Komponenten finden Sie im Pipelines-Repository. KubeFlow GitHub ](https://github.com/kubeflow/pipelines/tree/master/components/aws/sagemaker)

Um das Beispiel für eine Klassifizierungspipeline auszuführen, erstellen Sie eine SageMaker AI IAM-Ausführungsrolle, die Ihrem Trainingsjob die Berechtigung zum Zugriff auf AWS Ressourcen gewährt, und fahren Sie dann mit den Schritten fort, die Ihrer Bereitstellungsoption entsprechen.

## Erstellen Sie eine SageMaker AI-Ausführungsrolle
<a name="create-an-amazonsagemaker-execution-role"></a>

Die `kfp-example-sagemaker-execution-role` IAM-Rolle ist eine Runtime-Rolle, die SageMaker KI-Jobs für den Zugriff auf AWS Ressourcen übernehmen. Im folgenden Befehl erstellen Sie eine IAM-Ausführungsrolle mit dem Namen`kfp-example-sagemaker-execution-role`, fügen zwei verwaltete Richtlinien (AmazonSageMakerFullAccess, AmazonS3FullAccess) hinzu und richten eine Vertrauensbeziehung mit SageMaker KI ein, um SageMaker KI-Jobs Zugriff auf diese Ressourcen zu gewähren. AWS 

Sie geben diese Rolle als Eingabeparameter an, wenn Sie die Pipeline ausführen.

Führen Sie den folgenden -Befehl aus, um die Rolle zu erstellen. Beachten Sie den ARN, der in Ihrer Ausgabe zurückgegeben wird.

```
SAGEMAKER_EXECUTION_ROLE_NAME=kfp-example-sagemaker-execution-role

TRUST="{ \"Version\": \"2012-10-17		 	 	 \", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"sagemaker.amazonaws.com\" }, \"Action\": \"sts:AssumeRole\" } ] }"
aws iam create-role --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --assume-role-policy-document "$TRUST"
aws iam attach-role-policy --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
aws iam attach-role-policy --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess

aws iam get-role --role-name ${SAGEMAKER_EXECUTION_ROLE_NAME} --output text --query 'Role.Arn'
```

## Vollständiger Kubeflow bei der Bereitstellung AWS
<a name="run-pipelines-on-full-kubeflow-deployment"></a>

Folgen Sie den Anweisungen im [SageMaker Training Pipeline-Tutorial zur MNIST-Klassifizierung](https://awslabs.github.io/kubeflow-manifests/docs/amazon-sagemaker-integration/sagemaker-components-for-kubeflow-pipelines/) mit K-Means.

## Bereitstellung eigenständiger Kubeflow-Pipelines
<a name="run-pipelines-on-standalone-kubeflow-pipelines-deployment"></a>

### Datensätze vorbereiten
<a name="prepare-datasets"></a>

Um die Pipelines auszuführen, müssen Sie das Vorverarbeitungsskript für die Datenextraktion in einen Amazon-S3-Bucket hochladen. Dieser Bucket und alle Ressourcen für dieses Beispiel müssen sich in der Region `us-east-1` befinden. Informationen zum Erstellen eines Buckets finden Sie unter [Erstellen eines Buckets](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html).

Führen Sie aus dem `mnist-kmeans-sagemaker` Ordner des Kubeflow-Repositorys, das Sie auf Ihrem Gateway-Knoten geklont haben, den folgenden Befehl aus, um die `kmeans_preprocessing.py` Datei in Ihren Amazon-S3-Bucket hochzuladen. Ändern Sie `<bucket-name>` in den Namen Ihres Amazon-S3-Buckets.

```
aws s3 cp mnist-kmeans-sagemaker/kmeans_preprocessing.py s3://<bucket-name>/mnist_kmeans_example/processing_code/kmeans_preprocessing.py
```

### Kompilieren und implementieren Sie Ihre Pipeline
<a name="compile-and-deploy-your-pipeline"></a>

Nachdem Sie die Pipeline definiert haben, müssen Sie sie in eine Zwischendarstellung kompilieren, bevor Sie sie an den Kubeflow Pipelines Service auf Ihrem Cluster senden. Die Zwischendarstellung ist eine Workflow-Spezifikation in Form einer YAML-Datei, die in eine Datei tar.gz komprimiert ist. Sie benötigen das KFP SDK, um Ihre Pipeline zu kompilieren.

#### Installieren des KFP SDK
<a name="install-kfp-sdk"></a>

Führen Sie in der Befehlszeile Ihres Gateway-Knotens Folgendes aus:

1. Installieren Sie das KFP SDK gemäß den Anweisungen in der [Kubeflow-Pipelines Dokumentation](https://www.kubeflow.org/docs/pipelines/sdk/install-sdk/).

1. Stellen Sie sicher, dass das KFP SDK installiert ist, indem Sie mit dem folgenden Befehl überprüfen:

   ```
   pip show kfp
   ```

1. Stellen Sie wie folgt sicher, dass `dsl-compile` korrekt installiert wurde:

   ```
   which dsl-compile
   ```

#### Kompilieren Ihrer Pipeline
<a name="compile-your-pipeline"></a>

Sie haben drei Möglichkeiten, mit Kubeflow Pipelines zu interagieren: KFP UI, KFP CLI oder das KFP SDK. In den folgenden Abschnitten wird der Arbeitsablauf mit der KFP-Benutzeroberfläche und CLI veranschaulicht.

Führen Sie die folgenden Schritte von Ihrem Gateway-Knoten aus.

1. Ändern Sie Ihre Python-Datei mit Ihrem Amazon-S3-Bucket-Namen und Ihrem IAM-Rollen-ARN.

1. Verwenden Sie den `dsl-compile` Befehl von der Befehlszeile aus, um Ihre Pipeline wie folgt zu kompilieren. Ersetzen Sie `<path-to-python-file>` durch den Pfad zu Ihrer Pipeline und `<path-to-output>` durch den Speicherort, an dem sich Ihre Datei tar.gz befinden soll.

   ```
   dsl-compile --py <path-to-python-file> --output <path-to-output>
   ```

#### Laden Sie die Pipeline mit der KFP-CLI hoch und führen Sie sie aus
<a name="upload-and-run-the-pipeline-using-the-kfp-cli"></a>

Führen Sie die folgenden Schritte von der Befehlszeile Ihres Gateway-Nodes aus. KFP organisiert die Durchläufe Ihrer Pipeline in Form von Experimenten. Sie haben die Möglichkeit, einen Namen für das Experiment anzugeben. Wenn Sie keinen angeben, wird der Durchlauf unter **Standardexperiment** aufgeführt.

1. Laden Sie Ihre Pipeline wie folgt hoch:

   ```
   kfp pipeline upload --pipeline-name <pipeline-name> <path-to-output-tar.gz>
   ```

   Die Ausgabe sollte wie folgt aussehen. Beachten Sie die Pipeline `ID`.

   ```
   Pipeline 29c3ff21-49f5-4dfe-94f6-618c0e2420fe has been submitted
   
   Pipeline Details
   ------------------
   ID           29c3ff21-49f5-4dfe-94f6-618c0e2420fe
   Name         sm-pipeline
   Description
   Uploaded at  2020-04-30T20:22:39+00:00
   ...
   ...
   ```

1. Erstellen Sie einen Lauf mit dem folgenden Befehl. Der KFP-CLI-Run-Befehl unterstützt derzeit nicht die Angabe von Eingabeparametern bei der Erstellung des Laufs. Sie müssen Ihre Parameter in der AWS SDK für Python (Boto3) Pipeline-Datei vor dem Kompilieren aktualisieren. Ersetzen Sie `<experiment-name>` und `<job-name>` durch beliebige Namen. Ersetzen Sie `<pipeline-id>` durch die ID Ihrer eingereichten Pipeline. Ersetzen Sie `<your-role-arn>` durch den ARN von `kfp-example-pod-role`. Ersetzen Sie `<your-bucket-name>` durch den Namen des von Ihnen erstellten Amazon-S3-Buckets. 

   ```
   kfp run submit --experiment-name <experiment-name> --run-name <job-name> --pipeline-id <pipeline-id> role_arn="<your-role-arn>" bucket_name="<your-bucket-name>"
   ```

   Sie können einen Lauf auch direkt einreichen, indem Sie das kompilierte Pipeline-Paket verwenden, das als Ausgabe des `dsl-compile` Befehls erstellt wurde.

   ```
   kfp run submit --experiment-name <experiment-name> --run-name <job-name> --package-file <path-to-output> role_arn="<your-role-arn>" bucket_name="<your-bucket-name>"
   ```

   Die Ausgabe sollte folgendermaßen aussehen:

   ```
   Creating experiment aws.
   Run 95084a2c-f18d-4b77-a9da-eba00bf01e63 is submitted
   +--------------------------------------+--------+----------+---------------------------+
   | run id                               | name   | status   | created at                |
   +======================================+========+==========+===========================+
   | 95084a2c-f18d-4b77-a9da-eba00bf01e63 | sm-job |          | 2020-04-30T20:36:41+00:00 |
   +--------------------------------------+--------+----------+---------------------------+
   ```

1. Navigieren Sie zur Benutzeroberfläche, um den Fortschritt des Auftrags zu überprüfen.

#### Laden Sie die Pipeline mit der KFP-Benutzeroberfläche hoch und führen Sie sie aus
<a name="upload-and-run-the-pipeline-using-the-kfp-ui"></a>

1. Wählen Sie im linken Bereich die Registerkarte **Pipelines** aus. 

1. **Wählen Sie in der oberen rechten Ecke \$1. UploadPipeline** 

1. Geben Sie den Namen und die Beschreibung der Pipeline ein. 

1. Wählen Sie **Datei hochladen** und geben Sie den Pfad zu der Datei tar.gz ein, die Sie mit der CLI oder mit AWS SDK für Python (Boto3) erstellt haben.

1. Wählen Sie im linken Bereich die Registerkarte **Pipelines** aus.

1. Suchen Sie die Pipeline, die Sie erstellt haben.

1. **Wählen Sie \$1. CreateRun**

1. Geben Sie Ihre Eingabeparameter ein.

1. Klicken Sie auf **Ausführen**.

### Vorhersagen ausführen
<a name="running-predictions"></a>

Sobald Ihre Klassifizierungspipeline bereitgestellt ist, können Sie Klassifizierungsvorhersagen für den Endpunkt ausführen, der von der Deploy-Komponente erstellt wurde. Verwenden Sie die KFP-Benutzeroberfläche, um nach den Ausgabeartefakten zu suchen. `sagemaker-deploy-model-endpoint_name` Laden Sie die .tgz-Datei herunter, um den Endpunktnamen zu extrahieren, oder überprüfen Sie die SageMaker AI-Konsole in der Region, die Sie verwendet haben.

#### Konfigurieren Sie die Berechtigungen für die Ausführung von Vorhersagen
<a name="configure-permissions-to-run-predictions"></a>

Wenn Sie Vorhersagen von Ihrem Gateway-Knoten aus ausführen möchten, überspringen Sie diesen Abschnitt.

**Um Vorhersagen auf einem anderen Computer auszuführen, weisen Sie die `sagemaker:InvokeEndpoint` entsprechende Berechtigung der IAM-Rolle zu, die vom Client-Computer verwendet wird.**

1. Führen Sie auf Ihrem Gateway-Knoten den folgenden Befehl aus, um eine IAM-Richtliniendatei zu erstellen:

   ```
   cat <<EoF > ./sagemaker-invoke.json
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sagemaker:InvokeEndpoint"
               ],
               "Resource": "*"
           }
       ]
   }
   EoF
   ```

1. Fügen Sie die Richtlinie der IAM-Rolle des Client-Knotens an.

   Führen Sie den folgenden Befehl aus. Ersetzen Sie `<your-instance-IAM-role>` durch den Namen der IAM-Rolle. Ersetzen Sie `<path-to-sagemaker-invoke-json>` durch den Pfad zu der von Ihnen erstellten Richtliniendatei.

   ```
   aws iam put-role-policy --role-name <your-instance-IAM-role> --policy-name sagemaker-invoke-for-worker --policy-document file://<path-to-sagemaker-invoke-json>
   ```

#### Vorhersagen ausführen
<a name="run-predictions"></a>

1. Erstellen Sie auf Ihrem Client-Computer eine AWS SDK für Python (Boto3) Datei `mnist-predictions.py` mit dem folgenden Inhalt. Ersetzen Sie die `ENDPOINT_NAME` Variable. Das Skript lädt den MNIST-Datensatz, erstellt aus diesen Ziffern eine CSV-Datei, sendet die CSV-Datei dann zur Vorhersage an den Endpunkt und druckt die Ergebnisse aus.

   ```
   import boto3
   import gzip
   import io
   import json
   import numpy
   import pickle
   
   ENDPOINT_NAME='<endpoint-name>'
   region = boto3.Session().region_name
   
   # S3 bucket where the original mnist data is downloaded and stored
   downloaded_data_bucket = f"jumpstart-cache-prod-{region}"
   downloaded_data_prefix = "1p-notebooks-datasets/mnist"
   
   # Download the dataset
   s3 = boto3.client("s3")
   s3.download_file(downloaded_data_bucket, f"{downloaded_data_prefix}/mnist.pkl.gz", "mnist.pkl.gz")
   
   # Load the dataset
   with gzip.open('mnist.pkl.gz', 'rb') as f:
       train_set, valid_set, test_set = pickle.load(f, encoding='latin1')
   
   # Simple function to create a csv from our numpy array
   def np2csv(arr):
       csv = io.BytesIO()
       numpy.savetxt(csv, arr, delimiter=',', fmt='%g')
       return csv.getvalue().decode().rstrip()
   
   runtime = boto3.Session(region).client('sagemaker-runtime')
   
   payload = np2csv(train_set[0][30:31])
   
   response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
                                      ContentType='text/csv',
                                      Body=payload)
   result = json.loads(response['Body'].read().decode())
   print(result)
   ```

1. Führen Sie die AWS SDK für Python (Boto3) Datei wie folgt aus:

   ```
   python mnist-predictions.py
   ```

### Ergebnisse und Protokolle anzeigen
<a name="view-results-and-logs"></a>

Wenn die Pipeline läuft, können Sie eine beliebige Komponente auswählen, um Ausführungsdetails wie Eingaben und Ausgaben zu überprüfen. Dies listet die Namen der erstellten Ressourcen auf.

Wenn die KFP-Anfrage erfolgreich verarbeitet und ein SageMaker AI-Job erstellt wurde, enthalten die Komponentenprotokolle in der KFP-Benutzeroberfläche einen Link zu dem in SageMaker AI erstellten Job. Die CloudWatch Protokolle werden auch bereitgestellt, wenn der Job erfolgreich erstellt wurde. 

Wenn Sie zu viele Pipeline-Aufträge auf demselben Cluster ausführen, wird möglicherweise eine Fehlermeldung angezeigt, die darauf hinweist, dass nicht genügend Pods verfügbar sind. Um dieses Problem zu beheben, melden Sie sich bei Ihrem Gateway-Knoten an und löschen Sie die Pods, die von den Pipelines erstellt wurden, die Sie nicht verwenden:

```
kubectl get pods -n kubeflow
kubectl delete pods -n kubeflow <name-of-pipeline-pod>
```

### Bereinigen
<a name="cleanup"></a>

Wenn Sie mit Ihrer Pipeline fertig sind, müssen Sie Ihre Ressourcen bereinigen.

1. Beenden Sie im KFP-Dashboard Ihre Pipeline-Läufe, falls sie nicht ordnungsgemäß beendet werden, indem Sie **Terminieren** wählen.

1. Wenn die Option **Terminieren** nicht funktioniert, melden Sie sich bei Ihrem Gateway-Knoten an und beenden Sie manuell alle Pods, die durch Ihre Pipeline-Ausführung erstellt wurden, wie folgt: 

   ```
   kubectl get pods -n kubeflow
   kubectl delete pods -n kubeflow <name-of-pipeline-pod>
   ```

1. Melden Sie sich mit Ihrem AWS Konto beim SageMaker AI-Service an. Beenden Sie manuell alle Trainings-, Batch-Transform- und HPO-Aufträge. Löschen Sie Modelle, Daten-Buckets und Endpunkte, um zusätzliche Kosten zu vermeiden. Durch das Beenden der Pipeline-Läufe werden die Jobs in SageMaker AI nicht gestoppt.

# SageMaker Jobs im Notizbuch
<a name="notebook-auto-run"></a>

Sie können Amazon SageMaker AI verwenden, um interaktiv Modelle für maschinelles Lernen von Ihrem Jupyter-Notebook aus in jeder Umgebung zu erstellen, zu trainieren und bereitzustellen. JupyterLab Es gibt jedoch verschiedene Szenarien, in denen Sie Ihr Notebook möglicherweise als nicht interaktiven, geplanten Auftrag ausführen möchten. Möglicherweise möchten Sie beispielsweise regelmäßige Auditberichte erstellen, in denen alle Trainingsaufgaben analysiert werden, die über einen bestimmten Zeitraum ausgeführt wurden, und in denen der geschäftliche Nutzen der Implementierung dieser Modelle in der Produktion analysiert wird. Oder Sie möchten einen Feature-Engineering-Auftrag skalieren, nachdem Sie die Datentransformationslogik an einer kleinen Teilmenge von Daten getestet haben. Andere häufige Anwendungsfälle sind:
+ Planung von Aufträgen für die Überwachung von Modellabweichungen
+ Erkundung des Parameterraums für bessere Modelle

In diesen Szenarien können Sie SageMaker Notebook-Jobs verwenden, um einen nicht interaktiven Job zu erstellen (der von SageMaker KI als zugrunde liegender Trainingsjob ausgeführt wird), der entweder bei Bedarf oder nach einem Zeitplan ausgeführt wird. SageMaker Notebook Jobs bietet eine intuitive Benutzeroberfläche, über die Sie Ihre Jobs direkt planen können, JupyterLab indem Sie das Notizbuch-Jobs-Widget (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/icons/notebook-schedule.png)) in Ihrem Notizbuch auswählen. Sie können Ihre Jobs auch mit dem SageMaker AI Python SDK planen, das die Flexibilität bietet, mehrere Notebook-Jobs in einem Pipeline-Workflow zu planen. Sie können mehrere Notebooks parallel ausführen und Zellen in Ihren Notebooks parametrisieren, um die Eingabeparameter anzupassen.

Diese Funktion nutzt die Dienste Amazon EventBridge, SageMaker Training und Pipelines und kann in Ihrem Jupyter-Notebook in einer der folgenden Umgebungen verwendet werden:
+ Studio-, Studio Lab-, Studio Classic- oder Notebook-Instancen
+ Lokales Setup, z. B. Ihr lokaler Computer, auf dem Sie ausführen JupyterLab

**Voraussetzungen**

Um ein Notebook-Projekt zu planen, stellen Sie sicher, dass die folgenden Kriterien erfüllt sind:
+ Stellen Sie sicher, dass Ihr Jupyter Notebook und alle Initialisierungs- oder Startskripts in Bezug auf Code und Softwarepakete eigenständig sind. Andernfalls kann es bei Ihrem nicht interaktiven Auftrag zu Fehlern kommen.
+ Überprüfen Sie [Einschränkungen und Überlegungen](notebook-auto-run-constraints.md), ob Sie Ihr Jupyter Notebook, die Netzwerkeinstellungen und die Container-Einstellungen richtig konfiguriert haben.
+ Stellen Sie sicher, dass Ihr Notebook auf benötigte externe Ressourcen wie Amazon EMR-Cluster zugreifen kann.
+ Wenn Sie Notebook-Aufträge in einem lokalen Jupyter Notebook einrichten, schließen Sie die Installation ab. Detaillierte Anweisungen finden Sie unter [Installationshandbuch](scheduled-notebook-installation.md). 
+ Wenn Sie eine Verbindung zu einem Amazon EMR-Cluster in Ihrem Notebook herstellen und Ihren Amazon EMR-Verbindungsbefehl parametrisieren möchten, müssen Sie eine Problemumgehung anwenden, indem Sie Umgebungsvariablen verwenden, um Parameter zu übergeben. Details hierzu finden Sie unter [Stellen Sie von Ihrem Studio-Notebook aus eine Connect zu einem Amazon-EMR-Cluster her](scheduled-notebook-connect-emr.md).
+ Wenn Sie mithilfe der Kerberos-, LDAP- oder HTTP Basic Auth-Authentifizierung eine Verbindung zu einem Amazon EMR-Cluster herstellen, müssen Sie die verwenden, um Ihre Sicherheitsanmeldeinformationen AWS Secrets Manager an Ihren Amazon EMR-Verbindungsbefehl zu übergeben. Details hierzu finden Sie unter [Stellen Sie von Ihrem Studio-Notebook aus eine Connect zu einem Amazon-EMR-Cluster her](scheduled-notebook-connect-emr.md).
+ (optional) Wenn Sie möchten, dass die Benutzeroberfläche ein Skript vorinstalliert, das beim Start des Notebooks ausgeführt wird, muss Ihr Administrator es mit einer Lifecycle Configuration (LCC) installieren. Informationen zur Verwendung eines LCC-Skripts finden Sie unter [Anpassen einer Notebook-Instance mithilfe eines Lifecycle-Konfigurationsskripts](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html).

# Installationshandbuch
<a name="scheduled-notebook-installation"></a>

Im Folgenden finden Sie Informationen darüber, was Sie installieren müssen, um Notebook Jobs in Ihrer Umgebung verwenden zu können. JupyterLab 

**Für Amazon SageMaker Studio und Amazon SageMaker Studio Lab**

Wenn sich Ihr Notebook in Amazon SageMaker Studio oder Amazon SageMaker Studio Lab befindet, müssen Sie keine zusätzliche Installation durchführen — SageMaker Notebook Jobs ist in die Plattform integriert. Informationen zum Einrichten der erforderlichen Berechtigungen für Studio finden Sie unter [Einrichten von Richtlinien und Berechtigungen für Studio](scheduled-notebook-policies-studio.md).

**Für lokale Jupyter Notebooks**

Wenn Sie SageMaker Notebook Jobs für Ihre lokale JupyterLab Umgebung verwenden möchten, müssen Sie eine zusätzliche Installation durchführen.

Gehen Sie wie folgt vor, um SageMaker Notebook Jobs zu installieren:

1. Installieren Sie Python 3. Einzelheiten finden Sie unter [Installation von Python 3 und Python-Paketen](https://www.codecademy.com/article/install-python3).

1. Installieren Sie JupyterLab Version 4 oder höher. Einzelheiten finden Sie in der [JupyterLab SDK-Dokumentation](https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html).

1. Installieren Sie die AWS CLI. Weitere Informationen finden Sie unter [AWS CLI Installieren oder Aktualisieren der neuesten Version von ](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

1. Installieren Sie zwei Berechtigungssätze. Der IAM-Benutzer benötigt Berechtigungen, um Jobs an SageMaker AI zu senden. Nach dem Absenden nimmt der Notebook-Job selbst eine IAM-Rolle an, die je nach Auftragsaufgabe Berechtigungen für den Zugriff auf Ressourcen benötigt.

   1. Wenn Sie noch keinen IAM-Benutzer erstellt haben, finden Sie weitere Informationen unter [Erstellen eines IAM-Benutzers in Ihrem AWS -Konto](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html).

   1. Wenn Sie Ihre Notebook-Auftragsrolle noch nicht erstellt haben, finden Sie Informationen unter [Erstellen einer Rolle zum Delegieren von Berechtigungen an einen IAM-Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).

   1. Fügen Sie Ihrem Benutzer und Ihrer Rolle die erforderlichen Berechtigungen und Vertrauensrichtlinien bei. step-by-stepAnweisungen und Einzelheiten zu Berechtigungen finden Sie unter. [Installieren Sie Richtlinien und Berechtigungen für lokale Jupyter-Umgebungen](scheduled-notebook-policies-other.md)

1. Generieren Sie AWS Anmeldeinformationen für Ihren neu erstellten IAM-Benutzer und speichern Sie sie in der Anmeldeinformationsdatei (\$1/.aws/credentials) Ihrer Umgebung. JupyterLab Sie können dies mit dem CLI-Befehl `aws configure` tun. Eine Anleitung finden Sie im Abschnitt *Konfigurationseinstellungen mithilfe von Befehlen* einrichten und anzeigen unter [Einstellungen für die Konfiguration und Anmeldeinformationsdatei](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html).

1. (optional) Standardmäßig verwendet die Scheduler-Erweiterung ein vorgefertigtes SageMaker AI-Docker-Image mit Python 2.0. Jeder nicht standardmäßige Kernel, der im Notebook verwendet wird, sollte im Container installiert werden. Wenn Sie Ihr Notebook in einem Container- oder Docker-Image ausführen möchten, müssen Sie ein Amazon Elastic Container Registry (Amazon ECR)-Image erstellen. Informationen dazu, wie Sie ein Docker-Image auf ein Amazon ECR übertragen können, finden Sie unter [Verschieben eines Docker-Image](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html).

1. Fügen Sie die JupyterLab Erweiterung für SageMaker Notebook-Jobs hinzu. Sie können es mit dem folgenden Befehl zu Ihrer JupyterLab Umgebung hinzufügen:`pip install amazon_sagemaker_jupyter_scheduler`. Möglicherweise müssen Sie Ihren Jupyter-Server mit dem folgenden Befehl neu starten: `sudo systemctl restart jupyter-server`.

1. Beginne JupyterLab mit dem Befehl:`jupyter lab`.

1. Stellen Sie sicher, dass das Widget Notebook-Aufträge (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/icons/notebook-schedule.png)) in der Taskleiste Ihres Jupyter Notebooks angezeigt wird.

# Einrichten von Richtlinien und Berechtigungen für Studio
<a name="scheduled-notebook-policies-studio"></a>

Bevor Sie Ihre erste Notebook-Ausführung planen, müssen Sie die entsprechenden Richtlinien und Berechtigungen installieren. Im Folgenden finden Sie Anweisungen zum Einrichten der folgenden Berechtigungen:
+ Rolle bei der Ausführung von einem Auftrag, Vertrauensbeziehungen
+ Zusätzliche IAM-Berechtigungen, die mit der Rolle „Auftragsausführung“ verknüpft sind
+ (optional) Die AWS KMS Berechtigungsrichtlinie zur Verwendung eines benutzerdefinierten KMS-Schlüssels

**Wichtig**  
Wenn Ihr AWS Konto zu einer Organisation gehört, für die Service Control Policies (SCP) gelten, stellen Ihre effektiven Berechtigungen die logische Schnittmenge zwischen dem, was nach Ihren IAM-Rollen- und Benutzerrichtlinien zulässig ist, SCPs und dem, was nach Ihren IAM-Rollen- und Benutzerrichtlinien zulässig ist, dar. Wenn der SCP Ihrer Organisation beispielsweise festlegt, dass Sie nur auf Ressourcen in `us-east-1` und `us-west-1` zugreifen können, und Ihre Richtlinien Ihnen nur den Zugriff auf Ressourcen in `us-west-1` und `us-west-2` gestatten, dann können Sie letztlich nur auf Ressourcen in `us-west-1` zugreifen. Wenn Sie alle in Ihren Rollen- und Benutzerrichtlinien zulässigen Berechtigungen ausüben möchten, SCPs sollte Ihre Organisation dieselben Berechtigungen gewähren wie Ihren eigenen IAM-Benutzer- und Rollenrichtlinien. Weitere Informationen darüber, wie Sie Ihre erlaubten Anfragen ermitteln können, finden Sie unter [Ermitteln, ob eine Anforderung innerhalb eines Kontos zugelassen oder verweigert wird](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow).

**Vertrauensstellungen**

Führen Sie die folgenden Schritte aus, um die Vertrauensstellungen zu ändern:

1. Öffnen Sie die [IAM-Konsole](https://console.aws.amazon.com/iam/).

1. Wählen Sie im linken Navigationsbereich **Rollen** aus.

1. Suchen Sie die Auftragsausführungsrolle für Ihren Notebook-Auftrag und wählen Sie den Rollennamen aus. 

1. Wählen Sie die Registerkarte **Trust relationships (Vertrauensstellungen)**.

1. Wählen Sie **Vertrauensrichtlinie bearbeiten** aus.

1. Kopieren Sie die folgende Richtlinie und fügen Sie sie ein:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "sagemaker.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "events.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Wählen Sie **Richtlinie aktualisieren**.

## Zusätzliche IAM-Berechtigungen
<a name="scheduled-notebook-policies-add"></a>

In folgenden Situationen müssen Sie möglicherweise zusätzliche IAM-Berechtigungen angeben:
+ Ihre Rollen für die Ausführung und den Notebook-Auftrag in Studio unterscheiden sich
+ Sie müssen über einen S3-VPC-Endpunkt auf Amazon S3-Ressourcen zugreifen
+ Sie möchten einen benutzerdefinierten KMS-Schlüssel verwenden, um Ihre Ein- und Ausgabe von Amazon-S3-Buckets zu verschlüsseln

Die folgende Erläuterung enthält die Richtlinien, die Sie für jeden Fall benötigen.

### Erforderliche Berechtigungen, wenn sich Ihre Rollen in Studio Execution und Notebook-Auftrag unterscheiden
<a name="scheduled-notebook-policies-add-diffrole"></a>

Das folgende JSON-Snippet ist ein Beispiel für eine Richtlinie, die Sie zu den Rollen Studio Execution und Notebook-Auftrag hinzufügen sollten, wenn Sie die Studio-Ausführungsrolle nicht als Notebook-Auftragsrolle verwenden. Überprüfen und ändern Sie diese Richtlinie, wenn Sie die Rechte weiter einschränken müssen.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"iam:PassRole",
         "Resource":"arn:aws:iam::*:role/*",
         "Condition":{
            "StringLike":{
               "iam:PassedToService":[
                  "sagemaker.amazonaws.com",
                  "events.amazonaws.com"
               ]
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "events:TagResource",
            "events:DeleteRule",
            "events:PutTargets",
            "events:DescribeRule",
            "events:PutRule",
            "events:RemoveTargets",
            "events:DisableRule",
            "events:EnableRule"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "aws:ResourceTag/sagemaker:is-scheduling-notebook-job":"true"
            }
         }
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:CreateBucket",
            "s3:PutBucketVersioning",
            "s3:PutEncryptionConfiguration"
         ],
         "Resource":"arn:aws:s3:::sagemaker-automated-execution-*"
      },
      {
            "Sid": "S3DriverAccess",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::sagemakerheadlessexecution-*"
            ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:ListTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:user-profile/*",
            "arn:aws:sagemaker:*:*:space/*",
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "sagemaker:AddTags"
         ],
         "Resource":[
            "arn:aws:sagemaker:*:*:training-job/*",
            "arn:aws:sagemaker:*:*:pipeline/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:DescribeDhcpOptions",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DescribeRouteTables",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcEndpoints",
            "ec2:DescribeVpcs",
            "ecr:BatchCheckLayerAvailability",
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer",
            "ecr:GetAuthorizationToken",
            "s3:ListBucket",
            "s3:GetBucketLocation",
            "s3:GetEncryptionConfiguration",
            "s3:PutObject",
            "s3:DeleteObject",
            "s3:GetObject",
            "sagemaker:DescribeApp",
            "sagemaker:DescribeDomain",
            "sagemaker:DescribeUserProfile",
            "sagemaker:DescribeSpace",
            "sagemaker:DescribeStudioLifecycleConfig",
            "sagemaker:DescribeImageVersion",
            "sagemaker:DescribeAppImageConfig",
            "sagemaker:CreateTrainingJob",
            "sagemaker:DescribeTrainingJob",
            "sagemaker:StopTrainingJob",
            "sagemaker:Search",
            "sagemaker:CreatePipeline",
            "sagemaker:DescribePipeline",
            "sagemaker:DeletePipeline",
            "sagemaker:StartPipelineExecution"
         ],
         "Resource":"*"
      }
   ]
}
```

------

### Für den Zugriff auf Amazon S3-Ressourcen über ein S3 VPC-Endpunkt erforderliche Berechtigungen
<a name="scheduled-notebook-policies-add-vpc"></a>

Wenn Sie SageMaker Studio im privaten VPC-Modus ausführen und über den S3-VPC-Endpunkt auf S3 zugreifen, können Sie der VPC-Endpunktrichtlinie Berechtigungen hinzufügen, um zu steuern, auf welche S3-Ressourcen über den VPC-Endpunkt zugegriffen werden kann. Fügen Sie Ihrer VPC-Endpunktrichtlinie die folgenden Berechtigungen hinzu. Sie können die Richtlinie ändern, wenn Sie die Berechtigungen weiter einschränken möchten. Sie können beispielsweise eine engere Spezifikation für das Feld `Principal` angeben.

```
{
    "Sid": "S3DriverAccess",
    "Effect": "Allow",
    "Principal": "*",
    "Action": [
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket"
    ],
    "Resource": "arn:aws:s3:::sagemakerheadlessexecution-*"
}
```

Einzelheiten zum Einrichten einer S3-VPC-Endpunktrichtlinie finden Sie unter [VPC-Endpunktrichtlinie bearbeiten](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#edit-vpc-endpoint-policy-s3).

### Für die Verwendung eines benutzerdefinierten KMS-Schlüssels sind Berechtigungen erforderlich (optional)
<a name="scheduled-notebook-policies-add-kms"></a>

Standardmäßig werden die Eingabe- und Ausgabe-Buckets von Amazon S3 mit serverseitiger Verschlüsselung verschlüsselt. Sie können jedoch einen benutzerdefinierten KMS-Schlüssel angeben, um Ihre Daten im Ausgabe-Bucket von Amazon S3 und das an den Notebook-Auftrag angehängte Speichervolume zu verschlüsseln.

Wenn Sie einen benutzerdefinierten KMS-Schlüssel verwenden möchten, fügen Sie die folgende Richtlinie bei und geben Sie Ihren eigenen KMS-Schlüssel-ARN an.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
         "Effect":"Allow",
         "Action":[
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey",
            "kms:CreateGrant"
         ],
         "Resource":"arn:aws:kms:us-east-1:111122223333:key/key-id"
      }
   ]
}
```

------

# Installieren Sie Richtlinien und Berechtigungen für lokale Jupyter-Umgebungen
<a name="scheduled-notebook-policies-other"></a>

Sie müssen die erforderlichen Berechtigungen und Richtlinien einrichten, um Notebook-Aufträge in einer lokalen Jupyter-Umgebung zu planen. Der IAM-Benutzer benötigt Berechtigungen, um Jobs an SageMaker AI zu senden, und die IAM-Rolle, die der Notebook-Job selbst annimmt, benötigt je nach Auftragsaufgaben Berechtigungen für den Zugriff auf Ressourcen. Im Folgenden finden Sie Anweisungen zum Einrichten der erforderlichen Berechtigungen und Richtlinien.

Sie müssen zwei Berechtigungssätze installieren. Das folgende Diagramm zeigt die Berechtigungsstruktur, mit der Sie Notebook-Jobs in einer lokalen Jupyter-Umgebung planen können. Der IAM-Benutzer muss IAM-Berechtigungen einrichten, um Jobs an KI senden zu können. SageMaker Sobald der Benutzer den Notebook-Auftrag übermittelt hat, nimmt der Auftrag selbst eine IAM-Rolle an, die je nach Auftragsaufgabe über Berechtigungen für den Zugriff auf Ressourcen verfügt.

![\[\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/notebook-jobs-permissions.png)


Die folgenden Abschnitte helfen Ihnen bei der Installation der erforderlichen Richtlinien und Berechtigungen sowohl für den IAM-Benutzer als auch für die Auftragausführungsrolle.

## IAM-Benutzerberechtigungen
<a name="scheduled-notebook-policies-other-user"></a>

**Berechtigungen zum Einreichen von Jobs an KI SageMaker **

Führen Sie die folgenden Schritte aus, um Berechtigungen zum Abrufen von Aufträgen hinzuzufügen:

1. Öffnen Sie die [IAM-Konsole](https://console.aws.amazon.com/iam/).

1. Wählen Sie im linken Bereich **Benutzer**.

1. Suchen Sie den IAM-Benutzer für Ihren Notebook-Auftrag und wählen Sie den Benutzernamen aus.

1. Wählen Sie **Berechtigungen hinzufügen** und dann **Inline-Richtlinie erstellen** aus dem Dropdown-Menü aus.

1. Wählen Sie den Tab **JSON**.

1. Kopieren Sie die folgende Richtlinie und fügen Sie sie ein:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "EventBridgeSchedule",
               "Effect": "Allow",
               "Action": [
                   "events:TagResource",
                   "events:DeleteRule",
                   "events:PutTargets",
                   "events:DescribeRule",
                   "events:EnableRule",
                   "events:PutRule",
                   "events:RemoveTargets",
                   "events:DisableRule"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                   }
               }
           },
           {
               "Sid": "IAMPassrole",
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*",
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": [
                           "sagemaker.amazonaws.com",
                           "events.amazonaws.com"
                       ]
                   }
               }
           },
           {
               "Sid": "IAMListRoles",
               "Effect": "Allow",
               "Action": "iam:ListRoles",
               "Resource": "*"
           },
           {
               "Sid": "S3ArtifactsAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:PutEncryptionConfiguration",
                   "s3:CreateBucket",
                   "s3:PutBucketVersioning",
                   "s3:ListBucket",
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:GetEncryptionConfiguration",
                   "s3:DeleteObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemaker-automated-execution-*"
               ]
           },
           {
               "Sid": "S3DriverAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemakerheadlessexecution-*"
               ]
           },
           {
               "Sid": "SagemakerJobs",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:DescribeTrainingJob",
                   "sagemaker:StopTrainingJob",
                   "sagemaker:DescribePipeline",
                   "sagemaker:CreateTrainingJob",
                   "sagemaker:DeletePipeline",
                   "sagemaker:CreatePipeline"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                   }
               }
           },
           {
               "Sid": "AllowSearch",
               "Effect": "Allow",
               "Action": "sagemaker:Search",
               "Resource": "*"
           },
           {
               "Sid": "SagemakerTags",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:ListTags",
                   "sagemaker:AddTags"
               ],
               "Resource": [
                   "arn:aws:sagemaker:*:*:pipeline/*",
                   "arn:aws:sagemaker:*:*:space/*",
                   "arn:aws:sagemaker:*:*:training-job/*",
                   "arn:aws:sagemaker:*:*:user-profile/*"
               ]
           },
           {
               "Sid": "ECRImage",
               "Effect": "Allow",
               "Action": [
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchGetImage"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

**AWS KMS Berechtigungsrichtlinie (optional)**

Standardmäßig werden die Amazon S3-Eingabe- und Ausgabe-Buckets mit serverseitiger Verschlüsselung verschlüsselt. Sie können jedoch einen benutzerdefinierten KMS-Schlüssel angeben, um Ihre Daten im Amazon S3-Ausgabe-Bucket und das an den Notebook-Auftrag angehängte Speichervolume zu verschlüsseln.

Wenn Sie einen benutzerdefinierten KMS-Schlüssel verwenden möchten, wiederholen Sie die vorherigen Anweisungen, fügen Sie die folgende Richtlinie hinzu und geben Sie Ihren eigenen KMS-Schlüssel-ARN an.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
         "Effect":"Allow",
         "Action":[
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey",
            "kms:CreateGrant"
         ],
         "Resource":"arn:aws:kms:us-east-1:111122223333:key/key-id"
      }
   ]
}
```

------

## Berechtigungen der Auftragsausführungsrolle
<a name="scheduled-notebook-policies-other-job"></a>

**Vertrauensstellungen**

Führen Sie die folgenden Schritte aus, um die Vertrauensbeziehungen der Rolle für die Auftragsausführung zu ändern:

1. Öffnen Sie die [IAM-Konsole](https://console.aws.amazon.com/iam/).

1. Wählen Sie im linken Navigationsbereich **Rollen** aus.

1. Suchen Sie die Auftragsausführungsrolle für Ihren Notebook-Auftrag und wählen Sie den Rollennamen aus.

1. Wählen Sie die Registerkarte **Trust relationships (Vertrauensstellungen)**.

1. Wählen Sie **Vertrauensrichtlinie bearbeiten** aus.

1. Kopieren Sie die folgende Richtlinie und fügen Sie sie ein:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "sagemaker.amazonaws.com",
                       "events.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

**Zusätzliche Berechtigungen**

Nach dem Absenden benötigt der Notebook-Auftrag Berechtigungen für den Zugriff auf Ressourcen. Die folgenden Anweisungen zeigen Ihnen, wie Sie einen Mindestsatz an Berechtigungen hinzufügen. Fügen Sie bei Bedarf weitere Berechtigungen hinzu, die den Anforderungen Ihres Notebook-Auftrags entsprechen. Führen Sie zum Hinzufügen von Berechtigungen für Ihre Auftragsausführungsrolle die folgenden Schritte aus:

1. Öffnen Sie die [IAM-Konsole](https://console.aws.amazon.com/iam/).

1. Wählen Sie im linken Navigationsbereich **Rollen** aus.

1. Suchen Sie die Jobausführungsrolle für Ihren Notebook-Auftrag und wählen Sie den Rollennamen aus.

1. Wählen Sie **Berechtigungen hinzufügen** und dann **Inline-Richtlinie erstellen** aus dem Dropdown-Menü aus.

1. Wählen Sie den Tab **JSON**.

1. Kopieren Sie die folgende Richtlinie und fügen Sie sie ein:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PassroleForJobCreation",
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/*",
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": "sagemaker.amazonaws.com"
                   }
               }
           },
           {
               "Sid": "S3ForStoringArtifacts",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:ListBucket",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::sagemaker-automated-execution-*"
           },
           {
               "Sid": "S3DriverAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::sagemakerheadlessexecution-*"
               ]
           },
           {
               "Sid": "SagemakerJobs",
               "Effect": "Allow",
               "Action": [
                   "sagemaker:StartPipelineExecution",
                   "sagemaker:CreateTrainingJob"
               ],
               "Resource": "*"
           },
           {
               "Sid": "ECRImage",
               "Effect": "Allow",
               "Action": [
                   "ecr:GetDownloadUrlForLayer",
                   "ecr:BatchGetImage",
                   "ecr:GetAuthorizationToken",
                   "ecr:BatchCheckLayerAvailability"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Fügen Sie Berechtigungen für andere Ressourcen hinzu, auf die Ihr Notebook-Auftrag zugreift.

1. Wählen Sie **Richtlinie prüfen**.

1. Geben Sie einen Namen für Ihre Richtlinie ein.

1. Wählen Sie **Richtlinie erstellen** aus.

# Wo können Sie einen Notebook-Job erstellen
<a name="create-notebook-auto-run"></a>

Wenn Sie einen Notebook-Auftrag erstellen möchten, haben Sie mehrere Optionen. Im Folgenden finden Sie die SageMaker KI-Optionen, mit denen Sie einen Notebook-Job erstellen können.

Sie können einen Job in Ihrem JupyterLab Notizbuch in der Studio-Benutzeroberfläche erstellen, oder Sie können programmgesteuert einen Job mit dem SageMaker Python-SDK erstellen:
+ Wenn Sie Ihren Notebook-Job in der Studio-Benutzeroberfläche erstellen, geben Sie Details zu Image und Kernel, Sicherheitskonfigurationen und allen benutzerdefinierten Variablen oder Skripten an, und Ihr Job ist geplant. Einzelheiten dazu, wie Sie Ihren Job mithilfe von SageMaker Notebook-Jobs planen, finden Sie unter. [Erstellen eines Notebook-Auftrags in Studio](create-notebook-auto-run-studio.md)
+ Um einen Notebook-Job mit dem SageMaker Python-SDK zu erstellen, erstellen Sie eine Pipeline mit einem Notebook-Job-Schritt und initiieren einen On-Demand-Lauf oder verwenden optional die Pipeline-Planungsfunktion, um future zu planen. Das SageMaker SDK bietet Ihnen die Flexibilität, Ihre Pipeline anzupassen — Sie können Ihre Pipeline auf einen Workflow mit mehreren Notebook-Jobschritten erweitern. Da Sie sowohl einen SageMaker Notebook-Job-Schritt als auch eine Pipeline erstellen, können Sie Ihren Pipeline-Ausführungsstatus im Job-Dashboard von SageMaker Notebook Jobs verfolgen und auch Ihr Pipeline-Diagramm in Studio anzeigen. Einzelheiten zur Planung Ihres Jobs mit dem SageMaker Python-SDK und Links zu Beispiel-Notebooks finden Sie unter[Notebook-Job mit SageMaker AI Python SDK erstellen — Beispiel](create-notebook-auto-run-sdk.md).

# Notebook-Job mit SageMaker AI Python SDK erstellen — Beispiel
<a name="create-notebook-auto-run-sdk"></a>

Um ein eigenständiges Notebook mit dem SageMaker Python-SDK auszuführen, müssen Sie einen Notebook-Job-Schritt erstellen, ihn an eine Pipeline anhängen und die von Pipelines bereitgestellten Dienstprogramme verwenden, um Ihren Job bei Bedarf auszuführen oder optional einen oder mehrere future Jobs zu planen. In den folgenden Abschnitten werden die grundlegenden Schritte zur Erstellung eines On-Demand-Jobs oder eines geplanten Notebook-Jobs und zur Nachverfolgung der Ausführung beschrieben. Beachten Sie außerdem die folgenden Hinweise, wenn Sie Parameter an Ihren Notebook-Auftrag übergeben oder in Ihrem Notebook eine Verbindung zu Amazon EMR herstellen müssen. In diesen Fällen sind zusätzliche Vorbereitungen für Ihr Jupyter-Notebook erforderlich. Sie können auch Standardwerte für eine Teilmenge der Argumente von anwenden, `NotebookJobStep` sodass Sie sie nicht jedes Mal angeben müssen, wenn Sie einen Notebook-Job-Schritt erstellen.

Beispielnotizbücher, die zeigen, wie Notizbuchjobs mit dem SageMaker AI Python SDK geplant werden, finden Sie unter [Notizbuch-Beispielnotizbücher für Notizbücher](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/notebook-job-step).

**Topics**
+ [Schritte zum Erstellen eines Notebook-Auftrags](#create-notebook-auto-run-overall)
+ [Sehen Sie sich Ihre Notebook-Jobs im Studio-UI-Dashboard an](#create-notebook-auto-run-dash)
+ [Sehen Sie sich Ihr Pipeline-Diagramm in Studio an](#create-notebook-auto-run-graph)
+ [Parameter an Ihr Notebook übergeben](#create-notebook-auto-run-passparam)
+ [Herstellen einer Verbindung zu einem Amazon-EMR-Cluster in Ihrem Eingabe-Notebook](#create-notebook-auto-run-emr)
+ [Richten Sie Standardoptionen ein](#create-notebook-auto-run-intdefaults)

## Schritte zum Erstellen eines Notebook-Auftrags
<a name="create-notebook-auto-run-overall"></a>

Sie können entweder einen Notebookauftrag erstellen, der sofort oder nach einem Zeitplan ausgeführt wird. In der folgenden Anleitung werden beide Methoden beschrieben.

**Führen Sie die folgenden grundlegenden Schritte aus, um Ihren Notebook-Auftrag zu planen:**

1. Erstellen Sie eine `NotebookJobStep`-Instance. Einzelheiten zu `NotebookJobStep` Parametern finden Sie unter [sagemaker.workflow.steps. NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep). Sie können mindestens die folgenden Argumente angeben, wie im folgenden Codeausschnitt gezeigt:
**Wichtig**  
Wenn Sie Ihren Notebook-Job mit dem SageMaker Python-SDK planen, können Sie nur bestimmte Images angeben, um Ihren Notebook-Job auszuführen. Weitere Informationen finden Sie unter [Bildeinschränkungen für SageMaker AI Python SDK-Notebook-Jobs](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk).

   ```
   notebook_job_step = NotebookJobStep(
       input_notebook=input-notebook,
       image_uri=image-uri,
       kernel_name=kernel-name
   )
   ```

1. Erstellen Sie eine Pipeline mit Ihrem `NotebookJobStep` in einem einzigen Schritt, wie im folgenden Ausschnitt gezeigt:

   ```
   pipeline = Pipeline(
       name=pipeline-name,
       steps=[notebook_job_step],
       sagemaker_session=sagemaker-session,
   )
   ```

1. Führen Sie die Pipeline bei Bedarf aus oder planen Sie optional future Pipeline-Läufe. Verwenden Sie den folgenden Befehl, um eine sofortige Ausführung zu starten:

   ```
   execution = pipeline.start(
       parameters={...}
   )
   ```

   Optional können Sie einen einzelnen future Pipeline-Lauf oder mehrere Läufe in einem festgelegten Intervall planen. Sie geben Ihren Zeitplan in an `PipelineSchedule` und übergeben dann das Zeitplanobjekt mit an Ihre Pipeline`put_triggers`. Weitere Informationen zur Planung einer Pipeline finden Sie unter [Planen Sie eine Pipeline mit dem SageMaker Python-SDK](pipeline-eventbridge.md#build-and-manage-scheduling).

   Im folgenden Beispiel wird Ihre Pipeline so geplant, dass sie einmalig am 12. Dezember 2023 um 10:31:32 UTC ausgeführt wird.

   ```
   my_schedule = PipelineSchedule(  
       name="my-schedule“,  
       at=datetime(year=2023, month=12, date=25, hour=10, minute=31, second=32) 
   )  
   pipeline.put_triggers(triggers=[my_schedule])
   ```

   Das folgende Beispiel plant die Ausführung Ihrer Pipeline für 10:15 Uhr UTC am letzten Freitag jedes Monats in den Jahren 2022 bis 2023. [Einzelheiten zur cron-basierten Planung finden Sie unter Cron-basierte Zeitpläne.](https://docs.aws.amazon.com/scheduler/latest/UserGuide/schedule-types.html#cron-based)

   ```
   my_schedule = PipelineSchedule(  
       name="my-schedule“,  
       cron="15 10 ? * 6L 2022-2023"
   )  
   pipeline.put_triggers(triggers=[my_schedule])
   ```

1. (Optional) Sehen Sie sich Ihre Notizbuchaufträge im SageMaker Notizbuchauftrags-Dashboard an. Die Werte, die Sie für das `tags` Argument Ihres Notebook-Job-Schritts angeben, steuern, wie die Studio-Benutzeroberfläche den Job erfasst und anzeigt. Weitere Informationen finden Sie unter [Sehen Sie sich Ihre Notebook-Jobs im Studio-UI-Dashboard an](#create-notebook-auto-run-dash).

## Sehen Sie sich Ihre Notebook-Jobs im Studio-UI-Dashboard an
<a name="create-notebook-auto-run-dash"></a>

Die Notebookjobs, die Sie als Pipeline-Schritte erstellen, werden im Studio Notebook Job-Dashboard angezeigt, wenn Sie bestimmte Tags angeben.

**Anmerkung**  
Nur Notebook-Jobs, die in Studio oder lokalen JupyterLab Umgebungen erstellt wurden, erstellen Jobdefinitionen. Wenn Sie Ihren Notebook-Job mit dem SageMaker Python-SDK erstellen, werden Ihnen daher keine Jobdefinitionen im Notebook Jobs-Dashboard angezeigt. Sie können Ihre Notebook-Aufträge jedoch wie unter [Notebook-Aufträge anzeigen](view-notebook-jobs.md) beschrieben anzeigen. 

Mit den folgenden Tags können Sie steuern, welche Teammitglieder Ihre Notebookjobs sehen können:
+ Um das Notebook für alle Benutzerprofile oder [Bereiche](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl-user-guide.html) in einer Domain anzuzeigen, fügen Sie das Domain-Tag mit Ihrem Domainnamen hinzu. Ein Beispiel sehen Sie unten:
  + Schlüssel: `sagemaker:domain-name` Wert: `d-abcdefghij5k`
+ Um den Notebookjob einem bestimmten Benutzerprofil in einer Domain anzuzeigen, fügen Sie sowohl das Benutzerprofil als auch die Domain-Tags hinzu. Ein Beispiel für ein Benutzerprofil-Tag sehen Sie unten:
  + Schlüssel: `sagemaker:user-profile-name` Wert: `studio-user`
+ Um den Notebook-Job einem [Space](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl-user-guide.html) anzuzeigen, fügen Sie sowohl den Space als auch die Domain-Tags hinzu. Ein Beispiel für eine Raumkennzeichnung sehen Sie unten:
  + Schlüssel: `sagemaker:shared-space-name` Wert: `my-space-name`
+ Wenn Sie keine Domain-, Benutzerprofil- oder Bereich-Tags hinzufügen, zeigt die Studio-Benutzeroberfläche den durch den Pipeline-Schritt erstellten Notebook-Auftrag nicht an. In diesem Fall können Sie den zugrunde liegenden Trainingsjob in der Trainingsjob-Konsole oder den Status in der [Liste der Pipeline-Ausführungen](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines-studio-view-execution.html) einsehen.

Nachdem Sie die erforderlichen Tags für die Anzeige Ihrer Jobs im Dashboard eingerichtet haben, finden Sie unter Anweisungen [Notebook-Aufträge anzeigen](view-notebook-jobs.md) zum Anzeigen Ihrer Jobs und zum Herunterladen der Ergebnisse.

## Sehen Sie sich Ihr Pipeline-Diagramm in Studio an
<a name="create-notebook-auto-run-graph"></a>

Da Ihr Notebook-Auftragsschritt Teil einer Pipeline ist, können Sie das Pipeline-Diagramm (DAG) in Studio anzeigen. Im Pipeline-Diagramm können Sie den Status des Pipeline-Laufs anzeigen und die Herkunft verfolgen. Details hierzu finden Sie unter [Anzeige der Details eines Pipeline-Laufs](pipelines-studio-view-execution.md).

## Parameter an Ihr Notebook übergeben
<a name="create-notebook-auto-run-passparam"></a>

Wenn Sie Parameter an Ihren Notebook-Job übergeben möchten (mit dem `parameters` Argument von`NotebookJobStep`), müssen Sie Ihr Eingabe-Notebook darauf vorbereiten, die Parameter zu empfangen. 

Der auf Papermill basierende Notebook-Auftrags-Executor sucht nach einer Jupyter-Zelle, die mit dem Tag `parameters` markiert ist, und wendet die neuen Parameter oder Parameterüberschreibungen unmittelbar nach dieser Zelle an. Details hierzu finden Sie unter [Parametrisieren Ihres Notebooks](notebook-auto-run-troubleshoot-override.md). 

Wenn Sie diesen Schritt ausgeführt haben, übergeben Sie Ihre Parameter an Ihre`NotebookJobStep`, wie im folgenden Beispiel gezeigt:

```
notebook_job_parameters = {
    "company": "Amazon"
}

notebook_job_step = NotebookJobStep(
    image_uri=image-uri,
    kernel_name=kernel-name,
    role=role-name,
    input_notebook=input-notebook,
    parameters=notebook_job_parameters,
    ...
)
```

## Herstellen einer Verbindung zu einem Amazon-EMR-Cluster in Ihrem Eingabe-Notebook
<a name="create-notebook-auto-run-emr"></a>

Wenn Sie von Ihrem Jupyter Notebook in Studio aus eine Verbindung zu einem Amazon EMR-Cluster herstellen, müssen Sie Ihr Jupyter Notebook möglicherweise weiter modifizieren. Prüfen Sie[Stellen Sie von Ihrem Studio-Notebook aus eine Connect zu einem Amazon-EMR-Cluster her](scheduled-notebook-connect-emr.md), ob Sie eine der folgenden Aufgaben in Ihrem Notebook ausführen müssen:
+ **Übergeben von Parametern an Ihren Amazon-EMR-Verbindungsbefehl**. Studio verwendet Papermill zur Ausführung von Notebooks. In SparkMagic Kerneln funktionieren Parameter, die Sie an Ihren Amazon EMR-Verbindungsbefehl übergeben, möglicherweise nicht wie erwartet, da Papermill Informationen an sie weitergibt. SparkMagic
+ **Weitergabe von Benutzeranmeldedaten an Kerberos-, LDAP- oder HTTP Basic Auth-authentifizierte Amazon EMR-Cluster**. Sie müssen Benutzeranmeldeinformationen über die übergeben AWS Secrets Manager.

## Richten Sie Standardoptionen ein
<a name="create-notebook-auto-run-intdefaults"></a>

Das SageMaker SDK bietet Ihnen die Möglichkeit, Standardwerte für eine Teilmenge von Parametern festzulegen, sodass Sie diese Parameter nicht jedes Mal angeben müssen, wenn Sie eine Instance erstellen. `NotebookJobStep` Diese Parameter sind `role`, `s3_root_uri`, `s3_kms_key`, `volume_kms_key`, `subnets` und `security_group_ids`. Verwenden Sie die SageMaker AI-Konfigurationsdatei, um die Standardeinstellungen für den Schritt festzulegen. Informationen zur SageMaker AI-Konfigurationsdatei finden Sie unter [Konfiguration und Verwendung von Standardwerten mit dem SageMaker Python-SDK](https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk). .

Um die Standardeinstellungen für Notebook-Jobs einzurichten, wenden Sie Ihre neuen Standardeinstellungen auf den Notebook-Job-Abschnitt der Konfigurationsdatei an, wie im folgenden Codeausschnitt gezeigt:

```
SageMaker:
  PythonSDK:
    Modules:
      NotebookJob:
        RoleArn: 'arn:aws:iam::555555555555:role/IMRole'
        S3RootUri: 's3://amzn-s3-demo-bucket/my-project'
        S3KmsKeyId: 's3kmskeyid'
        VolumeKmsKeyId: 'volumekmskeyid1'
        VpcConfig:
          SecurityGroupIds:
            - 'sg123'
          Subnets:
            - 'subnet-1234'
```

# Erstellen eines Notebook-Auftrags in Studio
<a name="create-notebook-auto-run-studio"></a>

**Anmerkung**  
Der Notebook-Scheduler basiert auf den Services Amazon EventBridge, SageMaker Training und Pipelines. Wenn Ihre Notebook-Aufträge fehlschlagen, werden Ihnen möglicherweise Fehler im Zusammenhang mit diesen Diensten angezeigt. Im Folgenden finden Sie Informationen zum Erstellen eines Notebook-Jobs in der Studio-Benutzeroberfläche.

SageMaker Notebook Jobs bietet Ihnen die Tools, mit denen Sie Ihre nicht interaktiven Notizbuchjobs mithilfe des Widgets Notizbuchjobs erstellen und verwalten können. Sie können Aufträge erstellen, die von Ihnen erstellten Aufträge anzeigen und bestehende Aufträge pausieren, beenden oder fortsetzen. Sie können auch Notebook-Zeitpläne ändern.

Wenn Sie Ihren geplanten Notebook-Auftrag mit dem Widget erstellen, versucht der Scheduler, eine Auswahl von Standardoptionen abzuleiten, und füllt das Formular automatisch aus, damit Sie schnell loslegen können. Wenn Sie Studio verwenden, können Sie zumindest einen On-Demand-Auftrag einreichen, ohne Optionen festzulegen. Sie können auch eine (geplante) Notebook-Auftragsdefinition einreichen, die nur die zeitspezifischen Zeitplaninformationen enthält. Sie können jedoch auch andere Felder anpassen, wenn Ihr geplantes Projekt spezielle Einstellungen erfordert. Wenn Sie ein lokales Jupyter Notebook ausführen, bietet die Scheduler-Erweiterung eine Funktion, mit der Sie Ihre eigenen Standardeinstellungen (für eine Teilmenge von Optionen) angeben können, sodass Sie nicht jedes Mal dieselben Werte manuell einfügen müssen.

Wenn Sie einen Notebook-Job erstellen, können Sie zusätzliche Dateien wie Datensätze, Bilder und lokale Skripts hinzufügen. Wählen Sie dazu **Job mit Eingabeordner ausführen**. Der Notebook-Job hat jetzt Zugriff auf alle Dateien im Ordner der Eingabedatei. Während der Notebook-Job ausgeführt wird, bleibt die Dateistruktur des Verzeichnisses unverändert.

Führen Sie die folgenden Schritte aus, um Ihren Notebook-Auftrag zu planen.

1. Öffnen Sie das Formular **Auftrag erstellen**.

   Wählen Sie in lokalen JupyterLab Umgebungen in der Taskleiste das Symbol **Einen Notizbuchjob erstellen** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/icons/notebook-schedule.png)) aus. Wenn Sie das Symbol nicht sehen, folgen Sie den Anweisungen unter [Installationshandbuch](scheduled-notebook-installation.md), um es zu installieren.

   Öffnen Sie das Formular in Studio auf zwei Arten:
   + Verwenden des **Dateibrowsers**

     1. Klicken Sie im **Dateibrowser** im linken Bereich mit der rechten Maustaste auf das Notebook, das Sie als geplanten Auftrag ausführen möchten.

     1. Wählen Sie **Notebook-Auftrag erstellen**.
   + Innerhalb des Studio-Notebooks
     + Wählen Sie in dem Studio-Notebook, das Sie als geplanten Auftrag ausführen möchten, in der Studio-Symbolleiste das Symbol **Notebook-Auftrag erstellen** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/icons/notebook-schedule.png)) aus.

1. Füllen Sie das Popup-Formular aus. Das Formular zeigt die folgenden Felder an:
   + **Auftragname**: Ein aussagekräftiger Name, den Sie für Ihren Auftrag angeben.
   + **Eingabedatei**: Der Name des Notebooks, das Sie im nicht interaktiven Modus ausführen möchten.
   + **Compute-Typ**: Der Typ der Amazon-EC2-Instance, in der Sie Ihr Notebook ausführen möchten.
   + **Parameter**: Benutzerdefinierte Parameter, die Sie optional als Eingaben für Ihr Notebook angeben können. Um diese Funktion verwenden zu können, möchten Sie optional eine bestimmte Zelle in Ihrem Jupyter Notebook mit dem **parameters** Tag kennzeichnen, um zu steuern, wo Ihre Parameter angewendet werden. Weitere Details finden Sie unter [Parametrisieren Ihres Notebooks](notebook-auto-run-troubleshoot-override.md).
   + **(Optional) **Job mit Eingabeordner ausführen**: Wenn diese Option ausgewählt ist, hat der geplante Job Zugriff auf alle Dateien, die sich im selben Ordner wie die Eingabedatei befinden.**
   + **Zusätzliche Optionen**: Sie können zusätzliche Anpassungen für Ihren Auftrag angeben. Sie können beispielsweise ein Image oder einen Kernel, Eingabe- und Ausgabeordner, Optionen für die Auftragswiederholung und das Timeout, Verschlüsselungsdetails und benutzerdefinierte Initialisierungsskripten angeben. Eine vollständige Liste der Anpassungen, die Sie anwenden können, finden Sie unter [Verfügbare Optionen](create-notebook-auto-execution-advanced.md).

1. Planen Sie Ihren Auftrag. Sie können Ihr Notebook bei Bedarf oder nach einem festen Zeitplan ausführen.
   + Um das Notebook bei Bedarf zu starten, führen Sie die folgenden Schritte aus:
     + Wählen Sie **Jetzt ausführen** aus.
     + Wählen Sie **Erstellen** aus.
     + Die Registerkarte **Notebook-Aufträge** wird angezeigt. Wählen Sie **Reload**, um Ihren Auftrag in das Dashboard zu laden.
   + Führen Sie zum Ausführen des Notebooks nach einem festen Zeitplan die folgenden Schritte aus:
     + Wählen Sie **Nach einem Zeitplan ausführen** aus.
     + Wählen Sie die Dropdown-Liste **Intervall** und wählen Sie ein Intervall aus. Die Intervalle reichen von jeder Minute bis hin zu einem Monat. Sie können auch **Benutzerdefinierter Zeitplan** auswählen.
     + Je nach ausgewähltem Intervall werden zusätzliche Felder angezeigt, mit denen Sie den gewünschten Ausführungstag und die Uhrzeit genauer angeben können. Wenn Sie beispielsweise **Tag** für einen täglichen Lauf auswählen, wird ein zusätzliches Feld angezeigt, in dem Sie die gewünschte Zeit angeben können. Beachten Sie, dass jede Uhrzeit, die Sie angeben, im UTC-Format angegeben ist. Beachten Sie auch, dass sich Ihre Aufträge überschneiden, wenn Sie ein kleines Intervall wählen, z. B. eine Minute, wenn der vorherige Auftrag nicht abgeschlossen ist, wenn der nächste Auftrag beginnt.

       Wenn Sie einen benutzerdefinierten Zeitplan auswählen, verwenden Sie die Cron-Syntax im Ausdrucksfeld, um Ihr genaues Ausführungsdatum und Ihre genaue Ausführungszeit anzugeben. Die Cron-Syntax ist eine durch Leerzeichen getrennte Liste von Ziffern, von denen jede eine Zeiteinheit von Sekunden bis Jahren darstellt. Wenn Sie Hilfe zur Cron-Syntax benötigen, können Sie unter dem Ausdrucksfeld die Option **Hilfe zur Cron-Syntax abrufen** auswählen.
     + Wählen Sie **Erstellen** aus.
     + Die Registerkarte **Notebook-Auftragsdefinitionen** wird angezeigt. Wählen Sie **Reload**, um Ihre Auftragsdefinition in das Dashboard zu laden.

# Richten Sie Standardoptionen für lokale Notebooks ein
<a name="create-notebook-auto-execution-advanced-default"></a>

**Wichtig**  
Seit dem 30. November 2023 heißt das vorherige Amazon SageMaker Studio-Erlebnis jetzt Amazon SageMaker Studio Classic. Der folgende Abschnitt bezieht sich konkret auf die Verwendung der Studio-Classic-Anwendung. Informationen zur Verwendung der aktualisierten Studio-Konfiguration finden Sie unter [Amazon SageMaker Studio](studio-updated.md).  
Studio Classic wird weiterhin für bestehende Workloads beibehalten, ist aber nicht mehr für das Onboarding verfügbar. Sie können nur bestehende Studio Classic-Anwendungen beenden oder löschen und keine neuen erstellen. Wir empfehlen Ihnen, [Ihren Workload auf das neue Studio-Erlebnis zu migrieren](studio-updated-migrate.md).

Sie können beim Erstellen eines Notebook-Auftrags Standardoptionen einrichten. Dies kann Ihnen Zeit sparen, wenn Sie mehrere Notebookaufträge mit anderen Optionen als den bereitgestellten Standardoptionen erstellen möchten. Im Folgenden finden Sie Informationen zum Einrichten der Standardoptionen für lokale Notebooks.

Wenn Sie benutzerdefinierte Werte manuell in das Formular **Auftrag erstellen** eingeben (oder einfügen) müssen, können Sie neue Standardwerte speichern, und die Scheduler-Erweiterung fügt Ihre neuen Werte jedes Mal ein, wenn Sie eine neue Auftragsdefinition erstellen. Diese Funktion ist für die folgenden Optionen verfügbar:
+ **ARN der Rolle**
+ **S3-Eingabeordner**
+ **S3-Ausgangsordner**
+ **Ausgabeverschlüsselung KMS-Schlüssel** (wenn Sie **Auftragsverschlüsselung konfigurieren** aktivieren)
+ **KMS-Schlüssel für die Volumenverschlüsselung der Auftrags-Instance** (wenn Sie **Auftragsverschlüsselung konfigurieren** aktivieren)

Diese Funktion spart Ihnen Zeit, wenn Sie andere Werte als die angegebenen Standardwerte einfügen und diese Werte weiterhin für zukünftige Auftragsausführungen verwenden. Die von Ihnen ausgewählten Benutzereinstellungen werden auf dem Computer gespeichert, auf dem Ihr JupyterLab Server ausgeführt wird, und mit Hilfe der nativen API abgerufen. Wenn Sie neue Standardwerte für eine oder mehrere, aber nicht für alle fünf Optionen angeben, werden die vorherigen Standardwerte für diejenigen verwendet, die Sie nicht anpassen.

Die folgenden Anweisungen zeigen Ihnen, wie Sie die vorhandenen Standardwerte in der Vorschau anzeigen, neue Standardwerte festlegen und die Standardwerte für Ihre Notebook-Aufträge zurücksetzen können.

**Führen Sie die folgenden Schritte aus, um eine Vorschau vorhandener Standardwerte für Ihre Notebookaufträge anzuzeigen:**

1. Öffnen Sie die Amazon SageMaker Studio Classic-Konsole, indem Sie den Anweisungen unter folgen[Starten Sie Amazon SageMaker Studio Classic](studio-launch.md).

1. Klicken Sie im **Dateibrowser** im linken Bereich mit der rechten Maustaste auf das Notebook, das Sie als geplanten Auftrag ausführen möchten.

1. Wählen Sie **Notebook-Auftrag erstellen**.

1. Wählen Sie **Zusätzliche Optionen**, um die Registerkarte mit den Notebookauftragseinstellungen zu erweitern. Sie können die Standardeinstellungen hier anzeigen. 

**Führen Sie die folgenden Schritte aus, um neue Standardwerte für Ihre future Notebookaufträge festzulegen:**

1. Öffnen Sie die Amazon SageMaker Studio Classic-Konsole, indem Sie den Anweisungen unter folgen[Starten Sie Amazon SageMaker Studio Classic](studio-launch.md).

1. Wählen Sie im oberen Menü von Studio Classic **Einstellungen** und dann **Editor für erweiterte Einstellungen** aus.

1. Wählen Sie **Amazon SageMaker Scheduler** aus der Liste unter **Einstellungen** aus. Er ist möglicherweise bereits standardmäßig geöffnet.

1. Sie können die Standardeinstellungen direkt auf dieser UI-Seite oder mithilfe des JSON-Editors aktualisieren.
   + In der Benutzeroberfläche können Sie neue Werte für **Rolle ARN**, **S3 Input Folder, S3 Output Folder**, **Output** **Encryption KMS Key** oder **Job Instance Volume Encryption KMS-Schlüssel** einfügen. Wenn Sie diese Werte ändern, werden Ihnen die neuen Standardwerte für diese Felder angezeigt, wenn Sie Ihren nächsten Notebook-Auftrag unter **Zusätzliche Optionen** erstellen.
   + (Optional) Gehen Sie wie folgt vor, um die Benutzerstandardwerte mithilfe des **JSON-Einstellungseditors** zu aktualisieren:

     1. Wählen Sie in der oberen rechten Ecke den **JSON-Einstellungseditor** aus.

     1. Wählen Sie in der linken Seitenleiste **„Einstellungen“** **Amazon SageMaker AI Scheduler** aus. Er ist möglicherweise bereits standardmäßig geöffnet.

        Sie können Ihre aktuellen Standardwerte im Bereich **Benutzereinstellungen** sehen.

        Sie können die Standardwerte des Systems im Bereich **Systemstandardwerte** sehen.

     1. Um Ihre Standardwerte zu aktualisieren, kopieren Sie den JSON-Snippet, fügen Sie ihn aus dem Bereich **Systemstandardwerte** in den Bereich **Benutzereinstellungen** ein und aktualisieren Sie die Felder.

     1. Wenn Sie die Standardwerte aktualisiert haben, wählen Sie das Symbol **Benutzereinstellungen speichern** (![\[Icon of a cloud with an arrow pointing upward, representing cloud upload functionality.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/icons/Notebook_save.png)) in der oberen rechten Ecke aus. Beim Schließen des Editors werden die Änderungen nicht gespeichert.

**Wenn Sie zuvor Änderungen vorgenommen haben und jetzt die benutzerdefinierten Standardwerte zurücksetzen möchten, gehen Sie wie folgt vor:**

1. Wählen Sie im oberen Menü von Studio Classic **Einstellungen** und dann **Editor für erweiterte Einstellungen** aus.

1. Wählen Sie **Amazon SageMaker Scheduler** aus der Liste unter **Einstellungen** aus. Er ist möglicherweise bereits standardmäßig geöffnet.

1. Sie können die Standardeinstellungen direkt über diese UI-Seite oder den JSON-Editor wiederherstellen.
   + In der Benutzeroberfläche können Sie in der oberen rechten Ecke die Option **Standardwerte wiederherstellen** auswählen. Ihre Standardwerte werden auf leere Zeichenketten zurückgesetzt. Sie sehen diese Option nur, wenn Sie zuvor Ihre Standardwerte geändert haben.
   + (Optional) Gehen Sie wie folgt vor, um Standardeinstellungen mithilfe des **JSON-Einstellungseditors** zu aktualisieren:

     1. Wählen Sie in der oberen rechten Ecke den **JSON-Einstellungseditor** aus.

     1. Wählen Sie in der linken Seitenleiste **„Einstellungen“** **Amazon SageMaker AI Scheduler** aus. Er ist möglicherweise bereits standardmäßig geöffnet.

        Sie können Ihre aktuellen Standardwerte im Bereich **Benutzereinstellungen** sehen.

        Sie können die Standardwerte des Systems im Bereich **Systemstandardwerte** sehen.

     1. Um Ihre aktuellen Standardeinstellungen wiederherzustellen, kopieren Sie den Inhalt aus dem Bereich **Systemstandardwerte** in den Bereich **Benutzereinstellungen**.

     1. Wählen Sie oben rechts in der Ecke das Symbol **Benutzereinstellungen speichern** (![\[Icon of a cloud with an arrow pointing upward, representing cloud upload functionality.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/icons/Notebook_save.png)). Beim Schließen des Editors werden die Änderungen nicht gespeichert.

# Notebook-Auftragsworkflows
<a name="create-notebook-auto-run-dag"></a>

Da ein Notebook-Job Ihren benutzerdefinierten Code ausführt, können Sie eine Pipeline erstellen, die einen oder mehrere Notebook-Job-Schritte umfasst. ML-Workflows umfassen häufig mehrere Schritte, darunter einen Verarbeitungsschritt zur Vorverarbeitung der Daten, einen Trainingsschritt zum Aufbau Ihres Modells und einen Modellbewertungsschritt. Eine mögliche Verwendung von Notebook-Aufträgen ist die Vorverarbeitung. Sie könnten beispielsweise ein Notebook haben, das die Datenumwandlung oder -erfassung durchführt, einen EMR-Schritt, der die Datenbereinigung durchführt, und einen weiteren Notebook-Auftrag, der die Feature-Erstellung Ihrer Eingaben durchführt, bevor ein Trainingsschritt initiiert wird. Für einen Notebookjob sind möglicherweise Informationen aus vorherigen Schritten in der Pipeline oder aus benutzerdefinierten Anpassungen als Parameter im Eingabe-Notebook erforderlich. Beispiele, die zeigen, wie Sie Umgebungsvariablen und Parameter an Ihr Notebook übergeben und Informationen aus vorherigen Schritten abrufen können, finden Sie unter [Informationen zu und von Ihrem Notebook weiterleiten Schritt](create-notebook-auto-run-dag-seq.md).

In einem anderen Anwendungsfall kann es vorkommen, dass einer Ihrer Notebook-Aufträge ein anderes Notebook aufruft, um bestimmte Aufgaben während der Ausführung Ihres Notebooks auszuführen. In diesem Fall müssen Sie diese Quell-Notebooks als Abhängigkeiten für Ihren Notebook-Auftragsschritt angeben. Weitere Informationen zum Aufrufen eines anderen Notebooks finden Sie unter [Rufen Sie in Ihrem Notebookjob ein anderes Notebook auf](create-notebook-auto-run-dag-call.md).

Beispielnotizbücher, die zeigen, wie Notizbuchjobs mit dem SageMaker AI Python SDK geplant werden, finden Sie unter [Notizbuch-Beispielnotizbücher für Notizbücher](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-pipelines/notebook-job-step).

# Informationen zu und von Ihrem Notebook weiterleiten Schritt
<a name="create-notebook-auto-run-dag-seq"></a>

In den folgenden Abschnitten werden Möglichkeiten beschrieben, Informationen als Umgebungsvariablen und Parameter an Ihr Notebook zu übergeben.

## Umgebungsvariablen übergeben
<a name="create-notebook-auto-run-dag-seq-env-var"></a>

Übergeben Sie Umgebungsvariablen als Wörterbuch an Ihr `environment_variable` Argument`NotebookJobStep`, wie im folgenden Beispiel gezeigt:

```
environment_variables = {"RATE": 0.0001, "BATCH_SIZE": 1000}

notebook_job_step = NotebookJobStep(
    ...
    environment_variables=environment_variables,
    ...
)
```

Sie können die Umgebungsvariablen im Notebook verwenden`os.getenv()`, wie im folgenden Beispiel gezeigt:

```
# inside your notebook
import os
print(f"ParentNotebook: env_key={os.getenv('env_key')}")
```

## Parameter übergeben
<a name="create-notebook-auto-run-dag-seq-param"></a>

Wenn Sie Parameter an den ersten Notebook-Job-Schritt in Ihrer `NotebookJobStep` Instance übergeben, möchten Sie möglicherweise optional eine Zelle in Ihrem Jupyter-Notebook taggen, um anzugeben, wo neue Parameter oder Parameterüberschreibungen angewendet werden sollen. Anweisungen zum Markieren einer Zelle im Jupyter Notebook finden Sie unter [Parametrisieren Ihres Notebooks](notebook-auto-run-troubleshoot-override.md).

Sie übergeben Parameter über den `parameters` Parameter des Schritts Notebook Job, wie im folgenden Codeausschnitt dargestellt:

```
notebook_job_parameters = {
    "company": "Amazon",
}

notebook_job_step = NotebookJobStep(
    ...
    parameters=notebook_job_parameters,
    ...
)
```

In Ihrem Eingabe-Notebook werden Ihre Parameter nach der Zelle angewendet, die mit dem Tag markiert ist, `parameters` oder am Anfang des Notebookes, wenn Sie keine markierte Zelle haben.

```
# this cell is in your input notebook and is tagged with 'parameters'
# your parameters and parameter overrides are applied after this cell
company='default'
```

```
# in this cell, your parameters are applied
# prints "company is Amazon"
print(f'company is {company}')
```

## Rufen Sie Informationen aus einem vorherigen Schritt ab
<a name="create-notebook-auto-run-dag-seq-interstep"></a>

In der folgenden Diskussion wird erklärt, wie Sie Daten aus einem vorherigen Schritt extrahieren können, um sie an Ihren Notebook-Job-Schritt weiterzuleiten.

**`properties`Attribut verwenden**

Sie können die folgenden Eigenschaften mit dem `properties` Attribut des vorherigen Schritts verwenden:
+ `ComputingJobName` –Der Trainingsauftragsname
+ `ComputingJobStatus` – Der Status des Trainingsjobs
+ `NotebookJobInputLocation` –Der eingegebene Amazon-S3-Speicherort
+ `NotebookJobOutputLocationPrefix` – der Pfad zu Ihren Trainingsjob-Ausgaben, genauer gesagt: `{NotebookJobOutputLocationPrefix}/{training-job-name}/output/output.tar.gz`. mit Ausgaben
+ `InputNotebookName` – Der Name der Eingabe-Notebook-Datei
+ `OutputNotebookName` – Der Name der Ausgabe-Notebookdatei (der möglicherweise nicht im Ausgabeordner des Trainingsjobs vorhanden ist, falls der Job fehlschlägt)

Der folgende Codeausschnitt zeigt, wie Parameter aus dem Eigenschaftenattribut extrahiert werden.

```
notebook_job_step2 = NotebookJobStep(
    ....
    parameters={
        "step1_JobName": notebook_job_step1.properties.ComputingJobName,
        "step1_JobStatus": notebook_job_step1.properties.ComputingJobStatus,
        "step1_NotebookJobInput": notebook_job_step1.properties.NotebookJobInputLocation,
        "step1_NotebookJobOutput": notebook_job_step1.properties.NotebookJobOutputLocationPrefix,
    }
```

**Verwenden Sie JsonGet**

Wenn Sie andere Parameter als die zuvor genannten übergeben möchten und sich die JSON-Ausgaben Ihres vorherigen Schritts in Amazon S3 befinden, verwenden Sie `JsonGet`. `JsonGet` ist ein allgemeiner Mechanismus, mit dem Daten direkt aus JSON-Dateien in Amazon S3 extrahiert werden können.

Führen Sie die folgenden Schritte aus`JsonGet`, um JSON-Dateien in Amazon S3 mit zu extrahieren:

1. Laden Sie Ihre JSON-Datei in Amazon S3 hoch. Wenn Ihre Daten bereits auf Amazon S3 hochgeladen wurden, überspringen Sie diesen Schritt. Das folgende Beispiel zeigt, wie Sie eine JSON-Datei in Amazon S3 hochladen.

   ```
   import json
   from sagemaker.s3 import S3Uploader
   
   output = {
       "key1": "value1", 
       "key2": [0,5,10]
   }
               
   json_output = json.dumps(output)
   
   with open("notebook_job_params.json", "w") as file:
       file.write(json_output)
   
   S3Uploader.upload(
       local_path="notebook_job_params.json",
       desired_s3_uri="s3://path/to/bucket"
   )
   ```

1. Geben Sie Ihre S3-URI und den JSON-Pfad zu dem Wert an, den Sie extrahieren möchten. Im folgenden Beispiel wird ein Objekt `JsonGet` zurückgegeben, das den Index 2 des mit key `key2` (`10`) verknüpften Werts darstellt.

   ```
   NotebookJobStep(
       ....
       parameters={
           # the key job_key1 returns an object representing the value 10
           "job_key1": JsonGet(
               s3_uri=Join(on="/", values=["s3:/", ..]),
               json_path="key2[2]" # value to reference in that json file
           ), 
           "job_key2": "Amazon" 
       }
   )
   ```

# Rufen Sie in Ihrem Notebookjob ein anderes Notebook auf
<a name="create-notebook-auto-run-dag-call"></a>

Sie können eine Pipeline einrichten, in der ein Notebookjob ein anderes Notebook aufruft. Im Folgenden wird ein Beispiel für eine Pipeline mit einem Notebook-Job-Schritt beschrieben, in dem das Notebook zwei andere Notebooks aufruft. Das Eingabe-Notebook enthält die folgenden Zeilen:

```
%run 'subfolder/notebook_to_call_in_subfolder.ipynb'
%run 'notebook_to_call.ipynb'
```

Übergeben Sie diese Notebooks mit `additional_dependencies` an Ihre `NotebookJobStep`-Instances, wie im folgenden Ausschnitt gezeigt. Beachten Sie, dass die Pfade für die Notebooks in vom Stammverzeichnis aus bereitgestellt `additional_dependencies` werden. Informationen darüber, wie SageMaker KI Ihre abhängigen Dateien und Ordner auf Amazon S3 hochlädt, sodass Sie die Pfade zu Ihren Abhängigkeiten korrekt angeben können, finden Sie `additional_dependencies` in [NotebookJobStep](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.notebook_job_step.NotebookJobStep)der Beschreibung für unter.

```
input_notebook = "inputs/input_notebook.ipynb"
simple_notebook_path = "inputs/notebook_to_call.ipynb"
folder_with_sub_notebook = "inputs/subfolder"

notebook_job_step = NotebookJobStep(
    image_uri=image-uri,
    kernel_name=kernel-name,
    role=role-name,
    input_notebook=input_notebook,
    additional_dependencies=[simple_notebook_path, folder_with_sub_notebook],
    tags=tags,
)
```

# Verfügbare Optionen
<a name="create-notebook-auto-execution-advanced"></a>

In der folgenden Tabelle sind alle verfügbaren Optionen aufgeführt, mit denen Sie Ihren Notebook-Job anpassen können, unabhängig davon, ob Sie Ihren Notebook-Job in Studio, einer lokalen Jupyter-Umgebung oder mit dem SageMaker Python-SDK ausführen. Die Tabelle enthält den Typ der benutzerdefinierten Option, eine Beschreibung, zusätzliche Richtlinien zur Verwendung der Option, einen Feldnamen für die Option in Studio (falls verfügbar) und den Parameternamen für den Notebook-Jobschritt im SageMaker Python-SDK (falls verfügbar).

Für einige Optionen können Sie auch benutzerdefinierte Standardwerte voreinstellen, sodass Sie sie nicht jedes Mal angeben müssen, wenn Sie einen Notebookjob einrichten. Für Studio sind dies die Optionen **Rolle**, **Eingabeordner**, **Ausgabeordner** und **KMS-Schlüssel-ID**, die in der folgenden Tabelle aufgeführt sind. Wenn Sie benutzerdefinierte Standardeinstellungen für diese Optionen voreinstellen, werden diese Felder im Formular „**Job erstellen**“ automatisch ausgefüllt, wenn Sie Ihren Notebookauftrag erstellen. Einzelheiten zum Erstellen benutzerdefinierter Standardeinstellungen in Studio und lokalen Jupyter-Umgebungen finden Sie unter [Richten Sie Standardoptionen für lokale Notebooks ein](create-notebook-auto-execution-advanced-default.md).

Das SageMaker SDK bietet Ihnen auch die Möglichkeit, intelligente Standardeinstellungen festzulegen, sodass Sie diese Parameter nicht angeben müssen, wenn Sie eine `NotebookJobStep` erstellen. Diese Parameter sind`role`,,`s3_root_uri`,`s3_kms_key`, `volume_kms_key` `subnets``security_group_ids`, und sind in der folgenden Tabelle angegeben. Weitere Informationen, wie Sie intelligente Standardeinstellungen festlegen können, finden Sie unter[Richten Sie Standardoptionen ein](create-notebook-auto-run-sdk.md#create-notebook-auto-run-intdefaults).


| Benutzerdefinierte Option | Description | Studiospezifische Richtlinie | Richtlinie für lokale Jupyter-Umgebungen | SageMaker Python-SDK-Richtlinie | 
| --- | --- | --- | --- | --- | 
| Job name (Auftragsname) | Ihr Jobname, so wie er im Notebook Jobs-Dashboard erscheinen sollte. | Feld Jobname. | Wie Studio. | Parameternotebook\$1job\$1name. Standardeinstellung: None. | 
| Image | Das Container-Image, das verwendet wurde, um das Notebook nicht interaktiv auf dem ausgewählten Compute-Typ auszuführen. | Feld Bild. In diesem Feld wird standardmäßig das aktuelle Bild Ihres Notebooks verwendet. Ändern Sie dieses Feld bei Bedarf vom Standardwert in einen benutzerdefinierten Wert. Wenn Studio diesen Wert nicht ableiten kann, zeigt das Formular einen Validierungsfehler an, in dem Sie ihn angeben müssen. Bei diesem Bild kann es sich um ein benutzerdefiniertes [bring-your-own Bild, ein Bild](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html) oder ein verfügbares SageMaker Amazon-Bild handeln. Eine Liste der verfügbaren SageMaker Bilder, die vom Notebook-Scheduler unterstützt werden, finden Sie unter[SageMaker Amazon-Bilder sind für die Verwendung mit Studio Classic-Notebooks verfügbar](notebooks-available-images.md). | Feld Bild. Für dieses Feld ist eine ECR-URI eines Docker-Images erforderlich, mit dem das bereitgestellte Notebook auf dem ausgewählten Rechnertyp ausgeführt werden kann. Standardmäßig verwendet die Scheduler-Erweiterung ein vorgefertigtes SageMaker KI-Docker-Image-Basis-Python 2.0. Dies ist das offizielle Python 3.8-Image von DockerHub boto3, AWS CLI, und dem Python 3-Kernel. Sie können auch eine beliebige ECR-URI angeben, die der Spezifikation für das benutzerdefinierte Notebook-Image entspricht. Details hierzu finden Sie unter [Benutzerdefinierte SageMaker Bildspezifikationen für Amazon SageMaker Studio Classic](studio-byoi-specs.md). Dieses Image sollte alle Kernel und Bibliotheken enthalten, die für die Ausführung des Notebooks benötigt werden. | Pflichtfeld Parameter. image\$1uri URI-Speicherort eines Docker-Images auf ECR. Sie können spezielle SageMaker Distributions-Images oder ein auf diesen Images basierendes benutzerdefiniertes Image oder Ihr eigenes Image mit vorinstallierten Notebook-Auftragsabhängigkeiten verwenden, das zusätzliche Anforderungen erfüllt. Details hierzu finden Sie unter [Bildeinschränkungen für SageMaker AI Python SDK-Notebook-Jobs](notebook-auto-run-constraints.md#notebook-auto-run-constraints-image-sdk). | 
| Instance-Typ | Der EC2-Instance-Typ, der zur Ausführung des Notebook-Aufträge verwendet werden soll. Der Notebook-Job verwendet einen SageMaker Trainingsjob als Rechenschicht, daher sollte es sich bei dem angegebenen Instance-Typ um einen vom SageMaker Training unterstützten Instance-Typ handeln. | Feld-Berechnungstyp. Standardeinstellung: ml.m5.large. | Wie Studio. | Parameterinstance\$1type. Standardeinstellung: ml.m5.large. | 
| Kernel | Der Jupyter-Kernel, der zur Ausführung des Notebook-Aufträge verwendet wurde. | Feld-Kernel. Dieses Feld ist standardmäßig auf den aktuellen Kernel Ihres Notebooks eingestellt. Ändern Sie dieses Feld bei Bedarf vom Standardwert in einen benutzerdefinierten Wert. Wenn Studio diesen Wert nicht ableiten kann, zeigt das Formular einen Validierungsfehler an, in dem Sie ihn angeben müssen. | Feld-Kernel. Dieser Kernel sollte im Image vorhanden sein und den Jupyter-Kernelspezifikationen entsprechen. Dieses Feld ist standardmäßig auf den Python3-Kernel eingestellt, der sich im Python 2.0-Basisimage befindet. SageMaker Ändern Sie dieses Feld bei Bedarf in einen benutzerdefinierten Wert. | Pflichtfeld Parameter. kernel\$1name Dieser Kernel sollte im Image vorhanden sein und den Jupyter-Kernelspezifikationen entsprechen. Die Kernel-Identifikatoren für Ihr Image finden Sie unter (LINK). | 
| SageMaker KI-Sitzung | Die zugrunde liegende SageMaker KI-Sitzung, an die SageMaker AI-Serviceanrufe delegiert werden. | – | – | Parametersagemaker\$1session. Falls nicht angegeben, wird eine mithilfe einer Standardkonfigurationskette erstellt. | 
| ARN der Rolle | Der Amazon Resource Name (ARN) der Rolle, der für den Notebook-Auftrag verwendet wird. | Feldrolle ARN. Dieses Feld ist standardmäßig auf die Studio-Ausführungsrolle eingestellt. Ändern Sie dieses Feld bei Bedarf in einen benutzerdefinierten Wert.  Wenn Studio diesen Wert nicht ableiten kann, ist das Feld **Role ARN** leer. Geben Sie in diesem Fall den ARN ein, den Sie verwenden möchten.  | Feldrolle ARN. In diesem Feld wird standardmäßig jede Rolle mit dem Präfix SagemakerJupyterScheduler angezeigt. Wenn Sie mehrere Rollen mit dem Präfix haben, wählt die Erweiterung eine aus. Ändern Sie dieses Feld bei Bedarf in einen benutzerdefinierten Wert. Für dieses Feld können Sie Ihren eigenen Benutzerstandard festlegen, der bei jeder Erstellung einer neuen Auftragsdefinition automatisch ausgefüllt wird. Details hierzu finden Sie unter [Richten Sie Standardoptionen für lokale Notebooks ein](create-notebook-auto-execution-advanced-default.md). | Parameterrole. Standardmäßig wird die SageMaker AI-Standard-IAM-Rolle verwendet, wenn das SDK in SageMaker Notebooks oder SageMaker Studio-Notebooks ausgeführt wird. Andernfalls wird eine ValueError geworfen. Ermöglicht intelligente Standardeinstellungen. | 
| Eingabe-Notebook | Der Name des Notebooks, das Sie ausführen möchten. | Pflichtfeld Feld-Eingabedatei. | Wie Studio. | Erforderlicher.Parameter input\$1notebook. | 
| Eingabeordner | Der Ordner, der Ihre Eingaben enthält. Die Auftragseingaben, einschließlich des Eingabe-Notebooks und aller optionalen Start- oder Initialisierungsskripten, werden in diesem Ordner gespeichert. | Ordner für die Feldeingabe. Wenn Sie keinen Ordner angeben, erstellt der Scheduler einen standardmäßigen Amazon-S3-Bucket für Ihre Eingaben. | Wie Studio. Für dieses Feld können Sie Ihren eigenen Benutzerstandard festlegen, der bei jeder Erstellung einer neuen Auftragsdefinition automatisch ausgefüllt wird. Details hierzu finden Sie unter [Richten Sie Standardoptionen für lokale Notebooks ein](create-notebook-auto-execution-advanced-default.md). | N/A. Der Eingabeordner befindet sich an dem durch den Parameter s3\$1root\$1uri angegebenen Speicherort. | 
| Ausgangsordner | Der Ordner, der Ihre Ausgaben enthält. Die Auftragsausgaben, einschließlich des Ausgabe-Notebooks und der Protokolle, werden in diesem Ordner gespeichert. | Feldausgabeordner. Wenn Sie keinen Ordner angeben, erstellt der Scheduler einen standardmäßigen Amazon-S3-Bucket für Ihre Ausgaben. | Wie Studio. Für dieses Feld können Sie Ihren eigenen Benutzerstandard festlegen, der bei jeder Erstellung einer neuen Auftragsdefinition automatisch ausgefüllt wird. Details hierzu finden Sie unter [Richten Sie Standardoptionen für lokale Notebooks ein](create-notebook-auto-execution-advanced-default.md). | N/A. Der Ausgabeordner befindet sich an dem durch den Parameter s3\$1root\$1uri angegebenen Speicherort. | 
| Parameters | Ein Wörterbuch mit Variablen und Werten, das Sie an Ihren Notebook-Job übergeben können. | Feldparameter. Sie müssen [Ihr Notebook parametrisieren](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-auto-run-troubleshoot-override.html), um Parameter zu akzeptieren. | Wie Studio. | Parameter. parameters Sie müssen [Ihr Notebook parametrisieren](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-auto-run-troubleshoot-override.html), um Parameter zu akzeptieren. | 
| Zusätzliche Abhängigkeiten (Datei oder Ordner) | Die Liste der Datei- oder Ordnerabhängigkeiten, die der Notebook-Job in den Staging-Ordner S3 hochlädt. | Nicht unterstützt | Nicht unterstützt | Parameteradditional\$1dependencies. Der Notebook-Job lädt diese Abhängigkeiten in einen S3-Staging-Ordner hoch, sodass sie während der Ausführung verwendet werden können. | 
| S3-Stamm-URI | Der Ordner, der Ihre Eingaben enthält. Die Auftragseingaben, einschließlich des Eingabe-Notebooks und aller optionalen Start- oder Initialisierungsskripten, werden in diesem Ordner gespeichert. Dieser S3-Bucket muss sich in dem befinden AWS-Konto , mit dem Sie Ihren Notebookjob ausführen. | N/A. Verwenden Sie den Eingabeordner und den Ausgabeordner. | Wie Studio. | Parameters3\$1root\$1uri. Standardmäßig ein Standard-S3-Bucket. Ermöglicht intelligente Standardeinstellungen. | 
| Umgebungsvariablen | Alle vorhandenen Umgebungsvariablen, die Sie überschreiben möchten, oder neue Umgebungsvariablen, die Sie in Ihrem Notebook einführen und verwenden möchten. | Feld Umgebungsvariablen. | Wie Studio. | Parameterenvironment\$1variables. Standardeinstellung: None. | 
| Tags (Markierungen) | Eine Liste von Tags, die an den Auftrag angefügt sind. | – | – | Parametertags. Standardeinstellung: None. Ihre Tags steuern, wie die Studio-Benutzeroberfläche den von der Pipeline erstellten Job erfasst und anzeigt. Details hierzu finden Sie unter [Sehen Sie sich Ihre Notebook-Jobs im Studio-UI-Dashboard an](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash). | 
| Startskript | Ein im Startmenü des Notebooks vorinstalliertes Skript, das Sie vor der Ausführung des Notebooks ausführen können. | Feld-Startskript. Wählen Sie ein LCC-Skript (Lifecycle Configuration) aus, das beim Start auf dem Image ausgeführt wird. Ein Startskript wird in einer Shell außerhalb der Studio-Umgebung ausgeführt. Daher kann dieses Skript nicht vom lokalen Studio-Speicher, den Umgebungsvariablen oder den App-Metadaten (in `/opt/ml/metadata`) abhängen. Wenn Sie ein Startskript und ein Initialisierungsskript verwenden, wird das Startskript außerdem zuerst ausgeführt.   | Nicht unterstützt | Nicht unterstützt | 
| Das Initialisierungsskript | Ein Pfad zu einem lokalen Skript, das Sie ausführen können, wenn Ihr Notebook gestartet wird. | Feld Initialisierungsskript. Geben Sie den EFS-Dateipfad ein, in dem sich ein lokales Skript oder ein Lifecycle Configuration (LCC) -Skript befindet. Wenn Sie ein Startskript und ein Initialisierungsskript verwenden, wird das Startskript zuerst ausgeführt. Ein Initialisierungsskript stammt aus derselben Shell wie der Notebook-Auftrag. Dies ist bei einem zuvor beschriebenen Startskript nicht der Fall. Wenn Sie ein Startskript und ein Initialisierungsskript verwenden, wird das Startskript außerdem zuerst ausgeführt.    | Feld Initialisierungsskript. Geben Sie den lokalen Dateipfad ein, in dem sich ein lokales Skript oder ein Lifecycle Configuration (LCC) -Skript befindet.  | Parameterinitialization\$1script. Standardeinstellung: None. | 
| Max. Anzahl der Wiederholungsversuche | Gibt an, wie oft Studio versucht, eine fehlgeschlagene Auftragsausführung erneut auszuführen. | Field Max versucht es erneut. Standardeinstellung: 1. | Wie Studio. | Parametermax\$1retry\$1attempts. Standardeinstellung: 1. | 
| Max. Laufzeit (in Sekunden) | Die maximale Zeitspanne in Sekunden, die der Notebook-Auftrag ausgeführt werden kann, bevor er gestoppt wird. Wenn Sie sowohl Max. Laufzeit als auch Max. Wiederholungsversuche konfigurieren, gilt die Laufzeit für jeden Wiederholungsversuch. Wenn ein Auftrag in dieser Zeit nicht abgeschlossen wird, wird sein Status auf Failed gesetzt. | Feld Max. Laufzeit (in Sekunden). Standardeinstellung: 172800 seconds (2 days). | Wie Studio. | Parametermax\$1runtime\$1in\$1seconds. Standardeinstellung: 172800 seconds (2 days). | 
| Wiederholungsrichtlinien | Eine Liste von Richtlinien für Wiederholungsversuche, die die im Falle eines Fehlers zu ergreifenden Maßnahmen regeln. | Nicht unterstützt | Nicht unterstützt | Parameterretry\$1policies. Standardeinstellung: None. | 
| Step oder StepCollection-Abhängigkeiten hinzufügen | Eine Liste von StepCollection Namen Step oder Instances, von denen der Job abhängt. | Nicht unterstützt | Nicht unterstützt | Parameterdepends\$1on. Standardeinstellung: None. Verwenden Sie dies, um explizite Abhängigkeiten zwischen Schritten in Ihrem Pipeline-Diagramm zu definieren. | 
| Volume-Größe | Die Größe des Speichervolumens in GB zum Speichern von Eingabe- und Ausgabedaten während des Trainings. | Nicht unterstützt | Nicht unterstützt | Parametervolume\$1size. Der Standardwert ist 30 GB. | 
| Datenverkehr zwischen Containern verschlüsseln | Ein Flag, das angibt, ob der Verkehr zwischen Trainingscontainern für den Trainingsjob verschlüsselt ist. | N/A. Standardmäßig aktiviert. | N/A. Standardmäßig aktiviert. | Parameterencrypt\$1inter\$1container\$1traffic. Standardeinstellung: True. | 
| Konfigurieren Sie die Auftragsverschlüsselung | Ein Indikator dafür, dass Sie die Auftragsausgaben Ihres Notebooks, das Volumen Ihrer Auftrags-Instance oder beides verschlüsseln möchten. | Feld Auftragsverschlüsselung konfigurieren. Markieren Sie dieses Kästchen, um Verschlüsselung auszuwählen. Wenn diese Option nicht aktiviert ist, werden die Auftrags-Ausgaben mit dem Standard-KMS-Schlüssel des Kontos verschlüsselt, und das Auftrags-Instance-Volume ist nicht verschlüsselt. | Wie Studio. | Nicht unterstützt | 
| Ausgabe Verschlüsselung KMS-Schlüssel | Ein KMS-Schlüssel, den Sie verwenden können, wenn Sie den Verschlüsselungsschlüssel anpassen möchten, der für Ihre Notebook-Auftragsausgaben verwendet wird. Dieses Feld ist nur relevant, wenn Sie die Option Auftragsverschlüsselung konfigurieren aktiviert haben. | Feld Ausgabeverschlüsselung KMS-Schlüssel. Wenn Sie dieses Feld nicht angeben, werden Ihre Notebook-Auftragsausgaben mit SSE-KMS unter Verwendung des Amazon S3-KMS-Standardschlüssels verschlüsselt. Auch wenn Sie den Amazon-S3-Bucket selbst erstellen und Verschlüsselung verwenden, bleibt Ihre Verschlüsselungsmethode erhalten. | Wie Studio. Für dieses Feld können Sie Ihren eigenen Benutzerstandard festlegen, der bei jeder Erstellung einer neuen Auftragsdefinition automatisch ausgefüllt wird. Details hierzu finden Sie unter [Richten Sie Standardoptionen für lokale Notebooks ein](create-notebook-auto-execution-advanced-default.md). | Parameters3\$1kms\$1key. Standardeinstellung: None. Ermöglicht intelligente Standardeinstellungen. | 
| Verschlüsselung des Auftrags-Instance-Volumens KMS-Schlüssel | Ein KMS-Schlüssel, den Sie verwenden können, wenn Sie Ihr Auftrag-Instance-Volume verschlüsseln möchten. Dieses Feld ist nur relevant, wenn Sie die Option Auftragsverschlüsselung konfigurieren aktiviert haben. | Field Verschlüsselung des Auftrags-Instance-Volumens KMS-Schlüssel. | Field Verschlüsselung des Auftrags-Instance-Volumens KMS-Schlüssel. Für dieses Feld können Sie Ihren eigenen Benutzerstandard festlegen, der bei jeder Erstellung einer neuen Auftragsdefinition automatisch ausgefüllt wird. Details hierzu finden Sie unter [Richten Sie Standardoptionen für lokale Notebooks ein](create-notebook-auto-execution-advanced-default.md). | Parametervolume\$1kms\$1key. Standardeinstellung: None. Ermöglicht intelligente Standardeinstellungen. | 
| Verwenden Sie eine Virtual Private Cloud, um diesen Auftrag auszuführen (für VPC-Benutzer) | Ein Indikator dafür, dass Sie diesen Auftrag in einer Virtual Private Cloud (VPC) ausführen möchten. Für eine bessere Sicherheit wird empfohlen, eine private VPC zu verwenden. | Feld Eine Virtual Private Cloud verwenden, um diesen Auftrag auszuführen. Markieren Sie dieses Kästchen, wenn Sie eine VPC verwenden möchten. Erstellen Sie mindestens die folgenden VPC-Endpunkte, damit Ihr Notebook-Job eine private Verbindung zu diesen AWS Ressourcen herstellen kann: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/create-notebook-auto-execution-advanced.html)Wenn Sie sich für die Verwendung einer VPC entscheiden, müssen Sie in den folgenden Optionen mindestens ein privates Subnetz und mindestens eine Sicherheitsgruppe angeben. Wenn Sie keine privaten Subnetze verwenden, müssen Sie andere Konfigurationsoptionen in Betracht ziehen. Einzelheiten finden Sie unter Öffentliche VPC-Subnetze, die nicht unterstützt werden in [Einschränkungen und Überlegungen](notebook-auto-run-constraints.md). | Wie Studio. | – | 
| Subnetz(e) (für VPC-Benutzer) | Ihre Subnetze. Dieses Feld muss mindestens eines und höchstens fünf enthalten, und alle von Ihnen angegebenen Subnetze sollten privat sein. Einzelheiten finden Sie unter Öffentliche VPC-Subnetze, die nicht unterstützt werden in [Einschränkungen und Überlegungen](notebook-auto-run-constraints.md). | Feld Subnetz (e). Dieses Feld enthält standardmäßig die Subnetze, die der Studio-Domain zugeordnet sind. Sie können dieses Feld jedoch bei Bedarf ändern. | Feld Subnetz (e). Der Scheduler kann Ihre Subnetze nicht erkennen, daher müssen Sie alle Subnetze eingeben, die Sie für Ihre VPC konfiguriert haben. | Parameter. subnets Standardeinstellung: None. Ermöglicht intelligente Standardeinstellungen. | 
| Sicherheitsgruppe(n) (für VPC-Benutzer) | Ihre Sicherheitsgruppen. Dieses Feld muss mindestens eine und maximal 15 enthalten. Einzelheiten finden Sie unter Öffentliche VPC-Subnetze, die nicht unterstützt werden in. [Einschränkungen und Überlegungen](notebook-auto-run-constraints.md) | Feld Sicherheitsgruppen. Dieses Feld enthält standardmäßig die Sicherheitsgruppen, die der Domain-VPC zugeordnet sind. Sie können dieses Feld jedoch bei Bedarf ändern. | Feld Sicherheitsgruppen. Der Scheduler kann Ihre Sicherheitsgruppen nicht erkennen, daher müssen Sie alle Sicherheitsgruppen eingeben, die Sie für Ihre VPC konfiguriert haben. | Parametersecurity\$1group\$1ids. Standardeinstellung: None. Ermöglicht intelligente Standardeinstellungen. | 
| Name | Der Name des Notebook-Auftragsschritts. | – | – | Parametername. Falls nicht angegeben, wird er vom Namen der Notebookdatei abgeleitet. | 
| Anzeigename | Ihr Jobname, so wie er in Ihrer Liste der Pipeline-Ausführungen erscheinen sollte. | – | – | Parameterdisplay\$1name. Standardeinstellung: None. | 
| Description | Eine Beschreibung Ihres Auftrags. | – | – | Parameterdescription. | 

# Parametrisieren Ihres Notebooks
<a name="notebook-auto-run-troubleshoot-override"></a>

Um neue Parameter oder Parameterüberschreibungen an Ihren geplanten Notebook-Auftrag zu übergeben, möchten Sie möglicherweise optional Ihr Jupyter Notebook ändern, wenn Ihre neuen Parameterwerte nach einer Zelle angewendet werden sollen. Wenn Sie einen Parameter übergeben, verwendet der Notebook-Auftrags-Executor die von Papermill erzwungene Methode. Der Notebook-Auftrags-Executor sucht nach einer Jupyter-Zelle, die mit dem Tag `parameters` markiert ist, und wendet die neuen Parameter oder Parameterüberschreibungen unmittelbar nach dieser Zelle an. Wenn Sie keine Zellen haben, die mit `parameters` markiert sind, werden die Parameter am Anfang des Notebooks angewendet. Wenn Sie mehr als eine Zelle mit `parameters` markiert haben, werden die Parameter nach der ersten Zelle angewendet, die mit `parameters` markiert ist.

Führen Sie die folgenden Schritte aus, um eine Zelle in Ihrem Notebook mit dem `parameters` Tag zu kennzeichnen:

1. Wählen Sie die Zelle aus, die Sie parametrisieren möchten.

1. Wählen Sie in der rechten Seitenleiste das Symbol **Eigenschafteninspektor** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/studio/icons/gears.png)) aus.

1. Geben Sie **parameters** in das Feld **Tag hinzufügen** ein.

1. Wählen Sie das **\$1**-Zeichen.

1. Das `parameters` Tag wird unter **Zellen-Tags** mit einem Häkchen angezeigt, was bedeutet, dass das Tag auf die Zelle angewendet wurde.

# Stellen Sie von Ihrem Studio-Notebook aus eine Connect zu einem Amazon-EMR-Cluster her
<a name="scheduled-notebook-connect-emr"></a>

Wenn Sie von Ihrem Jupyter Notebook in Studio aus eine Verbindung zu einem Amazon EMR-Cluster herstellen, müssen Sie möglicherweise zusätzliche Einstellungen vornehmen. In der folgenden Diskussion werden insbesondere zwei Probleme behandelt:
+ **Übergeben von Parametern an Ihren Amazon EMR-Verbindungsbefehl**. In SparkMagic Kerneln funktionieren Parameter, die Sie an Ihren Amazon EMR-Verbindungsbefehl übergeben, möglicherweise nicht wie erwartet, da Papermill Unterschiede in der Art und Weise hat, wie Papermill Parameter weitergibt und wie SparkMagic Parameter empfängt. Die Behelfslösung zur Behebung dieser Einschränkung besteht darin, Parameter als Umgebungsvariablen zu übergeben. Weitere Informationen zum Problem und zur Problemumgehung finden Sie unter [Übergeben Sie Parameter an Ihren EMR-Verbindungsbefehl](#scheduled-notebook-connect-emr-pass-param).
+ **Weitergabe von Benutzeranmeldedaten an Kerberos-, LDAP- oder HTTP Basic Auth-authentifizierte Amazon EMR-Cluster**. Im interaktiven Modus fragt Studio in einem Popup-Formular nach Anmeldeinformationen, in das Sie Ihre Anmeldeinformationen eingeben können. In Ihrem nicht-interaktiven Notebook müssen Sie sie durch das AWS Secrets Manager durchreichen. Weitere Informationen zur Verwendung der Jobs AWS Secrets Manager in Ihrem geplanten Notizbuch finden Sie unter. [Übergeben Sie Benutzeranmeldeinformationen an Ihren Kerberos-, LDAP- oder HTTP Basic Auth-authentifizierten Amazon EMR-Cluster](#scheduled-notebook-connect-emr-credentials)

## Übergeben Sie Parameter an Ihren EMR-Verbindungsbefehl
<a name="scheduled-notebook-connect-emr-pass-param"></a>

Wenn Sie Images mit dem SparkMagic PySpark und Spark-Kernel verwenden und Ihren EMR-Verbindungsbefehl parametrisieren möchten, geben Sie Ihre Parameter im Feld **Umgebungsvariablen** statt im Feld Parameter im Formular Job erstellen (im Dropdownmenü **Zusätzliche Optionen**) an. Stellen Sie sicher, dass Ihr EMR-Verbindungsbefehl im Jupyter Notebook diese Parameter als Umgebungsvariablen übergibt. Nehmen wir zum Beispiel an, Sie übergeben `cluster-id` als Umgebungsvariable, wenn Sie Ihren Auftrag erstellen. Ihr EMR-Verbindungsbefehl sollte wie folgt aussehen:

```
%%local
import os
```

```
%sm_analytics emr connect —cluster-id {os.getenv('cluster_id')} --auth-type None
```

Sie benötigen diese Problemumgehung, um die Anforderungen von und Papermill zu erfüllen. SparkMagic Für den Hintergrundkontext erwartet der SparkMagic Kernel, dass der `%%local` magische Befehl allen von Ihnen definierten lokalen Variablen beiliegt. Papermill gibt den `%%local` magischen Befehl jedoch nicht zusammen mit Ihren Überschreibungen weiter. Um diese Papermill-Einschränkung zu umgehen, müssen Sie Ihre Parameter als Umgebungsvariablen im Feld **Umgebungsvariablen** angeben.

## Übergeben Sie Benutzeranmeldeinformationen an Ihren Kerberos-, LDAP- oder HTTP Basic Auth-authentifizierten Amazon EMR-Cluster
<a name="scheduled-notebook-connect-emr-credentials"></a>

Um eine sichere Verbindung zu einem Amazon EMR-Cluster herzustellen, der Kerberos-, LDAP- oder HTTP Basic Auth-Authentifizierung verwendet, verwenden Sie den Befehl AWS Secrets Manager to pass user credentials to your connection. Informationen zum Erstellen eines Geheimnisses im Secrets Manager finden Sie unter [Erstellen eines AWS Secrets Manager -Geheimnisses](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html). Das Secret muss Ihren Benutzernamen und Ihr Passwort enthalten. Sie übergeben das Geheimnis mit dem `--secrets` Argument, wie im folgenden Beispiel dargestellt:

```
%sm_analytics emr connect --cluster-id j_abcde12345 
    --auth Kerberos 
    --secret aws_secret_id_123
```

Ihr Administrator kann eine flexible Zugriffsrichtlinie mithilfe einer attribute-based-access-control (ABAC-) Methode einrichten, die den Zugriff auf der Grundlage spezieller Tags zuweist. Sie können flexiblen Zugriff einrichten, um ein einzelnes Geheimnis für alle Benutzer im Konto oder ein Geheimnis für jeden Benutzer zu erstellen. Die folgenden Codebeispiele veranschaulichen diese Szenarien:

**Erstellen Sie ein einzelnes Geheimnis für alle Benutzer im Konto**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes123-1a2b3c",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes456-4d5e6f",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes789-7g8h9i"
            ]
        }
    ]
}
```

------

**Erstellen Sie für jeden Benutzer ein anderes Geheimnis**

Mit dem `PrincipleTag` Tag können Sie für jeden Benutzer ein anderes Geheimnis erstellen, wie im folgenden Beispiel gezeigt:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-20190101T012345"
            },
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/user-identity": "${aws:PrincipalTag/user-identity}"
                }
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": [
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes123-1a2b3c",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes456-4d5e6f",
                "arn:aws:secretsmanager:us-west-2:111122223333:secret:aes789-7g8h9i"
            ]
        }
    ]
}
```

------

# Einzelheiten zu Notebook-Jobs in Amazon SageMaker Studio
<a name="track-jobs-jobdefs"></a>

SageMaker Notebook-Jobs-Dashboards helfen Ihnen dabei, die von Ihnen geplanten Jobdefinitionen zu organisieren und den Überblick über die tatsächlichen Jobs zu behalten, die anhand Ihrer Jobdefinitionen ausgeführt werden. Bei der Planung von Notebook-Aufträge sind zwei wichtige Konzepte zu beachten: *Auftragsdefinitionen* und *Auftragsausführungen*. Auftragsdefinitionen sind Zeitpläne, die Sie für die Ausführung bestimmter Notebooks festlegen. Sie können beispielsweise eine Auftragsdefinition erstellen, die jeden Mittwoch notebook XYZ.ipynb ausführt. Mit dieser Auftragsdefinition werden die eigentlichen Auftragsausführungen gestartet, die am kommenden Mittwoch, nächsten Mittwoch, den Mittwoch danach usw. stattfinden. 

**Anmerkung**  
Der Notizbuch-Jobschritt des SageMaker Python SDK erstellt keine Jobdefinitionen. Sie können Ihre Jobs jedoch im Notebook-Jobs-Dashboard einsehen. Sowohl Jobs als auch Jobdefinitionen sind verfügbar, wenn Sie Ihren Job in einer JupyterLab Umgebung planen.

Die Benutzeroberfläche bietet zwei Hauptregister, mit denen Sie Ihre vorhandenen Auftragsdefinitionen und Auftragsausführungen verfolgen können:
+ Registerkarte **Notebook-Aufträge**: Auf dieser Registerkarte wird eine Liste all Ihrer Auftragsausführungen anhand Ihrer On-Demand-Aufträge und Auftragsdefinitionen angezeigt. Von dieser Registerkarte aus können Sie direkt auf die Details einer einzelnen Auftragsausführung zugreifen. Sie können sich beispielsweise einen einzelnen Auftragsauf ansehen, der vor zwei Mittwochen stattgefunden hat.
+ Registerkarte **Notebook-Auftragsdefinitionen**: Auf dieser Registerkarte wird eine Liste all Ihrer Auftragsdefinitionen angezeigt. Von dieser Registerkarte aus können Sie direkt auf die Details einer einzelnen Auftragsdefinition zugreifen. Sie können beispielsweise den Zeitplan anzeigen, den Sie für die Ausführung von XYZ.ipynb an jedem Mittwoch erstellt haben.

Einzelheiten zur Registerkarte **Notebook-Aufträge** finden Sie unter [Notebook-Aufträge anzeigen](view-notebook-jobs.md).

Einzelheiten zur Registerkarte **Notebook-Auftragsdefinitionen** finden Sie unter [Anzeigen von Notebook-Auftragsdefinitionen](view-def-detail-notebook-auto-run.md).

# Notebook-Aufträge anzeigen
<a name="view-notebook-jobs"></a>

**Anmerkung**  
Sie können Ihre Notebook-Jobs automatisch anzeigen, wenn Sie Ihren Notebook-Job über die Studio-Benutzeroberfläche geplant haben. Wenn Sie das SageMaker Python-SDK verwendet haben, um Ihren Notebook-Job zu planen, müssen Sie bei der Erstellung des Notebook-Job-Schritts zusätzliche Tags angeben. Details hierzu finden Sie unter [Sehen Sie sich Ihre Notebook-Jobs im Studio-UI-Dashboard an](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash).

Das folgende Thema enthält Informationen über die Registerkarte **Notebookaufträge** und darüber, wie Sie die Details eines einzelnen Notebookauftrags anzeigen können. Auf der Registerkarte **Notebook-Aufträge** (auf die Sie zugreifen, indem Sie in der Studio-Symbolleiste auf das Symbol **Notebook-Auftrag erstellen** (![\[Blue icon of a calendar with a checkmark, representing a scheduled task or event.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/icons/notebook-schedule.png)) klicken) wird ein Verlauf Ihrer On-Demand-Aufträge und aller Aufträge angezeigt, die anhand der von Ihnen erstellten Auftragsdefinitionen ausgeführt wurden. Diese Registerkarte wird geöffnet, nachdem Sie einen On-Demand-Auftrag erstellt haben, oder Sie können diese Registerkarte einfach selbst aufrufen, um eine Historie vergangener und aktueller Aufträge zu sehen. Wenn Sie den **Auftragsnamen** für einen Auftrag auswählen, können Sie die Details für einen einzelnen Auftrag auf der Seite mit den **Auftragsdetails** anzeigen. Weitere Informationen zur Seite mit den **Auftragsdetails** finden Sie im folgenden Abschnitt [Einen einzelnen Auftrag anzeigen](#view-jobs-detail-notebook-auto-run).

Die Registerkarte **Notebook-Aufträge** enthält die folgenden Informationen für jeden Auftrag:
+ **Ausgabedateien**: Zeigt die Verfügbarkeit von Ausgabedateien an. Diese Spalte kann eine der folgenden Werte enthalten:
  + Ein Download-Symbol (![\[Cloud icon with downward arrow, representing download or cloud storage functionality.\]](http://docs.aws.amazon.com/de_de/sagemaker/latest/dg/images/icons/File_download.png)): Das Ausgabe-Notebook und das Protokoll stehen zum Herunterladen zur Verfügung. Wählen Sie diese Schaltfläche, um sie herunterzuladen. Beachten Sie, dass bei einem fehlgeschlagenen Auftrag immer noch Ausgabedateien generiert werden können, wenn der Fehler erst nach der Erstellung der Dateien aufgetreten ist. In diesem Fall ist es hilfreich, sich das Ausgabe-Notebook anzusehen, um die Fehlerquelle zu identifizieren.
  + Links zum **Notebook** und zum **Ausgabeprotokoll**: Das Notebook und das Ausgabeprotokoll werden heruntergeladen. Wählen Sie die Links aus, um deren Inhalt anzuzeigen.
  + (leer): Der Auftrag wurde vom Benutzer gestoppt, oder es ist ein Fehler bei der Ausführung des Auftrags aufgetreten, bevor Ausgabedateien generiert werden konnten. Netzwerkfehler könnten beispielsweise verhindern, dass der Auftrag gestartet wird.

  Das Ausgabe-Notebook ist das Ergebnis der Ausführung aller Zellen im Notebook und enthält auch alle neuen oder übergeordneten Parameter oder Umgebungsvariablen, die Sie hinzugefügt haben. Das Ausgabeprotokoll zeichnet die Details des ausgeführten Aufträge auf, um Ihnen bei der Behebung fehlgeschlagener Aufträge zu helfen.
+ **Erstellt am**: Der Zeitpunkt, zu dem der On-Demand-Auftrag oder der geplante Auftrag erstellt wurde.
+ **Status**: Der aktuelle Status des Auftrags, der einer der folgenden Werte ist:
  + **In Bearbeitung**: Der Auftrag wird ausgeführt
  + **Fehlgeschlagen**: Der Auftrag ist aufgrund von Konfigurations- oder Notebook-Logikfehlern fehlgeschlagen
  + **Gestoppt**: Der Auftrag wurde vom Benutzer angehalten
  + **Abgeschlossen**: Der Auftrag wurde abgeschlossen
+ **Aktionen**: Diese Spalte enthält Tastenkombinationen, mit denen Sie Aufträge direkt in der Benutzeroberfläche beenden oder entfernen können.

## Einen einzelnen Auftrag anzeigen
<a name="view-jobs-detail-notebook-auto-run"></a>

Auf der Registerkarte **Notebook-Aufträge** können Sie einen Auftragsnamen auswählen, um die Seite mit den **Auftragsdetails** für einen bestimmten Auftrag anzuzeigen. Die Seite **Auftragsdetails** enthält alle Details, die Sie im Formular **Auftrag erstellen** angegeben haben. Verwenden Sie diese Seite, um die Einstellungen zu bestätigen, die Sie bei der Erstellung der Auftragsdefinition angegeben haben. 

Darüber hinaus können Sie auf der Seite selbst auf Verknüpfungen zugreifen, mit denen Sie die folgenden Aktionen ausführen können:
+ **Auftrag löschen**: Entfernen Sie den Auftrag aus dem Tab **Notebook-Aufträge**.
+ **Auftrag stoppen**: Stoppen Sie Ihren laufenden Auftrag.

# Anzeigen von Notebook-Auftragsdefinitionen
<a name="view-def-detail-notebook-auto-run"></a>

**Anmerkung**  
Wenn Sie Ihren Notebook-Job mit dem SageMaker Python-SDK geplant haben, überspringen Sie diesen Abschnitt. Nur Notebook-Jobs, die in Studio oder lokalen JupyterLab Umgebungen erstellt wurden, erstellen Jobdefinitionen. Wenn Sie Ihren Notebook-Job mit dem SageMaker Python-SDK erstellt haben, werden Ihnen daher keine Jobdefinitionen im Notebook Jobs-Dashboard angezeigt. Sie können Ihre Notebook-Aufträge jedoch wie unter [Notebook-Aufträge anzeigen](view-notebook-jobs.md) beschrieben anzeigen. 

Wenn Sie eine Auftragsdefinition erstellen, erstellen Sie einen Zeitplan für einen Auftrag. Auf der Registerkarte **Notebook-Auftragsdefinitionen** sind diese Zeitpläne sowie Informationen zu bestimmten Notebook-Auftragsdefinitionen aufgeführt. Sie können beispielsweise eine Auftragsdefinition erstellen, die jede Minute ein bestimmtes Notebook ausführt. Sobald diese Auftragsdefinition aktiv ist, sehen Sie jede Minute einen neuen Auftrag auf der Registerkarte **Notebook-Aufträge**. Auf der folgenden Seite finden Sie Informationen zur Registerkarte **Notebook-Auftragsdefinitionen** sowie zum Anzeigen einer Notebook-Auftragsdefinition.

Auf der Registerkarte **Notebook-Auftragsdefinitionen** wird ein Dashboard mit all Ihren Auftragsdefinitionen angezeigt. Es enthält das Eingabe-Notebook, die Erstellungszeit, den Zeitplan und den Status für jede Auftragsdefinition. Der Wert in der Spalte **Status** enthält ist eine der folgenden Werte:
+ **Unterbrochen**: Sie haben die Auftragsdefinition angehalten. Studio initiiert keine Aufträge, bis Sie die Definition wieder aufnehmen.
+ **Aktiv**: Der Zeitplan ist aktiviert und Studio kann das Notebook gemäß dem von Ihnen angegebenen Zeitplan ausführen.

Darüber hinaus enthält die Spalte **Aktionen** Verknüpfungen, mit denen Sie die folgenden Aufgaben direkt in der Benutzeroberfläche ausführen können:
+ Pause: Hält die Auftragsdefinition an. Studio erstellt keine Aufträge, bis Sie mit der Definition fortfahren.
+ Löschen: Entfernt die Auftragsdefinition von der Registerkarte **Notebook-Auftragsdefinitionen**.
+ Wiederaufnehmen: Setzt eine angehaltene Auftragsdefinition fort, sodass Aufträge damit gestartet werden können.

Wenn Sie eine Auftragsdefinition erstellt haben, diese aber keine Aufträge initiiert, finden Sie weitere Informationen in [Auftragsdefinition erstellt keine Aufträge](notebook-auto-run-troubleshoot.md#notebook-auto-run-troubleshoot-no-jobs) in der [Anleitung zur Fehlerbehebung](notebook-auto-run-troubleshoot.md).

## Eine einzelne Auftragsdefinition anzeigen
<a name="view-job-definition-detail-page"></a>

Wenn Sie auf der Registerkarte **Notebook-Auftragsdefinitionen** einen Namen für eine Auftragsdefinition auswählen, wird die Seite mit der **Auftragsdefinition** angezeigt, auf der Sie spezifische Details für eine Auftragsdefinition anzeigen können. Verwenden Sie diese Seite, um die Einstellungen zu bestätigen, die Sie bei der Erstellung der Auftragsdefinition angegeben haben. Wenn Sie keine Aufträge sehen, die anhand Ihrer Auftragsdefinition erstellt wurden, finden Sie weitere Informationen unter [Auftragsdefinition erstellt keine Aufträge](notebook-auto-run-troubleshoot.md#notebook-auto-run-troubleshoot-no-jobs) in der [Anleitung zur Fehlerbehebung](notebook-auto-run-troubleshoot.md).

Diese Seite enthält auch einen Abschnitt, in dem die Aufträge aufgeführt sind, die anhand dieser Auftragsdefinition ausgeführt werden. Das Anzeigen Ihrer Aufträge auf der Seite **Auftragsdefinition** ist möglicherweise eine produktivere Methode, um Ihre Aufträge zu organisieren, als Aufträge auf der Registerkarte **Notebook-Aufträge** anzuzeigen, in der alle Aufträge aus all Ihren Auftragsdefinitionen zusammengefasst sind.

Darüber hinaus bietet diese Seite Tastenkombinationen für die folgenden Aktionen:
+ **Pause/Wiederaufnahme**: Unterbrechen Sie Ihre Auftragsdefinition oder setzen Sie eine angehaltene Definition fort. Beachten Sie, dass Studio einen Auftrag, der gerade für diese Definition ausgeführt wird, nicht beendet.
+ **Ausführen**: Führt einen einzelnen On-Demand-Auftrag aus dieser Auftragsdefinition aus. Mit dieser Option können Sie auch verschiedene Eingabeparameter für Ihr Notebook angeben, bevor Sie den Auftrag starten.
+ **Auftragsdefinition bearbeiten**: Ändern Sie den Zeitplan Ihrer Auftragsdefinition. Sie können ein anderes Zeitintervall oder einen benutzerdefinierten Zeitplan mithilfe der Cron-Syntax wählen.
+ **Auftragsdefinition löschen**: Entfernen Sie die Auftragsdefinition aus der Registerkarte **Notebook-Auftragsdefinitionen**. Beachten Sie, dass Studio einen Auftrag, der gerade für diese Definition ausgeführt wird, nicht beendet.

# Anleitung zur Fehlerbehebung
<a name="notebook-auto-run-troubleshoot"></a>

In diesem Leitfaden zur Fehlerbehebung finden Sie Informationen zum Debuggen von Fehlern, die bei der Ausführung Ihres geplanten Notebook-Auftrags auftreten können.

## Auftragsdefinition erstellt keine Aufträge
<a name="notebook-auto-run-troubleshoot-no-jobs"></a>

Wenn Ihre Jobdefinition keine Jobs initiiert, wird der Notizbuch- oder Schulungsjob möglicherweise nicht im Bereich **Jobs** in der linken Navigationsleiste in Amazon SageMaker Studio angezeigt. In diesem Fall finden Sie Fehlermeldungen im Abschnitt **Pipelines** in der linken Navigationsleiste in Studio. Jede Notebook- oder Trainingsjobdefinition gehört zu einer Ausführungspipeline. Im Folgenden sind die häufigsten Ursachen für das Fehlschlagen beim Initiieren von Notebook-Aufträgen aufgeführt.

**Fehlende Berechtigungen**
+ Die der Stellendefinition zugewiesene Rolle unterhält kein Vertrauensverhältnis zu Amazon EventBridge. Das heißt, die Rolle EventBridge kann nicht übernommen werden.
+ Die der Auftragsdefinition zugewiesene Rolle hat nicht die Berechtigung, `SageMaker AI:StartPipelineExecution` aufzurufen.
+ Die der Auftragsdefinition zugewiesene Rolle hat nicht die Berechtigung, `SageMaker AI:CreateTrainingJob` aufzurufen.

**EventBridge Kontingent überschritten**

Wenn Sie einen `Put*` Fehler wie das folgende Beispiel sehen, haben Sie ein EventBridge Kontingent überschritten. Um dieses Problem zu beheben, können Sie ungenutzte EventBridge Läufe löschen oder eine Erhöhung Ihres Kontingents beantragen AWS Support .

```
LimitExceededException) when calling the PutRule operation: 
The requested resource exceeds the maximum number allowed
```

Weitere Informationen zu EventBridge Kontingenten finden Sie unter [ EventBridge Amazon-Kontingente](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html).

**Das Pipeline-Kontingent wurde überschritten**

Wenn Ihnen ein Fehler ähnlich dem folgenden Beispiel angezeigt wird, haben Sie die Anzahl der Pipelines überschritten, die Sie ausführen können. Um dieses Problem zu beheben, können Sie ungenutzte Pipelines in Ihrem Konto löschen oder eine Erhöhung Ihres Kontingents bei AWS Support beantragen.

```
ResourceLimitExceeded: The account-level service limit 
'Maximum number of pipelines allowed per account' is XXX Pipelines, 
with current utilization of XXX Pipelines and a request delta of 1 Pipelines.
```

Weitere Informationen zu Pipeline-Kontingenten finden Sie unter [Amazon SageMaker AI-Endpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

**Das Limit für Trainingsaufträge wurde überschritten**

Wenn Sie einen Fehler wie das folgende Beispiel sehen, haben Sie die Anzahl der Trainingsaufträge überschritten, die Sie ausführen können. Um dieses Problem zu lösen, reduzieren Sie die Anzahl der Schulungsjobs in Ihrem Konto oder bitten Sie AWS Support um eine Erhöhung Ihres Kontingents.

```
ResourceLimitExceeded: The account-level service limit 
'ml.m5.2xlarge for training job usage' is 0 Instances, with current 
utilization of 0 Instances and a request delta of 1 Instances. 
Please contact AWS support to request an increase for this limit.
```

Weitere Informationen zu den Quoten für Schulungsjobs finden Sie unter [Amazon SageMaker AI-Endpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

## Automatische Visualisierungen sind in Notizbüchern deaktiviert SparkMagic
<a name="notebook-auto-run-troubleshoot-visualization"></a>

Wenn Ihr Notebook den SparkMagic PySpark Kernel verwendet und Sie das Notebook als Notebook-Job ausführen, stellen Sie möglicherweise fest, dass Ihre auto Visualisierungen in der Ausgabe deaktiviert sind. Das Einschalten der auto Visualisierung führt dazu, dass der Kernel hängen bleibt, sodass der Notebook-Job-Executor derzeit auto Visualisierungen als Workaround deaktiviert.

# Einschränkungen und Überlegungen
<a name="notebook-auto-run-constraints"></a>

Lesen Sie sich die folgenden Einschränkungen durch, um sicherzustellen, dass Ihre Notebook-Aufträge erfolgreich abgeschlossen werden. Studio verwendet Papermill zur Ausführung von Notebooks. Möglicherweise müssen Sie die Jupyter Notebooks aktualisieren, um sie an die Anforderungen von Papermill anzupassen. Es gibt auch Einschränkungen in Bezug auf den Inhalt von LCC-Skripten und wichtige Informationen zur VPC-Konfiguration, die es zu verstehen gilt.

## JupyterLab Version
<a name="notebook-auto-run-constraints-jpt"></a>

JupyterLab Version 4.0 wird unterstützt.

## Installation von Paketen, die einen Kernel-Neustart erfordern
<a name="notebook-auto-run-constraints-pmill-pkg"></a>

Papermill unterstützt nicht den Aufruf von `pip install` zur Installation von Paketen, die einen Neustart des Kernels erfordern. Verwenden Sie es in diesem Fall `pip install` in einem Initialisierungsskript. Bei einer Paketinstallation, für die kein Kernel-Neustart erforderlich ist, können Sie trotzdem `pip install` in das Notebook aufnehmen. 

## Bei Jupyter registrierte Kernel- und Sprachnamen
<a name="notebook-auto-run-constraints-pmill-names"></a>

Papermill registriert einen Übersetzer für bestimmte Kernel und Sprachen. Wenn Sie Ihre eigene Instance (BYOI) mitbringen, verwenden Sie einen Standard-Kernelnamen, wie im folgenden Codeausschnitt dargestellt:

```
papermill_translators.register("python", PythonTranslator)
papermill_translators.register("R", RTranslator)
papermill_translators.register("scala", ScalaTranslator)
papermill_translators.register("julia", JuliaTranslator)
papermill_translators.register("matlab", MatlabTranslator)
papermill_translators.register(".net-csharp", CSharpTranslator)
papermill_translators.register(".net-fsharp", FSharpTranslator)
papermill_translators.register(".net-powershell", PowershellTranslator)
papermill_translators.register("pysparkkernel", PythonTranslator)
papermill_translators.register("sparkkernel", ScalaTranslator)
papermill_translators.register("sparkrkernel", RTranslator)
papermill_translators.register("bash", BashTranslator)
```

## Parameter und Grenzwerte für Umgebungsvariablen
<a name="notebook-auto-run-constraints-var-limits"></a>

**Parameter und Grenzwerte für Umgebungsvariablen.** Wenn Sie Ihren Notebook-Auftrag erstellen, erhält er die von Ihnen angegebenen Parameter und Umgebungsvariablen. Sie können bis zu 100 Parameter übergeben. Jeder Parametername kann bis zu 256 Zeichen lang sein, und der zugehörige Wert kann bis zu 2500 Zeichen lang sein. Wenn Sie Umgebungsvariablen übergeben, können Sie bis zu 28 Variablen übergeben. Der Variablenname und der zugehörige Wert können bis zu 512 Zeichen lang sein. Wenn Sie mehr als 28 Umgebungsvariablen benötigen, verwenden Sie zusätzliche Umgebungsvariablen in einem Initialisierungsskript, bei dem die Anzahl der Umgebungsvariablen, die Sie verwenden können, unbegrenzt ist.

## Jobs und Jobdefinitionen anzeigen
<a name="notebook-auto-run-constraints-view-job"></a>

**Jobs und Jobdefinitionen anzeigen** Wenn Sie Ihren Notebook-Job in der Studio-Benutzeroberfläche im JupyterLab Notizbuch planen, können Sie [Ihre Notebook-Jobs und Ihre [Notebook-Jobdefinitionen](https://docs.aws.amazon.com/sagemaker/latest/dg/view-def-detail-notebook-auto-run.html) in der Studio-Benutzeroberfläche anzeigen](https://docs.aws.amazon.com/sagemaker/latest/dg/view-notebook-jobs.html). Wenn Sie Ihren Notebook-Job mit dem SageMaker Python SDK geplant haben, können Sie nur Ihre Jobs anzeigen — der SageMaker Python SDK-Notebook-Job-Schritt erstellt keine Jobdefinitionen. Um Ihre Jobs anzuzeigen, müssen Sie Ihrer Notebook-Job-Step-Instance außerdem zusätzliche Tags hinzufügen. Details hierzu finden Sie unter [Sehen Sie sich Ihre Notebook-Jobs im Studio-UI-Dashboard an](create-notebook-auto-run-sdk.md#create-notebook-auto-run-dash).

## Image
<a name="notebook-auto-run-constraints-image"></a>

Sie müssen Bildeinschränkungen verwalten, je nachdem, ob Sie Notebook-Jobs in Studio oder den SageMaker Python SDK-Notebook-Job-Schritt in einer Pipeline ausführen.

### Bildeinschränkungen für SageMaker KI-Notebook-Jobs (Studio)
<a name="notebook-auto-run-constraints-image-studio"></a>

**Image- und Kernel-Unterstützung.** Der Treiber, der Ihren Notebook-Auftrag startet, geht von folgenden Voraussetzungen aus:
+ Eine grundlegende Python-Laufzeitumgebung ist in den Studio- oder bring-your-own (BYO-) Images installiert und ist die Standardeinstellung in der Shell.
+ Die grundlegende Python-Laufzeitumgebung umfasst den Jupyter-Client mit ordnungsgemäß konfigurierten Kernelspezifikationen.
+ Die grundlegende Python-Laufzeitumgebung enthält die `pip` Funktion, sodass der Notebook-Auftrag Systemabhängigkeiten installieren kann.
+ Bei Images mit mehreren Umgebungen sollte Ihr Initialisierungsskript zur richtigen kernelspezifischen Umgebung wechseln, bevor Sie notebookspezifische Pakete installieren. Sie sollten nach der Konfiguration der Kernel-Python-Laufzeitumgebung zur Standard-Python-Laufzeitumgebung zurückkehren, falls sie sich von der Kernel-Laufzeitumgebung unterscheidet.

Der Treiber, der Ihren Notebook-Auftrag startet, ist ein Bash-Skript, und Bash v4 muss unter /bin/bash verfügbar sein. 

**Root-Rechte auf bring-your-own-images (BYOI).** Sie benötigen Root-Rechte für Ihre eigenen Studio-Images, entweder als Root-Benutzer oder über `sudo` Access. Wenn Sie kein Root-Benutzer sind, aber über `sudo` auf Root-Rechte zugreifen, verwenden Sie **1000/100** als `UID/GID`.

### Bildeinschränkungen für SageMaker AI Python SDK-Notebook-Jobs
<a name="notebook-auto-run-constraints-image-sdk"></a>

Der Notebook-Job-Schritt unterstützt die folgenden Bilder:
+ SageMaker Verteilung Die Bilder sind unter aufgeführt[SageMaker Amazon-Bilder sind für die Verwendung mit Studio Classic-Notebooks verfügbar](notebooks-available-images.md).
+ Ein benutzerdefiniertes Image, das auf den SageMaker Distributions-Images in der vorherigen Liste basiert. Verwenden Sie ein [SageMaker Distribution-Image](https://github.com/aws/sagemaker-distribution) als Basis.
+ Ein benutzerdefiniertes Image (BYOI) mit vorinstallierten Notebook-Job-Abhängigkeiten (d. h. [sagemaker-headless-execution-driver](https://pypi.org/project/sagemaker-headless-execution-driver/) Ihr Image muss die folgenden Anforderungen erfüllen:
  + Das Image ist mit den Abhängigkeiten von Notebook-Aufträgen vorinstalliert.
  + Eine Python-Basislaufzeitumgebung ist installiert und in der Shell-Umgebung standardmäßig vorhanden.
  + Die grundlegende Python-Laufzeitumgebung umfasst den Jupyter-Client mit ordnungsgemäß konfigurierten Kernelspezifikationen.
  + Sie verfügen über Root-Rechte, entweder als Root-Benutzer oder durch `sudo`-Zugriff. Wenn Sie kein Root-Benutzer sind, aber über `sudo` auf Root-Rechte zugreifen, verwenden Sie **1000/100** als `UID/GID`.

## Bei der Schaffung von Arbeitsplätzen verwendete VPC-Subnetze
<a name="notebook-auto-run-constraints-vpc"></a>

Wenn Sie eine VPC verwenden, verwendet Studio Ihre privaten Subnetze, um Ihren Auftrag zu erstellen. Geben Sie ein bis fünf private Subnetze (und 1–15 Sicherheitsgruppen) an.

Wenn Sie eine VPC mit privaten Subnetzen verwenden, müssen Sie eine der folgenden Optionen wählen, um sicherzustellen, dass der Notebook-Auftrag eine Verbindung zu abhängigen Diensten oder Ressourcen herstellen kann:
+ Wenn der Job Zugriff auf einen AWS Dienst benötigt, der VPC-Schnittstellen-Endpunkte unterstützt, erstellen Sie einen Endpunkt, um eine Verbindung mit dem Dienst herzustellen. Eine Liste der Dienste, die Schnittstellen-Endpunkte unterstützen, finden Sie unter [AWS Services that integration with](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html). AWS PrivateLink Informationen zum Erstellen eines Schnittstellen-VPC-Endpunkts finden Sie unter [Zugreifen auf einen AWS Dienst mithilfe eines Schnittstellen-VPC-Endpunkts](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html). Es muss mindestens ein Amazon-S3-VPC-Endpunkt-Gateway bereitgestellt werden.
+ Wenn ein Notebook-Job Zugriff auf einen AWS Dienst benötigt, der keine VPC-Schnittstellen-Endpunkte unterstützt, oder auf eine Ressource außerhalb von AWS, erstellen Sie ein NAT-Gateway und konfigurieren Sie Ihre Sicherheitsgruppen so, dass ausgehende Verbindungen zugelassen werden. Informationen zum Einrichten eines NAT-Gateways für Ihre VPC finden Sie unter *VPC mit öffentlichen und privaten Subnetzen (NAT)* im [Amazon Virtual Private Cloud Benutzerhandbuch](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html).

## Service Limits
<a name="notebook-auto-run-constraints-service-limit"></a>

Da der Notebook-Job-Scheduler auf Pipelines, SageMaker Training und Amazon EventBridge Services basiert, unterliegen Ihre Notebook-Jobs ihren dienstspezifischen Kontingenten. Wenn Sie diese Kontingente überschreiten, werden Ihnen möglicherweise Fehlermeldungen im Zusammenhang mit diesen Diensten angezeigt. Beispielsweise gibt es Grenzwerte für die Anzahl der Pipelines, die Sie gleichzeitig ausführen können, und für die Anzahl der Regeln, die Sie für einen einzelnen Event-Bus einrichten können. Weitere Informationen zu SageMaker KI-Kontingenten finden Sie unter [Amazon SageMaker AI Endpoints and Quotas](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html). Weitere Informationen zu EventBridge Kontingenten finden Sie unter [ EventBridge Amazon-Kontingente](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html).

# Preise für SageMaker Notebook-Jobs
<a name="notebook-auto-run-pricing"></a>

Wenn Sie Notebook-Jobs planen, werden Ihre Jupyter-Notebooks auf SageMaker Trainingsinstanzen ausgeführt. Nachdem Sie in Ihrem Formular **Auftrag erstellen** ein **Image** und einen **Kernel** ausgewählt haben, enthält das Formular eine Liste der verfügbaren Berechnungstypen. Ihnen wird der von Ihnen gewählte Berechnungstyp auf der Grundlage der kombinierten Nutzungsdauer für alle Notebook-Aufträge, die anhand der Auftragsdefinition ausgeführt werden, in Rechnung gestellt. Wenn Sie keinen Berechnungstyp angeben, weist Ihnen SageMaker AI den standardmäßigen Amazon EC2 EC2-Instance-Typ zu. `ml.m5.large` Eine Aufschlüsselung der SageMaker KI-Preise nach Compute-Typ finden Sie unter [Amazon SageMaker AI-Preise](https://aws.amazon.com/sagemaker/pricing).

# Planen Sie Ihre ML-Workflows
<a name="workflow-scheduling"></a>

Mit Amazon SageMaker AI können Sie Ihren gesamten ML-Workflow verwalten, indem Sie Datensätze erstellen, Datentransformationen durchführen, Modelle aus Daten erstellen und Ihre Modelle zur Inferenz an Endpunkten bereitstellen. Wenn Sie eine Teilmenge von Schritten Ihres Workflows regelmäßig ausführen, können Sie sich auch dafür entscheiden, diese Schritte nach einem Zeitplan auszuführen. Beispielsweise möchten Sie vielleicht einen Job in SageMaker Canvas planen, um jede Stunde eine Transformation für neue Daten durchzuführen. In einem anderen Szenario möchten Sie vielleicht einen wöchentlichen Job planen, um die Modellabweichung Ihres bereitgestellten Modells zu überwachen. Sie können einen wiederkehrenden Zeitplan mit einem beliebigen Zeitintervall angeben – Sie können jede Sekunde, Minute, täglich, wöchentlich, monatlich oder am dritten Freitag eines jeden Monats um 15 Uhr wiederholen.

**Die folgenden Szenarien fassen die Optionen zusammen, die Ihnen je nach Anwendungsfall zur Verfügung stehen.**
+ Anwendungsfall 1: **Erstellen und planen Sie Ihren ML-Workflow in einer Umgebung ohne Code.** Für Anfänger oder SageMaker KI-Neulinge können Sie Amazon SageMaker Canvas verwenden, um sowohl Ihren ML-Workflow zu erstellen als auch geplante Läufe mit dem auf der Canvas-Benutzeroberfläche basierenden Scheduler zu erstellen.
+ Anwendungsfall 2: **Erstellen Sie Ihren Workflow in einem einzigen Jupyter-Notebook und verwenden Sie einen No-Code-Scheduler**. Erfahrene ML-Praktiker können Code verwenden, um ihren ML-Workflow in einem Jupyter-Notebook zu erstellen, und die im Widget „Notebookjobs“ verfügbare Planungsoption ohne Code verwenden. Wenn Ihr ML-Workflow aus mehreren Jupyter-Notebooks besteht, können Sie die in Anwendungsfall 3 beschriebene Planungsfunktion im Python-SDK von Pipelines verwenden.
+ Anwendungsfall 3: **Erstellen und planen Sie Ihren ML-Workflow** mithilfe von Pipelines. Fortgeschrittene Benutzer können das [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable), den visuellen Editor von Amazon SageMaker Pipelines oder die in Pipelines verfügbaren EventBridge Amazon-Planungsoptionen verwenden. Sie können einen ML-Workflow erstellen, der aus Schritten besteht, die Operationen mit verschiedenen SageMaker KI-Funktionen und AWS -Services wie Amazon EMR beinhalten.


| Deskriptor | Anwendungsfall 1 | Anwendungsfall 2 | Anwendungsfall 3 | 
| --- | --- | --- | --- | 
| SageMaker KI-Funktion | Amazon SageMaker Canvas-Datenverarbeitung und ML-Workflow-Planung | Widget zum Zeitplan für Notebook-Jobs (UI) | Planungsoptionen für das Python-SDK für Pipelines | 
| Description | Mit Amazon SageMaker Canvas können Sie automatische Durchläufe von Datenverarbeitungsschritten und in einem separaten Verfahren automatische Datensatzaktualisierungen planen. Sie können Ihren gesamten ML-Workflow auch indirekt planen, indem Sie eine Konfiguration einrichten, die bei jeder Aktualisierung eines bestimmten Datensatzes eine Batch-Vorhersage ausführt. Sowohl für die automatisierte Datenverarbeitung als auch für Datensatzaktualisierungen bietet SageMaker Canvas ein Basisformular, in dem Sie eine Startzeit und ein Startdatum sowie ein Zeitintervall zwischen den Durchläufen auswählen (oder einen Cron-Ausdruck, wenn Sie einen Datenverarbeitungsschritt planen). Weitere Informationen zur Planung von Datenverarbeitungsschritten finden Sie unter [Erstellen eines Zeitplans für die automatische Verarbeitung neuer Daten](canvas-data-export-schedule-job.md). Weitere Informationen zum Planen von Aktualisierungen von Datenmengen und Batch finden Sie unter [So verwalten Sie Automatisierungen](canvas-manage-automations.md). | Wenn Sie Ihren Datenverarbeitungs- und Pipeline-Workflow in einem einzigen Jupyter-Notebook erstellt haben, können Sie das Widget Notebookjobs verwenden, um Ihr Notebook bei Bedarf oder nach einem Zeitplan auszuführen. Das Widget „Notebookjobs“ zeigt ein einfaches Formular an, in dem Sie den Berechnungstyp, den Ausführungsplan und optionale benutzerdefinierte Einstellungen angeben. Sie definieren Ihren Ausführungsplan, indem Sie ein zeitbasiertes Intervall auswählen oder einen Cron-Ausdruck einfügen. Das Widget wird automatisch in Studio installiert, oder Sie können eine zusätzliche Installation durchführen, um diese Funktion in Ihrer lokalen JupyterLab Umgebung zu verwenden. Weitere Informationen zu Notebook-Aufträgen finden Sie unter [SageMaker Jobs im Notizbuch](notebook-auto-run.md). | Sie können die Planungsfunktionen im SageMaker SDK verwenden, wenn Sie Ihren ML-Workflow mit Pipelines implementiert haben. Ihre Pipeline kann Schritte wie Feinabstimmung, Datenverarbeitung und Bereitstellung umfassen. Pipelines unterstützt zwei Möglichkeiten, Ihre Pipeline zu planen. Sie können eine EventBridge Amazon-Regel erstellen oder den SageMaker [PipelineSchedule](https://sagemaker.readthedocs.io/en/stable/workflows/pipelines/sagemaker.workflow.pipelines.html#sagemaker.workflow.triggers.PipelineSchedule)SDK-Konstruktor oder den visuellen Editor von Amazon SageMaker Pipelines verwenden, um einen Zeitplan zu definieren. Weitere Informationen zu den in Pipelines verfügbaren Planungsoptionen finden Sie unter [Planen von Pipeline-Läufen](pipeline-eventbridge.md). | 
| Optimiert für | Bietet eine Planungsoption für einen SageMaker Canvas-ML-Workflow | Bietet eine UI-basierte Planungsoption für Jupyter-Notebook-basierte ML-Workflows | Stellt ein SageMaker SDK oder eine EventBridge Planungsoption für ML-Workflows bereit | 
| Überlegungen | Sie können Ihren Workflow mit dem Canvas-Framework ohne Code planen, aber Datensatzaktualisierungen und Batch-Transformationsaktualisierungen können bis zu 5 GB an Daten verarbeiten. | Sie können ein Notebook über das UI-basierte Planungsformular planen, jedoch nicht mehrere Notebooks im selben Auftrag. Um mehrere Notebooks zu planen, verwenden Sie die in Anwendungsfall 3 beschriebene codebasierte Lösung des Pipelines SDK. | Sie können die fortschrittlicheren (SDK-basierten) Planungsfunktionen von Pipelines verwenden. Sie müssen jedoch auf die API-Dokumentation zurückgreifen, um die richtigen Optionen anzugeben, anstatt aus einem auf der Benutzeroberfläche basierenden Optionsmenü auszuwählen. | 
| Empfohlene Umgebung | Amazon SageMaker Leinwand | Studio, lokale JupyterLab Umgebung | Studio, lokale JupyterLab Umgebung, beliebiger Code-Editor | 

## Weitere Ressourcen
<a name="workflow-scheduling-addit"></a>

**SageMaker KI bietet die folgenden zusätzlichen Optionen für die Planung Ihrer Workflows.**
+ [Was ist Amazon EventBridge Scheduler?](https://docs.aws.amazon.com/scheduler/latest/UserGuide/what-is-scheduler.html) . Die in diesem Abschnitt erörterten Planungsoptionen umfassen vorgefertigte Optionen, die in SageMaker Canvas, Studio und dem SageMaker AI Python SDK verfügbar sind. Alle Optionen erweitern die Funktionen von Amazon EventBridge, und Sie können damit auch Ihre eigene benutzerdefinierte Planungslösung erstellen EventBridge.
+ [Geplante und ereignisbasierte Ausführungen für Feature-Prozessor-Pipelines](feature-store-feature-processor-schedule-pipeline.md). Mit Amazon SageMaker Feature Store Feature Processing können Sie Ihre Feature Processing-Pipelines so konfigurieren, dass sie nach einem Zeitplan oder als Ergebnis eines anderen AWS Serviceereignisses ausgeführt werden.

# AWS Batch Unterstützung für SageMaker KI-Ausbildungsjobs
<a name="training-job-queues"></a>

In einer [AWS Batch Job-Warteschlange](https://docs.aws.amazon.com/batch/latest/userguide/job_queues.html) werden eingereichte Jobs gespeichert und priorisiert, bevor sie auf Rechenressourcen ausgeführt werden. Sie können SageMaker KI-Schulungsjobs an eine Job-Warteschlange senden, um die Vorteile der von bereitgestellten Tools zur serverlosen Jobplanung und Priorisierung zu nutzen. AWS Batch

## Funktionsweise
<a name="training-job-queues-how-it-works"></a>

In den folgenden Schritten wird der Arbeitsablauf zur Verwendung einer AWS Batch Job-Warteschlange mit SageMaker KI-Schulungsaufträgen beschrieben. Weitere Informationen und Beispiel-Notebooks finden Sie im [Erste Schritte](#training-job-queues-get-started) Abschnitt.
+ Einrichtung AWS Batch und alle erforderlichen Berechtigungen. Weitere Informationen finden Sie unter [Einrichten von AWS Batch](https://docs.aws.amazon.com/batch/latest/userguide/get-set-up-for-aws-batch.html) im *Benutzerhandbuch für AWS Batch *.
+ Erstellen Sie die folgenden AWS Batch Ressourcen in der Konsole oder mithilfe von AWS CLI:
  + [Serviceumgebung](https://docs.aws.amazon.com/batch/latest/userguide/service-environments.html) — Enthält Konfigurationsparameter für die Integration mit SageMaker KI.
  + [SageMaker Warteschlange für KI-Schulungsjobs](https://docs.aws.amazon.com/batch/latest/userguide/create-sagemaker-job-queue.html) — Integriert sich in SageMaker KI, um Schulungsjobs einzureichen.
+ Konfigurieren Sie Ihre Daten und fordern Sie einen SageMaker KI-Schulungsjob an, z. B. Ihr Schulungscontainer-Image. Um einen Trainingsjob an eine AWS Batch Warteschlange zu senden, können Sie das AWS CLI AWS SDK für Python (Boto3), oder das SageMaker AI Python SDK verwenden.
+ Reichen Sie Ihre Trainingsjobs in der Auftragswarteschlange ein. Sie können die folgenden Optionen verwenden, um Aufträge einzureichen:
  + Verwenden Sie die AWS Batch [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html)-API.
  + Verwenden Sie das [`aws_batch`Modul](https://github.com/aws/sagemaker-python-sdk/tree/master/src/sagemaker/aws_batch) aus dem SageMaker AI Python SDK. Nachdem Sie ein TrainingQueue Objekt und ein Modell-Trainingsobjekt (z. B. einen Estimator oder ModelTrainer) erstellt haben, können Sie TrainingQueue mithilfe der `queue.submit()` Methode Trainingsjobs an die senden.
+ Nachdem Sie Jobs eingereicht haben, können Sie Ihre Job-Warteschlange und den Job-Status mit der AWS Batch Konsole, der AWS Batch [DescribeServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeServiceJob.html)API oder der SageMaker [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)KI-API einsehen.

## Kosten und Verfügbarkeit
<a name="training-job-queues-cost-availability"></a>

Detaillierte Preisinformationen zu Schulungsjobs finden Sie unter [Amazon SageMaker AI-Preise](https://aws.amazon.com/sagemaker-ai/pricing/). Mit AWS Batch zahlen Sie nur für alle genutzten AWS Ressourcen, wie z. B. Amazon EC2 EC2-Instances. Weitere Informationen finden Sie unter [AWS Batch Preise](https://aws.amazon.com/batch/pricing/).

Sie können es AWS Batch für SageMaker KI-Schulungsjobs überall dort nutzen AWS-Region , wo Schulungsjobs verfügbar sind. Weitere Informationen finden Sie unter [Amazon SageMaker AI-Endpunkte und Kontingente](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html).

Um sicherzustellen, dass Sie über die erforderliche Kapazität verfügen, wenn Sie sie benötigen, können Sie flexible SageMaker AI-Trainingspläne (FTP) verwenden. Diese Pläne ermöglichen es Ihnen, Kapazitäten für Ihre Trainingsjobs zu reservieren. In Kombination mit AWS Batch den Warteschlangenfunktionen können Sie die Auslastung während der Laufzeit Ihres Plans maximieren. Weitere Informationen finden Sie unter [Trainingspläne für Ihre Schulungsjobs oder HyperPod -cluster reservieren](https://docs.aws.amazon.com/sagemaker/latest/dg/reserve-capacity-with-training-plans.html).

## Erste Schritte
<a name="training-job-queues-get-started"></a>

Ein Tutorial zum Einrichten einer AWS Batch Job-Warteschlange und zum Einreichen von SageMaker KI-Schulungsjobs finden Sie unter [Erste Schritte mit AWS Batch SageMaker KI](https://docs.aws.amazon.com/batch/latest/userguide/getting-started-sagemaker.html) im *AWS Batch Benutzerhandbuch*.

Jupyter-Notebooks, die zeigen, wie das `aws_batch` Modul im SageMaker AI Python SDK verwendet wird, finden Sie in den [Notebook-Beispielen AWS Batch für SageMaker AI-Training-Jobs im Repository](https://github.com/aws/amazon-sagemaker-examples/tree/default/%20%20%20%20%20%20build_and_train_models/sm-training-queues). amazon-sagemaker-examples GitHub 