本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
直接與混合式工作互動 API
您可以使用直接存取 Amazon Braket 混合任務並與之API互動。但是,當API直接使用時,預設值和便利方法不可用。
注意
我們強烈建議您使用 Amazon Braket 開發套件與 Amazon Braket 譯混合任務進 Python
本主題涵蓋使用API. 如果您選擇使用 API,請記住,這種方法可能會更複雜,並準備好進行多次迭代以運行混合任務。
若要使用 API,您的帳戶應具有AmazonBraketFullAccess
受管政策的角色。
注意
如需如何透過AmazonBraketFullAccess
受管政策取得角色的詳細資訊,請參閱啟用 Amazon Braket 頁面。
此外,您還需要執行角色。此角色將傳遞至服務。您可以使用 Amazon Braket 主控台建立角色。使用 [權限和設定] 頁面上的 [執行角色] 索引標籤,為混合式工作建立預設角色。
CreateJob
API需要您指定混合式工作的所有必要參數。若要使用 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 }, )
建立混合式工作後,您可以透過GetJob
API或主控台存取混合式工作詳細資料。若要從執行程式createJob
碼的 Python 工作階段取得混合作業詳細資訊,如前面的範例,請使用下列 Python 命令。
getJob = client.get_job(jobArn=job["jobArn"])
若要取消混合式工作,請CancelJob
API使用該工作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
。