Erste Schritte mit AWS Batch einer SageMaker KI - AWS Batch

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.

Erste Schritte mit AWS Batch einer SageMaker KI

AWS Batch Servicejobs ermöglichen es Ihnen, SageMaker Schulungsaufträge über AWS Batch Jobwarteschlangen mit Funktionen zur Planung, Priorisierung und Warteschleifenbildung einzureichen. In diesem Tutorial wird gezeigt, wie Sie mithilfe AWS Batch von Serviceaufträgen einen einfachen SageMaker Schulungsjob einrichten und ausführen.

Übersicht

Dieses Tutorial zeigt, wie Sie AWS Batch Servicejobs für SageMaker Trainingsjobs mithilfe von einrichten AWS CLI.

Beabsichtigte Zielgruppe

Dieses Tutorial richtet sich an Datenwissenschaftler und Entwickler, die für die Einrichtung und Ausführung von Schulungsaufträgen für maschinelles Lernen in großem Umfang verantwortlich sind.

Verwendete Funktionen

Dieses Tutorial zeigt Ihnen, wie Sie das verwenden AWS CLI können:

  • Erstellen Sie eine Serviceumgebung für SageMaker Schulungsjobs

  • Erstellen Sie eine Warteschlange für SageMaker Schulungsjobs

  • Reichen Sie Serviceaufträge mithilfe der SubmitServiceJob API ein

  • Überwachen Sie den Auftragsstatus und sehen Sie sich die Ergebnisse an

  • CloudWatch Zugriffs-Logs für Trainingsjobs

Benötigte Zeit

Es sollte etwa 15 Minuten dauern, bis Sie dieses Tutorial abgeschlossen haben.

Regionale Einschränkungen

Dieses Tutorial kann in jeder AWS Region abgeschlossen werden, in der AWS Batch sowohl SageMaker KI als auch KI verfügbar sind.

Kosten für die Ressourcennutzung

Für die Erstellung eines AWS Kontos fallen keine Gebühren an. Durch die Implementierung dieser Lösung können Ihnen jedoch Kosten für die folgenden Ressourcen entstehen:

Beschreibung Kosten (US-Dollar)
SageMaker KI-Schulungsinstanzen Sie zahlen für jede genutzte SageMaker AI-Training-Instanz. Weitere Informationen zur Preisgestaltung finden Sie unter SageMaker KI-Preise.
Amazon S3 S3-Speicher Minimale Kosten für die Speicherung der Ergebnisse von Trainingsaufgaben. Weitere Informationen finden Sie unter Amazon S3 – Preise.

Voraussetzungen

Bevor Sie mit diesem Tutorial beginnen, müssen Sie die folgenden Tools und Ressourcen installieren und konfigurieren, die Sie für die Erstellung und Verwaltung von AWS Batch SageMaker AI-Ressourcen benötigen.

Schritt 1: Erstellen Sie eine SageMaker AI-Ausführungsrolle

SageMaker KI verwendet Ausführungsrollen, um Operationen in Ihrem Namen mithilfe anderer AWS Dienste auszuführen. Sie müssen eine Ausführungsrolle erstellen und der SageMaker KI Berechtigungen zur Nutzung der Dienste und Ressourcen gewähren, die für Schulungsaufgaben benötigt werden. Verwenden Sie die AmazonSageMakerFullAccess verwaltete Richtlinie, da sie Berechtigungen für Amazon S3 beinhaltet.

Anmerkung

Verwenden Sie die folgenden Anweisungen, um die SageMaker AI-Ausführungsrolle für dieses Tutorial zu erstellen.

Bevor Sie eine Ausführungsrolle für Ihre Produktionsumgebung erstellen, empfehlen wir Ihnen, den Abschnitt So verwenden Sie SageMaker KI-Ausführungsrollen im SageMaker KI-Entwicklerhandbuch zu lesen.

  1. Erstellen Sie die IAM-Rolle

    Erstellen Sie eine JSON-Datei sagemaker-trust-policy.json mit dem Namen der folgenden Vertrauensrichtlinie:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    Erstellen Sie die IAM-Rolle mithilfe der Vertrauensrichtlinie:

    aws iam create-role \ --role-name SageMakerExecutionRole \ --assume-role-policy-document file://sagemaker-trust-policy.json \ --description "Execution role for SageMaker training jobs"
  2. Verwaltete Richtlinien anhängen

    Hängen Sie die erforderlichen verwalteten Richtlinien an die Rolle an:

    aws iam attach-role-policy \ --role-name SageMakerExecutionRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
    aws iam attach-role-policy \ --role-name SageMakerExecutionRole \ --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
  3. Notieren Sie sich die Rolle ARN

    Besorgen Sie sich den Rollen-ARN, den Sie in späteren Schritten benötigen:

    aws iam get-role --role-name SageMakerExecutionRole --query 'Role.Arn' --output text

    Speichern Sie diesen ARN, da Sie ihn bei der Erstellung Ihrer Payload für Trainingsjobs verwenden werden.

