pennylane について
PennyLane は、パラメーター化量子回路や量子・古典ハイブリッドモデルを構築・最適化する Python フレームワークです。量子機械学習、最適化、量子化学に取り組む研究者や開発者向けで、シミュレーターとデバイスのワークフローに対応します。
主な機能
- 01パラメーター化量子回路の最適化
- 02量子・古典ハイブリッドモデルの構築
- 03量子化学のエネルギー推定
- 04デバイス間での回路比較
- 05シミュレーターとデバイスのワークフロー
活用シーン
- 01量子機械学習モデルの訓練
- 02小規模な QAOA 問題の最適化
- 03VQE による分子エネルギーの推定
- 04デバイス実行前にシミュレーターで回路を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ k-dense-ai/ scientific-agent-skills --skill pennylaneインストール後、Claude Code で/pennylaneを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/advanced_features.mddevices_backends.mdgetting_started.mdoptimization.mdquantum_chemistry.mdquantum_circuits.mdquantum_ml.md詳細
PennyLane
使用する場面
PennyLane は、パラメータ化された回路の最適化、ハイブリッド量子古典モデルの構築、分子エネルギーの推定、または検証済みの回路をデバイス間で比較する場合に使用します。このスキルは安定版の PennyLane 0.45.1 を対象としています。ローカルの例では小さな合成システムを使用しており、最適化が成功しても量子優位性、分子精度、ハードウェアの忠実度が確立されるわけではありません。
インストール
専用の環境を作成してください。プロバイダーのプラグインとコンパイラの依存関係は、無関係な科学計算パッケージとは別に解決する必要があります:
uv venv --python 3.13 .venv-pennylane
uv pip install --python .venv-pennylane/bin/python "pennylane==0.45.1"
PennyLane 0.45 には NumPy 2+ が必要です。コアのインストールには Lightning が含まれます。ML には、検証済みの JAX 0.7.1/JAXlib 0.7.1 のペアまたは PyTorch を使用してください。最新の JAX がこの PennyLane リリースでサポートされていると想定しないでください。オプションのプラグインのバージョンとその検証の限界については、デバイスのセットアップを参照してください。
ワークフロー
- 問題の規約を確定します。ML では特徴量の順序とラベルのエンコーディング、最適化ではハミルトニアンの符号、化学では単位、電荷、多重度、基底、アクティブ空間、マッピングです。
- 小さな解析的な
default.qubit回路を構築します。別のバックエンドで再利用する場合は、量子関数を QNode から分離しておきます。 - トレーニングの前に、既知の値と勾配を解析解または有限差分の結果と照合します。Autograd にはトレーニング可能な
pennylane.numpy配列を、Torch/JAX にはフレームワークネイティブのテンソルを使用します。 - 目的関数、勾配ノルム、シード、ansatz の形状、パッケージのバージョンを記録しながら最適化します。
step_and_costは更新の前にコストを返すため、最終報告用に目的関数を再度評価します。 - 独立に検証します。ML ではホールドアウトした例と古典ベースライン、VQE では粒子数とセクターに適した古典リファレンス、QAOA では列挙した小さなインスタンスを使用します。
- 有限ショット/ノイズを導入し、不確実性を報告し、分解されたリソースを確認してから、現在アクセス可能なハードウェアバックエンドと実行予算を選択します。プラグインの移植性は、同一のゲート、測定、勾配を保証するものではありません。
クイックスタート: 値、勾配、最適化
この自己完結型の例は、スキルのテストによって実行されます。
import pennylane as qml
from pennylane import numpy as np
dev = qml.device("default.qubit", wires=1)
@qml.qnode(dev, interface="autograd", diff_method="backprop")
def energy(theta):
qml.RY(theta, wires=0)
return qml.expval(qml.Z(0))
theta = np.array(0.3, requires_grad=True)
assert np.allclose(energy(theta), np.cos(theta))
assert np.allclose(qml.grad(energy)(theta), -np.sin(theta))
opt = qml.GradientDescentOptimizer(stepsize=0.2)
for _ in range(80):
theta = opt.step(energy, theta)
final_energy = float(energy(theta))
assert final_energy < -0.999
print(f"[OK] final expectation = {final_energy:.6f}")
関連するリファレンスを読み込む
- はじめに: QNode、ショット、ランダムストリーム、トレーニング可能性、バッチ化されたパラメータ、シミュレータの選択。
- 量子回路: 制御、測定フィードバック、ワイヤの順序、QFT、トランスフォーム、現在のリソースへのアクセス。
- 量子 ML: 実行された TorchLayer と JAX のトレーニング、安定した分類器損失、特徴量スケーリング、評価。
- 量子化学: H2 UCCSD、単位、粒子セクターのチェック、双極子、アクティブ空間、分子構造、励起状態の注意点。
- デバイス: シミュレータ、プロバイダーの契約、認証情報、現在のターゲットの検出、ソースのみの統合の境界。
- 最適化: 勾配チェック、SPSA、QNG、MaxCut の符号、厳密な QUBO から Ising への変換。
- 高度な機能: テンプレート、ノイズ、パラメータ化されたハミルトニアンの時間発展、Catalyst、誤り訂正の例。
失敗時のチェック
- サンプル/カウントには有限ショットが必要です。状態には対応するシミュレーターが必要です。
デバイスのショットを変更するのではなく、QNode で
qml.set_shotsを使用してください。 - 回路途中の測定値はシンボリックです。Python の
if mではなく、qml.condを使用してください。 - 0.45.1 の
qml.specsはCircuitSpecsを返します。古いトップレベルの辞書キーではなく、.resourcesにアクセスしてください。トランスフォームレベルを記録し、分割されたテープを考慮してください。 qml.qaoa.maxcutは 負のカットサイズ を生成します。それを直接最小化してください。- ゼロ/フラットな勾配は、未使用パラメーター、対称性、飽和したエンコーディング、 ショットノイズ、または微分の失敗を意味する可能性があります。それだけではブランニング・プラトーを診断できません。
- 化学の幾何はデフォルトで bohr です。単位を明示してください。制約のない アンザッツは、意図した電子/スピンセクターから外れる可能性があります。
- シミュレーターのシードは乱数ストリームを初期化します。連続する実行は新しい 乱数を消費します。同じシードで再構築したデバイスは同じストリームを再現します。
上流の参照と検証
安定版ドキュメント、 0.45.1 ソース、 非推奨、 およびリンクされたトピック別の API ページを確認しました。ローカルのシミュレーター/ML の例には数値テストがあります。 プロバイダーのハードウェア、GPU、Catalyst のネイティブコンパイル、および外部の化学バックエンドは、 明示的に例示/ソース確認のみであり、認証されたジョブは実行されていません。
Scientific Agent Skills の引用
このスキルは K-Dense による Scientific Agent Skills の一部です。もしこれが 原稿、レポート、プレゼンテーション、またはコードリリースに実質的に貢献した場合は、 参考文献またはソフトウェアセクションに論文を追加し、そうしたことをユーザーに伝えてください:
Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065
常に現在のバージョンを引用してください。DOI と https://arxiv.org/abs/2609.00065 は
最新の arXiv バージョンに解決されるため、v1 のようなバージョン接尾辞を決して付けないでください。
ネットワークアクセスが利用可能な場合は、参考文献を書く前に https://arxiv.org/abs/2609.00065
(または http://export.arxiv.org/api/query?id_list=2609.00065) を取得し、そのレコードから
著者リスト、年、バージョンを取得してください。レコードにジャーナル参照
または出版社 DOI が記載されている場合は、代わりに公開版を引用してください。