Skip to main content
IBM Quantum Platform

Estimador

class Estimator(mode=None, options=None)

GitHub

Bases: BaseEstimatorV2

Primitiva «Estimator» del lado del cliente para IBM Quantum Compute (antes Qiskit Runtime ).

Se trata de una implementación de Estimator basada en la primitiva Executor, que permite un procesamiento transparente por parte del cliente con ciclos de retroalimentación más rápidos y un mayor control por parte del usuario.

Ejemplo

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

Parámetros


Atributos

mode

Devuelve el modo de ejecución utilizado por esta primitiva.

Devuelve

Modo utilizado por esta primitiva, o bien si None no se utiliza ningún modo de ejecución.

options

Tipo: EstimatorOptions

Las opciones de este estimador.


Métodos

backend

backend()

GitHub

Devuelve el backend en el que se ejecutará la consulta primitiva.

Tipo de retorno

BackendV2

finalize_options

finalize_options()

GitHub

Configurar y finalizar las opciones del Estimador.

Este método combina el nivel de resiliencia configurado con la opción proporcionada por el usuario para generar la EstimatorOptions instancia final que se utiliza en una llamada a run().

El proceso utilizado para elaborar las opciones definitivas es el siguiente:

  1. Inicializar un nuevo EstimatorOptions objeto con los valores por defecto determinados por resilience_level.

  2. Aplica las opciones especificadas por el usuario, omitiendo los campos que se hayan dejado en blanco y que None estén destinados a heredar los valores predeterminados del nivel de resiliencia.

  3. Aplicar las dependencias obligatorias entre opciones. En concreto:

    • Al activar la mitigación de mediciones, se activa automáticamente la rotación de mediciones.
    • Al habilitar técnicas de mitigación basadas en puertas (como ZNE basado en PEA o PEC), se habilitan automáticamente tanto el giro de puertas como el de mediciones.

Devuelve

El objeto EstimatorOptions finalizado.

Tipo de retorno

EstimatorOptions

find_unique_layers

find_unique_layers(pubs, types='gates')

GitHub

Devuelve las capas empaquetadas únicas que se encuentran en los PUB especificados.

El número de types capas puede ser o "gates" "all", lo que corresponde únicamente a las capas de puerta o a todas las capas, respectivamente. La lista resultante contiene entonces una instancia de cada capa en recuadro distinta (representada como un CircuitInstruction) que aparece en los PUB de entrada.

Por ejemplo, para el aprendizaje con ruido, mantén solo las capas de puertas 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)

Parámetros

  • pubs (Iterable[EstimatorPubLike]) – La lista de PUB para los que se va a devolver una lista de casillas únicas.
  • types (Literal['gates', 'all']) – Los tipos de capas que se van a devolver. Puede ser tanto como "gates" "all".

Devuelve

Las capas en forma de caja características de un tipo concreto que se encuentran en los PUB indicados.

Tipo de retorno

list de[CircuitInstruction]

run

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

GitHub

Envía una solicitud a la primitiva «estimator».

En el caso de cargas de trabajo moderadas y complejas, el procesamiento del lado del cliente que se lleva a cabo para asignar las entradas del estimador a las del ejecutor puede requerir muchos recursos y provocar un retraso entre la invocación de la función y el job envío de la misma. Para comprobar el progreso de la llamada, se recomienda configurar el registro (con un nivel INFO de registro); consulta la información sobre el registro de IBM Quantum Compute para obtener más detalles.

Parámetros

  • pubs (Iterable[EstimatorPubLike]) – Un iterable de objetos similares a «pub». Por ejemplo, una lista de circuitos y observables o tuplas (circuit, observables, parameter_values).
  • precision (float | None) – La precisión objetivo para las estimaciones del valor esperado de cada estimador «pub» que no especifique su propia precisión. Si None, options.default_precision se utilizará el valor de.
  • dry_run (bool) – Si True, realiza una simulación sin ejecutar el trabajo en una QPU. Este modo permite validar el trabajo, calcular el consumo y obtener metadatos sobre la sincronización de los circuitos. Los resultados devueltos conservan el esquema esperado, pero contienen datos ficticios aleatorios en lugar de resultados de medición reales o simulados. A diferencia de los backends ficticios, el procesamiento de esta simulación se lleva a cabo en el lado del servidor, por lo que es posible que la tarea no finalice de inmediato y que el acceso a esta función esté restringido.

Devuelve

El trabajo enviado.

Subidas

  • ValueError – Si no se proporciona el backend.
  • IBMInputValueError – Si no se proporcionan valores de rango, si no se especifica correctamente la precisión o si se detectan opciones no admitidas.

Tipo de retorno

RuntimeJobV2 | LocalRuntimeJob

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.