Especificar las opciones del muestreador
El código de esta página se ha desarrollado teniendo en cuenta los siguientes requisitos. Recomendamos utilizar estas versiones o posteriores.
qiskit[all]~=2.5.0 qiskit-ibm-runtime~=0.47.0
Puedes utilizar las opciones para personalizar la primitiva Sampler. Esta sección se centra en cómo especificar las opciones primitivas de « Qiskit Runtime ». Aunque la interfaz del método run() de las primitivas es común a todas las implementaciones, sus opciones no lo son. Consulte las referencias de la API correspondientes para obtener información sobre las opciones qiskit.primitives.BackendSamplerV2 qiskit_aer.primitives.SamplerV2 y.
Configurar opciones del muestreador
Puedes configurar las opciones al inicializar Sampler, una vez inicializado Sampler, o bien actualizar las opciones después de que Sampler se haya inicializado. Para obtener instrucciones sobre cómo utilizar estas técnicas, consulta el tema «Introducción a las opciones ».
Además, puedes establecer el shots valor en el run() método, tal y como se describe en la siguiente sección.
Método Run()
Los únicos valores que se run() pueden pasar son los definidos en la interfaz. Es decir, shots. Esto sobrescribe cualquier valor establecido para default_shots en la ejecución actual.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
sampler = Sampler(mode=backend)
# Default shots to use if not specified in run()
sampler.options.default_shots = 500
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)Output:
<RuntimeJobV2('d9bjiq3v6alc73ct5690', 'sampler')>
Casos especiales
Intentos
El SamplerV2.run método admite dos argumentos: una lista de PUB, cada uno de los cuales puede especificar un valor específico de « PUB » para «shots», y un argumento de palabra clave «shots». Estos valores de toma forman parte de la interfaz de ejecución del muestreador y son independientes de las opciones del muestreador en tiempo de ejecución. Tienen prioridad sobre cualquier valor especificado como opción, con el fin de cumplir con la abstracción de Sampler.
Sin embargo, si no shots se especifica mediante ninguna opción de « PUB » ni en el argumento de la palabra clave «run» (o si todos son None ), se utiliza el valor de «shots» de las opciones, en particular default_shots.
En resumen, este es el orden de prioridad para especificar tomas en el Sampler, para cualquier « PUB » concreto:
- Si el archivo « PUB » especifica el número de tomas, utilice ese valor.
- Si se especifica el argumento
shotsde palabra clave enrun, utilice ese valor. - Si
twirlingestá habilitado (True por defecto), se utiliza el producto denum_randomizationsyshots_per_randomization, tal y como se especifica en las opcionestwirlingde. - Si
sampler.options.default_shotsse especifica, utilice ese valor.
Por lo tanto, si se especifican tomas en todos los lugares posibles, se utiliza la que tiene mayor prioridad (las tomas especificadas en el archivo « PUB »).
Aunque las selecciones especificadas en « PUB » y en run tienen mayor prioridad, la tarea falla si twirling está habilitado y el producto de num_randomizations y shots_per_randomization es menor que el shots valor de. num_randomizationsEn este caso, SamplerV2 no es posible distribuir los disparos entre los especificados.
Ejemplo:
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
# Setting shots during primitive initialization
sampler = Sampler(mode=backend, options={"default_shots": 4096})
# Setting options after primitive initialization
# This uses auto-complete.
sampler.options.default_shots = 2000
# This does bulk update. The value for default_shots is overridden
# if you specify shots with run() or in the PUB.
sampler.options.update(
default_shots=1024, dynamical_decoupling={"sequence_type": "XpXm"}
)
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)Output:
<RuntimeJobV2('d9bjirnu62qs738pbieg', 'sampler')>
Opciones disponibles
La siguiente tabla recoge las opciones de la última versión de qiskit-ibm-runtime. Para ver versiones anteriores de las opciones, visita la qiskit-ibm-runtime referencia de la API y selecciona una versión anterior.
El número total de disparos que se utilizarán por circuito y por configuración.
Opciones : número entero >= 0
Valor predeterminado : Ninguno
Controlar los ajustes de mitigación de errores de desacoplamiento dinámico.
dynamical_decouplingDocumentación de la APIOpciones :
True,FalsePor defecto :
FalseOpciones :
middle,edgesPor defecto :
middleOpciones:
asap,alapPredeterminado:alapOpciones:
XX,XpXm,XY4Predeterminado:XXOpciones:
True,FalsePredeterminado:False
environmentDocumentación de la APILista de etiquetas.
Opciones : Ninguna
Valor predeterminado : Ninguno
Opciones : DEBUG, INFO, WARNING, ERROR, CRITICAL
Por defecto : ADVERTENCIA
Opciones :
True,FalsePor defecto :
False
executionDocumentación de la APISi se deben restablecer los qubits al estado fundamental en cada disparo.
Opciones :
True,FalsePor defecto :
TrueEl intervalo de tiempo entre una medición y el circuito cuántico posterior.
Opciones : Valor dentro del rango proporcionado por
backend.rep_delay_rangePor defecto : lo establece
backend.default_rep_delayOpciones :
classified,kerneled,avg_kerneledPor defecto :
classified
Limita la duración de un trabajo, en segundos. Consulte la guía sobre el tiempo máximo de ejecución para obtener más información.
Opciones : número entero de segundos comprendido entre [1 y 10 800]
Valor predeterminado : 10800 (3 horas)
Opciones que se deben pasar al simular un backend
simulatorDocumentación de la APIOpciones : Lista de nombres de puertas básicas a las que se va a desarrollar
Por defecto : el conjunto de todas las puertas básicas compatibles con el simulador Qiskit Aer
Opciones : Lista de interacciones dirigidas entre dos qubits
Valor predeterminado : Ninguno, lo que implica que no hay restricciones de conectividad (conectividad total).
Opciones : Qiskit Aer NoiseModel o su representación
Valor predeterminado : Ninguno
Opciones : Número entero
Valor predeterminado : Ninguno
Opciones de giro
twirlingDocumentación de la APIOpciones : Verdadero, Falso
Valor predeterminado : False
Opciones : Verdadero, Falso
Valor predeterminado : False
Opciones :
auto, número entero >= 1Por defecto :
autoOpciones :
auto, número entero >= 1Por defecto :
autoOpciones :
active,active-circuit,active-accum,allPor defecto :
active-accum
Opciones experimentales, cuando estén disponibles.
Compatibilidad de características
Algunas funciones de tiempo de ejecución no se pueden utilizar conjuntamente en un mismo trabajo. Haga clic en la pestaña correspondiente para ver una lista de las funciones que son incompatibles con la función seleccionada:
Incompatible con:
- Desacoplamiento dinámico
Otras observaciones:
- La rotación de puertas se puede aplicar a circuitos dinámicos, pero solo a las puertas que no se encuentren dentro de bloques condicionales. La rotación de mediciones solo se puede aplicar a las mediciones de terminales.
- Compatible con puertas fraccionarias cuando se utiliza
qiskit-ibm-runtimev0.42.0 o una versión posterior.
Incompatible con:
- Circuitos dinámicos
Incompatible con:
- Giro de la puerta
Compatible con circuitos dinámicos cuando se utiliza
qiskit-ibm-runtimev0.42.0 o una versión posterior.Incompatible con:
- Puertas fraccionarias
- Estiramientos
Otras observaciones:
- La rotación de puertas se puede aplicar a circuitos dinámicos, pero solo a las puertas que no se encuentren dentro de bloques condicionales.
- La rotación de la medición solo se puede aplicar a las mediciones en los terminales.
- El giro de la medida es incompatible con la
storeinstrucción. - No funciona con enredadores que no sean Clifford.
Próximos pasos
- Consulte la guía «Introducción a las opciones ».
- Encontrarás más detalles sobre los
SamplerV2métodos en la referencia de la API de Sampler. - Decide en qué modo de ejecución quieres ejecutar tu tarea.
- Descubre cómo gestionar el ruido con Sampler.