

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

# 하이브리드 작업의 주요 개념
<a name="braket-jobs-concepts"></a>

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

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

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

또한 Amazon Braket은 컨테이너 입력 및 출력과의 상호 작용을 간소화하는 여러 환경 변수 및 헬퍼 함수를 제공합니다. 자세한 내용은 *Amazon Braket SDK*의 [braket.jobs 패키지](https://amazon-braket-sdk-python.readthedocs.io/en/latest/_apidoc/braket.jobs.html)를 참조하세요.

**Topics**
+ [입력](#braket-jobs-inputs)
+ [출력](#braket-jobs-outputs)
+ [환경 변수](#braket-jobs-environmental-variables)
+ [헬퍼 함수](#braket-jobs-helper-functions)

## 입력
<a name="braket-jobs-inputs"></a>

 **입력 데이터**: 입력 데이터는 딕셔너리로 설정된 입력 데이터 파일을 `input_data` 인수와 함께 지정하여 하이브리드 알고리즘에 제공할 수 있습니다. 사용자는 SDK의 `AwsQuantumJob.create` 함수 내에서 `input_data` 인수를 정의합니다. 그러면 환경 변수 `"AMZN_BRAKET_INPUT_DIR"`에서 지정한 위치의 컨테이너 파일 시스템에 입력 데이터가 복사됩니다. 하이브리드 알고리즘에서 입력 데이터가 사용되는 방법에 대한 몇 가지 예제는 [Amazon Braket Hybrid Jobs와 PennyLane을 활용한 QAOA](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/hybrid_jobs/2_Using_PennyLane_with_Braket_Hybrid_Jobs/Using_PennyLane_with_Braket_Hybrid_Jobs.ipynb) 및 [Amazon Braket Hybrid Jobs에서의 양자 기계 학습](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/hybrid_jobs/1_Quantum_machine_learning_in_Amazon_Braket_Hybrid_Jobs/Quantum_machine_learning_in_Amazon_Braket_Hybrid_Jobs.ipynb) Jupyter notebooks를 참조하세요.

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

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

**참고**  
하이퍼파라미터 및 입력 데이터를 생성한 다음 이 정보를 하이브리드 작업 스크립트에 전달하는 방법에 대한 자세한 내용은 [하이퍼파라미터 사용](braket-jobs-hyperparameters.md) 섹션 및 이 github [페이지](https://github.com/amazon-braket/amazon-braket-examples/blob/main/examples/hybrid_jobs/1_Quantum_machine_learning_in_Amazon_Braket_Hybrid_Jobs/qcbm/qcbm.py)를 참조하세요.

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

## 출력
<a name="braket-jobs-outputs"></a>

 **양자 작업**: 양자 작업 결과는 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 알고리즘 실행](braket-jobs-run-qaoa-algorithm.md)을 참조하세요.

작업 출력 저장에 대한 자세한 내용은 하이브리드 작업 설명서의 [결과 저장](https://docs.aws.amazon.com/braket/latest/developerguide/braket-jobs-first.html#braket-jobs-save-results)을 참조하세요.

## 환경 변수
<a name="braket-jobs-environmental-variables"></a>

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` - 작업 컨테이너에 생성된 양자 작업에 대해 `CreateQuantumTask`의 `jobToken` 파라미터에 전달되어야 하는 문자열

## 헬퍼 함수
<a name="braket-jobs-helper-functions"></a>

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
```