Introducere în opțiuni
Poți folosi opțiuni pentru a personaliza primitivele Qiskit Runtime în funcție de nevoi.
Structură
Când apelezi primitivele, poți transmite opțiuni folosind o clasă de opțiuni sau un dicționar. Opțiunile utilizate frecvent, precum resilience_level, se află la primul nivel. Alte opțiuni sunt grupate în categorii, cum ar fi execution. Specifică opțiunile în acest format: options.option.sub-option.sub-sub-option = choice. De exemplu: options.dynamical_decoupling.enable = True.
Valori implicite
Dacă nu specifici o valoare pentru o opțiune, aceasta primește valoarea specială Unset și se folosește valoarea implicită de pe server. Astfel, valoarea implicită va fi aceeași indiferent de versiunea codului tău.
Tabelele din secțiunea „Rezumat clase de opțiuni" de pe ghidul „opțiuni" al fiecărei primitive listează valorile implicite.
Setează opțiunile
Opțiunile pot fi definite înainte de a construi o primitivă și transmise acesteia ca instanță a clasei de opțiuni sau ca dicționar. Primitiva face o copie a lor, ceea ce înseamnă că modificarea dicționarului original sau a instanței de opțiuni nu afectează opțiunile deținute de primitivă.
În plus, poți modifica opțiunile după construirea primitivei. Folosește fluxul de lucru care se potrivește cel mai bine aplicației tale.
- Poți vedea opțiunile disponibile în timpul sau după inițializarea primitivei.
- Dacă nu specifici o valoare pentru o opțiune, aceasta primește valoarea specială
Unsetși se folosesc valorile implicite de pe server. - Atributul
optionseste de tipul Pythondataclass. Poți folosi metoda built-inasdictpentru a-l converti într-un dicționar.
Clasa options
Când creezi o instanță a clasei primitivei, poți transmite o instanță a clasei options. Acele opțiuni sunt apoi aplicate când folosești run() pentru a efectua calculul. Specifică opțiunile în acest format: options.option.sub-option.sub-sub-option = choice. De exemplu: options.dynamical_decoupling.enable = True.
Consultă SamplerOptions sau EstimatorOptions pentru detalii complete despre clasă.
Exemplul următor folosește primitiva Estimator, dar sintaxa pentru alte primitive este similară.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit_ibm_runtime.options import EstimatorOptions
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
options = EstimatorOptions(
resilience_level=2,
resilience={"zne_mitigation": True, "zne": {"noise_factors": [1, 3, 5]}},
)
# or...
options = EstimatorOptions()
options.resilience_level = 2
options.resilience.zne_mitigation = True
options.resilience.zne.noise_factors = [1, 3, 5]
estimator = Estimator(mode=backend, options=options)
Dicționar
Poți specifica opțiunile ca dicționar la inițializarea unei primitive.
Exemplul următor folosește primitiva Estimator, dar sintaxa pentru alte primitive este similară.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Setting options during initialization
estimator = Estimator(
backend,
options={
"resilience_level": 2,
"resilience": {
"zne_mitigation": True,
"zne": {"noise_factors": [1, 3, 5]},
},
},
)
Actualizează opțiunile după inițializare
Poți specifica opțiunile în acest format: _primitive_.options.option.sub-option.sub-sub-option = choice pentru a beneficia de auto-completare, sau folosești metoda update() pentru actualizări în bloc.
Clasa de opțiuni a primitivei (EstimatorOptions sau SamplerOptions) nu trebuie instanțiată dacă setezi opțiunile după inițializarea primitivei.
Exemplul următor folosește primitiva Estimator, dar sintaxa pentru alte primitive este similară.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
estimator = Estimator(mode=backend)
# Setting options after initialization
# This uses auto-complete.
estimator.options.default_precision = 0.01
# This does bulk update.
estimator.options.update(
default_precision=0.02, resilience={"zne_mitigation": True}
)
Pașii următori
- Găsești detalii despre cum să configurezi suprimarea erorilor și atenuarea erorilor.
- Află mai multe despre opțiunile Estimator.
- Află mai multe despre opțiunile Sampler.
- Află mai multe despre opțiunile Executor.