Transpile Circuit dari jauh dengan Perkhidmatan Transpiler Qiskit
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-transpiler
Mulai 18 Julai 2025, perkhidmatan ini sedang berhijrah untuk menyokong IBM Quantum® Platform baharu dan tidak tersedia. Untuk laluan AI, anda boleh menggunakan mod tempatan.
Perkhidmatan ini adalah keluaran beta, tertakluk kepada perubahan. Jika anda ada maklum balas atau ingin menghubungi pasukan pembangun, sila gunakan saluran Qiskit Slack Workspace ini.
Perkhidmatan Transpiler Qiskit menyediakan keupayaan transpilasi di awan. Selain keupayaan Transpiler Qiskit tempatan, tugas transpilasi anda boleh mendapat manfaat daripada sumber awan IBM Quantum dan laluan Transpiler berkuasa AI.
Perkhidmatan Transpiler Qiskit menawarkan pustaka Python untuk mengintegrasikan perkhidmatan dan keupayaannya ke dalam corak dan aliran kerja Qiskit semasa anda dengan lancar. Perkhidmatan ini hanya tersedia untuk pengguna IBM Quantum Premium Plan, Flex Plan, dan On-Prem (melalui API IBM Quantum Platform) Plan.
Pasang pakej qiskit-ibm-transpiler​
Untuk menggunakan Perkhidmatan Transpiler Qiskit, pasang pakej qiskit-ibm-transpiler:
pip install qiskit-ibm-transpiler
Pakej ini mengesahkan secara automatik menggunakan kelayakan IBM Quantum Platform anda selaras dengan cara Qiskit Runtime menguruskannya:
- Pemboleh ubah persekitaran:
QISKIT_IBM_TOKEN - Fail konfigurasi
~/.qiskit/qiskit-ibm.json(di bawah bahagiandefault-ibm-quantum).
Nota: Pakej ini memerlukan Qiskit SDK v1.X.
Pilihan transpile qiskit-ibm-transpiler​
backend_name(pilihan, str) - Nama Backend seperti yang dijangkakan oleh QiskitRuntimeService (contohnya,ibm_torino). Jika ini ditetapkan, kaedah transpile menggunakan tataletak dari Backend yang ditentukan untuk operasi transpilasi. Jika mana-mana pilihan lain yang mempengaruhi tetapan ini ditetapkan, seperticoupling_map, tetapanbackend_nameakan ditindih.coupling_map(pilihan, List[List[int]]) - Senarai peta gandingan yang sah (contohnya, [[0,1],[1,2]]). Jika ini ditetapkan, kaedah transpile menggunakan peta gandingan ini untuk operasi transpilasi. Jika ditakrifkan, ia menindih sebarang nilai yang ditentukan untuktarget.optimization_level(int) - Tahap pengoptimuman berpotensi yang perlu digunakan semasa proses transpilasi. Nilai yang sah ialah [1,2,3], di mana 1 adalah pengoptimuman paling sedikit (dan paling pantas), dan 3 adalah pengoptimuman paling banyak (dan paling memakan masa).ai("true", "false", "auto") - Sama ada menggunakan keupayaan berkuasa AI semasa transpilasi. Keupayaan berkuasa AI yang tersedia boleh untuk laluan transpilasiAIRoutingatau kaedah sintesis berkuasa AI lain. Jika nilai ini ialah"true", perkhidmatan menggunakan laluan transpilasi berkuasa AI yang berbeza bergantung padaoptimization_levelyang diminta. Jika"false", ia menggunakan ciri transpilasi Qiskit terkini tanpa AI. Akhirnya, jika"auto", perkhidmatan memutuskan sama ada menggunakan laluan heuristik Qiskit standard atau laluan berkuasa AI berdasarkan Circuit anda.qiskit_transpile_options(dict) - Objek kamus Python yang boleh menyertakan sebarang pilihan lain yang sah dalam kaedahtranspile()Qiskit. Jika inputqiskit_transpile_optionsmenyertakanoptimization_level, ia dibuang demioptimization_levelyang ditentukan sebagai input parameter. Jikaqiskit_transpile_optionsmenyertakan sebarang pilihan yang tidak diiktiraf oleh kaedahtranspile()Qiskit, pustaka akan mengeluarkan ralat.
Untuk maklumat lanjut tentang kaedah qiskit-ibm-transpiler yang tersedia, lihat rujukan API qiskit-ibm-transpiler. Untuk mengetahui lebih lanjut tentang API perkhidmatan, lihat dokumentasi REST API Perkhidmatan Transpiler Qiskit.
Contoh​
Contoh-contoh berikut menunjukkan cara mentranspile Circuit menggunakan Perkhidmatan Transpiler Qiskit dengan parameter yang berbeza.
- Cipta Circuit dan panggil Perkhidmatan Transpiler Qiskit untuk mentranspile Circuit dengan
ibm_torinosebagaibackend_name, 3 sebagaioptimization_level, dan tanpa menggunakan AI semasa transpilasi.
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)
Nota: anda hanya boleh menggunakan peranti backend_name yang mempunyai akses dengan akaun IBM Quantum anda. Selain backend_name, TranspilerService juga membenarkan coupling_map sebagai parameter.
- Hasilkan Circuit yang serupa dan transpilekan, meminta keupayaan transpilasi AI dengan menetapkan bendera
aikepadaTrue:
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)
- Hasilkan Circuit yang serupa dan transpilekan sambil membiarkan perkhidmatan memutuskan sama ada menggunakan laluan transpilasi berkuasa 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)
Had Perkhidmatan Transpiler Qiskit​
Berikut adalah had yang paling relevan bagi perkhidmatan ini:
- Bilangan maksimum Gate dua Qubit setiap Circuit dalam kerja transpilasi dalam mana-mana mod
aiialah 1 juta. - Masa maksimum yang dibenarkan untuk menjalankan proses transpilasi ialah 30 minit setiap kerja.
- Anda mesti mendapatkan semula keputusan transpilasi dari perkhidmatan dalam masa 20 minit selepas proses transpilasi tamat. Selepas 20 minit, keputusan kerja dibuang.
- Masa maksimum satu set Circuit boleh berada dalam giliran dalaman semasa menunggu untuk ditranspile ialah 120 minit. Selepas tempoh itu, jika kerja belum ditranspile, ia dibuang.
- Bilangan maksimum Qubit belum ditentukan. Perkhidmatan telah diuji pada lebih 900 Qubit.
Petikan​
Jika anda menggunakan mana-mana ciri berkuasa AI dari Perkhidmatan Transpiler Qiskit dalam penyelidikan anda, gunakan petikan yang disyorkan berikut:
@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},
}
Langkah seterusnya​
- Pelajari cara mencipta laluan Transpiler AI.
- Pelajari cara mentranspile Circuit sebagai sebahagian dari aliran kerja corak Qiskit menggunakan Qiskit Runtime.
- Semak dokumentasi klien Python Perkhidmatan Transpiler Qiskit.