Lewati ke konten utama

Pass Transpiler AI

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

Pass Transpiler berbasis AI adalah pass yang berfungsi sebagai pengganti langsung dari pass Qiskit "tradisional" untuk beberapa tugas transpilasi. Pass ini sering menghasilkan hasil yang lebih baik dibandingkan algoritma heuristik yang ada (seperti depth dan jumlah CNOT yang lebih rendah), tetapi juga jauh lebih cepat daripada algoritma optimasi seperti solver Boolean satisfiability. Pass Transpiler AI dapat dijalankan di lingkungan lokal kamu atau di cloud menggunakan Qiskit Transpiler Service jika kamu termasuk dalam IBM Quantum® Premium Plan, Flex Plan, atau On-Prem (via IBM Quantum Platform API) Plan.

catatan

Pass Transpiler berbasis AI masih dalam status rilis beta dan dapat berubah sewaktu-waktu. Jika kamu punya masukan atau ingin menghubungi tim developer, silakan gunakan channel Qiskit Slack Workspace ini.

Pass yang tersedia saat ini adalah sebagai berikut:

Pass Routing

  • AIRouting: Pemilihan layout dan routing Circuit

Pass sintesis Circuit

  • AICliffordSynthesis: Sintesis Circuit Clifford
  • AILinearFunctionSynthesis: Sintesis Circuit fungsi linear
  • AIPermutationSynthesis: Sintesis Circuit permutasi
  • AIPauliNetworkSynthesis: Sintesis Circuit Pauli Network

Untuk menggunakan pass Transpiler AI, pertama instal paket qiskit-ibm-transpiler. Kunjungi dokumentasi API qiskit-ibm-transpiler untuk mendapatkan informasi lebih lanjut tentang berbagai opsi yang tersedia.

Jalankan pass Transpiler AI secara lokal atau di cloud​

Jika kamu ingin menggunakan pass Transpiler berbasis AI di lingkungan lokal secara gratis, instal qiskit-ibm-transpiler dengan beberapa dependensi tambahan sebagai berikut:

pip install qiskit-ibm-transpiler[ai-local-mode]

Tanpa dependensi tambahan ini, pass Transpiler berbasis AI akan berjalan di cloud melalui Qiskit Transpiler Service (hanya tersedia untuk pengguna IBM Quantum Premium Plan, Flex Plan, atau On-Prem (via IBM Quantum Platform API) Plan). Setelah menginstal dependensi tambahan, mode default untuk menjalankan pass Transpiler berbasis AI adalah menggunakan mesin lokal kamu.

Pass routing AI​

Pass AIRouting berfungsi sebagai stage layout sekaligus stage routing. Pass ini dapat digunakan di dalam PassManager sebagai berikut:

from qiskit.transpiler import PassManager
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.ai.routing import AIRouting
from qiskit_ibm_runtime import QiskitRuntimeService

backend = QiskitRuntimeService().backend("ibm_torino")
ai_passmanager = PassManager(
[
AIRouting(
backend=backend,
optimization_level=2,
layout_mode="optimize",
local_mode=True,
)
]
)

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

transpiled_circuit = ai_passmanager.run(circuit)

Di sini, backend menentukan coupling map mana yang akan digunakan untuk routing, optimization_level (1, 2, atau 3) menentukan seberapa besar usaha komputasi yang digunakan dalam prosesnya (nilai lebih tinggi biasanya menghasilkan hasil yang lebih baik tetapi membutuhkan waktu lebih lama), dan layout_mode menentukan cara menangani pemilihan layout. layout_mode mencakup opsi berikut:

  • keep: Mode ini menghormati layout yang ditetapkan oleh pass Transpiler sebelumnya (atau menggunakan trivial layout jika belum diatur). Biasanya hanya digunakan ketika Circuit harus dijalankan pada Qubit tertentu di perangkat. Mode ini sering menghasilkan hasil yang lebih buruk karena ruang optimasinya lebih terbatas.
  • improve: Mode ini menggunakan layout yang ditetapkan oleh pass Transpiler sebelumnya sebagai titik awal. Berguna ketika kamu memiliki tebakan awal yang baik untuk layout; misalnya, untuk Circuit yang dibangun dengan cara yang kurang lebih mengikuti coupling map perangkat. Mode ini juga berguna jika kamu ingin mencoba pass layout tertentu lainnya dikombinasikan dengan pass AIRouting.
  • optimize: Ini adalah mode default. Paling cocok untuk Circuit umum di mana kamu mungkin tidak memiliki tebakan layout yang baik. Mode ini mengabaikan pemilihan layout sebelumnya.
  • local_mode: Flag ini menentukan di mana pass AIRouting dijalankan. Jika False, AIRouting berjalan secara remote melalui Qiskit Transpiler Service. Jika True, paket akan mencoba menjalankan pass di lingkungan lokal kamu dengan fallback ke mode cloud jika dependensi yang diperlukan tidak ditemukan.

