

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.

# Servicejobs in AWS Batch
<a name="service-jobs"></a>

AWS Batch Serviceaufträge ermöglichen es Ihnen, Anfragen über AWS Batch Auftragswarteschlangen an AWS Dienste zu senden. AWS Batch Unterstützt derzeit SageMaker Schulungsjobs als Servicejobs. Im Gegensatz zu containerisierten Jobs, bei denen die zugrunde liegende Containerausführung AWS Batch verwaltet wird, ermöglichen Servicejobs die Bereitstellung von Funktionen AWS Batch zur Auftragsplanung und Warteschlangenbildung, während der AWS Zieldienst (z. B. SageMaker KI) die eigentliche Auftragsausführung übernimmt.

AWS Batch Für SageMaker Trainingsjobs ermöglicht es Datenwissenschaftlern, Trainingsjobs mit Prioritäten an konfigurierbare Warteschlangen zu senden. Dadurch wird sichergestellt, dass Workloads ohne Eingreifen ausgeführt werden, sobald Ressourcen verfügbar sind. Diese Funktion bewältigt häufig auftretende Herausforderungen wie die Ressourcenkoordination, die Vermeidung unbeabsichtigter Mehrausgaben, die Einhaltung von Budgetbeschränkungen, die Optimierung der Kosten mit Reserved Instances und die Eliminierung der Notwendigkeit manueller Koordination zwischen Teammitgliedern.

Serviceaufträge unterscheiden sich in mehreren wesentlichen Punkten von Aufträgen in Containern:
+ **Einreichung von Job**: Servicejobs müssen über die [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html)API eingereicht werden. Serviceaufträge können nicht über die AWS Batch Konsole eingereicht werden.
+ **Auftragsausführung**: AWS Batch plant Serviceaufträge und stellt sie in eine Warteschlange, aber der AWS Zieldienst führt die tatsächliche Arbeitslast des Jobs aus. 
+ **Ressourcen-Identifikatoren**: Dienstaufträge verwenden solche ARNs , die „service-job“ statt „job“ enthalten, um sie von containerisierten Aufträgen zu unterscheiden.

Informationen zu den ersten Schritten mit AWS Batch Serviceaufträgen für SageMaker Schulungen finden Sie unter. [Erste Schritte mit AWS Batch einer SageMaker KI](getting-started-sagemaker.md)

**Topics**
+ [Payloads für Servicejobs in AWS Batch](service-job-payload.md)
+ [Reichen Sie einen Servicejob ein in AWS Batch](service-job-submit.md)
+ [Zuordnen AWS Batch des Dienstauftragsstatus zum SageMaker AI-Status](service-job-status.md)
+ [Strategien zur Wiederholung von Serviceaufträgen in AWS Batch](service-job-retries.md)
+ [Überwachen Sie Serviceaufträge in einer Warteschlange AWS Batch](monitor-sagemaker-job-queue.md)
+ [Serviceaufträge beenden](terminate-service-jobs.md)

# Payloads für Servicejobs in AWS Batch
<a name="service-job-payload"></a>

Wenn Sie Serviceaufträge mit senden [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html), geben Sie zwei wichtige Parameter an, die den Job definieren:`serviceJobType`, und`serviceRequestPayload`.
+ Der `serviceJobType` gibt an, welcher AWS Dienst den Job ausführt. Für SageMaker Trainingsjobs ist dieser Wert`SAGEMAKER_TRAINING`.
+ Das `serviceRequestPayload` ist eine JSON-kodierte Zeichenfolge, die die vollständige Anfrage enthält, die normalerweise direkt an den Zieldienst gesendet würde. Für SageMaker Trainingsjobs enthält diese Payload dieselben Parameter, die Sie für die KI-API verwenden würden. SageMaker [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)

Eine vollständige Liste aller verfügbaren Parameter und ihrer Beschreibungen finden Sie in der SageMaker [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)AI-API-Referenz. Alle von unterstützten Parameter `CreateTrainingJob` können in Ihre Service-Job-Payload aufgenommen werden.

