Langkau ke kandungan utama

Fungsi Circuit IBM

Nota
  • Qiskit Functions adalah ciri eksperimental yang hanya tersedia untuk pengguna Pelan Premium, Pelan Flex, dan Pelan On-Prem (melalui API IBM Quantum Platform) IBM Quantum®. Ia berada dalam status keluaran pratonton dan tertakluk kepada perubahan.

Gambaran keseluruhan​

Fungsi Circuit IBM® mengambil PUB abstrak sebagai input, dan mengembalikan nilai jangkaan yang dimitigasi sebagai output. Fungsi Circuit ini merangkumi saluran paip automatik dan tersuai untuk membolehkan penyelidik memberi tumpuan kepada penemuan algoritma dan aplikasi.

Huraian​

Setelah menghantar PUB anda, Circuit abstrak dan boleh jadi anda secara automatik ditranspil, dilaksanakan pada perkakasan, dan diproses selepas untuk mengembalikan nilai jangkaan yang dimitigasi. Untuk melakukan ini, ia menggabungkan alat-alat berikut:

Fungsi Circuit IBM

Mula​

Sahkan jati diri menggunakan kunci API anda dan pilih Qiskit Function seperti berikut. (Petikan ini mengandaikan anda telah menyimpan akaun anda ke persekitaran tempatan anda.)

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-catalog qiskit-ibm-runtime
from qiskit_ibm_catalog import QiskitFunctionsCatalog

catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")

function = catalog.load("ibm/circuit-function")

Contoh​

Untuk bermula, cuba contoh asas ini:

from qiskit.circuit.random import random_circuit
from qiskit_ibm_runtime import QiskitRuntimeService

# You can skip this step if you have a target backend, e.g.
# backend_name = "ibm_brisbane"
# You'll need to specify the credentials when initializing QiskitRuntimeService, if they were not previously saved.
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

circuit = random_circuit(num_qubits=2, depth=2, seed=42)
observable = "Z" * circuit.num_qubits
pubs = [(circuit, observable)]

job = function.run(
# Use `backend_name=backend_name` if you didn't initialize a backend object
backend_name=backend.name,
pubs=pubs,
)

Semak status beban kerja Qiskit Function anda atau kembalikan keputusan seperti berikut:

print(job.status())
result = job.result()
QUEUED

Keputusan mempunyai format yang sama seperti keputusan Estimator:

print(f"The result of the submitted job had {len(result)} PUB\n")
print(
f"The associated PubResult of this job has the following DataBins:\n {result[0].data}\n"
)
print(f"And this DataBin has attributes: {result[0].data.keys()}")
print(
f"The expectation values measured from this PUB are: \n{result[0].data.evs}"
)
The result of the submitted job had 1 PUB

The associated PubResult of this job has the following DataBins:
DataBin(evs=np.ndarray(<shape=(), dtype=float64>), stds=np.ndarray(<shape=(), dtype=float64>), ensemble_standard_error=np.ndarray(<shape=(), dtype=float64>))

And this DataBin has attributes: dict_keys(['evs', 'stds', 'ensemble_standard_error'])
The expectation values measured from this PUB are:
1.02116704805492

Input​

Lihat jadual berikut untuk semua parameter input yang diterima oleh Fungsi Circuit IBM. Bahagian Pilihan seterusnya memberikan butiran lebih lanjut tentang options yang tersedia.

NamaJenisHuraianDiperlukanLalaiContoh
backend_namestrNama Backend untuk membuat pertanyaan.YaN/Aibm_fez
pubsIterable[EstimatorPubLike]Iterable objek seperti PUB (primitive unified bloc) abstrak, seperti tupel (circuit, observables) atau (circuit, observables, parameter_values). Lihat Gambaran keseluruhan PUB untuk maklumat lanjut. Circuit boleh abstrak (bukan ISA).YaN/A(circuit, observables, parameter_values)
optionsdictPilihan input. Lihat bahagian Pilihan untuk butiran lanjut.TidakLihat bahagian Pilihan untuk butiran.{"optimization_level": 3}
instancestrNama sumber awan bagi instans yang ingin digunakan dalam format tersebut.TidakSatu dipilih secara rawak jika akaun anda mempunyai akses ke pelbagai instans.CRN

Pilihan​

Struktur​

Sama seperti primitif Qiskit Runtime, pilihan untuk Fungsi Circuit IBM boleh ditentukan sebagai kamus bersarang. Pilihan yang kerap digunakan, seperti optimization_level dan mitigation_level, berada di peringkat pertama. Pilihan lain yang lebih lanjutan dikelompokkan ke dalam kategori yang berbeza, seperti resilience.

Lalai​

Jika anda tidak menentukan nilai untuk sesuatu pilihan, nilai lalai yang ditentukan oleh perkhidmatan digunakan.

