SABREによるトランスパイル最適化
使用時間の目安: Heron r2プロセッサで1分未満(注意: これはあくまで目安です。実際の実行時間は異なる場合があります。)
背景
トランスパイルはQiskitにおける重要なステップであり、量子回路を特定の量子ハードウェアと互換性のある形式に変換します。これには2つの主要な段階が含まれます: 量 子ビットレイアウト(論理量子ビットをデバイス上の物理量子ビットにマッピングすること)とゲートルーティング(必要に応じてSWAPゲートを挿入し、マルチ量子ビットゲートがデバイスの接続性を満たすようにすること)です。
SABRE(SWAP-Based Bidirectional heuristic search algorithm)は、レイアウトとルーティングの両方に対応する強力な最適化ツールです。大規模回路(100量子ビット以上)や、IBM® Heronのような複雑なカップリングマップを持つデバイスに対して特に効果的であり、量子ビットマッピングの指数関数的な増大に対して効率的な解決策を提供します。
SABREを使用する理由
SABREはSWAPゲートの数を最小化し、回路の深さを削減することで、実際のハードウェア上での回路性能を向上させます。そのヒューリスティックベースのアプローチは、高度なハードウェアや大規模で複雑な回路に最適です。LightSABREアルゴリズムで導入された最近の改良により、SABREの性能がさらに最適化され、より高速な実行時間とより少ないSWAPゲート数が実現されています。これらの改善により、大規模回路に対する効果がさらに高まっています。
学習内容
このチュートリアルは2つのパートに分かれています:
- 大規模回路の高度な最適化のために、QiskitパターンでSABREを使用する方法を学びます。
- qiskit_serverlessを活用して、スケーラブルで効率的なトランスパイルにおけるSABREの潜在能力を最大限に引き出します。
具体的には以下の内容を扱います:
optimization_level=3などのデフォルトのトランスパイル設定を超えて、100量子ビット以上の回路に対してSABREを最適化します。- 実行時間を改善しゲート数を削減するLightSABREの改良点を探ります。
- SABREの主要パラメータ(
swap_trials、layout_trials、max_iterations、heuristic)をカスタマイズして、回路品質とトランスパイル実行時間のバランスを取ります。
前提条件
このチュートリアルを始める前に、以下がインストールされていることを確認してください:
- Qiskit SDK v1.0以降、visualizationサポート付き
- Qiskit Runtime v0.28以降(
pip install qiskit-ibm-runtime) - Serverless(
pip install qiskit-ibm-catalog qiskit_serverless)
セットアップ
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-catalog qiskit-ibm-runtime qiskit-serverless
from qiskit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp
from qiskit_ibm_catalog import QiskitServerless, QiskitFunction
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorOptions
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.transpiler import CouplingMap
from qiskit.transpiler.passes import SabreLayout, SabreSwap
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
import matplotlib.pyplot as plt
import numpy as np
import time