Sari la conținutul principal
Acest proiect este în versiune beta. Ai găsit o eroare? Deschide un issue pe GitHub. Ai o întrebare sau o idee? Întreabă în Discussions — ne-ar plăcea să aflăm părerea ta!
Cum este calitatea traducerii pe această pagină?

Introducere în opțiuni

Poți folosi opțiuni pentru a personaliza primitivele IBM Quantum î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

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# from qiskit_ibm_runtime.options import EstimatorOptions

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
from qiskit_ibm_runtime.options_models 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

# 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 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 este nevoie să fie 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

# 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(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​

Recomandări