Pass sintesis Circuit AI​

Pass sintesis Circuit AI memungkinkan kamu untuk mengoptimalkan potongan-potongan dari berbagai jenis Circuit (Clifford, Linear Function, Permutation, Pauli Network) dengan cara men-sintesis ulang. Cara umum untuk menggunakan pass sintesis adalah sebagai berikut:

from qiskit.transpiler import PassManager

from qiskit_ibm_transpiler.ai.routing import AIRouting
from qiskit_ibm_transpiler.ai.synthesis import AILinearFunctionSynthesis
from qiskit_ibm_transpiler.ai.collection import CollectLinearFunctions
from qiskit_ibm_transpiler.ai.synthesis import AIPauliNetworkSynthesis
from qiskit_ibm_transpiler.ai.collection import CollectPauliNetworks
from qiskit.circuit.library import efficient_su2

ibm_torino = QiskitRuntimeService().backend("ibm_torino")
ai_passmanager = PassManager(
[
AIRouting(
backend=ibm_torino,
optimization_level=3,
layout_mode="optimize",
local_mode=True,
), # Route circuit
CollectLinearFunctions(), # Collect Linear Function blocks
AILinearFunctionSynthesis(
backend=ibm_torino, local_mode=True
), # Re-synthesize Linear Function blocks
CollectPauliNetworks(), # Collect Pauli Networks blocks
AIPauliNetworkSynthesis(
backend=ibm_torino, local_mode=True
), # Re-synthesize Pauli Network blocks.
]
)

circuit = efficient_su2(10, entanglement="full", reps=1)

transpiled_circuit = ai_passmanager.run(circuit)

Proses sintesis menghormati coupling map perangkat: sintesis dapat dijalankan dengan aman setelah pass routing lainnya tanpa mengganggu Circuit, sehingga Circuit keseluruhan tetap mengikuti batasan perangkat. Secara default, sintesis hanya akan mengganti sub-Circuit asli jika sub-Circuit hasil sintesis lebih baik dari yang asli (saat ini hanya memeriksa jumlah CNOT), tetapi ini dapat dipaksa untuk selalu mengganti Circuit dengan menetapkan replace_only_if_better=False.

Pass sintesis berikut tersedia dari qiskit_ibm_transpiler.ai.synthesis:

  • AICliffordSynthesis: Sintesis untuk Circuit Clifford (blok Gate H, S, dan CX). Saat ini mendukung hingga sembilan blok Qubit.
  • AILinearFunctionSynthesis: Sintesis untuk Circuit Linear Function (blok Gate CX dan SWAP). Saat ini mendukung hingga sembilan blok Qubit.
  • AIPermutationSynthesis: Sintesis untuk Circuit Permutation (blok Gate SWAP). Saat ini tersedia untuk blok 65, 33, dan 27 Qubit.
  • AIPauliNetworkSynthesis: Sintesis untuk Circuit Pauli Network (blok Gate H, S, SX, CX, RX, RY dan RZ). Saat ini mendukung hingga enam blok Qubit.

Kami berencana untuk secara bertahap meningkatkan ukuran blok yang didukung.

Semua pass menggunakan thread pool untuk mengirim beberapa permintaan secara paralel. Secara default, jumlah maksimum thread adalah jumlah core ditambah empat (nilai default untuk objek Python ThreadPoolExecutor). Namun, kamu dapat menetapkan nilai sendiri dengan argumen max_threads saat instantiasi pass. Sebagai contoh, baris berikut meng-instantiasi pass AILinearFunctionSynthesis, yang memungkinkannya menggunakan maksimum 20 thread.

