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?

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ściOpisTechnika
0Brak łagodzeniaBrak
1 [Domyślny]Minimalne koszty łagodzenia: łagodzenie błędów odczytuTwirled 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
Uwaga

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.

Ważne

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.

Uwagi

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​

Zalecenia