Tahap mitigasi​

Fungsi Circuit IBM juga menyokong mitigation_level. Tahap mitigasi menentukan berapa banyak penindasan dan mitigasi ralat yang digunakan untuk kerja. Tahap yang lebih tinggi menghasilkan keputusan yang lebih tepat, dengan mengorbankan masa pemprosesan yang lebih lama. Darjah pengurangan ralat bergantung pada kaedah yang digunakan. Tahap mitigasi mengabstrakkan pilihan kaedah mitigasi dan penindasan ralat terperinci untuk membolehkan pengguna mempertimbangkan pertukaran kos/ketepatan yang sesuai untuk aplikasi mereka. Jadual berikut menunjukkan kaedah yang sepadan bagi setiap tahap.

nota

Walaupun namanya serupa, mitigation_level menggunakan teknik yang berbeza daripada yang digunakan oleh resilience_level Estimator.

Sama seperti resilience_level dalam Qiskit Runtime Estimator, mitigation_level menentukan set pilihan terpilih asas. Sebarang pilihan yang anda tentukan secara manual selain daripada tahap mitigasi diterapkan di atas set pilihan asas yang ditentukan oleh tahap mitigasi. Oleh itu, pada prinsipnya, anda boleh menetapkan tahap mitigasi ke 1, tetapi kemudian mematikan mitigasi pengukuran, walaupun ini tidak disyorkan.

Tahap MitigasiTeknik
1 [Lalai]Penyahgandingan dinamik + twirling pengukuran + TREX
2Tahap 1 + twirling gate + ZNE melalui lipatan gate
3Tahap 1 + twirling gate + ZNE melalui PEA

Contoh berikut menunjukkan cara menetapkan tahap mitigasi:

options = {"mitigation_level": 2}

job = function.run(backend_name=backend.name, pubs=pubs, options=options)

Semua pilihan yang tersedia​

Selain daripada mitigation_level, Fungsi Circuit IBM juga menyediakan beberapa pilihan lanjutan terpilih yang membolehkan anda menala pertukaran kos/ketepatan dengan lebih halus. Jadual berikut menunjukkan semua pilihan yang tersedia:

PilihanSub-pilihanSub-sub-pilihanHuraianPilihanLalai
default_precisionKetepatan lalai yang digunakan untuk sebarang PUB atau panggilan run()
yang tidak menentukan satu.
Setiap PUB input boleh menentukan ketepatannya sendiri. Jika kaedah run() diberikan ketepatan, nilai itu digunakan untuk semua PUB dalam panggilan run() yang tidak menentukan ketepatan mereka sendiri.
float > 00.015625
max_execution_timeMasa pelaksanaan maksimum dalam saat, yang berdasarkan
penggunaan QPU (bukan masa jam dinding). Penggunaan QPU ialah
jumlah masa yang QPU didedikasikan untuk memproses kerja anda. Jika kerja melebihi had masa ini, ia dibatalkan secara paksa.
Nombor bulat saat dalam julat [1, 10800]
mitigation_levelBerapa banyak penindasan dan mitigasi ralat yang digunakan. Rujuk bahagian Tahap mitigasi untuk maklumat lanjut tentang kaedah yang digunakan pada setiap tahap.1 / 2 / 31
optimization_levelBerapa banyak pengoptimuman yang dilakukan pada Circuit. Tahap yang lebih tinggi menghasilkan Circuit yang lebih dioptimumkan, dengan mengorbankan masa transpilasi yang lebih lama.1 / 2 / 32
dynamical_decouplingenableSama ada untuk mengaktifkan penyahgandingan dinamik. Rujuk Teknik penindasan dan mitigasi ralat untuk penjelasan kaedah tersebut.True/FalseTrue
sequence_typeUrutan penyahgandingan dinamik yang hendak digunakan.
* XX: gunakan urutan tau/2 - (+X) - tau - (+X) - tau/2
* XpXm: gunakan urutan tau/2 - (+X) - tau - (-X) - tau/2
* XY4: gunakan urutan
tau/2 - (+X) - tau - (+Y) - tau (-X) - tau - (-Y) - tau/2
'XX'/'XpXm'/'XY4''XX'
twirlingenable_gatesSama ada untuk menggunakan twirling gate Clifford 2-Qubit.True/FalseFalse
enable_measureSama ada untuk mengaktifkan twirling pengukuran.True/FalseTrue
resiliencemeasure_mitigationSama ada untuk mengaktifkan kaedah mitigasi ralat pengukuran TREX. Rujuk Teknik penindasan dan mitigasi ralat untuk penjelasan kaedah tersebut.True/FalseTrue
zne_mitigationSama ada untuk mengaktifkan kaedah mitigasi ralat Zero Noise Extrapolation. Rujuk Teknik penindasan dan mitigasi ralat untuk penjelasan kaedah tersebut.True/FalseFalse
zneamplifierTeknik yang hendak digunakan untuk mengamplifikasi hingar. Salah satu daripada:
- gate_folding (lalai) menggunakan lipatan gate 2-Qubit untuk mengamplifikasi hingar. Jika faktor hingar memerlukan pengamplifikasian hanya sebahagian gate, gate tersebut dipilih secara rawak.

