

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo dell'API con Hybrid Jobs
<a name="braket-jobs-api"></a>

Puoi accedere e interagire con Amazon Braket Hybrid Jobs direttamente utilizzando. API Tuttavia, le impostazioni predefinite e i metodi pratici non sono disponibili quando si utilizza direttamente. API

**Nota**  
Ti consigliamo vivamente di interagire con Amazon Braket Hybrid Jobs utilizzando l'SDK Amazon [Braket Python](https://github.com/aws/amazon-braket-sdk-python). Offre impostazioni predefinite e protezioni convenienti che aiutano i processi ibridi a funzionare correttamente.

In questo argomento vengono illustrate le nozioni di base sull'utilizzo di. API Se scegli di utilizzare l'API, tieni presente che questo approccio può essere più complesso e prepararti a diverse iterazioni per far funzionare il tuo lavoro ibrido.

Per utilizzare l'API, il tuo account deve avere un ruolo nella politica `AmazonBraketFullAccess` gestita.

**Nota**  
Per ulteriori informazioni su come ottenere un ruolo con la policy `AmazonBraketFullAccess` gestita, consulta la pagina [Abilita Amazon Braket](braket-enable-overview.md).

Inoltre, è necessario un **ruolo di esecuzione**. Questo ruolo verrà passato al servizio. Puoi creare il ruolo utilizzando la console **Amazon Braket.** Utilizza la scheda **Ruoli di esecuzione** nella pagina **Autorizzazioni e impostazioni** per creare un ruolo predefinito per i lavori ibridi.

È `CreateJob` API necessario specificare tutti i parametri richiesti per il lavoro ibrido. Per usare Python, comprimi i file di script dell'algoritmo in un pacchetto tar, ad esempio un file input.tar.gz, ed esegui lo script seguente. Aggiorna le parti del codice tra parentesi angolate (`<>`) in modo che corrispondano alle informazioni dell'account e al punto di ingresso che specificano il percorso, il file e il metodo con cui inizia il processo ibrido.

```
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
    },
)
```

Dopo aver creato il lavoro ibrido, puoi accedere ai dettagli del lavoro ibrido tramite `GetJob` API o la console. Per ottenere i dettagli del lavoro ibrido dalla sessione Python in cui hai eseguito il `createJob` codice come nell'esempio precedente, usa il seguente comando Python.

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

Per annullare un lavoro ibrido, chiamate the `CancelJob` API with the Amazon Resource Name of the job ()'JobArn'.

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

È possibile specificare i checkpoint come parte dell'`createJob`APIutilizzo del `checkpointConfig` parametro.

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

**Nota**  
Il LocalPath di `checkpointConfig` non può iniziare con nessuno dei seguenti percorsi riservati:`/opt/ml`,, `/opt/braket``/tmp`, o. `/usr/local/nvidia`