Lewati ke konten utama

Lihat detail backend

Versi paket

Kode di halaman ini dikembangkan menggunakan requirement berikut. Kami menyarankan menggunakan versi ini atau yang lebih baru.

qiskit-ibm-runtime~=0.46.1

Halaman ini menjelaskan cara menemukan informasi tentang backend yang tersedia untukmu.

Buat daftar atau filter backend

Buat daftar backend yang tersedia untukmu

Kamu bisa pakai Qiskit atau IBM Quantum Platform untuk melihat daftar backend yang tersedia untukmu, atau untuk mencari backend tertentu.

Nama QPU

QPU yang dihosting di IBM Cloud® punya nama yang dimulai dengan ibm_*. Semua QPU diberi nama kota - misalnya, ibm_kingston. Nama ini tidak menunjukkan di mana QPU yang sebenarnya dihosting.

Gunakan metode QiskitRuntimeService.backends(), seperti yang ditunjukkan di blok kode berikutnya. Metode ini mengembalikan daftar instance IBMBackend.

Untuk menjalankan kode berikut, pastikan kamu sudah terautentikasi ke layanan. Lihat Siapkan akun IBM Cloud kamu untuk detail lebih lanjut.

Untuk mencari backend tertentu, gunakan metode QiskitRuntimeService.backend() (perhatikan bahwa ini tunggal: backend), yang menerima nama backend sebagai parameter input dan mengembalikan instance IBMBackend yang merepresentasikan backend tertentu tersebut:

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
# Initialize your account
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()

service.backends()
[<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>,
<IBMBackend('ibm_miami')>]
service.backend("ibm_fez")
<IBMBackend('ibm_fez')>
# Optionally pass in an instance, region, or both, to
# further filter the backends.
service = QiskitRuntimeService()

service.backends(simulator=False, operational=True, min_num_qubits=100)
[<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>,
<IBMBackend('ibm_miami')>]
catatan

Jika kamu login ke instance atau wilayah tertentu, atau jika kamu menginisialisasi layanan dengan instance atau wilayah tertentu menggunakan QiskitRuntimeService(), hanya backend yang tersedia untukmu di instance atau wilayah tersebut yang dikembalikan.

Filter backend

Kamu bisa memfilter backend yang tersedia berdasarkan konfigurasi atau status-nya. Untuk filter yang lebih umum, atur argumen filters ke fungsi yang menerima objek backend dan mengembalikan True jika memenuhi kriteriamu. Lihat dokumentasi API untuk detail lebih lanjut.

Kode berikut hanya mengembalikan backend yang sesuai dengan kriteria ini dan tersedia untukmu di instance yang sedang kamu pilih:

  • Merupakan perangkat kuantum nyata (simulator=False)
  • Sedang operasional (operational=True)
  • Memiliki setidaknya seratus qubit (min_num_qubits=100)

Metode serupa adalah QiskitRuntimeService.least_busy(), yang menerima filter yang sama dengan backends() tetapi mengembalikan backend yang cocok dengan filter dan memiliki jumlah pekerjaan tertunda paling sedikit dalam antrean:

service.least_busy(operational=True, min_num_qubits=100)
<IBMBackend('ibm_fez')>

Informasi backend statis

Beberapa informasi tentang backend tidak berubah secara rutin, seperti namanya, versi, jumlah qubit yang dimilikinya, jenis prosesornya (nama keluarga burung, yang menunjukkan topologi dan perkiraan jumlah qubit), dan jenis fitur yang didukungnya. Informasi ini tersedia sebagai atribut dari objek backend. Untuk daftar lengkap atribut, lihat dokumentasi API IBMBackend. Temukan informasi lebih lanjut tentang pemberian versi di bagian Versi QPU di bawah.

Wilayah backend (lokasi pusat data tempat data dan eksperimenmu akan dihosting dan diproses) terdaftar di kartu informasi detailnya di halaman Compute resources di IBM Quantum Platform.

backend = service.backend("ibm_fez")

print(
f"Name: {backend.name}\n"
f"Version: {backend.backend_version}\n"
f"No. of qubits: {backend.num_qubits}\n"
f"Processor type: {backend.processor_type}\n"
)
Name: ibm_fez
Version: 1.3.37
No. of qubits: 156
Processor type: {'family': 'Heron', 'revision': '2'}

Versi QPU

Setiap QPU memiliki nomor versi dalam format X.Y.Z (major.minor.revision). Circuit yang dikompilasi untuk nomor versi tertentu dijamin bisa berjalan di QPU tersebut. Jika nomor revision berubah, circuit akan tetap bisa berjalan. Jika nomor major atau minor berubah, circuit tidak dijamin bisa berjalan, meskipun mungkin saja bisa.