- gate_folding_front menggunakan lipatan gate 2-Qubit untuk mengamplifikasi hingar. Jika faktor hingar memerlukan pengamplifikasian hanya sebahagian gate, gate tersebut dipilih dari hadapan litar DAG yang dipesan topologinya.

- gate_folding_back menggunakan lipatan gate 2-Qubit untuk mengamplifikasi hingar. Jika faktor hingar memerlukan pengamplifikasian hanya sebahagian gate, gate tersebut dipilih dari belakang litar DAG yang dipesan topologinya.

- pea menggunakan teknik yang dipanggil Probabilistic error amplification (PEA) untuk mengamplifikasi hingar. Rujuk Teknik penindasan dan mitigasi ralat untuk penjelasan kaedah tersebut.
gate_folding / gate_folding_front / gate_folding_back / peagate_folding
noise_factorsFaktor hingar yang hendak digunakan untuk pengamplifikasian hingar.senarai nombor titik terapung; setiap nombor >= 1(1, 1.5, 2) untuk PEA, dan (1, 3, 5) untuk yang lain.
extrapolatorFaktor hingar untuk menilai model ekstrapolasi penyesuaian. Pilihan ini tidak mempengaruhi pelaksanaan atau penyesuaian model dengan apa-apa cara; ia hanya menentukan titik di mana objek extrapolator dinilai untuk dikembalikan dalam medan data yang dipanggil evs_extrapolated dan stds_extrapolated.satu atau lebih daripada exponential,linear, double_exponential,polynomial_degree_(1 <= k <= 7)(exponential, linear)
pec_mitigationSama ada untuk mengaktifkan kaedah mitigasi ralat Probabilistic Error Cancellation. Rujuk Teknik penindasan dan mitigasi ralat untuk penjelasan kaedah tersebut.True/FalseFalse
pecmax_overheadOverhed pensampelan Circuit maksimum yang dibenarkan, atau None untuk tiada maksimum.None/ integer >1100

Dalam contoh berikut, menetapkan tahap mitigasi ke 1 pada mulanya mematikan mitigasi ZNE, tetapi menetapkan zne_mitigation ke True menggantikan tetapan berkaitan dari mitigation_level.

options = {"mitigation_level": 1, "resilience": {"zne_mitigation": True}}

Output​

Output bagi Fungsi Circuit adalah PrimitiveResult, yang mengandungi dua medan:

  • Satu atau lebih objek PubResult. Ini boleh diindeks secara langsung dari PrimitiveResult.

  • Metadata peringkat kerja.

Setiap PubResult mengandungi medan data dan metadata.

  • Medan data mengandungi sekurang-kurangnya satu tatasusunan nilai jangkaan (PubResult.data.evs) dan satu tatasusunan ralat piawai (PubResult.data.stds). Ia juga boleh mengandungi lebih banyak data, bergantung pada pilihan yang digunakan.

  • Medan metadata mengandungi metadata peringkat PUB (PubResult.metadata).

Petikan kod berikut menerangkan format PrimitiveResult (dan PubResult yang berkaitan).

print(f"The result of the submitted job had {len(result)} PUB")
print(
f"The expectation values measured from this PUB are: \n{result[0].data.evs}"
)
print(f"And the associated metadata is: \n{result[0].metadata}")
The result of the submitted job had 1 PUB
The expectation values measured from this PUB are:
1.02116704805492
And the associated metadata is:
{'shots': 4096, 'target_precision': 0.015625, 'circuit_metadata': {}, 'resilience': {}, 'num_randomizations': 32}

Mengambil mesej ralat​

Jika status beban kerja anda adalah ERROR, gunakan job.result() untuk mengambil mesej ralat bagi membantu penyahpepijatan seperti berikut:

job = function.run(
backend_name="bad_backend_name", pubs=pubs, options=options
)

print(job.result())

Dapatkan sokongan​

Hubungi sokongan IBM Quantum, dan sertakan maklumat berikut:

  • ID Kerja Qiskit Function (qiskit-ibm-catalog), job.job_id
  • Huraian terperinci tentang isu
  • Sebarang mesej ralat atau kod yang berkaitan
  • Langkah-langkah untuk menghasilkan semula isu

Langkah seterusnya​

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 Mac 2026