Schritt 2: Erstellen Sie Ihre Serviceumgebung

Eine Serviceumgebung definiert die Kapazitätsbeschränkungen für SageMaker Schulungsjobs. Die Serviceumgebung kapselt die maximale Anzahl von Trainingsinstanzen, die gleichzeitig ausgeführt werden können.

Wichtig

Wenn Sie Ihre erste Serviceumgebung für SageMaker Training erstellen, AWS Batch wird automatisch eine serviceverknüpfte Rolle erstellt, die in Ihrem Konto aufgerufen wirdAWSServiceRoleForAWSBatchWithSagemaker. Diese Rolle ermöglicht es AWS Batch , SageMaker Schulungsjobs in Ihrem Namen in die Warteschlange zu stellen und zu verwalten. Weitere Informationen zu dieser dienstbezogenen Rolle und ihren Berechtigungen finden Sie unterVerwendung von Rollen für AWS Batch mit KI SageMaker .

Erstellen Sie eine Serviceumgebung, die bis zu 5 Instanzen verarbeiten kann:

aws batch create-service-environment \ --service-environment-name TutorialServiceEnvironment \ --service-environment-type SAGEMAKER_TRAINING \ --capacity-limits capacityUnit=NUM_INSTANCES,maxCapacity=5

Ausgabe:

{ "serviceEnvironmentName": "TutorialServiceEnvironment", "serviceEnvironmentArn": "arn:aws:batch:your-region:your-account-id:service-environment/TutorialServiceEnvironment" }

Stellen Sie sicher, dass Ihre Serviceumgebung erfolgreich erstellt wurde:

aws batch describe-service-environments --service-environments TutorialServiceEnvironment

Ausgabe:

{ "serviceEnvironments": [ { "serviceEnvironmentName": "TutorialServiceEnvironment", "serviceEnvironmentArn": "arn:aws:batch:your-region:your-account-id:service-environment/TutorialServiceEnvironment", "serviceEnvironmentType": "SAGEMAKER_TRAINING", "state": "ENABLED", "status": "VALID", "capacityLimits": [ { "maxCapacity": 5, "capacityUnit": "NUM_INSTANCES" } ], "tags": {} } ] }

Weitere Informationen zu Serviceumgebungen finden Sie unterServiceumgebungen für AWS Batch.

Schritt 3: Erstellen Sie Ihre SageMaker Job-Warteschlange

Eine SageMaker Jobwarteschlange verwaltet die Planung und Ausführung von Servicejobs. Jobs, die an diese Warteschlange gesendet werden, werden je nach verfügbarer Kapazität an Ihre Serviceumgebung weitergeleitet.

Erstellen Sie eine Warteschlange für SageMaker Schulungsaufträge:

aws batch create-job-queue \ --job-queue-name my-sm-training-fifo-jq \ --job-queue-type SAGEMAKER_TRAINING \ --priority 1 \ --service-environment-order order=1,serviceEnvironment=TutorialServiceEnvironment

Ausgabe:

{ "jobQueueName": "my-sm-training-fifo-jq", "jobQueueArn": "arn:aws:batch:your-region:your-account-id:job-queue/my-sm-training-fifo-jq" }

Stellen Sie sicher, dass Ihre Job-Warteschlange erfolgreich erstellt wurde:

aws batch describe-job-queues --job-queues my-sm-training-fifo-jq

Ausgabe:

{ "jobQueues": [ { "jobQueueName": "my-sm-training-fifo-jq", "jobQueueArn": "arn:aws:batch:your-region:your-account-id:job-queue/my-sm-training-fifo-jq", "state": "ENABLED", "status": "VALID", "statusReason": "JobQueue Healthy", "priority": 1, "computeEnvironmentOrder": [], "serviceEnvironmentOrder": [ { "order": 1, "serviceEnvironment": "arn:aws:batch:your-region:your-account-id:service-environment/TutorialServiceEnvironment" } ], "jobQueueType": "SAGEMAKER_TRAINING", "tags": {} } ] }

Weitere Informationen zu SageMaker Auftragswarteschlangen finden Sie unterErstellen Sie eine Warteschlange für SageMaker Schulungsjobs in AWS Batch.

Schritt 4: Einen Schulungsjob erstellen und einreichen

