하이브리드 작업에 API 사용
API를 사용하여 Amazon Braket Hybrid Jobs에 직접 액세스하고 상호 작용할 수 있습니다. 그러나 API를 직접 사용할 때는 기본값 및 편의 메서드를 사용할 수 없습니다.
참고
Amazon Braket Python SDK
이 주제에서는 API 사용의 기본 사항을 다룹니다. API를 사용하기로 선택한 경우 이 접근 방식은 더 복잡할 수 있으며 하이브리드 작업이 실행되도록 하기 위해 여러 번의 반복에 대비해야 함을 염두에 두세요.
API를 사용하려면 계정에 AmazonBraketFullAccess 관리형 정책이 적용된 역할이 있어야 합니다.
참고
AmazonBraketFullAccess 관리형 정책이 적용된 역할을 얻는 방법에 대한 자세한 내용은 Amazon Braket 활성화 페이지를 참조하세요.
또한 실행 역할이 필요합니다. 이 역할은 서비스에 전달됩니다. Amazon Braket 콘솔을 사용하여 역할을 생성할 수 있습니다. 권한 및 설정 페이지의 실행 역할 탭을 사용하여 하이브리드 작업에 대한 기본 역할을 생성합니다.
CreateJob API에서는 하이브리드 작업에 필요한 모든 파라미터를 지정해야 합니다. Python을 사용하려면 알고리즘 스크립트 파일을 input.tar.gz 파일과 같은 tar 번들로 압축하고 다음 스크립트를 실행합니다. 하이브리드 작업이 시작되는 경로, 파일 및 메서드를 지정하는 계정 정보 및 진입점과 일치하도록 꺾쇠 대괄호(<>) 안의 코드 부분을 업데이트합니다.
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 }, )
하이브리드 작업을 생성한 후에는 GetJob API 또는 콘솔을 통해 하이브리드 작업 세부 정보에 액세스할 수 있습니다. 이전 예제와 같이 createJob 코드를 실행한 Python 세션에서 하이브리드 작업 세부 정보를 가져오려면 다음 Python 명령을 사용합니다.
getJob = client.get_job(jobArn=job["jobArn"])
하이브리드 작업을 취소하려면 작업('JobArn')의 Amazon Resource Name을 사용하여 CancelJob API를 직접적으로 호출합니다.
cancelJob = client.cancel_job(jobArn=job["jobArn"])
checkpointConfig 파라미터를 사용하여 체크포인트를 createJob API의 일부로 지정할 수 있습니다.
checkpointConfig = { "localPath" : "/opt/omega/checkpoints", "s3Uri": f"s3://{bucket}/{s3_prefix}/checkpoints" },
참고
checkpointConfig의 localPath는 다음의 예약된 경로 /opt/ml, /opt/braket, /tmp 또는 /usr/local/nvidia 중 어느 것으로도 시작할 수 없습니다.