Pengantar transpilasi
Transpilasi adalah proses penulisan ulang sirkuit masukan agar sesuai dengan topologi perangkat kuantum tertentu, serta mengoptimalkan instruksi sirkuit untuk eksekusi pada komputer kuantum yang bising. Dokumentasi ini mencakup alat dan alur kerja untuk transpilasi lokal yang tersedia bagi semua pengguna Qiskit, serta layanan berbasis cloud Qiskit Transpiler Service yang tersedia untuk pengguna Premium Plan, Flex Plan, dan On-Prem (via IBM Quantum Platform API) Plan. Kalau kamu menggunakan primitives dan hanya tertarik pada opsi transpilasi default yang disediakan oleh layanan Qiskit Runtime, baca topik Configure runtime compilation for Qiskit Runtime.
Proses transpilasi mengambil sebuah Circuit yang berisi instruksimu:
Transpilasi kemudian mengubahnya sehingga hanya instruksi yang tersedia pada Backend yang dipilih yang digunakan, dan mengoptimalkan instruksi tersebut untuk meminimalkan efek noise:
Sebagai komponen utama dari Qiskit SDK, Transpiler dirancang untuk modularitas dan ekstensibilitas. Kegunaan utamanya adalah untuk menulis transformasi sirkuit baru (yang dikenal sebagai pass Transpiler), dan menggabungkannya dengan pass-pass lain yang sudah ada, sehingga sangat mengurangi kedalaman dan kompleksitas sirkuit kuantum. Pass mana yang digabungkan dan dalam urutan apa memiliki efek besar pada hasil akhir. Pipeline ini ditentukan oleh objek PassManager dan StagedPassManager. StagedPassManager mengatur eksekusi satu atau lebih PassManager dan menentukan urutan eksekusinya, sementara objek PassManager hanyalah kumpulan satu atau lebih pass. Bayangkan StagedPassManager sebagai konduktor dalam orkestra, PassManager sebagai seksi instrumen yang berbeda, dan objek Pass sebagai musisi individual. Dengan cara ini, kamu bisa menyusun sirkuit kuantum yang efisien dari sisi hardware yang memungkinkan kamu menjalankan pekerjaan skala utilitas sambil menjaga noise tetap terkendali.
Temukan informasi lebih lanjut tentang tahapan pass manager di topik Transpiler stages.
Instruction set architecture​
Selain mengurangi kedalaman dan kompleksitas sirkuit kuantum, Transpiler dirancang untuk mengubah instruksi yang terkandung dalam QuantumCircuit tertentu agar mematuhi Instruction Set Architecture (ISA) dari Backend tertentu. Sirkuit yang mematuhi ISA hanya terdiri dari instruksi yang didukung oleh Target Backend, seperti basis gates yang tersedia di hardware, pengukuran, reset, dan operasi control flow, serta mematuhi batasan yang ditentukan oleh konektivitas hardware, yaitu CouplingMap target. Saat mengirimkan job ke Backend IBM Quantum®, sirkuit harus mengikuti ISA Backend tersebut.
Tahapan Transpiler​
Pipeline Transpiler bawaan Qiskit terdiri dari enam tahap fundamental:
init- Pass ini menjalankan pass awal apa pun yang diperlukan sebelum sirkuit dapat di-embed. Ini biasanya melibatkan unrolling instruksi kustom dan mengonversi sirkuit ke semua gerbang single- dan two-Qubit. Secara default, ini memvalidasi instruksi sirkuit dan menerjemahkan gerbang multi-Qubit menjadi gerbang single- dan two-Qubit.layout- Pass ini menerapkan layout, memetakan Qubit virtual dalam sirkuitmu ke Qubit fisik QPU.routing- Pass ini berjalan setelah layout diterapkan dan akan menyisipkan gerbang (yaitu, SWAP) di sirkuit asli agar kompatibel dengan konektivitas QPU (coupling map).translation- Pass ini menerjemahkan gerbang dalam sirkuit ke set instruksi basis QPU.optimization- Pass ini menjalankan loop optimasi untuk menemukan dekomposisi yang lebih efisien dari sirkuit kuantum sampai suatu kondisi terpenuhi (seperti kedalaman tetap).scheduling- Tahap ini untuk pass penjadwalan yang sadar hardware. Jika pengguna menentukan metode penjadwalan, tahap ini memperhitungkan semua waktu idle dalam sirkuit.
Jika kamu menyesuaikan alur kerja transpilasi, gunakan tahap-tahap ini sebagai panduan selama pengembangan.
Transpilasi dengan pass manager​
Cara yang disarankan untuk melakukan transpilasi pada sebuah Circuit adalah dengan membuat staged pass manager lalu menjalankan metode run-nya dengan sirkuitmu sebagai input. Kamu bisa menggunakan fungsi generate_preset_pass_manager untuk menghasilkan staged pass manager dengan default yang wajar.
Pengguna yang lebih mahir bisa mengkustomisasi sekumpulan objek PassManager dan StagedPassManager serta menentukan urutan setiap tahap dijalankan. Ini bisa mengubah sirkuit output akhir secara drastis. Bahkan, pendekatan kustom untuk melakukan transpilasi pada algoritma kuantum sering menghasilkan penekanan error yang lebih efisien dibanding pendekatan default. Pendekatan kustom melibatkan penulisan ulang sirkuit kuantum agar sesuai dengan batasan hardware dan menekan efek noise. Alur logika untuk toolchain ini dapat dikustomisasi dan tidak harus linear. Proses transpilasi bisa menyiapkan loop iteratif, cabang kondisional, dan perilaku kompleks lainnya. Titik awal yang bagus saat mengembangkan sekumpulan pass kustom adalah memeriksa urutan transformasi default.
Untuk gambaran umum transpilasi menggunakan pass manager, lihat Transpile with pass managers.
Transpilasi default​
Untuk cara yang lebih sederhana namun kurang dapat dikustomisasi dalam menggunakan Transpiler secara "langsung pakai", gunakan fungsi qiskit.compiler.transpile. Ini menghasilkan dan menjalankan salah satu objek preset StagedPassManager berdasarkan, antara lain, flag optimization_level yang bisa diatur ke 0, 1, 2, atau 3. Level yang lebih tinggi menghasilkan sirkuit yang lebih optimal dengan biaya waktu transpilasi yang lebih lama.
Langkah selanjutnya​
- Untuk mempelajari cara menggunakan fungsi
generate_preset_passmanager, mulailah dengan topik Transpilation default settings and configuration options. - Lanjutkan belajar tentang transpilasi dengan topik Transpiler stages.
- Coba panduan Compare transpiler settings.
- Coba contoh end-to-end yang menggunakan sirkuit yang sudah ditranspilasi dalam tutorial Ground-state energy estimation of the Heisenberg chain with VQE.
- Lihat dokumentasi API Transpile.
- Pelajari cara melakukan transpilasi pada sirkuit.