Jetzt erstellen Sie einen einfachen Schulungsjob und reichen ihn in Ihre Job-Warteschlange ein. In diesem Beispiel wird ein einfacher „Hello World“ -Schulungsjob verwendet, der die Funktionalität der Servicejobs demonstriert.

Erstellen Sie eine Datei mit dem Namen my_training_job.json und dem folgenden Inhalt. Ersetze es your-account-id durch deine AWS Konto-ID:

Anmerkung

S3OutputPathist für die Erstellung des SageMaker Trainingsjobs erforderlich, aber die Ergebnisse dieses Tutorials werden nicht im Amazon S3 S3-Bucket gespeichert und Sie können den Pfad in der folgenden JSON-Datei verwenden. In Ihrer Produktionsumgebung benötigen Sie einen gültigen Amazon S3 S3-Bucket, um die Ausgabe dort zu speichern, falls Sie dies wünschen.

{ "TrainingJobName": "my-simple-training-job", "RoleArn": "arn:aws:iam::your-account-id: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-s3-bucket/output" }, "StoppingCondition": { "MaxRuntimeInSeconds": 30 } }

Reichen Sie den Schulungsjob über die SubmitServiceJobAPI ein:

aws batch submit-service-job \ --job-queue my-sm-training-fifo-jq \ --job-name my-batch-sm-job \ --service-job-type SAGEMAKER_TRAINING \ --retry-strategy attempts=1 \ --timeout-config attemptDurationSeconds=60 \ --service-request-payload file://my_training_job.json

Ausgabe:

{ "jobArn": "arn:aws:batch:your-region:your-account-id:service-job/your-job-id", "jobName": "my-batch-sm-job", "jobId": "your-job-id" }

Weitere Informationen zu Payloads für Servicejobs finden Sie unterPayloads für Servicejobs in AWS Batch. Weitere Informationen zum Einreichen von Serviceaufträgen finden Sie unterReichen Sie einen Servicejob ein in AWS Batch.

Schritt 5: Auftragsstatus überwachen

Sie können Ihre Trainingsjobs wie folgt überwachen AWS Batch APIs: DescribeServiceJobListServiceJobs, und GetJobQueueSnapshot. In diesem Abschnitt werden verschiedene Möglichkeiten zur Überprüfung des Jobstatus und der Warteschlangeninformationen beschrieben.

Laufende Jobs in Ihrer Warteschlange anzeigen:

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

Ausgabe:

{ "jobSummaryList": [ { "latestAttempt": { "serviceResourceId": { "name": "TrainingJobArn", "value": "arn:aws:sagemaker:your-region:your-account-id:training-job/AWSBatch<my-simple-training-job><your-attempt-id>" } }, "createdAt": 1753718760, "jobArn": "arn:aws:batch:your-region:your-account-id:service-job/your-job-id", "jobId": "your-job-id", "jobName": "my-batch-sm-job", "serviceJobType": "SAGEMAKER_TRAINING", "status": "RUNNING", "startedAt": 1753718820 } ] }

Jobs anzeigen, die sich im RUNNABLE Bundesstaat befinden:

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

Verschaffen Sie sich einen Überblick über die bevorstehenden Jobs in Ihrer Warteschlange:

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

Ausgabe:

{ "frontOfQueue": { "jobs": [ { "jobArn": "arn:aws:batch:your-region:your-account-id:service-job/your-job-id", "earliestTimeAtPosition": 1753718880 }, { "jobArn": "arn:aws:batch:your-region:your-account-id:service-job/your-job-id-2", "earliestTimeAtPosition": 1753718940 } ], "lastUpdatedAt": 1753718970 } }

Suchen Sie nach Jobs nach Namen:

aws batch list-service-jobs \ --job-queue my-sm-training-fifo-jq \ --filters name=JOB_NAME,values="my-batch-sm-job"

Ausgabe:

{ "jobSummaryList": [ { "latestAttempt": { "serviceResourceId": { "name": "TrainingJobArn", "value": "arn:aws:sagemaker:your-region:your-account-id:training-job/AWSBatch<my-simple-training-job><your-attempt-id>" } }, "createdAt": 1753718760, "jobArn": "arn:aws:batch:your-region:your-account-id:service-job/your-job-id", "jobId": "your-job-id", "jobName": "my-batch-sm-job", "serviceJobType": "SAGEMAKER_TRAINING", "status": "RUNNING" } ] }

Weitere Informationen zur Zuordnung des Jobstatus finden Sie unterZuordnen AWS Batch des Dienstauftragsstatus zum SageMaker AI-Status.

Schritt 6: Jobausgabe anzeigen

