View a markdown version of this page

ハイブリッドジョブの主要なコンセプト - Amazon Braket

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

ハイブリッドジョブの主要なコンセプト

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

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

注記

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

Amazon Braket では、コンテナの入力と出力とのやりとりを簡素化するために、いくつかの環境変数とヘルパー関数も指定します。詳細については、「Amazon Braket SDK」の「braket.jobs package」を参照してください。

入力

入力データ: 入力データをハイブリッドアルゴリズムに提供するには、ディクショナリとして設定されている入力データファイルを input_data 引数に指定します。ユーザーは引数 input_data を SDK の AwsQuantumJob.create 関数内に定義します。この引数により、環境変数 "AMZN_BRAKET_INPUT_DIR" で指定された場所にあるコンテナファイルシステムに入力データがコピーされます。ハイブリッドアルゴリズムでの入力データの使用方法のいくつかの例については、「QAOA with Amazon Braket Hybrid Jobs and PennyLane」および「Quantum machine learning in Amazon Braket Hybrid Jobs」Jupyter Notebook を参照してください。

注記

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

ジョブ出力の保存の詳細については、Hybrid Jobs ドキュメントの「Save your results」を参照してください。

環境変数

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_BUCKETCreateJob リクエストの OutputDataConfig で指定する出力 Amazon S3 バケット。

  • AMZN_BRAKET_SCRIPT_ENTRY_POINTCreateJob リクエストの ScriptModeConfig で指定するエントリポイント。

  • AMZN_BRAKET_SCRIPT_COMPRESSION_TYPECreateJobリクエストの ScriptModeConfig で指定する圧縮タイプ。

  • AMZN_BRAKET_SCRIPT_S3_URICreateJobリクエストの ScriptModeConfig で指定する、ユーザースクリプトを保管する Amazon S3 の場所。

  • AMZN_BRAKET_TASK_RESULTS_S3_URI – SDK がジョブの量子タスクの結果をデフォルトで保存する Amazon S3 の場所。

  • AMZN_BRAKET_JOB_RESULTS_S3_PATHCreateJob リクエストの 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