Nomor versi revision akan bertambah untuk perbaikan yang tidak merusak circuit yang sudah dikompilasi.

Contoh kode sebelumnya di bagian ini menunjukkan cara menemukan versi backend. Di IBM Quantum Platform, kamu bisa melihat versi pada kartu informasi detail QPU (klik nama QPU di tabel Compute resources untuk membuka kartunya).

Kondisi-kondisi di mana nomor versi atau revision dapat berubah terdaftar di tabel berikut.

Versi majorVersi minorVersi revision
Perubahan sampelSiklus pemanasan / pendinginanPembaruan perangkat lunak QPU
Perubahan besar pada elektronik kontrolMengganti sebagian elektronik, jika penggantian tersebut secara nyata mempengaruhi operasiKalibrasi manual untuk meningkatkan fidelitas
Memindahkan QPU ke lokasi baru, jika menghasilkan perubahan perilaku yang signifikanMenghapus Gate untuk jangka waktu tertentu karena masalah kalibrasi, dan koreksi tidak dapat dengan mudah dilakukan dalam perangkat lunakPerubahan kecil pada elektronik yang tidak mempengaruhi operasi
Mengubah arah Gate CNOT

Instruksi yang didukung

Setiap keluarga prosesor secara native mendukung set instruksi yang terbatas. Set ini mencakup Gate satu- dan dua-qubit, serta operasi non-unitary seperti measure dan reset. Setiap Gate dalam circuit harus diterjemahkan (oleh transpiler) ke elemen-elemen set instruksi yang didukung QPU sebelum bisa berjalan di QPU.

Kamu bisa melihat set instruksi yang didukung untuk QPU dengan Qiskit. Halaman Compute resources IBM Quantum Platform hanya menampilkan Gate unitary yang didukung (Gate basis) untuk QPU.

Tabel instruksi yang didukung

Kategori operasiNama
Gate satu-qubitRZ, SX, X, ID, delay
Gate dua-qubitCZ, ECR
Gate fraksionalRX (satu-qubit), RZZ (dua-qubit)
Instruksi non-unitarymeasure, reset, measure_*, delay
Control flowif_else (classical feedforward)
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.backend("ibm_kingston")

print(f"Backend: {backend.name}")
print(f" Processor type: {backend.processor_type}")
print(f" Supported instructions: {backend.supported_instructions}")
Backend: ibm_kingston
Processor type: {'family': 'Heron', 'revision': '2'}
Supported instructions: ['cz', 'id', 'delay', 'measure', 'measure_2', 'reset', 'rz', 'sx', 'x', 'if_else', 'store']

Informasi backend dinamis

Backend juga memiliki properti yang berubah setiap kali backend dikalibrasi, seperti lifetime qubit dan tingkat error operasi. Properti backend diperbarui setelah urutan kalibrasi selesai. Properti ini bisa digunakan saat mengoptimalkan circuit kuantum atau untuk membangun model noise bagi simulator klasik. Lihat panduan Pekerjaan kalibrasi untuk informasi lebih lanjut.

Di IBM Quantum Platform, kamu bisa mengunduh data kalibrasi sebagai file CSV. Klik QPU di halaman Compute resources untuk melihat kartu informasi detailnya, lalu klik ikon unduh di sudut kanan atas bagian Calibration data.

Ambil data historis

Kamu bisa mengambil data properti backend historis di Qiskit dengan kode berikut:

backend.properties(datetime=<datetime>)

Properti qubit

Lompat ke daftar properti qubit

backend.properties().qubit_property() mengembalikan informasi tentang atribut fisik qubit. Ini berisi kamus berbagai properti qubit, masing-masing dipasangkan dengan nilainya dan timestamp kalibrasi terakhir.

Contoh kode berikut menunjukkan cara membuat daftar semua properti, atau mengambil properti tertentu, dari qubit tertentu.

Lihat properti qubit

T1 (Waktu relaksasi)

Waktu T1T_1 mewakili rata-rata durasi qubit tetap berada dalam keadaan tereksitasinya 1|1\rangle sebelum meluruh ke keadaan dasarnya 0|0\rangle karena relaksasi energi. Parameter ini digunakan untuk mengkarakterisasi perilaku relaksasi energi qubit, dan dinyatakan dalam satuan detik (s).