Sobald Ihr Job abgeschlossen ist, können Sie die Ausgabe und die Protokolle sowohl AWS Batch über KI als auch über SageMaker KI einsehen APIs.

Detaillierte Informationen zu Ihrem Job erhalten Sie von AWS Batch:

aws batch describe-service-job \ --job-id your-job-id

Ausgabe:

{ "attempts": [ { "serviceResourceId": { "name": "TrainingJobArn", "value": "arn:aws:sagemaker:your-region:your-account-id:training-job/AWSBatch<my-simple-training-job><your-attempt-id>" }, "startedAt": 1753718820, "stoppedAt": 1753718880, "statusReason": "Received status from SageMaker: Training job completed" } ], "createdAt": 1753718760, "jobArn": "arn:aws:batch:your-region:your-account-id:service-job/your-job-id", "jobId": "your-job-id", "jobName": "my-batch-sm-job", "jobQueue": "arn:aws:batch:your-region:your-account-id:job-queue/my-sm-training-fifo-jq", "latestAttempt": { "serviceResourceId": { "name": "TrainingJobArn", "value": "arn:aws:sagemaker:your-region:your-account-id:training-job/AWSBatch<my-simple-training-job><your-attempt-id>" } }, "retryStrategy": { "attempts": 1, "evaluateOnExit": [] }, "serviceRequestPayload": "your-training-job-request-json", "serviceJobType": "SAGEMAKER_TRAINING", "startedAt": 1753718820, "status": "SUCCEEDED", "statusReason": "Received status from SageMaker: Training job completed", "stoppedAt": 1753718880, "tags": {}, "timeoutConfig": { "attemptDurationSeconds": 60 } }

Dieser Befehl gibt umfassende Jobinformationen zurück, einschließlich des ARN für den SageMaker Trainingsjob, mit dem Sie direkt über SageMaker KI auf den Job zugreifen können:

aws sagemaker describe-training-job \ --training-job-name AWSBatch<my-simple-training-job><your-attempt-id>

Um die CloudWatch Logs für deinen Trainingsjob einzusehen, musst du zuerst den Namen des Log-Streams abrufen:

aws logs describe-log-streams \ --log-group-name /aws/sagemaker/TrainingJobs \ --log-stream-name-prefix AWSBatchmy-simple-training-job

Ausgabe:

{ "logStreams": [ { "logStreamName": "your-log-stream-name", "creationTime": 1753718830, "firstEventTimestamp": 1753718840, "lastEventTimestamp": 1753718850, "lastIngestionTime": 1753718860, "uploadSequenceToken": upload-sequence-token, "arn": "arn:aws:logs:your-region:your-account-id:log-group:/aws/sagemaker/TrainingJobs:log-stream:AWSBatch<my-simple-training-job><your-attempt-id>/algo-1-algo-id", "storedBytes": 0 } ] }

Rufen Sie dann die Logs mit dem Log-Stream-Namen aus der vorherigen Antwort ab:

aws logs get-log-events \ --log-group-name /aws/sagemaker/TrainingJobs \ --log-stream-name your-log-stream-name

Ausgabe:

{ "events": [ { "timestamp": 1753718845, "message": "hello world", "ingestionTime": 1753718865 } ], "nextForwardToken": "next-forward-token", "nextBackwardToken": "next-backward-token" }

In der Protokollausgabe wird die Meldung „Hello World“ aus Ihrem Trainingsjob angezeigt, mit der bestätigt wird, dass der Job erfolgreich ausgeführt wurde.

Schritt 7: Bereinigen Sie Ihre Tutorial-Ressourcen

Wenn Sie mit dem Tutorial fertig sind, bereinigen Sie die Ressourcen, die Sie erstellt haben, um laufende Gebühren zu vermeiden.

Deaktivieren und löschen Sie zunächst die Job-Warteschlange:

aws batch update-job-queue \ --job-queue my-sm-training-fifo-jq \ --state DISABLED

Warten Sie, bis die Job-Warteschlange deaktiviert ist, und löschen Sie sie dann:

aws batch delete-job-queue \ --job-queue my-sm-training-fifo-jq

Deaktivieren und löschen Sie als Nächstes die Serviceumgebung:

aws batch update-service-environment \ --service-environment TutorialServiceEnvironment \ --state DISABLED

Warten Sie, bis die Serviceumgebung deaktiviert ist, und löschen Sie sie dann:

aws batch delete-service-environment \ --service-environment TutorialServiceEnvironment

Weitere Ressourcen

Nachdem Sie das Tutorial abgeschlossen haben, möchten Sie sich vielleicht mit den folgenden Themen befassen: