最初のハイブリッドジョブを作成する - Amazon Braket

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

最初のハイブリッドジョブを作成する

このセクションでは、Python スクリプトを使用してハイブリッドジョブを作成する方法について説明します。または、希望する統合開発環境 (IDE) や Braket ノートブックなど、ローカル Python コードからハイブリッドジョブを作成するには、「」を参照してくださいローカルコードをハイブリッドジョブとして実行する

アクセス許可を設定する

最初のハイブリッドジョブを実行する前に、このタスクを続行するのに十分なアクセス許可があることを確認する必要があります。適切なアクセス許可があることを確認するには、Braket コンソールの左側にあるメニューから[Permissions] (アクセス許可) を選択します。Amazon Braket のアクセス許可管理ページでは、既存のロールの 1 つにハイブリッドジョブを実行するのに十分なアクセス許可があるかどうかを確認するのに役立ち、このようなロールをまだ持っていない場合は、ハイブリッドジョブの実行に使用できるデフォルトのロールの作成をガイドします。

Amazon Braket サービスのアクセス許可と設定ページには、サービスにリンクされたロールと、ハイブリッドジョブ実行ロールの既存のロールを検証するオプションが表示されます。

ハイブリッドジョブを実行するのに十分なアクセス許可を持つロールがあることを確認するには、既存のロールの検証ボタンを選択します。使用すると、ロールが見つかったというメッセージが表示されます。ロールの名前とそのロールを表示するにはARNs、ロールを表示ボタンを選択します。

Amazon Braket のアクセス許可と設定画面には、見つかったサービスにリンクされたロールと、ハイブリッドジョブを実行するのに十分なアクセス許可を持つ既存のロールが表示されます。

ハイブリッドジョブを実行するのに十分なアクセス許可を持つロールがない場合は、そのようなロールは見つからないというメッセージが表示されます。[Create default role] (デフォルトのロールの作成) ボタンを選択して、十分な権限を持つロールを取得します。

Amazon Braket のアクセス許可と設定ページには、サービスにリンクされたロールが見つかったが、ハイブリッドジョブの実行ロールは見つかりませんでした。

ロールが正常に作成された場合は、これを確認するメッセージが表示されます。

Amazon Braket のアクセス許可と設定ページには、サービスにリンクされたロールが見つかったこと、ハイブリッドジョブの実行ロールが正常に作成されたことが表示されます。

この問い合わせを行う権限がない場合、アクセスは拒否されます。この場合、内部 AWS 管理者にお問い合わせください。

AccessDenied ユーザーが ListAttachedRolePolicies で iam: を実行する権限がないことを示すエラーメッセージ AmazonBraketJobsExecutionRole 明示的な拒否。

を作成して実行する

ハイブリッドジョブを実行するアクセス許可を持つロールを取得したら、次に進む準備が整います。最初の Braket ハイブリッドジョブのキー部分は、アルゴリズムスクリプト です。実行するアルゴリズムを定義し、アルゴリズムの一部である古典的な論理と量子タスクが含まれています。アルゴリズムスクリプトに加えて、他の依存関係ファイルを指定することもできます。アルゴリズムスクリプトとその依存関係は、ソースモジュールと呼ばれます。エントリポイントは、ハイブリッドジョブの開始時にソースモジュールで実行する最初のファイルまたは関数を定義します。

コンソールまたはノートブックを使用して量子ジョブを作成し、量子デバイスでアルゴリズムスクリプトを実行し、結果を分析するワークフローを示す図。

まず、5 つのベル状態を作成し、対応する測定結果を出力するアルゴリズムスクリプトの基本的な例を考えてみましょう。

import os from braket.aws import AwsDevice from braket.circuits import Circuit def start_here(): print("Test job started!") # Use the device declared in the job script device = AwsDevice(os.environ["AMZN_BRAKET_DEVICE_ARN"]) bell = Circuit().h(0).cnot(0, 1) for count in range(5): task = device.run(bell, shots=100) print(task.result().measurement_counts) print("Test job completed!")

このファイルをalgorithm_script.py という名前で、Braket ノートブックまたはローカル環境の現在の作業ディレクトリに保存します。algorithm_script.py ファイルには計画されたエントリーポイントとして start_here() が含まれます。

次に、algorithm_script.py ファイルと同じディレクトリに Python ファイルまたは Python ノートブックを作成します。このスクリプトはハイブリッドジョブを開始し、関心のあるステータスや主要な結果の印刷など、非同期処理を処理します。少なくとも、このスクリプトはハイブリッドジョブスクリプトとプライマリデバイスを指定する必要があります。

注記

