Skip to main content
IBM Quantum Platform

Introduzione alle opzioni

È possibile utilizzare le opzioni per personalizzare le primitive di IBM Quantum in base alle proprie esigenze.


Struttura

Quando si richiamano le primitive, è possibile passare delle opzioni utilizzando una classe di opzioni o un dizionario. Le opzioni più comuni, come resilience_level, si trovano al primo livello. Altre opzioni sono raggruppate in categorie, come ad esempio execution. Specificare le opzioni nel seguente formato: options.option.sub-option.sub-sub-option = choice. Ad esempio: options.dynamical_decoupling.enable = True.


Valori predefiniti

Se non si specifica un valore per un'opzione, le viene assegnato il valore speciale di Unset e viene utilizzato il valore predefinito del server. Pertanto, il valore predefinito sarà lo stesso indipendentemente dalla versione del codice.

Le tabelle nella sezione "Riepilogo delle classi di opzioni" della guida "Opzioni" di ciascuna primitiva riportano i valori predefiniti.


Imposta opzioni

Le opzioni possono essere definite prima della creazione di una primitiva e passate alla primitiva come istanza della classe delle opzioni o come dizionario. La primitiva ne crea una copia, il che significa che la modifica del dizionario originale o dell'istanza delle opzioni non influisce sulle opzioni gestite dalla primitiva.

Inoltre, è possibile modificare le opzioni dopo che la primitiva è stata creata. Utilizza il flusso di lavoro più adatto alla tua applicazione.

Note sulla definizione delle opzioni primitive
  • È possibile visualizzare le opzioni disponibili durante o dopo l'inizializzazione delle primitive.
  • Se non si specifica un valore per un'opzione, le viene assegnato un valore speciale pari a Unset e vengono utilizzati i valori predefiniti del server.
  • options L'attributo è di dataclass tipo Python. È possibile utilizzare il metodo integrato asdict per convertirlo in un dizionario.

options classe

Quando si crea un'istanza della classe primitiva, è possibile passare un'istanza della options classe. Queste opzioni vengono quindi applicate quando si utilizza run() per eseguire il calcolo. Specificare le opzioni nel seguente formato: options.option.sub-option.sub-sub-option = choice. Ad esempio: options.dynamical_decoupling.enable = True.

Per tutti i dettagli sul corso, consulta SamplerOptions o EstimatorOptions .

L'esempio seguente utilizza la primitiva Estimator, ma la sintassi per le altre primitive è simile.

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)

Dizionario

È possibile specificare le opzioni sotto forma di dizionario al momento dell'inizializzazione di un tipo primitivo.

L'esempio seguente utilizza la primitiva Estimator, ma la sintassi per le altre primitive è simile.

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]},
        },
    },
)

Opzioni di aggiornamento dopo l'inizializzazione

È possibile specificare le opzioni in questo formato: _primitive_.options.option.sub-option.sub-sub-option = choice per usufruire della funzione di completamento automatico, oppure utilizzare il update() metodo per effettuare aggiornamenti in blocco.

Non è necessario istanziare la classe delle opzioni della primitiva (EstimatorOptions o SamplerOptions) se si impostano le opzioni dopo aver inizializzato la primitiva.

L'esempio seguente utilizza la primitiva Estimator, ma la sintassi per le altre primitive è simile.

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}
)

Passi successivi

Suggerimenti
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.