PennyLane Qiskit : Getting started (翻訳)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 10/20/2019
* 本ページは、PennyLane Qiskitの次のページを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$
Getting started
ひとたび PennyLane-Qiskit プラグインがインストールされれば、3 つの提供される Qiskit デバイスが一直線に PennyLane でアクセスできます。
PennyLane のために ‘qiskit.aer’ デバイスでインスタンス化できます :
import pennylane as qml dev = qml.device('qiskit.aer', wires=2)
それからこのデバイスは PennyLane 内で QNode の定義と評価のためにちょうど他のデバイスのように使用できます。測定の期待値を返しそして 3 つの古典的入力パラメータに依拠する単純な量子関数は次のように見えます :
@qml.qnode(dev) def circuit(x, y, z): qml.RZ(z, wires=[0]) qml.RY(y, wires=[0]) qml.RX(x, wires=[0]) qml.CNOT(wires=[0, 1]) return qml.expval(qml.PauliZ(wires=1))
それから量子力学的期待値を得るために任意の他の関数のように回路を実行できます。
circuit(0.2, 0.1, 0.3)
デフォルトデバイスのバックエンドを次で変更することもできます :
dev = qml.device('qiskit.aer', wires=2, backend='unitary_simulator')
どのバックエンドが利用可能かの現在の概要を得るために次により問い合せることができます :
dev.capabilities()['backend']
デバイス ‘qiskit.aer’ が Qiskit 主要パッケージ・インストールを一緒に提供される標準主要シミュレータである一方で、元々含まれる python シミュレータも存在します、これはより遅いですが他の依存性 (gcc, blas 等) を確認する必要なく通常は動作し、これは ‘qiskit.basicaer’ で使用できます。
2 つのもう一つの重要な違いは ‘qiskit.aer’ がノイズを伴うシミュレーションをサポートする一方で、’qiskit.basicaer’ はそうではありません。
ノイズモデル
ノイズモデルをインスタンス化して以下のように呼び出すことでそれをデバイスに適用することも出来ます :
import pennylane as qml import qiskit from qiskit.providers.aer.noise.device import basic_device_noise_model qiskit.IBMQ.load_accounts() ibmqx4 = qiskit.IBMQ.get_backend('ibmqx4') device_properties = ibmqx4.properties() noise_model = basic_device_noise_model(device_properties) dev = qml.device('qiskit.aer', wires=2, noise_model=noise_model)
Please refer to the Qiskit documentation for more information on noise models.
IBM Q Experience
PennyLane-Qiskit は qistkit.ibmq デバイスを通して IBM Q ハードウェア上で PennyLane を実行することをサポートします。異なるバックエンド – シミュレータかリアル・ハードウェアの間で選択できます。
import pennylane as qml dev = qml.device('qiskit.ibmq', wires=2, backend='ibmqx4')
デフォルトでは、qiskit.ibmq デバイスは既にアクティブかストアされている IBM Q アカウントを使用することを試みます。利用可能なものがない場合には、貴方の IBM Q API トークン、そしてオプションの URL を直接渡しても良いです :
import pennylane as qml dev = qml.device('qiskit.ibmq', wires=2, backend='ibmq_qasm_simulator', ibmqx_token="XXX")
貴方のトークンを偶発的に公開することを回避するため、qiskit.IBMQ.save_account() 関数を使用してそれをストアすることが最善です。代わりに、次のようにセクションを追加することにより PennyLane configuration ファイルを通してトークンか URL を指定することもできます :
[qiskit.global] [qiskit.ibmq] ibmqx_token = "XXX" ibmqx_url = "XXX"
デフォルトでは、qiskit.ibmq デバイスはシミュレータ・バックエンド ibmq_qasm_simulator を使用することに注意してください、
しかしこれは次により与えられる任意のリアル・バックエンドに変更して良いです :
dev.capabilities()['backend']
Tutorials
実際に PennyLane Qiskit プラグインを見るには、Pennylane ドキュメントから任意の量子ビット based チュートリアルを使用できて、そして単純に ‘default.qubit’ を ‘qiskit.aer’ のような利用可能な Qiskit デバイスで置き換えることができます :
dev = qml.device('qiskit.aer', wires=XXX)
また量子ビット回転チュートリアルのような、チュートリアルを ‘qiskit.ibmq’ デバイスを使用して実際の量子ハードウェア上で実行することを試すこともできます。
以上