Konfiguracja zarządzania szumem w Estimator
Wersje pakietów
Kod na tej stronie został opracowany przy użyciu następujących wymagań. Zalecamy używanie tych lub nowszych wersji.
qiskit-ibm-runtime~=0.47.0
Istnieje kilka sposobów zarządzania szumem, zazwyczaj za pomocą różnych technik łagodzenia błędów i tłumienia błędów, aby zapobiec wystąpieniu błędów. Techniki te zwykle powodują narzut w fazie wstępnego przetwarzania. Dlatego ważne jest, aby znaleźć równowagę między doskonaleniem wyników a zapewnieniem, że zadanie zostanie ukończone w rozsądnym czasie.
Estimator obsługuje następujące techniki zarządzania szumem. Zobacz Techniki łagodzenia i tłumienia błędów, aby zapoznać się z wyjaśnieniem każdej z nich. Zobacz sekcję Niestandardowe ustawienia zarządzania szumem, aby zobaczyć przykład włączania tych technik.
Dynamiczne rozprzęganie
Jak włączyć: options.dynamical_decoupling.enable = True
Dokumentacja API: DynamicalDecouplingOptions
Istotne opcje: sequence_type
Twirling Pauliego
Jak włączyć: options.twirling.enable_gates = True
Dokumentacja API: TwirlingOptions
Istotne opcje: num_randomizations, shots_per_randomization
TREX
Jak włączyć: options.resilience.measure_mitigation = True
Dokumentacja API: MeasureNoiseLearningOptions
Istotne opcje:
ZNE
Jak włączyć: options.resilience.zne_mitigation = True
Dokumentacja API: ZneOptions
Istotne opcje: noise_factors, extrapolator
PEA
Jak włączyć: (Musisz też włączyć ZNE) options.resilience.zne_mitigation = True i options.resilience.zne.amplifier = "pea"
Dokumentacja API: ZneOptions
Istotne opcje: noise_factors, extrapolator
PEC
Jak włączyć: options.resilience.pec_mitigation = True
Dokumentacja API: PecOptions
Istotne opcje: max_overhead
Poziom odporności
resilience_level określa, jaki poziom odporności na błędy ma zostać zapewniony. Wyższe poziomy generują dokładniejsze wyniki kosztem dłuższego czasu przetwarzania. Poziomy odporności można wykorzystać do skonfigurowania kompromisu kosztów/dokładności przy stosowaniu zarządzania szumem do zapytania prymitywu. Zarządzanie szumem redukuje błędy (obciążenie) w wynikach przez przetwarzanie wyjść z kolekcji, czyli zespołu powiązanych obwodów. Stopień redukcji błędów zależy od zastosowanej metody. Poziom odporności ukrywa szczegóły wyboru metody zarządzania szumem, aby umożliwić użytkownikom rozważanie kompromisu kosztów/dokładności odpowiedniego dla ich zastosowania.
Mając to na uwadze, każdy poziom odpowiada metodzie lub metodom o rosnącym poziomie narzutu pobierania próbek kwantowych, co pozwala ci eksperymentować z różnymi kompromisami czasu i dokładności. Poniższa tabela pokazuje, które poziomy i odpowiadające im metody są dostępne dla każdego z prymitywów.
| Poziom odporności | Opis | Technika |
|---|---|---|
| 0 | Brak łagodzenia | Brak |
| 1 [Domyślny] | Minimalne koszty łagodzenia: łagodzenie błędów odczytu | Twirled Readout Error eXtinction (TREX) z twirlingiem pomiarowym |
| 2 | Średnie koszty łagodzenia. Zazwyczaj redukuje obciążenie estymatorów, ale nie gwarantuje zerowego obciążenia. | Poziom 1 + Zero Noise Extrapolation (ZNE) i twirling bramek |
Poziomy odporności są obecnie w fazie beta, więc narzut pobierania próbek i jakość rozwiązań będą się różnić w zależności od obwodu. Nowe funkcje, zaawansowane opcje i narzędzia zarządzania będą wydawane na bieżąco. Nie ma gwarancji, że określone metody zarządzania szumem będą stosowane na każdym poziomie odporności.
Konfiguracja Estimator z poziomami odporności
Możesz używać poziomów odporności do określania technik zarządzania szumem lub możesz indywidualnie ustawiać niestandardowe techniki, jak opisano w Niestandardowe ustawienia zarządzania szumem.
Wszelkie opcje, które ustawiasz ręcznie, oprócz poziomu odporności, są stosowane jako uzupełnienie podstawowego zestawu opcji zdefiniowanych przez poziom odporności. Dlatego w zasadzie możesz ustawić poziom odporności na 1, ale następnie wyłączyć łagodzenie błędów pomiarowych, choć nie jest to zalecane.
Na przykład ustawienie poziomu odporności na 0 wyłącza zne_mitigation, ale estimator.options.resilience.zne_mitigation = True nadpisuje tę wartość.
Przykład
Poniższy kod włącza ZNE, TREX i twirling bramek przez
ustawienie resilience_level 2.
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Setting options during primitive initialization
estimator = Estimator(backend, options={"resilience_level": 2})
Niestandardowe ustawienia zarządzania szumem
Możesz włączać i wyłączać poszczególne metody zarządzania szumem, korzystając z opcji Estimator.
- Nie wszystkie opcje działają razem w przypadku wszystkich typów obwodów. Szczegóły znajdziesz w tabeli zgodności funkcji.
- Jeśli używasz nowego Estimator po stronie klienta, wprowadzonego w
qiskit-ibm-runtimev0.50.0, do użycia PEA i PEC wymagane jest osobne zadanie uczenia szumu. Więcej informacji znajdziesz w Migracja z Sampler i Estimator po stronie serwera do wersji po stronie klienta.
Pełny przykład z wieloma opcjami
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
estimator = Estimator(backend)
options = estimator.options
# Turn on gate twirling.
options.twirling.enable_gates = True
# Turn on measurement error mitigation.
options.resilience.measure_mitigation = True
print(
f">>> gate twirling is turned on: {estimator.options.twirling.enable_gates}"
)
print(
f">>> measurement error mitigation is turned on: "
f"{estimator.options.twirling.enable_gates}"
)
>>> gate twirling is turned on: True
>>> measurement error mitigation is turned on: True
Wyłączenie wszystkich mechanizmów łagodzenia błędów
Instrukcje dotyczące wyłączenia wszystkich mechanizmów łagodzenia błędów znajdziesz w sekcji Wyłączenie wszystkich mechanizmów tłumienia i łagodzenia błędów w przewodniku po opcjach Estimator.
Następne kroki
- Przejdź przez przykład używający łagodzenia błędów w lekcji funkcji kosztu w IBM Quantum Learning.
- Dowiedz się więcej o technikach łagodzenia i tłumienia błędów.
- Zapoznaj się z opcjami Estimator.
- Zdecyduj, w jakim trybie wykonania uruchomić swoje zadanie.