

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ハイブリッドジョブの主要なコンセプト
<a name="braket-jobs-concepts"></a>

このセクションでは、Amazon Braket Python SDK によって指定される `AwsQuantumJob.create` 関数の主要なコンセプトと、コンテナファイル構造へのマッピングを説明します。

ハイブリッドジョブには、アルゴリズムスクリプト全体を構成する 1 つまたは複数のファイルに加えて、追加の入力と出力を含めることができます。ハイブリッドジョブが開始されると、Amazon Braket はハイブリッドジョブ作成の一部として指定された入力を、アルゴリズムスクリプトを実行するコンテナにコピーします。ハイブリッドジョブが完了すると、アルゴリズムで定義されたすべての出力が、指定された Amazon S3 の場所にコピーされます。

**注記**  
 *アルゴリズムメトリクス*はリアルタイムで報告されますので、この出力手順に従わないでください。

Amazon Braket では、コンテナの入力と出力とのやりとりを簡素化するために、いくつかの環境変数とヘルパー関数も指定します。詳細については、「*Amazon Braket SDK*」の「[braket.jobs package](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` 引数に指定します。ユーザーは引数 `input_data` を SDK の `AwsQuantumJob.create` 関数内に定義します。この引数により、環境変数 `"AMZN_BRAKET_INPUT_DIR"` で指定された場所にあるコンテナファイルシステムに入力データがコピーされます。ハイブリッドアルゴリズムでの入力データの使用方法のいくつかの例については、「[QAOA with Amazon Braket Hybrid Jobs and PennyLane](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)」および「[Quantum machine learning in 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 Notebook を参照してください。

**注記**  
入力データが大きい (>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 コンソールにリアルタイムで表示されるアルゴリズムスクリプトの一部が、アルゴリズムメトリクスの定義です。アルゴリズムメトリクスの使用方法の例については、「[Use Amazon Braket Hybrid Jobs to run a QAOA algorithm](braket-jobs-run-qaoa-algorithm.md)」を参照してください。

ジョブ出力の保存の詳細については、Hybrid Jobs ドキュメントの「[Save your results](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
```