Sari la conținutul principal

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.

Note despre specificarea opțiunilor pentru primitive
  • 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 options este de tipul Python dataclass. Poți folosi metoda built-in asdict pentru 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

Recommendations