Braket ノートブックを作成する方法や、algomal_script.py ファイルなどのファイルをノートブックと同じディレクトリにアップロードする方法の詳細については、Amazon Braket Python を使用して最初の回路SDKを実行する」を参照してください。

この基本的な最初のケースでは、シミュレーターをターゲットにします。ターゲットとする量子デバイス、シミュレーター、または実際の量子処理ユニット (QPU) のタイプにかかわらず、次のスクリプトdeviceで指定したデバイスはハイブリッドジョブのスケジュールに使用され、アルゴリズムスクリプトが環境変数 として使用できますAMZN_BRAKET_DEVICE_ARN

注記

ハイブリッドジョブ AWS リージョン の で使用できるデバイスのみを使用できます。Amazon Braket はこの SDKを自動的に選択します AWS リージョン。例えば、us-east-1 のハイブリッドジョブは、IonQ, SV1, DM1 および TN1 デバイス。ただし、 ではありません。Rigetti デバイス。

シミュレーターの代わりに量子コンピュータを選択した場合、Bracket はハイブリッドジョブをスケジュールして、すべての量子タスクを優先アクセスで実行します。

from braket.aws import AwsQuantumJob from braket.devices import Devices job = AwsQuantumJob.create( Devices.Amazon.SV1, source_module="algorithm_script.py", entry_point="algorithm_script:start_here", wait_until_complete=True )

パラメータ wait_until_complete=True は、冗長モードを設定して、ジョブが実行中に実際のジョブからの出力を出力するようにします。次の例のような出力が表示されます。

job = AwsQuantumJob.create( Devices.Amazon.SV1, source_module="algorithm_script.py", entry_point="algorithm_script:start_here", wait_until_complete=True, ) Initializing Braket Job: arn:aws:braket:us-west-2:<accountid>:job/<UUID> ......................................... . . . Completed 36.1 KiB/36.1 KiB (692.1 KiB/s) with 1 file(s) remaining#015download: s3://braket-external-assets-preview-us-west-2/HybridJobsAccess/models/braket-2019-09-01.normal.json to ../../braket/additional_lib/original/braket-2019-09-01.normal.json Running Code As Process Test job started!!!!! Counter({'00': 55, '11': 45}) Counter({'11': 59, '00': 41}) Counter({'00': 55, '11': 45}) Counter({'00': 58, '11': 42}) Counter({'00': 55, '11': 45}) Test job completed!!!!! Code Run Finished 2021-09-17 21:48:05,544 sagemaker-training-toolkit INFO Reporting training SUCCESS
注記

.AwsQuantumJobcreate メソッドでカスタムメイドのモジュールを使用することもできます (ローカルディレクトリまたはファイルへのパス、または URI tar.gz ファイルの S3)。作業例については、「Amazon Braket サンプル Github リポジトリ」の「ハイブリッドジョブフォルダ」の「Parallelize_training_for_QML.ipynb ファイル」を参照してください。 Amazon Braket

結果をモニタリングする

または、Amazon からログ出力にアクセスできます CloudWatch。これを行うには、ジョブの詳細ページの左側のメニューにあるロググループタブに移動し、ロググループ を選択しaws/braket/jobs、ジョブ名を含むログストリームを選択します。上記の例で、これは braket-job-default-1631915042705/algo-1-1631915190 です。

CloudWatch Amazon Braket Python SDK テストのファイルパスとタイムスタンプを含むログイベントのリストを示すロググループ。

ハイブリッドジョブページを選択し、設定 を選択して、コンソールでハイブリッドジョブのステータスを表示することもできます。

Amazon Braket ハイブリッドジョブの詳細には、概要、イベント時間、ソースコードとインスタンスの設定、停止条件が表示されます。

ハイブリッドジョブは、実行中に Amazon S3 でアーティファクトを生成します。デフォルトの S3 バケット名は amazon-braket-<region>-<accountid> で、コンテンツはjobs/<jobname>/<timestamp> ディレクトリにあります。Braket Python でハイブリッドジョブを作成するcode_locationときに別の を指定することで、これらのアーティファクトが保存される S3 の場所を設定できますSDK。

注記

この S3 バケットは、ジョブスクリプト AWS リージョン と同じ にある必要があります。

jobs/<jobname>/<timestamp> ディレクトリには、model.tar.gzファイル内のエントリポイントスクリプトからの出力を含むサブフォルダが含まれています。ファイルには、アルゴリズムスクリプトアーティファクトscriptを含む というディレクトリもありますsource.tar.gz。実際の量子タスクの結果は、jobs/<jobname>/tasks という名前のディレクトリにあります。