Przejdź do głównej treści
Ten projekt jest w wersji beta. Znalazłeś błąd? Otwórz zgłoszenie na GitHub. Masz pytanie lub pomysł? Zapytaj w Discussions — chętnie poznamy Twoją opinię!
Jak oceniasz jakość tłumaczenia tej strony?

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_id podczas 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.

InstrukcjaOpisTypowy przypadek użyciaUżycie w QiskitRodzina procesorów
measure_2Krótszy impuls pomiarowyPomiary w środku obwoduMidCircuitMeasure (v0.43.0 lub nowsza)Heron, Nighthawk r2
reset_2Krótszy warunkowy impuls resetu, który używa measure_2Reset kubitu w środku obwoduMidCircuitReset (v0.49.0 lub nowsza)Heron
measure_resetPomiar taki jak measure, który dodatkowo resetuje kubit*Pomiar i reset kubituMeasureReset (v0.50.0 lub nowsza)Heron, Nighthawk r2
measure_reset_2Krótszy pomiar taki jak measure_2, który dodatkowo resetuje kubit*Pomiar i reset kubitu w środku obwoduZainicjuj MeasureReset z name="measure_reset_2" (v0.50.0 lub nowsza)Heron, Nighthawk r2
xslowBramka odwracająca bit (X) o wydłużonym czasie trwaniaPostselekcja i łagodzenie błędów. Jest to wartość domyślna opcji x_pulse_type w przebiegach postselekcjiWszystkie

. | 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)
uwaga

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 kalibracjiRodzina procesorówBias TLSZalecane dla
Brak (kalibracja domyślna)WszystkieDC (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_dcHeronDCPrzepł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_acHeronACPrzepł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_gatesNighthawkNie dotyczyPrzepł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")
wskazówka

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​

Zalecenia