Skip to main content
IBM Quantum Platform

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:

  1. Si el archivo « PUB » especifica el número de tomas, utilice ese valor.
  2. Si se especifica el argumento shots de palabra clave en run, utilice ese valor.
  3. Si twirling está habilitado (True por defecto), se utiliza el producto de num_randomizations y shots_per_randomization, tal y como se especifica en las opciones twirling de.
  4. Si sampler.options.default_shots se 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 »).

Note

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

    default_shots Documentación de la API

  • Controlar los ajustes de mitigación de errores de desacoplamiento dinámico.

    dynamical_decoupling Documentación de la API

    • Opciones : True, False

      Por defecto : False

    • Opciones : middle, edges

      Por defecto : middle

    • Opciones: asap, alap Predeterminado: alap

    • Opciones: XX, XpXm, XY4 Predeterminado: XX

    • Opciones: True, False Predeterminado: False

  • environment Documentación de la API

    • Lista de etiquetas.

      Opciones : Ninguna

      Valor predeterminado : Ninguno

    • Opciones : DEBUG, INFO, WARNING, ERROR, CRITICAL

      Por defecto : ADVERTENCIA

    • Opciones : True, False

      Por defecto : False

  • execution Documentación de la API

    • Si se deben restablecer los qubits al estado fundamental en cada disparo.

      Opciones : True, False

      Por defecto : True

    • El intervalo de tiempo entre una medición y el circuito cuántico posterior.

      Opciones : Valor dentro del rango proporcionado por backend.rep_delay_range

      Por defecto : lo establece backend.default_rep_delay

    • Opciones : classified, kerneled, avg_kerneled

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

    max_execution_time Documentación de la API

  • Opciones que se deben pasar al simular un backend

    simulator Documentación de la API

    • Opciones : 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

    twirling Documentación de la API

    • Opciones : Verdadero, Falso

      Valor predeterminado : False

    • Opciones : Verdadero, Falso

      Valor predeterminado : False

    • Opciones : auto, número entero >= 1

      Por defecto : auto

    • Opciones : auto, número entero >= 1

      Por defecto : auto

    • Opciones : active, active-circuit, active-accum, all

      Por 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 store instrucción.
    • No funciona con enredadores que no sean Clifford.

Próximos pasos

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