View a markdown version of this page

하이브리드 작업의 주요 개념 - Amazon Braket

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

하이브리드 작업의 주요 개념

이 섹션에서는 Amazon Braket Python SDK에서 제공하는 AwsQuantumJob.create 함수의 주요 개념과 컨테이너 파일 구조에 대한 매핑을 설명합니다.

전체 알고리즘 스크립트를 구성하는 파일 외에도, 하이브리드 작업에는 추가 입력과 출력이 있을 수 있습니다. 하이브리드 작업이 시작되면 Amazon Braket은 하이브리드 작업 생성의 일부로 제공된 입력을 알고리즘 스크립트를 실행하는 컨테이너에 복사합니다. 하이브리드 작업이 완료되면 알고리즘 중에 정의된 모든 출력이 지정된 Amazon S3 위치로 복사됩니다.

참고

알고리즘 지표는 실시간으로 보고되며 이 출력 절차를 따르지 않습니다.

또한 Amazon Braket은 컨테이너 입력 및 출력과의 상호 작용을 간소화하는 여러 환경 변수 및 헬퍼 함수를 제공합니다. 자세한 내용은 Amazon Braket SDKbraket.jobs 패키지를 참조하세요.

입력

입력 데이터: 입력 데이터는 딕셔너리로 설정된 입력 데이터 파일을 input_data 인수와 함께 지정하여 하이브리드 알고리즘에 제공할 수 있습니다. 사용자는 SDK의 AwsQuantumJob.create 함수 내에서 input_data 인수를 정의합니다. 그러면 환경 변수 "AMZN_BRAKET_INPUT_DIR"에서 지정한 위치의 컨테이너 파일 시스템에 입력 데이터가 복사됩니다. 하이브리드 알고리즘에서 입력 데이터가 사용되는 방법에 대한 몇 가지 예제는 Amazon Braket Hybrid Jobs와 PennyLane을 활용한 QAOAAmazon Braket Hybrid Jobs에서의 양자 기계 학습 Jupyter notebooks를 참조하세요.

참고

입력 데이터가 크면(>1GB) 하이브리드 작업이 제출되기까지 대기 시간이 길어집니다. 이는 로컬 입력 데이터가 먼저 S3 버킷에 업로드된 다음 S3 경로가 하이브리드 작업 요청에 추가되고, 마지막으로 하이브리드 작업 요청이 Braket 서비스에 제출되기 때문입니다.

하이퍼파라미터: hyperparameters를 전달하면 환경 변수 "AMZN_BRAKET_HP_FILE"에서 사용할 수 있습니다.

참고

하이퍼파라미터 및 입력 데이터를 생성한 다음 이 정보를 하이브리드 작업 스크립트에 전달하는 방법에 대한 자세한 내용은 하이퍼파라미터 사용 섹션 및 이 github 페이지를 참조하세요.

체크포인트: 새 하이브리드 작업에서 사용할 체크포인트를 갖는 job-arn을 지정하려면 copy_checkpoints_from_job 명령을 사용합니다. 이 명령은 체크포인트 데이터를 새 하이브리드 작업의 checkpoint_configs3Uri으로 복사하여 작업이 실행되는 동안 환경 변수 AMZN_BRAKET_CHECKPOINT_DIR이 지정한 경로에서 사용할 수 있게 합니다. 기본값은 None입니다. 즉, 다른 하이브리드 작업의 체크포인트 데이터는 새 하이브리드 작업에 사용되지 않습니다.

출력

양자 작업: 양자 작업 결과는 S3 위치 s3://amazon-braket-<region>-<accountID>/jobs/<job-name>/tasks에 저장됩니다.

작업 결과: 알고리즘 스크립트가 환경 변수 "AMZN_BRAKET_JOB_RESULTS_DIR"에 의해 지정된 디렉터리에 저장하는 모든 내용은 output_data_config에 지정된 S3 위치로 복사됩니다. 값이 지정되지 않은 경우 기본값은 s3://amazon-braket-<region>-<accountID>/jobs/<job-name>/<timestamp>/data입니다. 알고리즘 스크립트에서 직접적으로 호출할 때 결과를 딕셔너리 형태로 편리하게 저장하는 데 사용할 수 있는 SDK 헬퍼 함수 save_job_result를 제공합니다.

