Usando a API com trabalhos híbridos - Amazon Braket

Usando a API com trabalhos híbridos

Você pode acessar e interagir com o Amazon Braket Hybrid Jobs diretamente usando o API. No entanto, os padrões e os métodos de conveniência não estão disponíveis ao usar o API diretamente.

nota

É altamente recomendável que você interaja com o Amazon Braket Hybrid Jobs usando o SDK Amazon Braket Python. Ele oferece padrões e proteções convenientes que ajudam seus trabalhos híbridos a serem executados com êxito.

Este tópico aborda os conceitos básicos do uso do API. Se você optar por usar a API, lembre-se de que essa abordagem pode ser mais complexa e estar preparada para várias iterações para que seu trabalho híbrido seja executado.

Para usar a API, sua conta deve ter um papel na política gerenciada AmazonBraketFullAccess.

nota

Para obter mais informações sobre como obter uma função com a política gerenciada AmazonBraketFullAccess, consulte a página Habilitar o Amazon Braket.

Além disso, você precisa de um perfil de execução. Esse perfil será passado para o serviço. Você pode criar o perfil usando o console do Amazon Braket. Use a guia Perfis de execução na página Permissões e configurações para criar um perfil padrão para trabalhos híbridos.

O CreateJob API exige que você especifique todos os parâmetros necessários para a tarefa híbrida. Para usar o Python, compacte seus arquivos de script de algoritmo em um pacote tar, como um arquivo input.tar.gz, e execute o script a seguir. Atualize as partes do código entre colchetes angulares (<>) para corresponder às informações da sua conta e ao ponto de entrada que especificam o caminho, o arquivo e o método em que seu trabalho híbrido começa.

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

Depois de criar seu trabalho híbrido, você pode acessar os detalhes do trabalho híbrido por meio do GetJob API ou do console. Para obter os detalhes do trabalho híbrido da sessão do Python na qual você executou o código createJob, como no exemplo anterior, use o comando Python a seguir.

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

Para cancelar um trabalho híbrido, chame o CancelJob API com o Amazon Resource Name do trabalho ('JobArn').

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

Você pode especificar pontos de verificação como parte do createJob API usando o checkpointConfig parâmetro.

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

O localPath de checkpointConfig não pode começar com nenhum dos seguintes caminhos reservados: /opt/ml, /opt/braket, /tmp, ou /usr/local/nvidia.