翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 (量子フェーズ推定の例)
ハイブリッド量子アルゴリズムでは、特に古典的なアルゴリズムにおける特定の計算を高速化するために、量子処理装置 (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 Python SDK
Amazon Braket は、サンプルノートブック
PennyLane シミュレーターが埋め込まれたハイブリッドアルゴリズム
Amazon Braket Hybrid Jobs には、PennyLanelightning.qubit
シミュレーター、NVIDIA の cuQuantum ライブラリlightning.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 で を実行するときに、ジョイントの区別方法を使用して勾配を計算できます。
注: アドジョイントの区別方法を使用するには、 ではなく qnode
diff_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)