Skip to main content
IBM Quantum Platform

Estimateur

class Estimator(mode=None, options=None)

GitHub

Bases : BaseEstimatorV2

Primitive « Estimator » côté client pour IBM Quantum Compute (anciennement Qiskit Runtime ).

Il s'agit d'une implémentation d'Estimator reposant sur la primitive Executor, qui permet un traitement transparent côté client, avec des boucles de rétroaction plus rapides et un contrôle accru pour l'utilisateur.

Exemple

from qiskit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime.executor_estimator import Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

# Create a simple circuit
circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)

# Define observable
observable = SparsePauliOp.from_list([("ZZ", 1), ("XX", 1)])

# Run the estimator with options
estimator = Estimator(mode=backend)
estimator.options.default_precision = 0.01
estimator.options.execution.init_qubits = True
job = estimator.run([(circuit, observable)])
result = job.result()

Paramètres

  • mode (BackendV2 | Session |Batch | None) –

    Le mode d'exécution utilisé pour effectuer la requête primitive. Les valeurs peuvent être les suivantes :

    • A si BackendV2 vous utilisez le mode « job ».
    • A Session si vous utilisez le mode d'exécution en session.
    • A Batch si vous utilisez le mode d'exécution par lots.

    Pour plus d'informations sur les modes d'exécution, consultez la documentation relative à l' IBM Quantum Compute.

  • options (EstimatorOptions) – Options de l'estimateur. Consultez cette page EstimatorOptions pour découvrir toutes les options disponibles.


Attributs

mode

Renvoie le mode d'exécution utilisé par cette primitive.

Retours

Mode utilisé par cette primitive, ou None si aucun mode d'exécution n'est utilisé.

options

Type : EstimatorOptions

Les options de cet estimateur.


Méthodes

backend

backend()

GitHub

Renvoie le backend sur lequel la requête primitive sera exécutée.

Type de retour

BackendV2

finalize_options

finalize_options()

GitHub

Définir et finaliser les options de l'estimateur.

Cette méthode combine le niveau de résilience configuré et l'option fournie par l'utilisateur pour générer l'instance EstimatorOptions finale utilisée dans un appel à run().

Le processus utilisé pour aboutir aux options définitives est le suivant :

  1. Initialiser un nouvel EstimatorOptions objet avec les valeurs par défaut déterminées par resilience_level.

  2. Appliquer les options définies par l'utilisateur, en ignorant les champs laissés vides, qui None sont censés hériter des valeurs par défaut relatives au niveau de résilience.

  3. Appliquer les dépendances obligatoires entre les options. Spécifiquement :

    • L'activation de l'atténuation des mesures active automatiquement la rotation des mesures.
    • L'activation des techniques d'atténuation basées sur les portes (telles que le ZNE basé sur PEA ou le PEC) active automatiquement à la fois la rotation des portes et celle des mesures.

Retours

L'objet EstimatorOptions finalisé.

Type de retour

EstimatorOptions

find_unique_layers

find_unique_layers(pubs, types='gates')

GitHub

Renvoie les couches « boxed » uniques présentes dans les PUB spécifiés.

Le nombre de types couches peut être soit "gates" soit "all", ce qui correspond respectivement aux seules couches de grille ou à l'ensemble des couches. La liste renvoyée contient alors une instance de chaque couche encadrée distincte (représentée par un CircuitInstruction) figurant dans les PUB d'entrée.

Par exemple, pour l'apprentissage du bruit, ne conservez que les couches de portes de qubits :

est = Estimator(mode, options)
est.options.resilience.pec_mitigation = True

layers = est.find_unique_layers(pubs, types="gates")

results = NoiseLearnerV3(mode).run(layers).result()
pauli_linblad_maps = results.to_pauli_lindblad_maps()

# Assign the learned model so PEC uses it on the next run.
est.options.resilience.layer_noise_model = zip(layers, pauli_linblad_maps)

Paramètres

  • pubs (Iterable[EstimatorPubLike]) – La liste des PUB pour lesquels il faut renvoyer une liste de cases uniques.
  • types (Literal['gates', 'all']) – Les types de couches à renvoyer. Cela peut être soit "gates" soit "all".

Retours

Les couches en forme de boîte caractéristiques d'un certain type, observées dans les PUB concernés.

Type de retour

liste[CircuitInstruction]

run

run(pubs, *, precision=None, dry_run=False)

GitHub

Envoyer une requête à la primitive « estimator ».

Pour les charges de travail modérées et complexes, le traitement côté client nécessaire pour mettre en correspondance les entrées de l'estimateur avec celles de l'exécuteur peut mobiliser d'importantes ressources et entraîner un délai entre l'appel de la fonction et la job soumission de celle-ci. Afin de suivre l'avancement de l'appel, il est recommandé de configurer la journalisation (avec un niveau INFO de journalisation); pour plus d'informations, consultez la documentation disponible à l'adresse IBM Quantum Compute.

Paramètres

  • pubs (Iterable[EstimatorPubLike]) – Une collection d'objets de type « pub ». Par exemple, une liste de circuits et d'observables ou de tuples (circuit, observables, parameter_values).
  • precision (float | None) – Précision cible pour les estimations de la valeur attendue de chaque estimateur « pub » qui ne précise pas sa propre précision. Si None, la valeur de options.default_precision sera utilisée.
  • dry_run (bool) – Si True, effectue une simulation sans exécuter la tâche sur un QPU. Ce mode permet de valider la tâche, d'estimer la consommation et de récupérer les métadonnées relatives à la synchronisation des circuits. Les résultats renvoyés respectent le schéma attendu, mais contiennent des données factices aléatoires plutôt que des résultats de mesure réels ou simulés. Contrairement aux backends fictifs, le traitement de cette simulation s'effectue côté serveur; il se peut donc que la tâche ne soit pas exécutée immédiatement et que l'accès à cette fonctionnalité soit restreint.

Retours

Le travail soumis.

Augmentations

  • ValueError – Si aucun backend n'est fourni.
  • IBMInputValueError – Si aucune publication n'est fournie, si la précision n'est pas correctement spécifiée ou si des options non prises en charge sont détectées.

Type de retour

RuntimeJobV2 | LocalRuntimeJob

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.