

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.

# Verwendung der API mit Hybrid-Jobs
<a name="braket-jobs-api"></a>

Über den können Sie direkt auf Amazon Braket Hybrid Jobs zugreifen und mit diesen interagieren. API Standardwerte und praktische Methoden sind jedoch nicht verfügbar, wenn Sie den API direkt verwenden.

**Anmerkung**  
Wir empfehlen dringend, dass Sie mit Amazon Braket Hybrid Jobs über das [Amazon Braket Python](https://github.com/aws/amazon-braket-sdk-python) SDK interagieren. Es bietet praktische Standardeinstellungen und Schutzmaßnahmen, die dazu beitragen, dass Ihre Hybrid-Jobs erfolgreich ausgeführt werden.

Dieses Thema behandelt die Grundlagen der Verwendung von. API Wenn Sie sich für die Verwendung der API entscheiden, denken Sie daran, dass dieser Ansatz komplexer sein kann, und bereiten Sie sich auf mehrere Iterationen vor, damit Ihr Hybrid-Job ausgeführt werden kann.

Um die API verwenden zu können, sollte Ihr Konto eine Rolle in der `AmazonBraketFullAccess` verwalteten Richtlinie haben.

**Anmerkung**  
Weitere Informationen darüber, wie Sie eine Rolle mit der `AmazonBraketFullAccess` verwalteten Richtlinie erhalten, finden Sie auf der Seite [Amazon Braket aktivieren](braket-enable-overview.md).

Darüber hinaus benötigen Sie eine **Ausführungsrolle**. Diese Rolle wird an den Dienst übergeben. Sie können die Rolle mit der **Amazon Braket-Konsole** erstellen. Verwenden Sie die Registerkarte **Ausführungsrollen** auf der Seite „**Berechtigungen und Einstellungen**“, um eine Standardrolle für Hybrid-Jobs zu erstellen.

Das `CreateJob` API erfordert, dass Sie alle erforderlichen Parameter für den Hybrid-Job angeben. Um Python zu verwenden, komprimieren Sie Ihre Algorithmus-Skriptdateien in ein Tar-Bundle, z. B. eine Datei input.tar.gz, und führen Sie das folgende Skript aus. Aktualisieren Sie die Teile des Codes in den spitzen Klammern (`<>`) so, dass sie mit Ihren Kontoinformationen und dem Einstiegspunkt übereinstimmen, die den Pfad, die Datei und die Methode angeben, mit der Ihr Hybrid-Job beginnt.

```
from braket.aws import AwsDevice, AwsSession
import boto3
from datetime import datetime

s3_client = boto3.client("s3")
client = boto3.client("braket")

project_name = "job-test"
job_name = project_name + "-" + datetime.strftime(datetime.now(), "%Y%m%d%H%M%S")
bucket = "amazon-braket-<your_bucket>"
s3_prefix = job_name

job_script = "input.tar.gz"
job_object = f"{s3_prefix}/script/{job_script}"
s3_client.upload_file(job_script, bucket, job_object)

input_data = "inputdata.csv"
input_object = f"{s3_prefix}/input/{input_data}"
s3_client.upload_file(input_data, bucket, input_object)

job = client.create_job(
    jobName=job_name,
    roleArn="arn:aws:iam::<your_account>:role/service-role/AmazonBraketJobsExecutionRole",  # https://docs.aws.amazon.com/braket/latest/developerguide/braket-manage-access.html#about-amazonbraketjobsexecution
    algorithmSpecification={
        "scriptModeConfig": {
            "entryPoint": "<your_execution_module>:<your_execution_method>",
            "containerImage": {"uri": "292282985366.dkr.ecr.us-west-1.amazonaws.com/amazon-braket-base-jobs:1.0-cpu-py37-ubuntu18.04"},   # Change to the specific region you are using
            "s3Uri": f"s3://{bucket}/{job_object}",
            "compressionType": "GZIP"
        }
    },
    inputDataConfig=[
        {
            "channelName": "hellothere",
            "compressionType": "NONE",
            "dataSource": {
                "s3DataSource": {
                    "s3Uri": f"s3://{bucket}/{s3_prefix}/input",
                    "s3DataType": "S3_PREFIX"
                }
            }
        }
    ],
    outputDataConfig={
        "s3Path": f"s3://{bucket}/{s3_prefix}/output"
    },
    instanceConfig={
        "instanceType": "ml.m5.large",
        "instanceCount": 1,
        "volumeSizeInGb": 1
    },
    checkpointConfig={
        "s3Uri":  f"s3://{bucket}/{s3_prefix}/checkpoints",
        "localPath": "/opt/omega/checkpoints"
    },
    deviceConfig={
        "priorityAccess": {
            "devices": [
                "arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3"
            ]
        }
    },
    hyperParameters={
        "hyperparameter key you wish to pass": "<hyperparameter value you wish to pass>",
    },
    stoppingCondition={
        "maxRuntimeInSeconds": 1200,
        "maximumTaskLimit": 10
    },
)
```

Sobald Sie Ihren Hybrid-Job erstellt haben, können Sie über die `GetJob` API oder die Konsole auf die Details des Hybrid-Jobs zugreifen. Verwenden Sie den folgenden Python-Befehl, um die Hybrid-Jobdetails aus der Python-Sitzung abzurufen, in der Sie den `createJob` Code wie im vorherigen Beispiel ausgeführt haben.

```
getJob = client.get_job(jobArn=job["jobArn"])
```

Um einen Hybridjob abzubrechen, rufen Sie den `CancelJob` API mit dem Amazon Resource Name Namen des Jobs ('JobArn') auf.

```
cancelJob = client.cancel_job(jobArn=job["jobArn"])
```

Sie können im Rahmen der `createJob` API Verwendung des `checkpointConfig` Parameters Checkpoints angeben.

```
    checkpointConfig = {
        "localPath" : "/opt/omega/checkpoints",
        "s3Uri": f"s3://{bucket}/{s3_prefix}/checkpoints"
    },
```

**Anmerkung**  
Der LocalPath von `checkpointConfig` darf nicht mit einem der folgenden reservierten Pfade beginnen:`/opt/ml`, `/opt/braket``/tmp`, oder. `/usr/local/nvidia`