パラメトリックコンパイルを使用したハイブリッドジョブの高速化 - Amazon Braket

パラメトリックコンパイルを使用したハイブリッドジョブの高速化

Amazon Braket は、特定の QPU でのパラメトリックコンパイルをサポートしています。このサポートにより、ハイブリッドアルゴリズムの各イテレーションをコンパイルするのではなく、回路を 1 回コンパイルするだけで済むようになるため、計算コストの高いコンパイルステップにかかるオーバーヘッドを削減できます。これにより、各ステップで回路を再コンパイルする必要がなくなるため、ハイブリッドジョブの実行時間が大幅に短縮されます。パラメータ化された回路を Braket ハイブリッドジョブとして、サポートされている QPU のいずれかに送信するだけでよいのです。長時間実行されるハイブリッドジョブの場合、Braket は、回路をコンパイルするときに、ハードウェアプロバイダーからの更新されたキャリブレーションデータを自動的に使用して、最高品質の結果を実現します。

パラメトリック回路を作成するには、まずパラメータをアルゴリズムスクリプトの入力として指定する必要があります。次の例では、小さなパラメトリック回路を使用し、各イテレーション間の古典的な処理をすべて無視しています。標準的なワークロードなら、多数の回路をバッチで送信し、各イテレーションでパラメータを更新するなどの古典的な処理を実行するところです。

import os from braket.aws import AwsDevice from braket.circuits import Circuit, FreeParameter def start_here(): print("Test job started.") # Use the device declared in the job script device = AwsDevice(os.environ["AMZN_BRAKET_DEVICE_ARN"]) circuit = Circuit().rx(0, FreeParameter("theta")) parameter_list = [0.1, 0.2, 0.3] for parameter in parameter_list: result = device.run(circuit, shots=1000, inputs={"theta": parameter}) print("Test job completed.")

次のジョブスクリプトを使用して、ハイブリッドジョブとして実行するアルゴリズムスクリプトを送信できます。パラメトリックコンパイルをサポートする QPU でハイブリッドジョブを実行する場合、回路は最初の実行時にのみコンパイルされます。後続の実行では、コンパイルされた回路が再利用されるため、コード行を追加しなくてもハイブリッドジョブの実行時間が短縮されます。

from braket.aws import AwsQuantumJob job = AwsQuantumJob.create( device=device_arn, source_module="algorithm_script.py", )
注記

パラメトリックコンパイルは、Rigetti Computing 製のあらゆる超伝導ゲートベース QPU でサポートされています。ただし、パルスレベルプログラムは例外です。