Amazon Braket で PennyLane を使う - Amazon Braket

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

Amazon Braket で PennyLane を使う

ハイブリッドアルゴリズムは、古典的指示と量子指示の両方を含むアルゴリズムです。クラシック命令はクラシックハードウェア (EC2 インスタンスまたはラップトップ) で実行され、量子命令はシミュレーターまたは量子コンピュータで実行されます。Hybrid Jobs 機能を使用してハイブリッドアルゴリズムを実行することをお勧めします。詳細については、Amazon Braket Jobs を使用するタイミング」を参照してください。

Amazon Braket では、Amazon Amazon Braket PennyLane プラグイン、または Amazon Amazon Braket Python SDK とサンプルノートブックリポジトリを使用して、ハイブリッド量子アルゴリズムをセットアップして実行できます。SDK に基づく Amazon Braket のサンプルノートブックを使用すると、PennyLane プラグインを使用せずに特定のハイブリッドアルゴリズムを設定および実行できます。ただし、PennyLane は豊富なエクスペリエンスを提供するため、お勧めします。

ハイブリッド量子アルゴリズムについて

ハイブリッド量子アルゴリズムは、現代の量子コンピューティングデバイスが一般的にノイズを生成するため、今日の業界にとって重要です。計算に追加された量子ゲートはすべてノイズを追加する可能性を高めます。したがって、長時間実行されるアルゴリズムはノイズに圧倒され、計算が失敗する可能性があります。

Shor's (量子フェーズ推定の例) や Grover's (Grover の例) などの純粋な量子アルゴリズムには、数千または数百万のオペレーションが必要です。このため、これらは既存の量子デバイスでは実行できない可能性があります。これらの量子デバイスは、一般にノイズの多い中間スケール量子(NISQ) デバイスと呼ばれます。

ハイブリッド量子アルゴリズムでは、特に古典的なアルゴリズムにおける特定の計算を高速化するために、量子処理装置 (QPU) は古典的 CPU のコプロセッサとして機能します。今日のデバイスの機能の手の届く範囲内で、回路の実行がはるかに短くなります。

PennyLane での Amazon Braket

Amazon Braket は、PennyLane のサポートを提供し、量子微分可能プログラミングのコンセプトを中心に構築されたオープンソースのソフトウェアフレームワークです。このフレームワークを使用して、量子化学、量子機械学習、最適化における計算問題の解決策を見つけるためにニューラルネットワークをトレーニングするのと同じ方法で量子回路をトレーニングできます。

PennyLane ライブラリには、PyTorch や TensorFlow などの使い慣れた機械学習ツールへのインターフェイスが用意されており、量子回路のトレーニングを迅速かつ直感的に行うことができます。

  • PennyLane ライブラリ -- PennyLane は Amazon Braket ノートブックにプリインストールされています。PennyLane から Amazon Braket デバイスにアクセスするには、ノートブックを開き、次のコマンドを使用して PennyLane ライブラリをインポートします。

import pennylane as qml

チュートリアルノートブックで、すぐに開始できます。または、選択した IDE から Amazon Braket で PennyLane を使用することもできます。

  • Amazon Braket PennyLane プラグイン — 独自の IDE を使用するには、AmazonBraket PennyLane プラグインを手動でインストールできます。プラグインは PennyLane を Amazon Braket Python SDK に接続するため、PennyLane で Amazon Braket デバイスで回路を実行できます。PennyLane プラグインをインストールするには、次のコマンドを使用します。

pip install amazon-braket-pennylane-plugin

次の例は、PennyLane で Amazon Braket デバイスへのアクセスを設定する方法を示しています。

# to use SV1 import pennylane as qml sv1 = qml.device("braket.aws.qubit", device_arn="arn:aws:braket:::device/quantum-simulator/amazon/sv1", wires=2) # to run a circuit: @qml.qnode(sv1) def circuit(x): qml.RZ(x, wires=0) qml.CNOT(wires=[0,1]) qml.RY(x, wires=1) return qml.expval(qml.PauliZ(1)) result = circuit(0.543) #To use the local sim: local = qml.device("braket.local.qubit", wires=2)

PennyLane に関するチュートリアルの例と詳細については、Amazon Braket サンプルリポジトリを参照してください。