Lihat dengan Qiskitbackend.properties().t1(<qubit>)
Lihat di IBM Quantum PlatformBagian Calibration data, menu dropdown qubit; temukan nilai median T1T_1 di bagian Details
T2 (Waktu dephasing)

Waktu T2T_2 menunjukkan skala waktu di mana qubit mempertahankan koherensi fase dari superposisi antara keadaan 0|0\rangle dan 1|1\rangle. Ini memperhitungkan relaksasi energi dan proses pure dephasing, memberikan wawasan tentang properti koherensi qubit. T2T_2 dilaporkan dari urutan Hahn echo.

Lihat dengan Qiskitbackend.properties().t2(<qubit>)
Lihat di IBM Quantum PlatformBagian Calibration data, menu dropdown qubit; temukan nilai median T2T_2 di bagian Details
# fundamental physical properties of qubit 1

backend = service.backend("ibm_fez")

backend.qubit_properties(1)
QubitProperties(t1=0.00018243651954462543, t2=0.00020405172321184844, frequency=None)
# Retrieve qubit properties
qubit_index = 126 # Replace with your qubit index
qubit_props = backend.properties().qubit_property(qubit_index)

# Access specific properties
t1 = qubit_props.get("T1", (None,))[0]
t2 = qubit_props.get("T2", (None,))[0]
readout_error = qubit_props.get("readout_error", (None,))[0]
prob_meas0_prep1 = qubit_props.get("prob_meas0_prep1", (None,))[0]
prob_meas1_prep0 = qubit_props.get("prob_meas1_prep0", (None,))[0]
readout_length = qubit_props.get("readout_length", (None,))[0]

print(f"Qubit {qubit_index} Properties:")
print(f" T1: {t1} seconds")
print(f" T2: {t2} seconds")
print(f" Readout Error: {readout_error}")
print(f" P(0 | 1): {prob_meas0_prep1}")
print(f" P(1 | 0): {prob_meas1_prep0}")
print(f" Readout Length: {readout_length} seconds")
Qubit 126 Properties:
T1: 0.0001248478211384773 seconds
T2: 7.96150033446492e-05 seconds
Readout Error: 0.0244140625
P(0 | 1): 0.029052734375
P(1 | 0): 0.019775390625
Readout Length: 1.56e-06 seconds

Properti instruksi

Lompat ke daftar properti instruksi

Atribut backend.target adalah objek qiskit.transpiler.Target: objek yang berisi semua informasi yang diperlukan untuk mentranspilasi circuit untuk backend tersebut. Ini mencakup error dan durasi instruksi. Misalnya, sel berikut mendapatkan properti untuk Gate cz yang bekerja antara qubit 1 dan 0.

Sel berikut menunjukkan properti untuk operasi pengukuran (termasuk error readout) pada qubit 0.

Lihat properti instruksi

prob-meas0-prep1

Parameter ini menunjukkan probabilitas mengukur qubit dalam keadaan 0 ketika dimaksudkan untuk dipersiapkan dalam keadaan 1|1\rangle, dilambangkan sebagai P(01)P(0 | 1). Ini mencerminkan error dalam persiapan keadaan dan pengukuran (SPAM), khususnya error pengukuran dalam qubit superkonduktor.

Lihat dengan Qiskitbackend.properties().qubit_property(<qubit>, 'prob_meas0_prep1')
Lihat di IBM Quantum PlatformBagian Calibration data, menu dropdown qubit
prob-meas1-prep0

Demikian pula, parameter ini mewakili probabilitas mengukur qubit dalam keadaan 1 ketika dimaksudkan untuk dipersiapkan dalam keadaan 0|0\rangle, dilambangkan sebagai P(10)P(1 | 0). Seperti prob_meas0_prep1, ini mencerminkan error SPAM, dengan error pengukuran sebagai kontributor utama dalam qubit superkonduktor.

Lihat dengan Qiskitbackend.properties().qubit_property(<qubit>, 'prob_meas0_prep0')
Lihat di IBM Quantum PlatformBagian Calibration data, menu dropdown qubit
Error 2Q (Heron dan Nighthawk: CZ, Eagle: ECR)

Error dua-qubit per edge dari batch pengukuran yang sama yang digunakan untuk menghitung error median 2Q. Error 2Q (terbaik) mengacu pada error dua-qubit terendah pada edge mana pun dari perangkat, juga dari batch pengukuran ini.

Lihat dengan Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2>]
Lihat di IBM Quantum PlatformBagian Calibration: arahkan kursor ke koneksi qubit di tampilan Map, atau temukan nilainya di tampilan Table di bawah kolom CZ error (Heron dan Nighthawk) atau ECR error (Eagle); temukan nilai untuk 2Q error (best) di bagian Details
Median error 2Q (Heron: CZ, Eagle: ECR)