체크포인트: 체크포인트를 사용하려면 환경 변수 "AMZN_BRAKET_CHECKPOINT_DIR"에 의해 지정된 디렉터리에 체해당 크포인트를 저장할 수 있습니다. SDK 헬퍼 함수 save_job_checkpoint를 대신 사용할 수도 있습니다.

알고리즘 지표: 하이브리드 작업이 실행되는 동안 Amazon CloudWatch로 내보내지고 Amazon Braket 콘솔에 실시간으로 표시되는 알고리즘 스크립트의 일부로 알고리즘 지표를 정의할 수 있습니다. 알고리즘 지표를 사용하는 방법의 예제는 Amazon Braket Hybrid Jobs를 사용하여 QAOA 알고리즘 실행을 참조하세요.

작업 출력 저장에 대한 자세한 내용은 하이브리드 작업 설명서의 결과 저장을 참조하세요.

환경 변수

Amazon Braket은 컨테이너 입력 및 출력과의 상호 작용을 간소화하는 여러 환경 변수를 제공합니다. 아래 코드는 Braket이 사용하는 환경 변수를 나열합니다.

  • AMZN_BRAKET_INPUT_DIR - 입력 데이터 디렉터리 opt/braket/input/data

  • AMZN_BRAKET_JOB_RESULTS_DIR - 작업 결과를 쓸 출력 디렉터리 opt/braket/model

  • AMZN_BRAKET_JOB_NAME - 작업의 이름

  • AMZN_BRAKET_CHECKPOINT_DIR - 체크포인트 디렉터리

  • AMZN_BRAKET_HP_FILE - 하이퍼파라미터가 포함된 파일

  • AMZN_BRAKET_DEVICE_ARN - 디바이스 ARN(AWS 리소스 이름).

  • AMZN_BRAKET_OUT_S3_BUCKET - CreateJob 요청의 OutputDataConfig에 지정된 출력 Amazon S3 버킷

  • AMZN_BRAKET_SCRIPT_ENTRY_POINT - CreateJob 요청의 ScriptModeConfig에 지정된 진입점

  • AMZN_BRAKET_SCRIPT_COMPRESSION_TYPE - CreateJob 요청의 ScriptModeConfig에 지정된 압축 유형

  • AMZN_BRAKET_SCRIPT_S3_URI - CreateJob 요청의 ScriptModeConfig에 지정된 사용자 스크립트의 Amazon S3 위치

  • AMZN_BRAKET_TASK_RESULTS_S3_URI - SDK가 기본적으로 작업에 대한 양자 작업 결과를 저장하는 Amazon S3 위치

  • AMZN_BRAKET_JOB_RESULTS_S3_PATH - CreateJob 요청의 OutputDataConfig에 지정된 대로 작업 결과가 저장될 Amazon S3 위치

  • AMZN_BRAKET_JOB_TOKEN - 작업 컨테이너에 생성된 양자 작업에 대해 CreateQuantumTaskjobToken 파라미터에 전달되어야 하는 문자열

헬퍼 함수

Amazon Braket은 컨테이너 입력 및 출력과의 상호 작용을 간소화하는 여러 헬퍼 함수를 제공합니다. 이러한 헬퍼 함수는 하이브리드 작업을 실행하는 데 사용되는 알고리즘 스크립트 내에서 직접적으로 호출됩니다. 다음 예제에서는 이러한 함수를 사용하는 방법을 보여줍니다.

from braket.jobs import get_checkpoint_dir, get_hyperparameters, get_input_data_dir, get_job_device_arn, get_job_name, get_results_dir, save_job_result, save_job_checkpoint, load_job_checkpoint get_checkpoint_dir() # Get the checkpoint directory get_hyperparameters() # Get the hyperparameters as strings get_input_data_dir() # Get the input data directory get_job_device_arn() # Get the device specified by the hybrid job get_job_name() # Get the name of the hybrid job. get_results_dir() # Get the path to a results directory save_job_result(result_data='data') # Save hybrid job results save_job_checkpoint(checkpoint_data={'key': 'value'}) # Save a checkpoint load_job_checkpoint() # Load a previously saved checkpoint