EstimatorV2
class EstimatorV2(mode=None, options=None)
Bases: BasePrimitiveV2[EstimatorOptions], Estimator, BaseEstimatorV2
EstimatorV2 primitiva para IBM Quantum Compute (antes Qiskit Runtime ).
IBM Quantum Compute El servicio «Estimator primitive» calcula los valores esperados de los circuitos cuánticos y las observables.
La página run() puede utilizarse para enviar circuitos, observables y parámetros a la primitiva Estimator.
Tras la construcción, se utiliza un estimador llamando a su método run() con una lista de PUB (bloques unificados primitivos). Cada PUB contiene cuatro valores que, juntos, definen una unidad de trabajo de cálculo que debe completar el estimador:
- un único
QuantumCircuitposiblemente parametrizado, cuyo estado final definimos como , - uno o más observables (especificados como cualquier
ObservablesArrayLike, incluyendoPauli,SparsePauliOp,str) que especifican qué valores de expectativa estimar, denotados , y - una colección de conjuntos de valores de parámetros con los que vincular el circuito, .
- una precisión objetivo opcional para las estimaciones del valor de expectativa.
He aquí un ejemplo de cómo se utiliza el estimador.
from qiskit.circuit.library import real_amplitudes
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService, EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
psi = real_amplitudes(num_qubits=2, reps=2)
hamiltonian = SparsePauliOp.from_list([("II", 1), ("IZ", 2), ("XI", 3)])
theta = [0, 1, 1, 2, 3, 5]
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_psi = pm.run(psi)
isa_observables = hamiltonian.apply_layout(isa_psi.layout)
estimator = Estimator(mode=backend)
# calculate [ <psi(theta)|hamiltonian|psi(theta)> ]
job = estimator.run([(isa_psi, isa_observables, [theta])])
pub_result = job.result()[0]
print(f"Expectation values: {pub_result.data.evs}")Parámetros
-
mode (BackendV2 | Session |Batch | str | None) –
El modo de ejecución utilizado para realizar la consulta primitiva. Puede ser:
- A
Backendsi está utilizando el modo trabajo. - A
Sessionsi está utilizando el modo de ejecución de sesión. - A
Batchsi está utilizando el modo de ejecución por lotes.
Consulte el IBM Quantum Compute documentación para obtener más información sobre el
Execution modes. - A
-
options (dict | options.EstimatorOptions | None) – Opciones del estimador; consulta
EstimatorOptionspara obtener una descripción detallada.
Atributos
mode
Devuelve el modo de ejecución utilizado por esta primitiva.
Devuelve
Modo utilizado por esta primitiva, o None si no se utiliza un modo de ejecución.
options
Opciones de devolución.
version
Valor predeterminado: 2
Métodos
backend
run
run(pubs, *, precision=None, dry_run=False)
Envíe una solicitud al estimador primitivo.
Parámetros
- pubs (Iterable[EstimatorPubLike]) – Un iterable de objetos de tipo «pub» (bloques primitivos unificados), como tuplas
(circuit, observables)o(circuit, observables, parameter_values). - precision (float | None) – La precisión objetivo para las estimaciones del valor esperado de cada ejecución de Estimator Pub que no especifique su propia precisión. En ese caso
None, se utilizará el valor de precisión predeterminado del estimador. - 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 realiza 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
Trabajo presentado.
Eleva
ValueError - si el valor de precisión no es estrictamente mayor que 0.
Tipo de retorno