Speciálně kalibrované instrukce
Ve výchozím nastavení jsou kvantová hradla a operace čtení na kvantových počítačích IBM® kalibrovány pro optimální výkon napříč běžnými případy použití. Některé úlohy však těží z instrukcí s jinak vyladěnými parametry. Například MidCircuitMeasure (measure_2) je operace čtení určená pro měření uprostřed obvodu a pomalejší hradla cz mohou zlepšit výsledky některých pracovních postupů zmírnění chyb.
Speciálně kalibrované instrukce existují ve dvou podobách a přistupuje se k nim různě:
-
Instrukce s odlišnými signaturami jsou kalibrovány spolu se standardními instrukcemi ve výchozí kalibraci, takže je do svých obvodů přidáváš jako jakoukoli jinou instrukci. Obvykle se rozpoznají podle přípony, například
measure_2. -
Alternativní kalibrace nahrazují části výchozí kalibrace jinak vyladěnými parametry. Vybereš ji tak, že při načítání backendu předáš
calibration_id.
Jak se kvantové počítače IBM kalibrují, se dozvíš v části Monitoruj, kalibruj a provádějte benchmarking.
Instrukce s odlišnými signaturami
Tyto instrukce jsou kalibrovány spolu se standardní sadou instrukcí, takže k získání backendu, který je podporuje, nemusíš dělat nic zvláštního. Chceš-li některou použít, přidej do svého obvodu odpovídající instrukci z qiskit-ibm-runtime.
| Instrukce | Popis | Typický případ použití | Použití v Qiskit | Rodina procesorů |
|---|---|---|---|---|
measure_2 | Kratší měřicí puls | Měření uprostřed obvodu | MidCircuitMeasure (v0.43.0 nebo novější) | Heron, Nighthawk r2 |
reset_2 | Kratší podmíněný resetovací puls využívající measure_2 | Reset qubitu uprostřed obvodu | MidCircuitReset (v0.49.0 nebo novější) | Heron |
measure_reset | Měření jako measure, které také resetuje qubit* | Změř a resetuj qubit | MeasureReset (v0.50.0 nebo novější) | Heron, Nighthawk r2 |
measure_reset_2 | Kratší měření jako measure_2, které také resetuje qubit* | Změř a resetuj qubit uprostřed obvodu | Inicializuj MeasureReset s name="measure_reset_2" (v0.50.0 nebo novější) | Heron, Nighthawk r2 |
xslow | Hradlo překlopení bitu (X) s prodlouženou dobou trvání | Postselekce a zmírnění chyb. Je to výchozí hodnota volby x_pulse_type v průchodech postselekce | Všechny |
. | XSlowGate (v0.50.0 nebo novější) | Všechny |
* U procesorů Heron je reset podmíněn výsledkem měření. U procesorů Nighthawk r2 je reset nepodmíněný.
Protože tyto instrukce nejsou podporovány na každém backendu, před jejich použitím zkontroluj podporované instrukce backendu:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>")
print(backend.supported_instructions)
Chceš-li najít všechny backendy, které danou instrukci podporují, použij:
service = QiskitRuntimeService()
backends = service.backends(filters=lambda b: "<instruction>" in b.supported_instructions)
Pomocí instruction_signatures zobrazíš signatury těchto speciálně kalibrovaných instrukcí:
print(backend.configuration().instruction_signatures)
Alternativní kalibrace
Alternativní kalibrace nahrazují části výchozí kalibrace jinak vyladěnými parametry. Každá alternativní kalibrace má ID kalibrace a její dostupnost závisí na QPU.
Chceš-li použít alternativní kalibraci, předej její calibration_id při načítání backendu. Target backendu, a tedy i transpilátor, pak používá vlastnosti instrukcí z této kalibrace a úlohy primitiv, které na backendu spustíš, se s ní provádějí.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>", calibration_id="<calibration_id>")
print(backend.calibration_id)
Alternativní kalibrace nejsou dostupné na všech QPU.
Kalibrace pomalých hradel
Kalibrace pomalých hradel ladí hradlo cz tak, aby bylo pomalejší než ve výchozí kalibraci. Pomalejší hradla cz mohou zlepšit výkon rozsáhlých pracovních postupů odhadu pozorovatelných se zmírněním chyb, ale také prodlužují celkovou dobu trvání obvodu, což způsobuje další dekoherenci.
Na procesorech Heron jsou kalibrace pomalých hradel dostupné také se dvěma režimy řízení předpětí dvouúrovňového systému (TLS):
-
DC předpětí TLS je optimalizováno pro nejlepší okamžitý výkon. Výchozí kalibrace používá DC předpětí TLS.
-
AC předpětí TLS moduluje předpětí TLS, aby stabilizovalo chyby zařízení v čase, což udržuje model šumu zařízení stabilní během zdlouhavých pracovních postupů. Podrobnosti najdeš v části „Noise stabilization“ v Observable Estimation in the Absence of Classical Verification.
Procesory Nighthawk předpětí TLS nepoužívají, a mají proto jedinou kalibraci pomalých hradel.
| ID kalibrace | Rodina procesorů | Předpětí TLS | Doporučeno pro |
|---|---|---|---|
| Žádné (výchozí kalibrace) | Všechny | DC (Heron) | Obecné použití. Zvláště doporučeno pro úlohy, jejichž bitové řetězce lze klasicky destilovat, například vrcholové obvody a pracovní postupy SQD nebo SKQD, a pro úlohy s detekcí chyb. |
slow_gates_dc | Heron | DC | Rozsáhlé pracovní postupy odhadu pozorovatelných, zejména ty, které využívají heuristické zmírnění chyb, například extrapolaci k nulovému šumu (ZNE). |
slow_gates_ac | Heron | AC | Pracovní postupy, které vyžadují stabilní míru chyb po dlouhé sezení. Důrazně doporučeno pro pracovní postupy zahrnující učení šumu, například pravděpodobnostní zesílení chyb (PEA) a pravděpodobnostní zrušení chyb (PEC). |
slow_gates | Nighthawk | Nelze použít | Pracovní postupy odhadu pozorovatelných, které používají zmírnění chyb, například ZNE, PEA a PEC. |
Například:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
# On a Heron QPU
backend = service.backend("ibm_kingston", calibration_id="slow_gates_ac")
# backend = service.backend("ibm_kingston", calibration_id="slow_gates_dc")
# On a Nighthawk QPU
backend = service.backend("ibm_phoenix", calibration_id="slow_gates")
Když používáš slow_gates_ac, odesílej všechny úlohy pracovního postupu do jedné session, aby se spouštěly, dokud je šum zařízení stabilní.
Zkontroluj doby trvání hradel
Protože kalibrace pomalých hradel prodlužují doby trvání hradla cz, porovnej tyto doby s výchozí kalibrací, abys pochopil(a) dopad na svůj obvod. Pomocí targetu backendu zjistíš dobu trvání hradla cz v sekundách na konkrétní dvojici qubitů:
default_backend = service.backend("<backend_name>")
slow_backend = service.backend(
"<backend_name>", calibration_id="slow_gates_ac"
) # Or slow_gates_dc, or slow_gates on Nighthawk
qubits = (0, 1) # Replace with a connected qubit pair on the backend
print(default_backend.target["cz"][qubits].duration)
print(slow_backend.target["cz"][qubits].duration)
Protože target odráží vybranou kalibraci, transpiluj své obvody pro backend, který používá stejné calibration_id, na kterém je plánuješ spouštět.
Další kroky
- Zjisti, jak spouštět dynamické obvody s měřeními uprostřed obvodu.
- Použij postselekci k odfiltrování výsledků ovlivněných korelovaným šumem.
- Přečti si, jak se kvantové počítače IBM monitorují, kalibrují a podrobují benchmarkingu.