Wprowadzenie do opcji
Możesz przekazywać opcje do prymitywów, aby dostosować je do swoich potrzeb. Ta sekcja koncentruje się na opcjach prymitywów Qiskit Runtime. Chociaż interfejs metody run() prymitywów jest wspólny dla wszystkich implementacji, ich opcje już takie nie są. Zapoznaj się z odpowiednimi dokumentacjami API, aby uzyskać informacje o opcjach qiskit.primitives i qiskit_aer.primitives.
Przegląd
Struktura
Wywołując prymitywy, możesz przekazać opcje, używając klasy opcji lub słownika. Często używane opcje, takie jak resilience_level, znajdują się na pierwszym poziomie. Inne opcje są pogrupowane w różne kategorie, takie jak execution. Pełne szczegóły znajdziesz w sekcji Ustawianie opcji prymitywów.
Wartości domyślne
Jeśli nie podasz wartości dla danej opcji, otrzyma ona specjalną wartość Unset i zostanie użyta domyślna wartość serwera. Oznacza to, że wartość domyślna będzie taka sama niezależnie od wersji kodu.
Tabele w sekcji Podsumowanie klas opcji zawierają listę wartości domyślnych.
Ustawianie opcji
Opcje można zdefiniować przed skonstruowaniem prymitywu i przekazać do niego — prymityw tworzy ich kopię. Można to zrobić jako zagnieżdżony słownik lub korzystając z klas opcji. Ponadto po skonstruowaniu prymitywu jego opcje można zmieniać. Wybierz sposób pracy, który najlepiej odpowiada Twojej aplikacji. Szczegóły znajdziesz w sekcji Określanie opcji.
Podsumowanie klas opcji
- Estimator
- Sampler
- Dynamical decoupling: Opcje dynamicznego rozsprzęgania.
- Environment: Opcje środowiska wykonania, takie jak poziom logowania oraz tagi zadania.
- Execution: Opcje wykonania prymitywu, m.in. czy inicjować Qubity oraz opóźnienie powtórzenia.
- Resilience: Zaawansowane opcje konfiguracji metod łagodzenia błędów, takich jak łagodzenie błędów pomiarowych, ZNE i PEC.
- Simulator: Opcje symulatora, takie jak bramy bazowe, ziarno symulatora i mapa sprzężenia. Dotyczy wyłącznie trybu lokalnego testowania.
- Twirling: Opcje twirlingowe, takie jak czy stosować twirling bram dwu-qubitowych oraz liczba pomiarów dla każdej losowej próbki.
- Dynamical decoupling: Opcje dynamicznego rozsprzęgania.
- Environment: Opcje środowiska wykonania, takie jak poziom logowania oraz tagi zadania.
- Execution: Opcje wykonania prymitywu, m.in. czy inicjować Qubity oraz opóźnienie powtórzenia.
- Simulator: Opcje symulatora, takie jak bramy bazowe, ziarno symulatora i mapa sprzężenia. Dotyczy wyłącznie trybu lokalnego testowania.
- Twirling: Opcje twirlingowe, takie jak czy stosować twirling bram dwu-qubitowych oraz liczba pomiarów dla każdej losowej próbki.
Dostępne opcje
Poniższa tabela dokumentuje opcje z najnowszej wersji qiskit-ibm-runtime. Aby zapoznać się ze starszymi wersjami opcji, odwiedź dokumentację API qiskit-ibm-runtime i wybierz poprzednią wersję.
- Estimator
- Sampler
default_shots
default_shotsŁączna liczba pomiarów (shots) używanych na obwód na konfigurację.
Dopuszczalne wartości: Liczba całkowita >= 0
Domyślna wartość: None
default_precision
default_precisionDomyślna precyzja używana dla każdego PUB lub wywołania run(), które jej nie określa.
Dopuszczalne wartości: Liczba zmiennoprzecinkowa > 0
Domyślna wartość: 0.015625 (1 / sqrt(4096))
dynamical_decoupling
dynamical_decouplingSteruje ustawieniami łagodzenia błędów przez dynamiczne rozsprzęganie.
Dokumentacja API dynamical_decoupling
dynamical_decoupling.enable
dynamical_decoupling.enableDopuszczalne wartości: True, False
Domyślna wartość: False
dynamical_decoupling.extra_slack_distribution
dynamical_decoupling.extra_slack_distributionDopuszczalne wartości: middle, edges
Domyślna wartość: middle
dynamical_decoupling.scheduling_method
dynamical_decoupling.scheduling_methodDopuszczalne wartości: asap, alap
Domyślna wartość: alap
dynamical_decoupling.sequence_type
dynamical_decoupling.sequence_typeDopuszczalne wartości: XX, XpXm, XY4
Domyślna wartość: XX
dynamical_decoupling.skip_reset_qubits
dynamical_decoupling.skip_reset_qubitsDopuszczalne wartości: True, False
Domyślna wartość: False
environment
environmentenvironment.callback
environment.callbackFunkcja wywoływalna (callable), która otrzymuje Job ID oraz wynik zadania (Job result).
Dopuszczalne wartości: None
Domyślna wartość: None
environment.job_tags
environment.job_tagsLista tagów.
Dopuszczalne wartości: None
Domyślna wartość: None
environment.log_level
environment.log_levelDopuszczalne wartości: DEBUG, INFO, WARNING, ERROR, CRITICAL
Domyślna wartość: WARNING
environment.private
environment.privateDopuszczalne wartości: True, False
Domyślna wartość: False
execution
executionexecution.init_qubits
execution.init_qubitsCzy resetować Qubity do stanu podstawowego przed każdym pomiarem.
Dopuszczalne wartości: True, False
Domyślna wartość: True
execution.rep_delay
execution.rep_delayOpóźnienie między pomiarem a kolejnym obwodem kwantowym.
Dopuszczalne wartości: Wartość w zakresie podanym przez backend.rep_delay_range
Domyślna wartość: Określona przez backend.default_rep_delay
max_execution_time
max_execution_timeDopuszczalne wartości: Liczba całkowita sekund w zakresie [1, 10800]
Domyślna wartość: 10800 (3 godziny)
resilience
resilienceZaawansowane opcje odporności umożliwiające precyzyjne dostrojenie strategii odporności.
resilience.layer_noise_learning
resilience.layer_noise_learningOpcje uczenia się szumu warstwy.
resilience.layer_noise_learning.layer_pair_depths
resilience.layer_noise_learning.layer_pair_depthsDopuszczalne wartości: list[int] od 2 do 10 wartości w zakresie [0, 200]
Domyślna wartość: (0, 1, 2, 4, 16, 32)
resilience.layer_noise_learning.max_layers_to_learn
resilience.layer_noise_learning.max_layers_to_learnDopuszczalne wartości: None, Liczba całkowita >= 1
Domyślna wartość: 4
resilience.layer_noise_learning.num_randomizations
resilience.layer_noise_learning.num_randomizationsDopuszczalne wartości: Liczba całkowita >= 1
Domyślna wartość: 32
resilience.layer_noise_learning.shots_per_randomization
resilience.layer_noise_learning.shots_per_randomizationDopuszczalne wartości: Liczba całkowita >= 1
Domyślna wartość: 128
resilience.layer_noise_model
resilience.layer_noise_modelDopuszczalne wartości: NoiseLearnerResult, Sequence[LayerError]
Domyślna wartość: None
resilience.measure_mitigation
resilience.measure_mitigationDopuszczalne wartości: True, False
Domyślna wartość: True
resilience.measure_noise_learning
resilience.measure_noise_learningOpcje uczenia się szumu pomiarowego.
resilience.measure_noise_learning.num_randomizations
resilience.measure_noise_learning.num_randomizationsDopuszczalne wartości: Liczba całkowita >= 1
Domyślna wartość: 32
resilience.measure_noise_learning.shots_per_randomization
resilience.measure_noise_learning.shots_per_randomizationDopuszczalne wartości: Liczba całkowita, auto
Domyślna wartość: auto
resilience.pec_mitigation
resilience.pec_mitigationDopuszczalne wartości: True, False
Domyślna wartość: False
resilience.pec
resilience.pecOpcje łagodzenia błędów metodą probabilistycznego anulowania błędów (PEC).
resilience.pec.max_overhead
resilience.pec.max_overheadDopuszczalne wartości: None, Liczba całkowita >= 1
Domyślna wartość: 100
resilience.pec.noise_gain
resilience.pec.noise_gainDopuszczalne wartości: auto, liczba zmiennoprzecinkowa w zakresie [0, 1]
Domyślna wartość: auto
resilience.zne_mitigation
resilience.zne_mitigationDopuszczalne wartości: True, False
Domyślna wartość: False
resilience.zne
resilience.zneresilience.zne.amplifier
resilience.zne.amplifierDopuszczalne wartości: gate_folding, gate_folding_front, gate_folding_back, pea
Domyślna wartość: gate_folding
resilience.zne.extrapolated_noise_factors
resilience.zne.extrapolated_noise_factorsDopuszczalne wartości: Lista liczb zmiennoprzecinkowych
Domyślna wartość: [0, *noise_factors]
resilience.zne.extrapolator
resilience.zne.extrapolatorDopuszczalne wartości: Jedna lub więcej spośród: exponential, linear, double_exponential, polynomial_degree_(1 <= k <= 7), fallback
Domyślna wartość: (exponential, linear)
resilience.zne.noise_factors
resilience.zne.noise_factorsDopuszczalne wartości: Lista liczb zmiennoprzecinkowych; każda liczba >= 1
Domyślna wartość: (1, 1.5, 2) dla PEA, w pozostałych przypadkach (1, 3, 5)
resilience_level
resilience_levelPoziom odporności na błędy. Wyższe poziomy generują dokładniejsze wyniki kosztem dłuższego czasu przetwarzania.
Dopuszczalne wartości: 0, 1, 2
Domyślna wartość: 1
seed_estimator
seed_estimatorsimulator
simulatorOpcje przekazywane podczas symulacji Backend
simulator.basis_gates
simulator.basis_gatesDopuszczalne wartości: Lista nazw bram bazowych, do których należy rozwinąć obwód
Domyślna wartość: Zbiór wszystkich bram bazowych obsługiwanych przez symulator Qiskit Aer
simulator.coupling_map
simulator.coupling_mapDopuszczalne wartości: Lista skierowanych interakcji dwu-qubitowych
Domyślna wartość: None, co oznacza brak ograniczeń łączności (pełna łączność).
simulator.noise_model
simulator.noise_modelDopuszczalne wartości: Qiskit Aer NoiseModel lub jego reprezentacja
Domyślna wartość: None
simulator.seed_simulator
simulator.seed_simulatorDopuszczalne wartości: Liczba całkowita
Domyślna wartość: None
twirling
twirlingOpcje twirlingowe
twirling.enable_gates
twirling.enable_gatesDopuszczalne wartości: True, False
Domyślna wartość: False
twirling.enable_measure
twirling.enable_measureDopuszczalne wartości: True, False
Domyślna wartość: True
twirling.num_randomizations
twirling.num_randomizationsDopuszczalne wartości: auto, Liczba całkowita >= 1
Domyślna wartość: auto
twirling.shots_per_randomization
twirling.shots_per_randomizationDopuszczalne wartości: auto, Liczba całkowita >= 1
Domyślna wartość: auto
twirling.strategy
twirling.strategyDopuszczalne wartości: active, active-circuit, active-accum, all
Domyślna wartość: active-accum
experimental
experimentalOpcje eksperymentalne, jeśli są dostępne.
default_shots
default_shotsŁączna liczba pomiarów (shots) używanych na obwód na konfigurację.
Dopuszczalne wartości: Liczba całkowita >= 0
Domyślna wartość: None
dynamical_decoupling
dynamical_decouplingSteruje ustawieniami łagodzenia błędów przez dynamiczne rozsprzęganie.
Dokumentacja API dynamical_decoupling
dynamical_decoupling.enable
dynamical_decoupling.enableDopuszczalne wartości: True, False
Domyślna wartość: False
dynamical_decoupling.extra_slack_distribution
dynamical_decoupling.extra_slack_distributionDopuszczalne wartości: middle, edges
Domyślna wartość: middle
dynamical_decoupling.scheduling_method
dynamical_decoupling.scheduling_methodDopuszczalne wartości: asap, alap
Domyślna wartość: alap
dynamical_decoupling.sequence_type
dynamical_decoupling.sequence_typeDopuszczalne wartości: XX, XpXm, XY4
Domyślna wartość: XX
dynamical_decoupling.skip_reset_qubits
dynamical_decoupling.skip_reset_qubitsDopuszczalne wartości: True, False
Domyślna wartość: False
environment
environmentexecution
executionexecution.init_qubits
execution.init_qubitsCzy resetować Qubity do stanu podstawowego przed każdym pomiarem.
Dopuszczalne wartości: True, False
Domyślna wartość: True
execution.rep_delay
execution.rep_delayOpóźnienie między pomiarem a kolejnym obwodem kwantowym.
Dopuszczalne wartości: Wartość w zakresie podanym przez backend.rep_delay_range
Domyślna wartość: Określona przez backend.default_rep_delay
execution.meas_type
execution.meas_typeDopuszczalne wartości: classified, kerneled, avg_kerneled
Domyślna wartość: classified
max_execution_time
max_execution_timeDopuszczalne wartości: Liczba całkowita sekund w zakresie [1, 10800]
Domyślna wartość: 10800 (3 godziny)
simulator
simulatorOpcje przekazywane podczas symulacji Backend
simulator.basis_gates
simulator.basis_gatesDopuszczalne wartości: Lista nazw bram bazowych, do których należy rozwinąć obwód
Domyślna wartość: Zbiór wszystkich bram bazowych obsługiwanych przez symulator Qiskit Aer
simulator.coupling_map
simulator.coupling_mapDopuszczalne wartości: Lista skierowanych interakcji dwu-qubitowych
Domyślna wartość: None, co oznacza brak ograniczeń łączności (pełna łączność).
simulator.noise_model
simulator.noise_modelDopuszczalne wartości: Qiskit Aer NoiseModel lub jego reprezentacja
Domyślna wartość: None
simulator.seed_simulator
simulator.seed_simulatorDopuszczalne wartości: Liczba całkowita
Domyślna wartość: None
twirling
twirlingOpcje twirlingowe
twirling.enable_gates
twirling.enable_gatesDopuszczalne wartości: True, False
Domyślna wartość: False
twirling.enable_measure
twirling.enable_measureDopuszczalne wartości: True, False
Domyślna wartość: False
twirling.num_randomizations
twirling.num_randomizationsDopuszczalne wartości: auto, Liczba całkowita >= 1
Domyślna wartość: auto
twirling.shots_per_randomization
twirling.shots_per_randomizationDopuszczalne wartości: auto, Liczba całkowita >= 1
Domyślna wartość: auto
twirling.strategy
twirling.strategyDopuszczalne wartości: active, active-circuit, active-accum, all
Domyślna wartość: active-accum
experimental
experimentalOpcje eksperymentalne, jeśli są dostępne.
Zgodność funkcji
Ze względu na różnice w procesie kompilacji urządzenia, niektóre funkcje środowiska uruchomieniowego nie mogą być używane razem w jednym zadaniu. Kliknij odpowiednią kartę, aby zobaczyć listę funkcji niezgodnych z wybraną funkcją:
- Obwody dynamiczne
- Dynamiczne rozsprzęganie
- Bramy frakcyjne
- ZNE z fałdowaniem bram
- Twirling bram
- PEA
- PEC
Niezgodne z:
- ZNE z fałdowaniem bram (gate-folding ZNE)
- PEA
- PEC
- Dynamiczne rozsprzęganie
Inne uwagi:
- Może być używane z twirlingiem bram dla bram niewarunkowych.
- Zgodne z bramami frakcyjnymi przy użyciu
qiskit-ibm-runtimew wersji 0.42.0 lub nowszej.
Niezgodne z obwodami dynamicznymi.
Niezgodne z:
- Twirlingiem bram
- PEA
- PEC
Zgodne z obwodami dynamicznymi przy użyciu qiskit-ibm-runtime w wersji 0.42.0 lub nowszej.
Niezgodne z:
- Obwodami dynamicznymi
- PEA
- PEC
Może nie działać przy użyciu niestandardowych bram.
Niezgodne z bramami frakcyjnymi lub rozciągnięciami (stretches).
Inne uwagi:
- Może być używane z obwodami dynamicznymi z bramami niewarunkowymi.
- Nie działa z niekliffordinowymi bramami splątującymi.
Niezgodne z:
- Obwodami dynamicznymi
- Bramami frakcyjnymi
- ZNE z fałdowaniem bram
- PEC
Niezgodne z:
- Obwodami dynamicznymi
- Bramami frakcyjnymi
- ZNE z fałdowaniem bram
- PEA
Kolejne kroki
- Więcej szczegółów na temat metod
EstimatorV2znajdziesz w dokumentacji API Estimator. - Więcej szczegółów na temat metod
SamplerV2znajdziesz w dokumentacji API Sampler. - Zapoznaj się ze szczegółami konfiguracji tłumienia błędów i łagodzenia błędów.
- Dowiedz się, jak określać opcje.