AILinearFunctionSynthesis(backend=ibm_torino, max_threads=20)  # Re-synthesize Linear Function blocks using 20 threads max

Kamu juga dapat menetapkan variabel lingkungan AI_TRANSPILER_MAX_THREADS ke jumlah maksimum thread yang diinginkan, dan semua pass sintesis yang di-instantiasi setelahnya akan menggunakan nilai tersebut.

Agar pass sintesis AI dapat men-sintesis sub-Circuit, sub-Circuit tersebut harus berada pada subgraf yang terhubung dari coupling map (salah satu cara untuk melakukan ini adalah dengan pass routing sebelum mengumpulkan blok, tetapi ini bukan satu-satunya cara). Pass sintesis akan secara otomatis memeriksa apakah subgraf tertentu didukung, dan jika tidak, akan memunculkan peringatan dan membiarkan sub-Circuit asli tidak berubah.

Pass koleksi kustom berikut untuk Clifford, Linear Function, dan Permutation yang dapat diimpor dari qiskit_ibm_transpiler.ai.collection juga melengkapi pass sintesis:

  • CollectCliffords: Mengumpulkan blok Clifford sebagai objek Instruction dan menyimpan sub-Circuit asli untuk dibandingkan setelah sintesis.
  • CollectLinearFunctions: Mengumpulkan blok SWAP dan CX sebagai objek LinearFunction dan menyimpan sub-Circuit asli untuk dibandingkan setelah sintesis.
  • CollectPermutations: Mengumpulkan blok Circuit SWAP sebagai Permutations.
  • CollectPauliNetworks: Mengumpulkan blok Pauli Network dan menyimpan sub-Circuit asli untuk dibandingkan setelah sintesis.

Pass koleksi kustom ini membatasi ukuran sub-Circuit yang dikumpulkan agar didukung oleh pass sintesis berbasis AI. Oleh karena itu, disarankan untuk menggunakannya setelah pass routing dan sebelum pass sintesis untuk optimasi keseluruhan yang lebih baik.

Transpilasi Circuit hibrida heuristik-AI​

qiskit-ibm-transpiler memungkinkan kamu untuk mengonfigurasi pass manager hibrida yang menggabungkan keunggulan pass heuristik Qiskit dan pass Transpiler berbasis AI. Fitur ini berperilaku serupa dengan metode generate_pass_manager Qiskit. Cara umum untuk menggunakan generate_ai_pass_manager adalah sebagai berikut:

from qiskit_ibm_transpiler import generate_ai_pass_manager
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_runtime import QiskitRuntimeService

backend = QiskitRuntimeService().backend("ibm_torino")
torino_coupling_map = backend.coupling_map

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

ai_transpiler_pass_manager = generate_ai_pass_manager(
coupling_map=torino_coupling_map,
ai_optimization_level=3,
optimization_level=3,
ai_layout_mode="optimize",
)

ai_su2_transpiled_circuit = ai_transpiler_pass_manager.run(su2_circuit)

Opsi berikut digunakan dalam contoh ini:

  • coupling_map - Menentukan coupling map mana yang akan digunakan untuk transpilasi.
  • ai_optimization_level - Menentukan level optimasi (1-3) yang akan digunakan untuk komponen AI dari PassManager.
  • optimization_level - Menentukan seberapa banyak optimasi yang dilakukan pada Circuit untuk komponen heuristik dari PassManager.
  • ai_layout_mode - Menentukan cara bagian routing AI dari PassManager menangani layout. Lihat bagian pass routing AI untuk meninjau opsi konfigurasi parameter ai_layout_mode ini.

Batasan​

Lihat dokumentasi Qiskit Transpiler Service untuk informasi lebih lanjut tentang batasan yang berlaku untuk pass Transpiler berbasis AI.

Sitasi​

Jika kamu menggunakan fitur berbasis AI dari Qiskit Transpiler Service dalam penelitianmu, gunakan sitasi yang direkomendasikan.

Source: IBM Quantum docs — updated 27 Apr 2026
English version on doQumentation — updated 7 Mei 2026
This translation based on the English version of 11 Mar 2026