Uso de la API con trabajos híbridos - Amazon Braket

Uso de la API con trabajos híbridos

Puede acceder e interactuar con los trabajos híbridos de Amazon Braket directamente utilizando la API. Sin embargo, los métodos predeterminados y prácticos no están disponibles cuando se utiliza la API directamente.

nota

Le recomendamos encarecidamente que interactúe con los trabajos híbridos de Amazon Braket mediante el SDK de Python de Amazon Braket. Ofrece prácticos valores predeterminados y protecciones que ayudan a que sus trabajos híbridos se ejecuten correctamente.

En este tema se describen los aspectos básicos del uso de la API. Si decide utilizar la API, tenga en cuenta que este enfoque puede ser más complejo, por lo que debe prepararse para varias iteraciones hasta que su trabajo híbrido se ejecute.

Para usar la API, tu cuenta debe tener un rol con la política administrada AmazonBraketFullAccess.

nota

Para obtener más información sobre cómo obtener un rol con la política administrada AmazonBraketFullAccess, consulte la página Activación de Amazon Braket.

Además, necesita un rol de ejecución. Esta función se transferirá al servicio. Puede crear el rol utilizando la consola de Amazon Braket. Utilice la pestaña Roles de ejecución en la página Permisos y configuración para crear un rol predeterminado para los trabajos híbridos.

La API de CreateJob requiere que especifique todos los parámetros necesarios para el trabajo híbrido. Para utilizar Python, comprima los archivos del script de algoritmo en un paquete tar, como un archivo input.tar.gz, y ejecute el siguiente script. Actualice las partes del código entre corchetes angulares (<>) para que coincidan con la información de su cuenta y el punto de entrada que especifican la ruta, el archivo y el método en los que comienza su trabajo híbrido.

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 vez que haya creado su trabajo híbrido, podrá acceder a los detalles de este a través de la API de GetJob o de la consola. Para obtener los detalles del trabajo híbrido de la sesión de Python en la que ejecutó el código createJob, como en el ejemplo anterior, utilice el siguiente comando de Python.

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

Para cancelar un trabajo híbrido, llame a la API de CancelJob con el Amazon Resource Name del trabajo ('JobArn').

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

Puede especificar puntos de control como parte de la API de createJob usando el parámetro checkpointConfig.

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

La localPath de checkpointConfig no puede comenzar con ninguna de las siguientes rutas reservadas: /opt/ml, /opt/braket, /tmp ni /usr/local/nvidia.