Specjalnie kalibrowane instrukcje
Domyślnie bramki kwantowe i operacje odczytu w komputerach kwantowych IBM® są kalibrowane tak, aby zapewniać optymalną wydajność w typowych zastosowaniach. Niektóre obciążenia korzystają jednak z instrukcji o inaczej dostrojonych parametrach. Na przykład MidCircuitMeasure (measure_2) to operacja odczytu przeznaczona do pomiarów w środku obwodu, a wolniejsze bramki cz mogą poprawić wyniki niektórych przepływów pracy łagodzenia błędów.
Specjalnie kalibrowane instrukcje występują w dwóch postaciach i uzyskuje się do nich dostęp na różne sposoby:
-
Instrukcje o różnych sygnaturach są kalibrowane razem ze standardowymi instrukcjami w domyślnej kalibracji, więc dodajesz je do swoich obwodów jak każdą inną instrukcję. Zwykle rozpoznaje się je po przyrostku, takim jak
measure_2. -
Kalibracje alternatywne zastępują części domyślnej kalibracji inaczej dostrojonymi parametrami. Wybierasz je, przekazując
calibration_idpodczas pobierania backendu.
Aby dowiedzieć się, jak kalibrowane są komputery kwantowe IBM, zobacz Monitoruj, kalibruj i testuj wydajność.
Instrukcje o różnych sygnaturach
Te instrukcje są kalibrowane razem ze standardowym zestawem instrukcji, więc nie musisz robić nic szczególnego, aby pobrać backend, który je obsługuje. Aby użyć jednej z nich, dodaj odpowiednią instrukcję qiskit-ibm-runtime do swojego obwodu.
| Instrukcja | Opis | Typowy przypadek użycia | Użycie w Qiskit | Rodzina procesorów |
|---|---|---|---|---|
measure_2 | Krótszy impuls pomiarowy | Pomiary w środku obwodu | MidCircuitMeasure (v0.43.0 lub nowsza) | Heron, Nighthawk r2 |
reset_2 | Krótszy warunkowy impuls resetu, który używa measure_2 | Reset kubitu w środku obwodu | MidCircuitReset (v0.49.0 lub nowsza) | Heron |
measure_reset | Pomiar taki jak measure, który dodatkowo resetuje kubit* | Pomiar i reset kubitu | MeasureReset (v0.50.0 lub nowsza) | Heron, Nighthawk r2 |
measure_reset_2 | Krótszy pomiar taki jak measure_2, który dodatkowo resetuje kubit* | Pomiar i reset kubitu w środku obwodu | Zainicjuj MeasureReset z name="measure_reset_2" (v0.50.0 lub nowsza) | Heron, Nighthawk r2 |
xslow | Bramka odwracająca bit (X) o wydłużonym czasie trwania | Postselekcja i łagodzenie błędów. Jest to wartość domyślna opcji x_pulse_type w przebiegach postselekcji | Wszystkie |
. | XSlowGate (v0.50.0 lub nowsza) | Wszystkie |
* W procesorach Heron reset jest warunkowy względem wyniku pomiaru. W procesorach Nighthawk r2 reset jest bezwarunkowy.
Ponieważ te instrukcje nie są obsługiwane na każdym backendzie, przed ich użyciem sprawdź instrukcje obsługiwane przez backend:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>")
print(backend.supported_instructions)
Aby znaleźć wszystkie backendy obsługujące daną instrukcję, użyj:
service = QiskitRuntimeService()
backends = service.backends(filters=lambda b: "<instruction>" in b.supported_instructions)
Użyj instruction_signatures, aby zobaczyć sygnatury tych specjalnie kalibrowanych instrukcji:
print(backend.configuration().instruction_signatures)
Kalibracje alternatywne
Kalibracje alternatywne zastępują części domyślnej kalibracji inaczej dostrojonymi parametrami. Każda kalibracja alternatywna ma identyfikator kalibracji, a jej dostępność zależy od QPU.
Aby użyć kalibracji alternatywnej, przekaż jej calibration_id podczas pobierania backendu. Target backendu, a więc także transpiler, używa właściwości instrukcji z tej kalibracji, a zadania primitive uruchamiane na backendzie są wykonywane z jej użyciem.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>", calibration_id="<calibration_id>")
print(backend.calibration_id)
Kalibracje alternatywne nie są dostępne na wszystkich QPU.
Kalibracje wolnych bramek
Kalibracje wolnych bramek dostrajają bramkę cz tak, aby była wolniejsza niż w kalibracji domyślnej. Wolniejsze bramki cz mogą poprawić wydajność w przepływach pracy estymacji obserwabli na dużą skalę z łagodzeniem błędów, ale zwiększają też całkowity czas trwania obwodu, co powoduje dodatkową dekoherencję.
W procesorach Heron kalibracje wolnych bramek są dostępne także z dwoma trybami kontroli biasu układu dwupoziomowego (TLS):
-
DC TLS bias jest zoptymalizowany pod kątem najlepszej chwilowej wydajności. Kalibracja domyślna używa DC TLS bias.
-
AC TLS bias moduluje bias TLS, aby ustabilizować błędy urządzenia w czasie, co utrzymuje stabilny model szumu urządzenia podczas długich przepływów pracy. Szczegóły znajdziesz w sekcji „Noise stabilization” w Observable Estimation in the Absence of Classical Verification.
Procesory Nighthawk nie używają biasu TLS, więc mają jedną kalibrację wolnych bramek.
| Identyfikator kalibracji | Rodzina procesorów | Bias TLS | Zalecane dla |
|---|---|---|---|
| Brak (kalibracja domyślna) | Wszystkie | DC (Heron) | Ogólne użycie. Szczególnie zalecana dla obciążeń, których ciągi bitów można destylować klasycznie, takich jak obwody z pikami i przepływy pracy SQD lub SKQD, oraz dla obciążeń z wykrywaniem błędów. |
slow_gates_dc | Heron | DC | Przepływy pracy estymacji obserwabli na dużą skalę, zwłaszcza te, które używają heurystycznego łagodzenia błędów, takiego jak ekstrapolacja do zerowego szumu (ZNE). |
slow_gates_ac | Heron | AC | Przepływy pracy wymagające stabilnych poziomów błędów podczas długich sesji. Zdecydowanie zalecana dla przepływów pracy obejmujących uczenie szumu, takich jak probabilistyczne wzmacnianie błędów (PEA) i probabilistyczna redukcja błędów (PEC). |
slow_gates | Nighthawk | Nie dotyczy | Przepływy pracy estymacji obserwabli, które używają łagodzenia błędów, takiego jak ZNE, PEA i PEC. |
Na przykład:
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")
Gdy używasz slow_gates_ac, przesyłaj wszystkie zadania przepływu pracy w jednej sesji, aby były uruchamiane, dopóki szum urządzenia pozostaje stabilny.
Sprawdź czasy trwania bramek
Ponieważ kalibracje wolnych bramek wydłużają czasy trwania bramek cz, porównaj je z kalibracją domyślną, aby zrozumieć wpływ na swój obwód. Użyj targetu backendu, aby znaleźć czas trwania bramki cz w sekundach dla konkretnej pary kubitów:
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)
Ponieważ target odzwierciedla wybraną kalibrację, transpiluj swoje obwody względem backendu, który używa tego samego calibration_id, na którym planujesz je uruchomić.
Następne kroki
- Dowiedz się, jak wykonywać obwody dynamiczne z pomiarami w środku obwodu.
- Użyj postselekcji, aby odfiltrować wyniki dotknięte skorelowanym szumem.
- Przeczytaj, jak komputery kwantowe IBM są monitorowane, kalibrowane i testowane pod względem wydajności.