Japanese
言語
English
Japanese
Spanish

Error抑制の設定

エラー抑制技術は、コンパイルの時点で回路を最適化して変形させ、エラーを最小にする技術です。最も基本的なエラー処理技術です。

エラー抑制は通常、古典的な前処理のオーバーヘッドを全体のランタイムにもたらします。したがって、結果を完璧にすることと、妥当な時間でジョブが完了することのバランスをとることが重要です。

Primitive では、最適化レベル (optimization_level オプション) の設定や、高度なトランスパイル・オプションの選択により、エラー抑制テクニックを使用することができます。

最適化レベルの設定

optimization_level の設定は、回路に対してどの程度の最適化を行うかを指定します。レベルを上げると、より最適化された回路が生成されますが、その代償としてトランスパイルの時間が長くなります。

最適化レベル

Estimator & Sampler

0

最適化なし:通常、ハードウェアの特性評価に使用されます。

  • 基本の変換

  • レイアウト (指定されたとおり)

  • ルーティング (確率スワップ)

1

軽度の最適化

  • レイアウト (微小 → vf2 → ルーティングが必要な場合はSabreLayout)

  • ルーティング (SabreSWAP が必要な場合)

  • 1量子ビットゲートの最適化

  • エラーの抑制: 動的デカップリング

2

中程度の最適化

  • レイアウト/ルーティング: 最適化レベル1(微小ではない)+ヒューリスティックな更なる最適化

    最適化関数の深さと試行の探索

  • 可換ゲートのキャンセル

  • エラーの抑制: 動的デカップリング

3 (デフォルト)

高度な最適化

  • 最適化レベル2+より強力な労力と試行でレイアウト/ルーティングをさらにヒューリスティックに最適化

  • 2量子ビットのKAK最適化

  • エラーの抑制: 動的デカップリング

例: 最適化レベルを使用した Estimator の構成

from qiskit_ibm_runtime import QiskitRuntimeService, Session, Estimator, Options
from qiskit.circuit.library import RealAmplitudes
from qiskit.quantum_info import SparsePauliOp

service = QiskitRuntimeService()
options = Options(optimization_level=2)

psi = RealAmplitudes(num_qubits=2, reps=2)
H = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)])
theta = [0, 1, 1, 2, 3, 5]

with Session(service=service, backend="ibmq_qasm_simulator") as session:
    estimator = Estimator(session=session, options=options)
    job = estimator.run(circuits=[psi], observables=[H], parameter_values=[theta])
    psi1_H1 = job.result()
    # Close the session only if all jobs are finished, and you don't need to run more in the session
    session.close()

注釈

最適化レベルが指定されていない場合は、サービスは optimization_level = 3 を使用します。

例: 最適化レベルを使用した Sampler の構成

from qiskit_ibm_runtime import QiskitRuntimeService, Session, Sampler, Options

service = QiskitRuntimeService()
options = Options(optimization_level=3)

with Session(service=service, backend="ibmq_qasm_simulator") as session:
    sampler = Sampler(session=session, options=options)

高度なトランスパイル・オプション

また、トランスパイル戦略をさらに構成するために、さまざまな高度なオプションを調整することができます。これらの方法は、最適化レベルと並行して使用することができます。 これにより、関心のあるオプションを変更し、残りを最適化レベルに管理させることができます。

トランスパイル・オプションのほとんどは、 qiskit.compiler.transpile から継承されます。

オプション

説明

options.transpilation.initial_layout(Union[dict, List, None])

物理量子ビットの上の仮想量子ビットの初期位置。

options.transpilation.layout_method (Optional[str])

レイアウト選択パスの名前。trivial, dense, noise_adaptive, ``sabre``のいずれか。

options.transpilation.routing_method (Optional[str])

ルーティングパスの名前: basic, lookahead, stochastic, sabre, none.

options.transpilation.skip_transpilation (bool)

このオプションは Qiskit Runtime primitive に固有です。完全にトランスパイルをスキップできます。 この方法を使用する場合は、回路が実行しているバックエンドの基底ゲートを使用して書かれていることを確認してください。

options.transpilation.approximation_degree (Optional[float])

回路近似に使用されるヒューリスティック・ダイアル (1.0=近似なし、0.0=最大近似)。デフォルトはすべての最適化レベルの近似なしです。