Beispiele für weitere Konfigurationen von Trainingsjobs finden Sie unter [APIsCLI und SDKs](https://docs.aws.amazon.com/sagemaker/latest/dg/api-and-sdk-reference-overview.html) im [SageMaker AI Developer Guide](https://docs.aws.amazon.com/sagemaker/latest/dg/gs.html).

Wir empfehlen, das pySDK für die Erstellung von Dienstaufträgen zu verwenden, da pySDK über Hilfsklassen und Hilfsprogramme verfügt. Ein Beispiel für die Verwendung von pySDK finden Sie unter [SageMaker KI-Beispiele](https://github.com/aws/amazon-sagemaker-examples) auf. GitHub

## Beispiel für eine Payload für Service-Jobs
<a name="service-job-payload-example"></a>

Das folgende Beispiel zeigt eine einfache Payload für einen Servicejob für einen SageMaker Trainingsjob, der ein „Hello World“ -Trainingsskript ausführt:

Diese Payload würde beim Aufrufen als JSON-Zeichenfolge an den `serviceRequestPayload` Parameter übergeben. `SubmitServiceJob`

```
{
  "TrainingJobName": "my-simple-training-job",
  "RoleArn": "arn:aws:iam::123456789012:role/SageMakerExecutionRole",
  "AlgorithmSpecification": {
    "TrainingInputMode": "File",
    "TrainingImage": "763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310",
    "ContainerEntrypoint": [
      "echo",
      "hello world"
    ]
  },
  "ResourceConfig": {
    "InstanceType": "ml.c5.xlarge",
    "InstanceCount": 1,
    "VolumeSizeInGB": 1
  },
  "OutputDataConfig": {
    "S3OutputPath": "s3://your-output-bucket/output"
  },
  "StoppingCondition": {
    "MaxRuntimeInSeconds": 30
  }
}
```

# Reichen Sie einen Servicejob ein in AWS Batch
<a name="service-job-submit"></a>

Um Serviceaufträge an zu senden AWS Batch, verwenden Sie die [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html)API. Sie können Jobs mit dem SDK AWS CLI oder dem SDK einreichen.

Wenn Sie noch keine Ausführungsrolle haben, müssen Sie eine erstellen, bevor Sie Ihren Servicejob einreichen können. Informationen zum Erstellen der SageMaker AI-Ausführungsrolle finden Sie unter [So verwenden Sie SageMaker KI-Ausführungsrollen](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html) im *[SageMaker KI-Entwicklerhandbuch](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html)*.

## Arbeitsablauf für die Einreichung von Serviceaufträgen
<a name="service-job-submit-workflow"></a>

Wenn Sie einen Serviceauftrag einreichen, AWS Batch folgt dieser Arbeitsablauf:

1. AWS Batch empfängt Ihre `[SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html)` Anfrage und validiert die AWS Batch-spezifischen Parameter. Das `serviceRequestPayload` wird ohne Validierung übergeben.

1. Der Job wechselt in den `SUBMITTED` Status und wird in die angegebene Auftragswarteschlange gestellt

1. AWS Batch bewertet, ob in der Serviceumgebung Kapazität für `RUNNABLE` Jobs an der Spitze der Warteschlange verfügbar ist

1. Wenn Kapazität verfügbar ist, wird der Job verschoben `SCHEDULED` und der Job wurde an KI übergeben SageMaker 

1. Wenn Kapazität erworben wurde und SageMaker KI die Serviceauftragsdaten heruntergeladen hat, beginnt die Initialisierung des Serviceauftrags und der Job wird zu `STARTING` geändert. 

1. Wenn SageMaker KI mit der Ausführung des Jobs beginnt, wird sein Status auf `RUNNING` geändert.

1. Während SageMaker KI den Job ausführt, AWS Batch überwacht er seinen Fortschritt und ordnet den Dienststatus den AWS Batch Auftragsstatus zu. Einzelheiten darüber, wie die Status von Dienstaufträgen zugeordnet werden, finden Sie unter [Zuordnen AWS Batch des Dienstauftragsstatus zum SageMaker AI-Status](service-job-status.md)

1. Wenn der Serviceauftrag abgeschlossen ist, wird er verschoben `SUCCEEDED` und alle Ausgaben können heruntergeladen werden.

## Voraussetzungen
<a name="service-job-submit-prerequisites"></a>

Stellen Sie vor dem Absenden eines Serviceauftrags sicher, dass Sie über Folgendes verfügen:
+ **Serviceumgebung** — Eine Serviceumgebung, die Kapazitätsgrenzen definiert. Weitere Informationen finden Sie unter [Erstellen Sie eine Serviceumgebung in AWS Batch](create-service-environments.md).
+ **SageMaker Job-Warteschlange** — Eine SageMaker Job-Warteschlange zur Job-Planung. Weitere Informationen finden Sie unter [Erstellen Sie eine Warteschlange für SageMaker Schulungsjobs in AWS Batch](create-sagemaker-job-queue.md).
+ **IAM-Berechtigungen — Berechtigungen** zum Erstellen und Verwalten von AWS Batch Jobwarteschlangen und Serviceumgebungen. Weitere Informationen finden Sie unter [AWS Batch IAM-Richtlinien, -Rollen und -Berechtigungen](IAM_policies.md).

## Senden Sie einen Servicejob mit der AWS CLI
<a name="service-job-submit-example"></a>

Im Folgenden wird gezeigt, wie Sie einen Servicejob mit der AWS CLI einreichen:

```
aws batch submit-service-job \
    --job-name "my-sagemaker-training-job" \
    --job-queue "my-sagemaker-job-queue" \
    --service-job-type "SAGEMAKER_TRAINING" \
    --service-request-payload '{\"TrainingJobName\": \"sagemaker-training-job-example\", \"AlgorithmSpecification\": {\"TrainingImage\": \"123456789012.dkr.ecr.us-east-1.amazonaws.com/pytorch-inference:1.8.0-cpu-py3\", \"TrainingInputMode\": \"File\", \"ContainerEntrypoint\":  [\"sleep\", \"1\"]}, \"RoleArn\":\"arn:aws:iam::123456789012:role/SageMakerExecutionRole\", \"OutputDataConfig\": {\"S3OutputPath\": \"s3://example-bucket/model-output/\"}, \"ResourceConfig\": {\"InstanceType\": \"ml.m5.large\", \"InstanceCount\": 1, \"VolumeSizeInGB\": 1}}'
    --client-token "unique-token-12345"
```

Weitere Informationen zu den `serviceRequestPayload` Parametern finden Sie unter[Payloads für Servicejobs in AWS Batch](service-job-payload.md).

# Zuordnen AWS Batch des Dienstauftragsstatus zum SageMaker AI-Status
<a name="service-job-status"></a>

Wenn Sie Jobs mithilfe von, an eine SageMaker Job-Warteschlange weiterleiten [SubmitServiceJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitServiceJob.html), wird der Job-Lebenszyklus AWS Batch verwaltet und AWS Batch [Jobstatus den](job_states.md) entsprechenden SageMaker Trainingsstatus zugeordnet. Serviceaufträge, wie z. B. SageMaker Schulungsaufträge, folgen einem anderen Lebenszyklus als herkömmliche Container-Jobs. Servicejobs und Container-Jobs teilen sich zwar die meisten Status, führen jedoch den `SCHEDULED` Status ein und zeigen ein unterschiedliches Wiederholungsverhalten, insbesondere bei der Behandlung von Fehlern mit unzureichender Kapazität durch den Zieldienst.

Die folgende Tabelle zeigt den AWS Batch Auftragsstatus und den entsprechenden SageMaker SecondaryStatus Status/:


| Status der Batch | SageMaker Primärer Status der KI | SageMaker Sekundärer Status der KI | Description | 
| --- | --- | --- | --- | 
| SUBMITTED | – | – | Der Job wurde in die Warteschlange gestellt und wartet auf die Auswertung durch den Scheduler.  | 
| RUNNABLE | – | – | Der Job befindet sich in der Warteschlange und ist bereit für die Planung. Jobs in diesem Status werden gestartet, sobald genügend Ressourcen in der Serviceumgebung verfügbar sind. Jobs können auf unbestimmte Zeit in diesem Zustand verbleiben, wenn nicht genügend Ressourcen verfügbar sind. | 
| SCHEDULED | InProgress | Pending | Der Serviceauftrag wurde erfolgreich an SageMaker AI übermittelt | 
| STARTING | InProgress | Downloading | SageMaker Trainingsjob zum Herunterladen von Daten und Bildern. Die Kapazität für den Schulungsjob wurde erworben und die Initialisierung des Jobs beginnt. | 
| RUNNING | InProgress | Training | SageMaker Algorithmus zur Ausführung des Trainingsauftrags  | 
| RUNNING | InProgress | Uploading | SageMaker Trainingsjob zum Hochladen von Ausgabeartefakten nach Abschluss des Trainings | 
| SUCCEEDED | Completed | Completed | SageMaker Die Schulungsaufgabe wurde erfolgreich abgeschlossen. Der Upload der Ausgabeartefakte wurde abgeschlossen. | 
| FAILED | Failed | Failed | SageMaker Bei der Trainingsaufgabe ist ein nicht behebbarer Fehler aufgetreten. | 
| FAILED | Stopped | Stopped | SageMaker Der Trainingsjob wurde manuell beendet mit. StopTrainingJob | 

# Strategien zur Wiederholung von Serviceaufträgen in AWS Batch
<a name="service-job-retries"></a>

Strategien zur Wiederholung von Serviceaufträgen ermöglichen es AWS Batch , fehlgeschlagene Serviceaufträge unter bestimmten Bedingungen automatisch zu wiederholen.

Serviceaufträge können aus verschiedenen Gründen mehrere Versuche erfordern:
+ **Temporäre Serviceprobleme**: Interne Dienstfehler, Drosselung oder vorübergehende Ausfälle können dazu führen, dass Aufträge bei der Übermittlung oder Ausführung fehlschlagen.
+ **Fehler bei der Trainingsinitialisierung**: Probleme beim Starten des Jobs, wie z. B. Probleme beim Abrufen von Bildern oder Initialisierungsfehler, können bei einem erneuten Versuch behoben werden.

Durch die Konfiguration geeigneter Wiederholungsstrategien können Sie die Erfolgsquoten von Aufträgen verbessern und den Bedarf an manuellem Eingreifen reduzieren, insbesondere bei lang andauernden Schulungsaufgaben.

**Anmerkung**  
Serviceaufträge wiederholen automatisch bestimmte Arten von Fehlern, wie z. B. Fehler bei unzureichender Kapazität, ohne dass Ihre konfigurierten Wiederholungsversuche unnötig werden. Ihre Wiederholungsstrategie behandelt in erster Linie andere Arten von Fehlern, z. B. Algorithmusfehler oder Serviceprobleme.

## Konfiguration von Wiederholungsstrategien
<a name="configuring-service-job-retries"></a>

Strategien zur Wiederholung von Serviceaufträgen werden mithilfe von konfiguriert [ServiceJobRetryStrategy](https://docs.aws.amazon.com/batch/latest/APIReference/API_ServiceJobRetryStrategy.html), das sowohl einfache Wiederholungszahlen als auch bedingte Wiederholungslogik unterstützt.

### Wiederholungs-Konfiguration
<a name="basic-retry-configuration"></a>

Die einfachste Wiederholungsstrategie gibt die Anzahl der Wiederholungsversuche an, die unternommen werden sollen, wenn ein Serviceauftrag fehlschlägt:

```
{
  "retryStrategy": {
    "attempts": 3
  }
}
```

Mit dieser Konfiguration kann der Serviceauftrag bis zu dreimal wiederholt werden, falls er fehlschlägt.

**Wichtig**  
Der `attempts` Wert gibt an, wie oft der Auftrag insgesamt in den `RUNNABLE` Status versetzt werden kann, einschließlich des ersten Versuchs. Ein Wert von 3 bedeutet, dass der Job zunächst einmal versucht und dann, falls er fehlschlägt, bis zu zwei weitere Male wiederholt wird.

### Versuchen Sie die Konfiguration erneut mit evaluateOnExit
<a name="advanced-retry-configuration"></a>

Sie können den `evaluateOnExit` Parameter verwenden, um Bedingungen anzugeben, unter denen Jobs wiederholt werden sollen oder unter denen sie fehlschlagen dürfen. Dies ist nützlich, wenn verschiedene Arten von Fehlern unterschiedlich behandelt werden müssen.

Das `evaluateOnExit` Array kann bis zu 5 Wiederholungsstrategien enthalten, von denen jede eine Aktion (`RETRY`oder`EXIT`) und Bedingungen spezifiziert, die auf Statusgründen basieren:

```
{
  "retryStrategy": {
    "attempts": 5,
    "evaluateOnExit": [
      {
        "action": "RETRY",
        "onStatusReason": "Received status from SageMaker: InternalServerError*"
      },
      {
        "action": "EXIT",
        "onStatusReason": "Received status from SageMaker: ValidationException*"
      },
      {
        "action": "EXIT",
        "onStatusReason": "*"
      }
    ]
  }
}
```

Diese Konfiguration:
+ Wiederholt Aufträge, die aufgrund von internen SageMaker AI-Serverfehlern fehlschlagen
+ Schlägt Aufträge, bei denen Validierungsausnahmen auftreten, sofort fehl (Client-Fehler, die nicht durch einen erneuten Versuch behoben werden können)
+ Beinhaltet eine Catch-All-Regel zum Beenden bei allen anderen Fehlertypen

#### Status, Grund, Musterabgleich
<a name="status-reason-patterns"></a>

Der `onStatusReason` Parameter unterstützt den Musterabgleich mit bis zu 512 Zeichen. Muster können Platzhalter (\$1) verwenden und mit den von der SageMaker KI zurückgegebenen Statusgründen übereinstimmen.

Bei Serviceaufträgen wird Statusmeldungen von SageMaker KI das Präfix „Status erhalten von SageMaker:“ vorangestellt, um sie von AWS Batch-generierten Nachrichten zu unterscheiden. Zu den gängigen Mustern gehören:
+ `Received status from SageMaker: InternalServerError*`- Ordnen Sie interne Servicefehler zu
+ `Received status from SageMaker: ValidationException*`- Fehler bei der Client-Validierung abgleichen
+ `Received status from SageMaker: ResourceLimitExceeded*`- Fehler beim Ressourcenlimit abgleichen
+ `*CapacityError*`- Passen Sie kapazitätsbedingte Ausfälle an

**Tipp**  
Verwenden Sie einen spezifischen Musterabgleich, um verschiedene Fehlertypen angemessen zu behandeln. Versuchen Sie es beispielsweise erneut mit internen Serverfehlern, schlagen Sie jedoch sofort bei Validierungsfehlern fehl, die auf Probleme mit den Auftragsparametern hinweisen.

# Überwachen Sie Serviceaufträge in einer Warteschlange AWS Batch
<a name="monitor-sagemaker-job-queue"></a>

Sie können den Status der Jobs in Ihrer Warteschlange für SageMaker Schulungsaufträge mithilfe von`list-service-jobs`, und überwachen`get-job-queue-snapshot`.

Laufende Jobs in deiner Warteschlange anzeigen:

```
aws batch list-service-jobs \
  --job-queue my-sm-training-fifo-jq \
  --job-status RUNNING
```

Jobs anzeigen, die in der Warteschlange warten:

```
aws batch list-service-jobs \
  --job-queue my-sm-training-fifo-jq \
  --job-status RUNNABLE
```

Jobs anzeigen, die eingereicht wurden, SageMaker aber noch nicht laufen:

```
aws batch list-service-jobs \
  --job-queue my-sm-training-fifo-jq \
  --job-status SCHEDULED
```

Verschaffen Sie sich einen Überblick über die Jobs, die sich ganz oben in Ihrer Warteschlange befinden:

```
aws batch get-job-queue-snapshot --job-queue my-sm-training-fifo-jq
```

Dieser Befehl zeigt die Reihenfolge der anstehenden Serviceaufträge in Ihrer Warteschlange an.

## Holen Sie sich detaillierte Informationen zu Serviceaufträgen
<a name="describe-service-job"></a>

Verwenden Sie diesen [https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeServiceJob.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeServiceJob.html)Vorgang, um umfassende Informationen zu einem bestimmten Serviceauftrag abzurufen, einschließlich seines aktuellen Status, der Dienstressourcen-IDs und detaillierter Informationen zu Versuchen.

Detaillierte Informationen zu einem bestimmten Job anzeigen:

```
aws batch describe-service-job \
  --job-id a4d6c728-8ee8-4c65-8e2a-9a5e8f4b7c3d
```

Dieser Befehl gibt umfassende Informationen über den Job zurück, darunter:
+ Job-ARN und aktueller Status
+ Identifikatoren für Serviceressourcen (z. B. ARN für SageMaker Schulungsjobs)
+ Priorität einplanen und Konfiguration erneut versuchen
+ Payload der Serviceanfrage, die die ursprünglichen Serviceparameter enthält
+ Detaillierte Informationen zu den Versuchen mit Start- und Stoppzeiten
+ Statusmeldungen vom Zieldienst

## Überwachen Sie SageMaker Trainingsjobs
<a name="monitor-sagemaker-training-jobs"></a>

Wenn Sie SageMaker Trainingsjobs bis überwachen AWS Batch, können Sie sowohl auf die AWS Batch Jobinformationen als auch auf die zugrunde liegenden SageMaker Trainingsjobdetails zugreifen.

Die Dienstressourcen-ID in den Jobdetails enthält den ARN für den SageMaker Trainingsjob:

```
{
  "latestAttempt": {
    "serviceResourceId": {
      "name": "TrainingJobArn",
      "value": "arn:aws:sagemaker:us-east-1:123456789012:training-job/my-training-job"
    }
  }
}
```

Sie können diesen ARN verwenden, um weitere Informationen direkt zu erhalten von SageMaker:

```
aws sagemaker describe-training-job \
  --training-job-name my-training-job
```

Überwachen Sie den Auftragsfortschritt, indem Sie sowohl AWS Batch den Status als auch den Status des SageMaker Schulungsauftrags überprüfen. Der AWS Batch Jobstatus zeigt den gesamten Joblebenszyklus, während der Status des SageMaker Schulungsauftrags dienstspezifische Details zum Trainingsprozess enthält.

# Serviceaufträge beenden
<a name="terminate-service-jobs"></a>

Verwenden Sie den [https://docs.aws.amazon.com/batch/latest/APIReference/API_TerminateServiceJob.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_TerminateServiceJob.html)Vorgang, um einen laufenden Serviceauftrag zu beenden.

Beenden Sie einen bestimmten Dienstauftrag:

```
aws batch terminate-service-job \
  --job-id a4d6c728-8ee8-4c65-8e2a-9a5e8f4b7c3d \
  --reason "Job terminated by user request"
```

Wenn Sie einen Dienstauftrag beenden, AWS Batch stoppt er den Job und benachrichtigt den Zieldienst. Bei SageMaker Schulungsaufträgen wird dadurch auch der Schulungsjob in SageMaker KI beendet.