Rata-rata fidelitas Gate dari operasi dua-qubit dari randomized benchmarking. Diukur secara "terisolasi": batch dengan pemisahan minimum dua qubit antar edge. Randomized benchmarking ini menggunakan lapisan bergantian dari Clifford satu-qubit dan Gate dua-qubit, sehingga nilai error 2Q akhir mencakup error lapisan Clifford satu-qubit.

Hitung dengan QiskitIkuti contoh di notebook GitHub Qiskit Community ini
Lihat di IBM Quantum PlatformBagian Details; temukan juga data per-edge di bagian Calibration data
Error 2Q (berlapis)

Rata-rata error per Gate berlapis (EPLG) dalam rantai 100 qubit. Rata-rata EPLG mengukur rata-rata error Gate dalam rantai berlapis NN qubit (NN=100 di sini). Ini diturunkan dari kuantitas serupa yang dikenal sebagai layer fidelity (LF) di mana EPLG100_{100} = 4/5(1-LF199^{\frac{1}{99}}) dan layer fidelity adalah process fidelity dari rantai berlapis NN qubit. Untuk detail, lihat makalah Benchmarking quantum processor performance at scale. Perlu dicatat bahwa dalam makalah tersebut EPLG didefinisikan untuk process error, tetapi untuk konsistensi dengan error Gate yang dilaporkan secara individual di sini, dikutip untuk rata-rata error Gate, sehingga ada faktor 4/5.

Di IBM Quantum Platform, kartu informasi detail untuk setiap QPU memiliki bagian bernama Two-qubit gate error (layered), yang menyediakan tampilan yang diperluas dari two-qubit gate error (layered) terendah yang diukur sebagai fungsi dari jumlah qubit dalam rantai. Nilai terakhir, pada panjang rantai 100, adalah nilai yang disajikan di bagian Details. Dalam praktiknya, enam rantai 100-qubit (dipilih sebelumnya berdasarkan performa optimal yang diharapkan) diukur, dan nilai yang dilaporkan untuk jumlah qubit N adalah error terendah yang ditemukan dalam subset rantai panjang N yang mencari di antara enam rantai 100-qubit.

Hitung dengan QiskitIkuti contoh di notebook GitHub Qiskit Community ini
Lihat di IBM Quantum PlatformBagian Details, dan tampilan yang diperluas di bagian Two-qubit gate error (layered)
Error RZZ (Heron)

Error dalam Gate RZZ yang dirata-ratakan pada sudut RZZ menggunakan varian randomized benchmarking untuk unitary arbitrer.

Lihat dengan QiskitPenting: Pastikan kamu sudah mengatur use_fractional_gates=True saat memuat backend, lalu kamu bisa menggunakan backend.target['rzz'][<qubit 1>, <qubit 2>]
Lihat di IBM Quantum PlatformBagian Calibration: Pilih RZZ di menu dropdown Connection dan arahkan kursor ke koneksi qubit di tampilan Map. Kamu juga bisa memilih RZZ error di menu dropdown Graph output di tampilan Graph, atau temukan nilainya di tampilan Table di bawah kolom RZZ error
Error ID / error √x (sx) / error Pauli-X / error RX

Error dalam Gate satu-qubit diskret berdurasi terbatas, diukur dari randomized benchmarking. Urutan randomized benchmarking mencakup Gate SX, ID, dan X, dan diasumsikan errornya sama. Gate ID adalah penundaan dengan durasi yang sama dengan durasi Gate √X dan X. Gate RX juga memiliki durasi yang sama dengan Gate √X dan X dengan amplitudo variabel, sehingga dilaporkan memiliki error yang sama dengan Gate-gate ini.

Lihat dengan Qiskitbackend.target['<instruction>'][<qubit 1>, ]
Lihat di IBM Quantum PlatformBagian Calibration: menu dropdown qubit
Error SX (median)

Rata-rata fidelitas Gate dari Gate √X (SX) dari randomized benchmarking, diukur secara bersamaan pada semua qubit. Urutan randomized benchmarking mencakup Gate SX, ID, dan X, dan diasumsikan errornya sama.

Lihat di IBM Quantum PlatformBagian Details
Error rotasi sumbu-Z (RZ)

Error dalam Gate RZ virtual. Dilaporkan sebagai 0 semua karena dilakukan dalam perangkat lunak.

