メインコンテンツへスキップ

Qiskit Transpiler Serviceを使ってリモートで回路をトランスパイルする

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-transpiler
Transpiler Service migration

2025年7月18日以降、このサービスは新しいIBM Quantum® Platformをサポートするための移行中であり、現在は利用できません。AIパスについては、ローカルモードをご使用ください。

このサービスはベータリリースであり、変更される可能性があります。 フィードバックや開発チームへのお問い合わせは、Qiskit Slack Workspace チャンネルをご利用ください。

Qiskit Transpiler Serviceは、クラウド上でトランスパイル機能を提供します。ローカルのQiskitトランスパイラーの機能に加えて、IBM QuantumクラウドリソースおよびAIを活用したトランスパイラーパスを使用することができます。

Qiskit Transpiler Serviceは、このサービスとその機能を既存のQiskitパターンおよびワークフローにシームレスに統合するためのPythonライブラリを提供しています。このサービスは、IBM Quantum Premium Plan、Flex Plan、およびOn-Prem(IBM Quantum Platform API経由)Planのユーザーのみご利用いただけます。

qiskit-ibm-transpilerパッケージのインストール

Qiskit Transpiler Serviceを使用するには、qiskit-ibm-transpiler パッケージをインストールしてください。

pip install qiskit-ibm-transpiler

このパッケージは、IBM Quantum Platformの認証情報を使用して自動的に認証します。認証方法は、Qiskit Runtimeの管理方法に準拠しています。

  • 環境変数: QISKIT_IBM_TOKEN
  • 設定ファイル ~/.qiskit/qiskit-ibm.jsondefault-ibm-quantum セクション配下)

注意: このパッケージはQiskit SDK v1.Xが必要です。

qiskit-ibm-transpilerのトランスパイルオプション

  • backend_name(オプション、str)- QiskitRuntimeServiceで指定する形式のバックエンド名(例: ibm_torino)。これを設定すると、トランスパイルメソッドは指定されたバックエンドのレイアウトをトランスパイル処理に使用します。coupling_map など、この設定に影響を与える他のオプションが設定された場合、backend_name の設定は上書きされます。
  • coupling_map(オプション、List[List[int]])- 有効なカップリングマップのリスト(例: [[0,1],[1,2]])。これを設定すると、トランスパイルメソッドはこのカップリングマップをトランスパイル処理に使用します。定義された場合、target に指定された値を上書きします。
  • optimization_level(int)- トランスパイル処理中に適用される最適化レベルです。有効な値は [1,2,3] で、1が最も低い最適化(最速)、3が最も高い最適化(最も時間がかかります)です。
  • ai("true"、"false"、"auto")- トランスパイル中にAIを活用した機能を使用するかどうかを指定します。利用可能なAI機能には、AIRouting トランスパイルパスやその他のAIを活用した合成メソッドが含まれます。"true" の場合、サービスは指定された optimization_level に応じてさまざまなAI対応トランスパイルパスを適用します。"false" の場合は、AIなしで最新のQiskitトランスパイル機能を使用します。"auto" の場合は、回路に基づいて標準のQiskitヒューリスティックパスまたはAI対応パスを適用するかどうかをサービスが判断します。
  • qiskit_transpile_options(dict)- Qiskitの transpile() メソッドで有効なその他のオプションを含むことができるPython辞書オブジェクトです。qiskit_transpile_options の入力に optimization_level が含まれている場合、パラメーター入力として指定された optimization_level が優先されます。qiskit_transpile_options にQiskitの transpile() メソッドで認識されないオプションが含まれている場合、ライブラリはエラーを発生させます。

利用可能な qiskit-ibm-transpiler メソッドの詳細については、qiskit-ibm-transpiler APIリファレンスをご覧ください。サービスAPIの詳細については、Qiskit Transpiler Service REST APIドキュメントをご覧ください。

使用例

以下の例では、さまざまなパラメーターを使用してQiskit Transpiler Serviceで回路をトランスパイルする方法を示します。

  1. 回路を作成し、backend_nameibm_torinooptimization_level に 3 を指定し、トランスパイル中にAIを使用せずにQiskit Transpiler Serviceを呼び出します。
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService

circuit = efficient_su2(101, entanglement="circular", reps=1)

cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="false",
optimization_level=3,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)

注意: backend_name で指定できるのは、お使いのIBM Quantumアカウントでアクセスできるデバイスのみです。backend_name の他に、TranspilerService では coupling_map もパラメーターとして使用できます。

  1. 同様の回路を生成し、ai フラグを True に設定してAIトランスパイル機能を要求した上でトランスパイルします。
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService

circuit = efficient_su2(101, entanglement="circular", reps=1)

cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="true",
optimization_level=1,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)
  1. 同様の回路を生成し、AIを活用したトランスパイルパスを使用するかどうかをサービスに判断させながらトランスパイルします。
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService

circuit = efficient_su2(101, entanglement="circular", reps=1)

cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="auto",
optimization_level=1,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)

Qiskit Transpiler Serviceの制限事項

以下は、このサービスの主要な制限事項です。

  • いずれかの ai モードでのトランスパイルジョブにおける、回路ごとの2量子ビットゲートの最大数は100万件です。
  • トランスパイル処理の実行が許可される最大時間は、ジョブごとに30分です。
  • トランスパイル処理が終了してから20分以内にサービスからトランスパイル結果を取得する必要があります。20分後、ジョブの結果は破棄されます。
  • 一連の回路がトランスパイルを待つ内部キューに留まることができる最大時間は120分です。その時間が経過しても、ジョブがトランスパイルされていない場合は破棄されます。
  • 量子ビットの最大数は未定です。このサービスは900量子ビット以上でテストされています。

引用

Qiskit Transpiler Serviceのいずれかのai機能を研究に使用する場合は、以下の引用形式を使用することを推奨します。

@misc{2405.13196,
Author = {David Kremer and Victor Villar and Hanhee Paik and Ivan Duran and Ismael Faro and Juan Cruz-Benito},
Title = {Practical and efficient quantum circuit synthesis and transpiling with Reinforcement Learning},
Year = {2024},
Eprint = {arXiv:2405.13196},
}

次のステップ

Recommendations