Amazon Braket PennyLane プラグインを使用すると、1 行のコードで Amazon Braket QPU と PennyLane の埋め込みシミュレーターデバイスを切り替えることができます。PennyLane と連携する 2 つの Amazon Braket 量子デバイスを提供します。

  • braket.aws.qubit QPUs やシミュレーターなど、AmazonBraket サービスの量子デバイスで実行するための

  • braket.local.qubit Amazon Braket SDK のローカルシミュレーターで実行するための

Amazon Braket PennyLane プラグインはオープンソースです。PennyLane Plugin GitHub リポジトリからインストールできます。

PennyLane の詳細については、PennyLane ウェブサイトのドキュメントを参照してください。

Amazon Braket のハイブリッドアルゴリズムのサンプルノートブック

Amazon Braket では、ハイブリッドアルゴリズムの実行に PennyLane プラグインに依存しないさまざまなサンプルノートブックを提供しています。量子近似最適化アルゴリズム (QAOA) や変分量子固有値ソルバー (VQE) などの変分法を説明する Amazon Braket ハイブリッドサンプルノートブックのいずれからでも開始できます。

Amazon Braket のサンプルノートブックは、Amazon Braket Python SDK に依存しています。SDK は、AmazonBraket を介して量子コンピューティングハードウェアデバイスとやり取りするためのフレームワークを提供します。これは、ハイブリッドワークフローの量子部分を支援するように設計されたオープンソースライブラリです。

Amazon Braket は、サンプルノートブックで詳しく調べることができます。

PennyLane シミュレーターが埋め込まれたハイブリッドアルゴリズム

Amazon Braket Hybrid Jobs には、PennyLane の高性能 CPU および GPU ベースの組み込みシミュレーターが付属するようになりました。この組み込みシミュレーターファミリーはハイブリッドジョブコンテナに直接埋め込むことができ、高速ステートベクトルlightning.qubitシミュレーター、NVIDIA の cuQuantum ライブラリを使用して高速化されたlightning.gpuシミュレーターなどが含まれます。これらの組み込みシミュレーターは、結合区別方法などの高度な方法の利点を享受できる量子機械学習などのバリエーションアルゴリズムに最適です。これらの埋め込みシミュレーターは、1 つ以上の CPU または GPU インスタンスで実行できます。

Hybrid Jobs では、従来のコプロセッサと QPU の組み合わせ、 などの Amazon Braket オンデマンドシミュレーター、または PennyLane の埋め込みシミュレーターを直接使用してSV1、バリエーションアルゴリズムコードを実行できるようになりました。

組み込みシミュレーターは Hybrid Jobs コンテナで既に使用できます。メインの Python 関数をデコレータで@hybrid_jobデコレートするだけで済みます。PennyLane lightning.gpuシミュレーターを使用するには、次のコードスニペットInstanceConfigに示すように、 で GPU インスタンスを指定する必要があります。

import pennylane as qml from braket.jobs import hybrid_job from braket.jobs.config import InstanceConfig @hybrid_job(device="local:pennylane/lightning.gpu", instance_config=InstanceConfig(instanceType="ml.p3.8xlarge")) def function(wires): dev = qml.device("lightning.gpu", wires=wires) ...

ハイブリッドジョブで PennyLane 埋め込みシミュレーターの使用を開始するには、サンプルノートブックを参照してください。

Amazon Braket シミュレーターを使用した PennyLane の結合勾配

Amazon Braket 用PennyLaneプラグインを使用すると、ローカルステートベクトルシミュレーターまたは SV1 で を実行するときに、ジョイントの区別方法を使用して勾配を計算できます。

注: アドジョイントの区別方法を使用するには、 ではなく qnodediff_method='device'で を指定する必要がありますdiff_method='adjoint'。次の例を参照してください。

device_arn = "arn:aws:braket:::device/quantum-simulator/amazon/sv1" dev = qml.device("braket.aws.qubit", wires=wires, shots=0, device_arn=device_arn) @qml.qnode(dev, diff_method="device") def cost_function(params): circuit(params) return qml.expval(cost_h) gradient = qml.grad(circuit) initial_gradient = gradient(params0)
注記

現在、 PennyLaneは QAOA ハミルトニアンのグループ化インデックスを計算し、それを使用してハミルトニアンを複数の期待値に分割します。から QAOA を実行するときに SV1 の結合差別化機能を使用する場合はPennyLane、次のようにグループ化インデックスを削除してコストハミルトニアンを再構築する必要があります。 cost_h, mixer_h = qml.qaoa.max_clique(g, constrained=False) cost_h = qml.Hamiltonian(cost_h.coeffs, cost_h.ops)