Amazon Braket PennyLane で を使用する - Amazon Braket

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

Amazon Braket PennyLane で を使用する

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

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

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

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

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

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

を使用した Amazon Braket PennyLane

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

この PennyLane ライブラリは、 PyTorch や などの使い慣れた機械学習ツールへのインターフェイスを提供し TensorFlow、量子回路のトレーニングを迅速かつ直感的に行います。

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

import pennylane as qml

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

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

pip install amazon-braket-pennylane-plugin

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

# 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 プラグインを使用すると、AmazonBraket QPU と埋め込みシミュレーターデバイスを 1 行のコード PennyLane で切り替えることができます。2 つの Amazon Braket 量子デバイスが で動作します PennyLane。

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

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

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

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

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

import pennylane as qml from braket.jobs import hybird_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) ...

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

Amazon Braket シミュレータ PennyLane ーによる の結合勾配

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

注: 結合の区別方法を使用するには、 ではなく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)