Interagisci direttamente con i lavori utilizzando ilAPI - 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 utilizzando ilAPI

Puoi accedere e interagire conAmazon BraketHybrid Jobs utilizzando direttamente ilAPI. Tuttavia, i metodi predefiniti e i metodi di convenienza non sono disponibili quando si utilizza ilAPIdirettamente.

Nota

Consigliamo vivamente di interagire conAmazon BraketLavori ibridi che utilizzano ilSDK Python Braket di Amazon Braket. Offre comode impostazioni predefinite e protezioni che assicurano che il lavoro venga eseguito correttamente.

Questo argomento illustra le nozioni di base sull'utilizzo delAPI, ma se scegli questo percorso, preparati a molte iterazioni e lavoro per far funzionare il tuo lavoro.

Per utilizzare il pluginAPI, è necessario accedere all'account con un ruolo con le seguenti autorizzazioni:

  1. Policy gestita di AmazonBraketFullAccess

  2. La seguente policy inline:

{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:CreateBucket", "Resource": "arn:aws:s3:::amazon-braket-*", "Effect": "Allow" }, { "Action": "s3:GetObject", "Resource": "arn:aws:s3:::braket-*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::amazon-braket-*", "Effect": "Allow" }, { "Action": [ "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:CreateLogGroup", "logs:GetQueryResults", "logs:GetLogEvents", "logs:StartQuery", "logs:StopQuery" ], "Resource": "arn:aws:logs:*:*:log-group:*", "Effect": "Allow" }, { "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/*", "Effect": "Allow" } ] }

LaCreateJob APIrichiede di specificare tutti i parametri richiesti per il lavoro. Per utilizzare Python, comprimere i file di script dell'algoritmo, ad esempio un file input.tar.gz, ed eseguire il seguente script. Aggiornamento digrassettoparti del codice che corrispondono alle informazioni del tuo account e al punto di ingresso che specificano il percorso, il file e il metodo da cui inizia il lavoro.

from braket.aws import AwsDevice, AwsSession import boto3 from botocore.session import get_session from datetime import datetime s3_client = boto3.client("s3") creds = get_session().get_credentials() session = boto3.Session(aws_access_key_id=creds.access_key, aws_secret_access_key=creds.secret_key, # grab a session with the right region aws_session_token=creds.token, region_name="us-west-2") client = session.client('braket',endpoint_url = "https://kpg9e8yzsg.execute-api.us-west-2.amazonaws.com/V4") # set gamma endpoint for Braket client project_name = "job-test" job_name = project_name + "-" + datetime.strftime(datetime.now(), "%Y%m%d%H%M%S") bucket = "*amazon-braket-Your-Bucket-Name*" 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::*AccountID*:role/AmazonBraketJobsPreviewRole (https://us-west-2.console.aws.amazon.com/iam/home?#/roles/AmazonBraketJobsPreviewRole)", algorithmSpecification={ "scriptModeConfig": { "entryPoint": "*alpha_test_job.fancy_module.my_file:start_here*", "containerImage": {"uri": "111122223333.dkr.ecr.us-west-2.amazonaws.com/sagemaker-byoc-test:latest"} "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:::device/qpu/rigetti/Aspen-9" ] } }, hyperParameters={ "user": "*AccountRole*", "bucket": f"s3://{bucket}" }, stoppingCondition={ "maxRuntimeInSeconds": 1200, "maximumTaskLimit": 10 }, )

Una volta creato il lavoro, è possibile accedere ai dettagli del lavoro tramite ilGetJob APIo la console. Per ottenere i dettagli del lavoro dalla sessione Python in cui è stato eseguito ilcreateJobcodice come nell'esempio precedente, usa il seguente comando Python.

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

Per annullare un processo, chiamare ilCancelJobAPI con ilJobArn.

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

È possibile specificare i checkpoint come parte delcreateJobutilizzando ilcheckpointConfigParametro .

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

Il LocalPath dicheckpointConfignon può iniziare con nessuno dei seguenti percorsi riservati:/opt/ml,/opt/braket,/tmp, oppure/usr/local/nvidia.