使用直接与混合作业互动 API - Amazon Braket

通过以下方式学习量子计算的基础 AWS!注册 Amazon Braket 数字学习计划,完成一系列学习课程和数字评估后,即可获得自己的数字徽章。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用直接与混合作业互动 API

您可以直接使用 Amazon Braket Hybrid Jobs 访问并与之交互。API但是,API直接使用时,默认方法和便捷方法不可用。

注意

我们强烈建议你使用 Amazon Braket Python SDK 与 Amazon Braket Hy b rid Jobs 互动。它提供便捷的默认设置和保护功能,可帮助您的混合作业成功运行。

本主题涵盖了使用的基础知识API。如果您选择使用 API,请记住这种方法可能更加复杂,并且需要为几次迭代做好准备,以使您的混合作业得以运行。

要使用 API,您的账户应具有AmazonBraketFullAccess托管策略的角色。

注意

有关如何使用AmazonBraketFullAccess托管策略获取角色的更多信息,请参阅启用 Amazon Braket 页面

此外,你需要一个执行角色。此角色将传递给服务。您可以使用 Amazon Braket 控制台创建角色。使用 “权限和设置” 页面上的 “执行角色” 选项卡为混合作业创建默认角色。

CreateJobAPI要求您为混合作业指定所有必需的参数。要使用 Python,请将算法脚本文件压缩为 tar 包,例如 input.tar.gz 文件,然后运行以下脚本。更新尖括号 (<>) 内的代码部分,以匹配您的账户信息和指定混合作业开始路径、文件和方法的入口点。

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/Aspen-M-3" ] } }, hyperParameters={ "hyperparameter key you wish to pass": "<hyperparameter value you wish to pass>", }, stoppingCondition={ "maxRuntimeInSeconds": 1200, "maximumTaskLimit": 10 }, )

创建混合作业后,您可以通过GetJobAPI或控制台访问混合作业的详细信息。要从运行createJob代码的 Python 会话中获取混合作业的详细信息,请使用以下 Python 命令。

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

要取消混合作业,请CancelJobAPI使用该任务Amazon Resource Name的 ('JobArn') 调用。

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

您可以使用checkpointConfig参数将检查点指定为的一部分。createJob API

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

的 localPath checkpointConfig 不能以以下任何保留路径开头:/opt/ml/opt/braket/tmp、或/usr/local/nvidia