Lihat dengan Qiskit backend.target['<instruction>'][<qubit 1>, ]
Lihat di IBM Quantum PlatformBagian Calibration: menu dropdown Connection
Error readout

Error readout mengkuantifikasi probabilitas rata-rata mengukur keadaan qubit secara salah. Ini umumnya dihitung sebagai rata-rata dari prob_meas0_prep1 dan prob_meas1_prep0, memberikan satu metrik untuk fidelitas pengukuran.

Lihat dengan Qiskitbackend.properties().readout_error(<qubit>)
Lihat di IBM Quantum PlatformBagian Calibration data, menu dropdown qubit
Error readout (median)

Fidelitas operasi readout. Error readout diukur dengan mempersiapkan qubit dalam keadaan 0 (1) dan mengukur probabilitas output dalam keadaan 1 (0). Nilai yang dilaporkan adalah rata-rata dari dua error ini. Median diambil dari semua qubit.

Lihat di IBM Quantum PlatformBagian Calibration data, bagian Details
Panjang Gate satu-qubit

Durasi operasi Gate satu-qubit. Perlu dicatat bahwa nilai yang ditampilkan di IBM Quantum Platform dalam nanodetik. Nilai yang dikembalikan di Qiskit dalam detik.

Lihat dengan Qiskitbackend.target['<instruction>'][<qubit 1>, ].duration
Lihat di IBM Quantum PlatformBagian Calibration: menu dropdown qubit
Panjang Gate (Gate 2Q)

Durasi operasi Gate dua-qubit. Perlu dicatat bahwa nilai yang ditampilkan di IBM Quantum Platform dalam nanodetik. Nilai yang dikembalikan di Qiskit dalam detik.

Lihat dengan Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2> ].duration
Lihat di IBM Quantum PlatformBagian Calibration: menu dropdown qubit
Panjang readout

Panjang readout menentukan durasi operasi readout untuk sebuah qubit. Ini mengukur waktu dari awal pulsa pengukuran hingga selesainya digitisasi sinyal, setelah itu sistem siap untuk operasi berikutnya. Memahami parameter ini penting untuk mengoptimalkan eksekusi circuit, terutama saat menggabungkan pengukuran mid-circuit.

Lihat dengan Qiskit
  • Untuk measure: backend.properties().readout_length(<qubit>)
  • Untuk measure_2: backend.target['measure_2'][<qubit 1>, ].duration
Lihat di IBM Quantum PlatformBagian Calibration data, menu dropdown qubit
backend.target["cz"][(1, 0)]
InstructionProperties(duration=6.8e-08, error=0.010202155482934266)
backend.target["measure"][(0,)]
InstructionProperties(duration=1.56e-06, error=0.025634765625)

Properti tambahan

CLOPS (atau CLOPS_h)

Circuit layer operations per second (CLOPS) adalah ukuran berapa banyak lapisan Circuit 100x100 (circuit yang sadar hardware) yang bisa dieksekusi oleh QPU per satuan waktu.

Hitung dengan QiskitTemukan kode CLOPS di GitHub Qiskit Community
Lihat di IBM Quantum PlatformBagian Details
Status

Dengan BackendStatus, kamu bisa menemukan status QPU (misalnya, Active, Paused, Offline) serta jumlah pekerjaan tertunda.

Lihat dengan Qiskitprint(backend.status().status_msg), print(backend.status().pending_jobs)
Lihat di IBM Quantum PlatformBagian Details
Diagram topologi atau coupling map

Diagram yang menunjukkan pasangan qubit yang mendukung operasi Gate dua-qubit di antara mereka. Ini juga disebut coupling map atau konektivitas. Qubit direpresentasikan sebagai lingkaran dan operasi Gate dua-qubit yang didukung ditampilkan sebagai garis yang menghubungkan qubit.

Lihat dengan Qiskitfrom qiskit.visualization import plot_gate_map lalu plot_gate_map(backend)
Lihat di IBM Quantum PlatformBagian Calibration data; Klik Expand untuk tampilan yang lebih besar
Apa arti `error = 1`?

Jika benchmarking qubit atau edge tidak berhasil selama beberapa hari, baik karena kualitas data yang buruk atau faktor internal lainnya, nilai error yang dilaporkan dianggap kedaluwarsa dan akan dilaporkan sebagai 1. Ini bukan indikasi bahwa qubit atau edge tersebut tidak berfungsi atau bahwa errornya adalah 1; sebaliknya, error tersebut dianggap tidak terdefinisi dan kamu harus berhati-hati saat mengoperasikan qubit atau Gate tersebut.

Langkah selanjutnya

Rekomendasi