Estimateur
class Estimator(mode=None, options=None)
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
BackendV2vous utilisez le mode « job ». - A
Sessionsi vous utilisez le mode d'exécution en session. - A
Batchsi 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.
- A si
-
options (EstimatorOptions) – Options de l'estimateur. Consultez cette page
EstimatorOptionspour 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()
Renvoie le backend sur lequel la requête primitive sera exécutée.
Type de retour
BackendV2
finalize_options
finalize_options()
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 :
-
Initialiser un nouvel
EstimatorOptionsobjet avec les valeurs par défaut déterminées parresilience_level. -
Appliquer les options définies par l'utilisateur, en ignorant les champs laissés vides, qui
Nonesont censés hériter des valeurs par défaut relatives au niveau de résilience. -
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
find_unique_layers
find_unique_layers(pubs, types='gates')
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)
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 deoptions.default_precisionsera 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