Interagisci direttamente con i lavori ibridi utilizzando API - Amazon Braket

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à.

Interagisci direttamente con i lavori ibridi utilizzando API

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 API direttamente.

Nota

Ti consigliamo vivamente di interagire con Amazon Braket Hybrid Jobs utilizzando l'SDK Amazon Braket 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 ed essere pronto a diverse iterazioni per far funzionare il tuo lavoro ibrido.

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

Nota

Per ulteriori informazioni su come ottenere un ruolo con la policy AmazonBraketFullAccess gestita, consulta la pagina Abilita Amazon Braket.

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.

Il CreateJob API richiede di 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 }, )

Una volta 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 il CancelJob API con Amazon Resource Name del lavoro ('JobArn').

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

È possibile specificare i checkpoint come parte di createJob API utilizzando il 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.