Pengurusan Prestasi: Fungsi Qiskit oleh Q-CTRL Fire Opal
Lihat rujukan API
Fungsi Qiskit adalah ciri eksperimental yang hanya tersedia untuk pengguna Pelan Premium IBM Quantum®, Flex Plan, dan On-Prem (melalui API Platform IBM Quantum). Ia dalam status keluaran pratonton dan boleh berubah.
Versi pakej
Kod pada halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan menggunakan versi ini atau yang lebih baharu.
qiskit[all]~=2.3.1
qiskit-ibm-runtime~=0.45.1
Gambaran Keseluruhan
Fire Opal Performance Management memudahkan sesiapa sahaja untuk mendapatkan keputusan bermakna daripada komputer kuantum pada skala besar tanpa perlu menjadi pakar perkakasan kuantum. Apabila menjalankan litar dengan Fire Opal Performance Management, teknik penekanan ralat berasaskan AI digunakan secara automatik, membolehkan penskalaan masalah yang lebih besar dengan lebih banyak gate dan qubit. Pendekatan ini mengurangkan bilangan shot yang diperlukan untuk mendapat jawapan yang betul, tanpa overhead tambahan — menghasilkan penjimatan besar dalam masa pengkomputeran dan kos.
Performance Management menekan ralat dan meningkatkan kebarangkalian mendapat jawapan yang betul pada perkakasan yang bising. Dengan kata lain, ia meningkatkan nisbah isyarat kepada hingar. Imej berikut menunjukkan bagaimana ketepatan yang dipertingkatkan oleh Performance Management boleh mengurangkan keperluan untuk shot tambahan dalam kes algoritma Quantum Fourier Transform 10-qubit. Dengan hanya 30 shot, Q-CTRL mencapai ambang keyakinan 99%, manakala tetapan lalai (QiskitRuntime Sampler, optimization_level=3 dan resilience_level=1, ibm_sherbrooke) memerlukan 170,000 shot. Dengan mendapat jawapan yang betul lebih cepat, anda menjimatkan masa pengkomputeran yang ketara.
Fungsi Performance Management boleh digunakan dengan mana-mana algoritma, dan anda boleh menggunakannya dengan mudah sebagai ganti primitif IBM Quantum standard. Di sebalik tabir, pelbagai teknik penekanan ralat bekerjasama untuk mencegah ralat berlaku semasa masa jalan. Semua kaedah saluran paip Fire Opal adalah pra-konfigurasi dan agnostik algoritma, bermakna anda sentiasa mendapat prestasi terbaik tanpa perlu konfigurasi.
Untuk mendapatkan akses kepada Performance Management, hubungi Q-CTRL.
Penerangan
Fire Opal Performance Management mempunyai dua pilihan pelaksanaan yang serupa dengan primitif IBM Quantum, jadi anda boleh menukar dengan mudah kepada Q-CTRL Sampler dan Estimator. Aliran kerja umum untuk menggunakan fungsi Performance Management adalah:
- Takrifkan litar anda (dan operator dalam kes Estimator).
- Jalankan litar.
- Dapatkan semula keputusan.
Untuk mengurangkan hingar perkakasan, Fire Opal menggunakan pelbagai teknik penekanan ralat berasaskan AI seperti yang digambarkan dalam imej berikut. Dengan Fire Opal, keseluruhan saluran paip diautomasikan sepenuhnya tanpa perlu konfigurasi.
Saluran paip Fire Opal menghapuskan keperluan untuk overhead tambahan, seperti peningkatan masa jalan kuantum atau qubit fizikal tambahan. Perlu diingat bahawa masa pemprosesan klasik masih merupakan faktor (rujuk bahagian Penanda Aras untuk anggaran, di mana "Jumlah masa" mencerminkan pemprosesan klasik dan kuantum). Berbeza dengan mitigasi ralat, yang memerlukan overhead dalam bentuk pensampelan, penekanan ralat Fire Opal berfungsi pada peringkat gate dan nadi untuk menangani pelbagai sumber hingar dan mencegah kemungkinan berlakunya ralat. Dengan mencegah ralat, keperluan untuk pasca-pemprosesan yang mahal dihapuskan.
Imej berikut menggambarkan kaedah penekanan ralat yang diautomasikan oleh Fire Opal Performance Management.
Fungsi ini menawarkan dua primitif, Sampler dan Estimator, dan input serta output kedua-duanya melanjutkan spesifikasi yang dilaksanakan untuk primitif IBM Quantum V2.
Penanda Aras
Keputusan penanda aras algoritma yang diterbitkan menunjukkan peningkatan prestasi yang ketara merentasi pelbagai algoritma, termasuk Bernstein-Vazirani, quantum Fourier transform, carian Grover, quantum approximate optimization algorithm, dan variational quantum eigensolver. Bahagian selebihnya memberikan lebih banyak butiran tentang jenis algoritma yang boleh anda jalankan, serta prestasi dan masa jalan yang dijangka.
Kajian bebas berikut menunjukkan bagaimana Performance Management Q-CTRL membolehkan penyelidikan algoritma pada skala rekod:
- Parametrized Energy-Efficient Quantum Kernels for Network Service Fault Diagnosis - pembelajaran kernel kuantum sehingga 50 qubit
- Tensor-based quantum phase difference estimation for large-scale demonstration - anggaran fasa kuantum sehingga 33 qubit
- Hierarchical Learning for Quantum ML: Novel Training Technique for Large-Scale Variational Quantum Circuits - pemuatan data kuantum sehingga 21 qubit
Jadual berikut memberikan panduan kasar tentang ketepatan dan masa jalan daripada larian penanda aras sebelumnya pada ibm_fez. Prestasi pada peranti lain mungkin berbeza. Masa penggunaan adalah berdasarkan andaian 10,000 shot per litar. "Bilangan qubit" yang ditunjukkan bukan had keras tetapi mewakili ambang kasar di mana anda boleh mengharapkan ketepatan penyelesaian yang sangat konsisten. Saiz masalah yang lebih besar telah berjaya diselesaikan, dan ujian melepasi had ini digalakkan.
| Contoh | Bilangan qubit | Ketepatan | Ukuran ketepatan | Jumlah masa (s) | Penggunaan masa jalan (s) | Primitif (Mod) |
|---|---|---|---|---|---|---|
| Bernstein–Vazirani | 50Q | 100% | Kadar Kejayaan (Peratusan larian di mana jawapan betul ialah bitstring dengan bilangan tertinggi) | 10 | 8 | Sampler |
| Quantum Fourier Transform | 30Q | 100% | Kadar Kejayaan (Peratusan larian di mana jawapan betul ialah bitstring dengan bilangan tertinggi) | 10 | 8 | Sampler |
| Quantum Phase Estimation | 30Q | 99.9998% | Ketepatan sudut yang ditemui: 1- abs(real_angle - angle_found)/pi | 10 | 8 | Sampler |
| Simulasi kuantum: model Ising (15 langkah) | 20Q | 99.775% | (ditakrifkan di bawah) | 60 (setiap langkah) | 15 (setiap langkah) | Estimator |
| Simulasi kuantum 2: dinamik molekul (20 titik masa) | 34Q | 96.78% | (ditakrifkan di bawah) | 10 (setiap titik masa) | 6 (setiap titik masa) | Estimator |
Mentakrifkan ketepatan pengukuran nilai jangkaan - metrik ditakrifkan seperti berikut:
di mana = nilai jangkaan ideal, = nilai jangkaan yang diukur, = nilai maksimum ideal, dan = nilai minimum ideal. adalah purata nilai merentasi pelbagai pengukuran.
Metrik ini digunakan kerana ia tidak berubah terhadap anjakan global dan penskalaan dalam julat nilai yang boleh dicapai. Dengan kata lain, tanpa mengira sama ada anda menganjak julat nilai jangkaan yang mungkin ke atas atau ke bawah atau meningkatkan sebaran, nilai seharusnya kekal konsisten.
Bermula
Fire Opal Performance Management menggunakan Qiskit v2.0.0, yang merupakan versi yang disyorkan. Versi yang disokong adalah Qiskit >=v2.0.0.
Sahkan menggunakan kunci API Platform IBM Quantum anda, dan pilih Fungsi Qiskit seperti berikut. (Coretan ini mengandaikan anda telah menyimpan akaun anda ke persekitaran tempatan anda.)
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-catalog qiskit-ibm-runtime
# This cell is hidden from users. It hides the "...You have imported samplomatic..." warning.
import warnings
warnings.filterwarnings("ignore", message=".*You have imported samplomatic*")
from qiskit_ibm_catalog import QiskitFunctionsCatalog
catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")
# verify that you have access to the function
catalog.list()
[QiskitFunction(qunova/hivqe-chemistry),
QiskitFunction(global-data-quantum/quantum-portfolio-optimizer),
QiskitFunction(algorithmiq/tem),
QiskitFunction(qedma/qesem),
QiskitFunction(multiverse/singularity),
QiskitFunction(ibm/circuit-function),
QiskitFunction(q-ctrl/optimization-solver),
QiskitFunction(colibritd/quick-pde),
QiskitFunction(q-ctrl/performance-management),
QiskitFunction(kipu-quantum/iskay-quantum-optimizer)]
# Access Function
perf_mgmt = catalog.load("q-ctrl/performance-management")
Jika anda ingin menggunakan Backend yang fungsi ini tidak sokong pada masa ini, hubungi Q-CTRL untuk menambah sokongan.
Primitif Estimator
Contoh Estimator
Gunakan primitif Estimator Fire Opal Performance Management untuk menentukan nilai jangkaan bagi pasangan litar-observable tunggal.
Selain pakej qiskit-ibm-catalog dan qiskit, anda juga akan menggunakan pakej numpy untuk menjalankan contoh ini. Anda boleh memasang pakej ini dengan menyahkomen sel berikut jika anda menjalankan contoh ini dalam notebook menggunakan kernel IPython.
# %pip install numpy
1. Cipta litar
Sebagai contoh, jana operator Hermitian rawak dan observable untuk dimasukkan ke dalam fungsi Performance Management.
import numpy as np
from qiskit.circuit.library import iqp
from qiskit.quantum_info import random_hermitian, SparsePauliOp
n_qubits = 50
# Generate a random circuit
mat = np.real(random_hermitian(n_qubits, seed=1234))
circuit = iqp(mat)
circuit.measure_all()
# Define observables as a string
observable = SparsePauliOp("Z" * n_qubits)
# Create PUB tuple
estimator_pubs = [(circuit, observable)]
2. Jalankan litar
Jalankan litar dan tentukan secara pilihan Backend dan bilangan shot.
# This cell is hidden from users
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend_name = service.least_busy().name
# Run the circuit using Estimator
qctrl_estimator_job = perf_mgmt.run(
primitive="estimator",
pubs=estimator_pubs,
backend_name=backend_name,
)
Anda boleh menggunakan API Qiskit Serverless yang biasa untuk menyemak status beban kerja Fungsi Qiskit anda:
qctrl_estimator_job.status()
'QUEUED'
3. Dapatkan semula keputusan
# Retrieve the counts from the result list
result = qctrl_estimator_job.result()
Keputusan mempunyai format yang sama seperti keputusan Estimator:
import numpy
result_str = str(result)
with numpy.printoptions(threshold=200):
print(
f"The result of the submitted job had {len(result)} PUB "
f"and has a value:\n {result[0]}\n"
)
print("The associated PubResult of this job has the following DataBins:")
print(f"{result[0].data}\n")
print(f"And this DataBin has attributes: {result[0].data.keys()}")
print("The expectation values measured from this PUB are:")
print(f"{result[0].data.evs}")
The result of the submitted job had 1 PUB
The result of the submitted job had 1 PUB and has a value:
PubResult(data=DataBin(evs=0.0195, stds=0.9998098569228051), metadata={'precision': None})
The associated PubResult of this job has the following DataBins:
DataBin(evs=0.0195, stds=0.9998098569228051)
And this DataBin has attributes: dict_keys(['evs', 'stds'])
The expectation values measured from this PUB are:
0.0195
Primitif Sampler
Contoh Sampler
Gunakan primitif Sampler Fire Opal Performance Management untuk menjalankan litar Bernstein–Vazirani. Algoritma ini, yang digunakan untuk mencari string tersembunyi daripada output fungsi kotak hitam, adalah algoritma penanda aras yang biasa kerana terdapat satu jawapan yang betul. 1. Cipta litar
Takrifkan jawapan yang betul kepada algoritma, bitstring tersembunyi, dan litar Bernstein–Vazirani. Anda boleh melaraskan lebar litar dengan hanya menukar circuit_width.
import qiskit
circuit_width = 35
hidden_bitstring = "1" * circuit_width
# Create circuit, reserving one qubit for BV oracle
bv_circuit = qiskit.QuantumCircuit(circuit_width + 1, circuit_width)
bv_circuit.x(circuit_width)
bv_circuit.h(range(circuit_width + 1))
for input_qubit, bit in enumerate(reversed(hidden_bitstring)):
if bit == "1":
bv_circuit.cx(input_qubit, circuit_width)
bv_circuit.barrier()
bv_circuit.h(range(circuit_width + 1))
bv_circuit.barrier()
for input_qubit in range(circuit_width):
bv_circuit.measure(input_qubit, input_qubit)
# Create PUB tuple
sampler_pubs = [(bv_circuit,)]
2. Jalankan litar
Jalankan litar dan tentukan secara pilihan Backend dan bilangan shot.
# Run the circuit using Sampler
qctrl_sampler_job = perf_mgmt.run(
primitive="sampler",
pubs=sampler_pubs,
backend_name=backend_name,
)
Semak status beban kerja Fungsi Qiskit anda atau kembalikan keputusan seperti berikut:
# Print the ID so you can use it later, if necessary
print(qctrl_sampler_job.job_id)
qctrl_sampler_job.status()
60fe2fa1-a860-43e4-8615-c6ac4180f93b
'QUEUED'
3. Dapatkan semula keputusan
# Retrieve the job results
sampler_result = qctrl_sampler_job.result()
# Get results for the first (and only) PUB
pub_result = sampler_result[0]
counts = pub_result.data.c.get_counts()
print("Counts for the meas output register (limited to 30 results):")
for i, (bitstring, count) in enumerate(counts.items()):
if i >= 50:
print(f" ... ({len(counts) - 30} more items)")
break
print(f" {bitstring}: {count}")
Counts for the meas output register (limited to 30 results):
11111111111111111111111111111111111: 1661
11111111111111111111111111110111111: 60
11111111111111111111111111111101111: 54
11111111111111111111111111111110111: 54
11111111111111011111111111111111111: 46
11111111111111111110111111111111111: 44
11111111111111111111111101111111111: 42
11111111111111111111111110111111111: 42
11111111111111110111111111111111111: 41
11111111111111111111111111111111101: 39
11111111111111111111101111111111111: 38
11111111111111111111110111111111111: 38
11111111111111111111111111101111111: 37
11111111111111111111111111111111110: 36
11111111111110111111111111111111111: 35
11111111111111111111111111111011111: 32
11111111111111101111111111111111111: 32
01111111111111111111111111111111111: 27
11111111111111111011111111111111111: 23
11111111101111111111111111111111111: 22
11111111111111111111111111111111011: 21
11111111011111111111111111111111111: 20
00000000000000011111111111111111111: 18
11111111111111111111110101111111111: 18
00000001111111111111111111111111111: 17
11111111001111111111111111111111111: 16
11101111111111111111111111111111111: 16
11111111111101111111111111111111111: 16
00000101111111111111111111111111111: 13
11111111111111111111111011111111111: 13
11111111111111111111111110101111111: 13
11111111111111111101111111111111111: 12
10111111111111111111111111111111111: 12
11111111111111111111111110001111111: 12
00000000000000000011111111111111111: 11
11111111111111111111111111111110110: 10
00000000000000000000000001111111111: 10
11111111111011111111111111111111111: 9
11111111111111101011111111111111111: 9
00000000011111111111111111111111111: 8
10101111111111111111111111111111111: 8
00000000000000000000000001011111111: 8
11111111111111111111111111111111001: 8
00000111111111111111111111111111111: 7
11111111111111111111111111111101110: 7
11111111110111111111111111111111111: 7
00000000000001011111111111111111111: 6
00000000000000001111111111111111111: 6
00000000000000000001011111111111111: 6
11111111111111111111111111011111111: 6
... (1050 more items)
3. Plot bitstring teratas
Plot bitstring dengan bilangan tertinggi untuk melihat sama ada bitstring tersembunyi adalah mod.
import matplotlib.pyplot as plt
def plot_top_bitstrings(counts_dict, hidden_bitstring=None):
# Sort and take the top 100 bitstrings
top_100 = sorted(counts_dict.items(), key=lambda x: x[1], reverse=True)[
:100
]
if not top_100:
print("No bitstrings found in the input dictionary.")
return
# Unzip the bitstrings and their counts
bitstrings, counts = zip(*top_100)
# Assign colors: purple if the bitstring matches hidden_bitstring,
# otherwise gray
colors = [
"#680CE9" if bit == hidden_bitstring else "gray" for bit in bitstrings
]
# Create the bar plot
plt.figure(figsize=(15, 8))
plt.bar(
range(len(bitstrings)), counts, tick_label=bitstrings, color=colors
)
# Rotate the bitstrings for better readability
plt.xticks(rotation=90, fontsize=8)
plt.xlabel("Bitstrings")
plt.ylabel("Counts")
plt.title("Top 100 Bitstrings by Counts")
# Show the plot
plt.tight_layout()
plt.show()
Bitstring tersembunyi diserlahkan dalam warna ungu, dan ia sepatutnya menjadi bitstring dengan bilangan kiraan tertinggi.
plot_top_bitstrings(counts, hidden_bitstring)

Changelog
-
2026-02-20: Notis Penamatan - medan metadata
provider_job_idsakan ditamatkan dalam 30 hari dalam versi 0.13.0. Pengguna boleh mengakses ID kerja melalui kaedahjob_id()bagi perkhidmatan masa jalan. -
2026-02-11: Kami kini menyokong
ibm_miami, dan menambah metadata pelaksanaan kepadaPubResult.
Dapatkan sokongan
Untuk sebarang soalan atau isu, hubungi Q-CTRL.
Langkah seterusnya
-
Minta akses kepada Q-CTRL Performance Management.
-
Lawati rujukan API untuk Fungsi Qiskit ini.
-
Cuba tutorial Transverse-Field Ising Model dengan Performance Management Q-CTRL.
-
Cuba tutorial Quantum Phase Estimation dengan Fungsi Qiskit Q-CTRL
-
Semak kajian kes BlueQubit.