Skip to main content
IBM Quantum Platform

Referencia de la API de QESEM de Qedma

  • Qiskit Functions

    Qiskit Functions — Herramientas preconfiguradas creadas por organizaciones asociadas — que abstraen partes del flujo de trabajo de desarrollo de software para simplificar y acelerar el descubrimiento de algoritmos y el desarrollo de aplicaciones a escala industrial. Haz clic aquí para ver la guía de esta función de Qiskit.


Entradas

pubs

Tipo: EstimatorPubLike

Esta es la entrada principal. Contiene entre Pub 2 y 4 elementos: un circuito, una o varias magnitudes observables, 0 o un único conjunto de valores de parámetros y una precisión opcional. Si no se ha especificado una precisión, se utilizará la default_precision del «from options ».

La precisión de « PUB » puede ser un valor flotante o un diccionario. Un valor de tipo «float» establece la precisión deseada para los valores esperados devueltos. Un diccionario asocia los factores de escala del ruido a las precisiones deseadas y solicita los resultados del ajuste cuasiprobabilístico del error (QET) en las escalas especificadas.

QESEM también devolverá factores de escala complementarios en torno a 1.0; la precisión deseada solo está garantizada para los factores de escala solicitados.

  • Obligatorio: Sí
  • Ejemplo:[(circuit, [obs1,obs2,obs3], parameter_values, 0.03)]
  • Ejemplo de QET: [(circuit, [obs1, obs2], None, {0.5: 0.15, 1.3: 0.2})]

backend_name

Tipo: `str`

Valor predeterminado: QESEM will get least busy device reported by IBM

Nombre del backend que se va a utilizar

  • Requisito: No
  • Ejemplo:"ibm_fez"

instance

Tipo: `str`

El nombre del recurso en la nube de la instancia que se va a utilizar en ese formato

  • Requisito: No
  • Ejemplo:"CRN"

Opciones

Tipo: `dict`

Las opciones de entrada para esta función se especifican como un diccionario anidado. Consulte la lista completa de opciones y sus valores predeterminados.

  • Requisito: No
  • Ejemplo:{ "default_precision": 0.03, "max_execution_time": 3600, "transpilation_level": "standard"}

Lista de opciones

estimate_time_only

Valor predeterminado: None

Esta opción permite a los usuarios obtener una estimación del tiempo de QPU necesario para ejecutar el circuito con QESEM.

  • Si se selecciona «Ninguno», el circuito se ejecutará con QESEM.
  • Si se establece en "analytical", se calcula un límite superior del tiempo de la QPU sin consumir nada de la capacidad de la QPU. Esta estimación tiene una resolución de 30 minutos (por ejemplo, 30 minutos, 60 minutos, 90 minutos, etc.). Por lo general, es pesimista y solo se puede obtener para observables de Pauli individuales o sumas de observables de Pauli cuyos soportes no se solapan (por ejemplo, Z0+Z1 ). Es útil principalmente para comparar los niveles de complejidad de los distintos parámetros introducidos por el usuario (circuito, precisión, etc.).
  • Para obtener una estimación más precisa del tiempo de la QPU, active esta opción "empirical". Aunque esta opción requiere ejecutar un número reducido de simulaciones, ofrece una estimación del tiempo de la QPU considerablemente más precisa. Esta estimación tiene una resolución de 5 minutos (por ejemplo, 20 minutos, 25 minutos, 30 minutos, y así sucesivamente). El usuario puede optar por ejecutar la estimación empírica del tiempo en modo por lotes o en modo de sesión. Para obtener más información, consulte la execution_mode descripción. Por ejemplo, en modo por lotes, la estimación empírica del tiempo consumirá menos de 10 minutos de tiempo de la QPU.
  • Opciones: "analytical" / "empirical" / Ninguna
default_precision

Valor predeterminado: 0.02

Se aplicará a pubs aquellos que no tengan precisión. La precisión indica el error admisible en los valores esperados de las magnitudes observables, expresado en valor absoluto. Concretamente, el tiempo de ejecución de la QPU para la mitigación se determinará de modo que proporcione valores de salida para todas las variables observables de interés que se encuentren dentro de un intervalo de confianza de 1 σ\sigma respecto a la precisión objetivo. Si se proporcionan varias variables observables, la mitigación se ejecutará hasta que se alcance la precisión objetivo para cada una de las variables observables de entrada.

  • Opciones: 0 < float
max_execution_time

Valor predeterminado: 3,600 (one hour)

Te permite limitar el tiempo de la QPU, expresado en segundos, que se utilizará para todo el proceso QESEM. El valor por defecto es de 3.600 segundos (una hora). Dado que el tiempo total de la QPU necesario para alcanzar la precisión deseada se determina de forma dinámica durante la ejecución del trabajo QESEM, este parámetro te permite limitar el coste del experimento. Si el tiempo de la QPU, determinado dinámicamente, es inferior al tiempo asignado por el usuario, este parámetro no afectará al experimento. Este max_execution_time parámetro resulta especialmente útil en los casos en que la estimación del tiempo de análisis proporcionada por QESEM antes de que comience el trabajo es demasiado pesimista y el usuario desea iniciar un trabajo de mitigación de todos modos. Una vez alcanzado el límite de tiempo, QESEM deja de enviar nuevos circuitos. Los circuitos que ya se han enviado siguen ejecutándose (por lo que el tiempo total puede superar el límite en hasta 30 minutos), y el usuario recibe los resultados procesados de los circuitos que se han ejecutado hasta ese momento. Si deseas aplicar un límite de tiempo de la QPU inferior al tiempo estimado para el análisis, consulta con Qedma para obtener una estimación de la precisión que se puede alcanzar dentro de ese límite de tiempo.

  • Opciones: 0 ≤ número entero ≤ 28 800 (8 horas)
transpilation_level

Valor predeterminado: standard

Una vez enviado un circuito a QESEM, este genera automáticamente varias transpilaciones alternativas del circuito y elige la que minimiza el tiempo de ejecución en la QPU. Por ejemplo, otras implementaciones podrían utilizar puertas RZZ fraccionarias optimizadas mediante Qedma para reducir la profundidad del circuito. Por supuesto, todas las transformaciones son equivalentes al circuito de entrada en lo que respecta a su salida ideal. Para ejercer un mayor control sobre la transpilación del circuito, configura el nivel de transpilación en el archivo options. Si bien "transpilation_level": "standard" se corresponde con el comportamiento predeterminado descrito anteriormente, "transpilation_level": "minimal_with_layout_opt" solo incluye las modificaciones mínimas necesarias en el circuito original; por ejemplo, la asignación del circuito al gráfico de conectividad del dispositivo. Ten en cuenta que, en cualquier caso, se aplica una asignación automática del hardware a qubits de alta fidelidad.

transpilation_level
Descripción
«estándar»Transpilación predeterminada de QESEM. Prepara varias compilaciones alternativas y elige la que minimiza el tiempo de CPU. Las barreras pueden modificarse durante la etapa de estratificación.
"minimal_with_layout_opt"Transpilación mínima: el circuito mitigado se parecerá mucho al circuito de entrada desde el punto de vista estructural. Los circuitos proporcionados en este nivel deben coincidir con el conjunto de puertas básicas del dispositivo, por lo que deberás transpilar tu circuito al conjunto de puertas básicas del dispositivo por separado. Por ejemplo: CX, Rzz(α) y las puertas estándar de un solo qubit (U, x, sx, rz, etc.). En la fase de estratificación se respetarán las barreras.

Para trabajos que contengan varios PUB de entrada o varias instancias de circuitos vinculadas a parámetros, utilice "minimal_with_layout_opt".

  • Opciones: «minimal_with_layout_opt» / «standard»
execution_mode

Valor predeterminado: batch

El usuario puede elegir entre ejecutar el trabajo de QESEM en una sesión dedicada de IBM o en varios lotes de IBM :

  • Modo de sesión : Las sesiones son más caras, pero permiten obtener resultados más rápidamente. Una vez iniciada la sesión, la QPU queda reservada exclusivamente para el trabajo de QESEM. El cálculo del tiempo de ejecución incluye tanto el tiempo dedicado a la ejecución en la QPU como los cálculos clásicos asociados (realizados por QESEM y IBM ). La función QESEM Qiskit se encarga de crear y cerrar la sesión automáticamente. Para los usuarios con acceso ilimitado a las QPU (por ejemplo, en entornos locales), se recomienda utilizar el modo de sesión para acelerar la ejecución de QESEM.

  • Modo por lotes : En el modo por lotes, la QPU queda libre durante los cálculos clásicos, lo que se traduce en un menor uso de la QPU. Dado que los trabajos por lotes suelen prolongarse durante un periodo más largo, existe un mayor riesgo de que se produzcan desviaciones en el hardware; QESEM incorpora medidas para detectar y compensar dichas desviaciones, lo que garantiza la fiabilidad durante ejecuciones prolongadas.

  • Opciones: "session" / "batch"

parallel_execution

Valor predeterminado: True

Esta opción permite al usuario ejecutar el circuito de entrada en paralelo en la QPU. QESEM comprueba si los demás parches de la QPU tienen la fidelidad suficiente. Si dichos parches reducen el tiempo de la QPU, QESEM ejecuta el circuito de entrada en dichos parches en paralelo. Los resultados de los parches se combinan mediante la ponderación por varianza inversa.

  • Ejemplo: Un usuario quiere ejecutar un circuito de 8 qubits en ibm_marrakesh, un dispositivo de 156 qubits, con parallel_execution=True. QESEM crea nueve copias del circuito transpilado, cada una de ellas asignada a un bloque distinto de 8 qubits en el grafo de conectividad de Marrakesh. Tras la ejecución, el usuario recibe un único valor esperado y una barra de error para cada observable de entrada.

  • Opciones: "False" / "True"

description

Valor predeterminado: None

Descripción opcional que se adjuntará al trabajo de QESEM.

Caution

La estimación del tiempo de la QPU varía de un backend a otro. Por lo tanto, al ejecutar la función QESEM, asegúrate de hacerlo en el mismo backend que se seleccionó al obtener la estimación del tiempo de la QPU.

Note

QESEM finalizará su ejecución cuando alcance la precisión deseada o cuando llegue max_execution_timea, lo que ocurra primero.

Note

Las operaciones de barrera se utilizan habitualmente para especificar las capas de las puertas de dos qubits en los circuitos cuánticos. Con "minimal_with_layout_opt", QESEM conserva las capas especificadas por las barreras. Con "standard", las capas especificadas por las barreras se consideran una alternativa de transpilación a la hora de minimizar el tiempo de la QPU.


Resultados

El resultado de la función QESEM es un PrimitiveResult, que contiene un PubResult por cada entrada PUB y metadatos a nivel de trabajo.

Se puede acceder a cada PubResult uno de ellos mediante la indexación del PrimitiveResult y contiene un campo data y un metadata campo.

  • El data campo contiene, como mínimo, una matriz de valores esperados (PubResult.data.evs) y una matriz de errores estándar (PubResult.data.stds). También puede contener más datos, dependiendo de las opciones utilizadas.

  • El metadata campo contiene metadatos a nivel de « PUB » (PubResult.metadata), incluidos los resultados detallados de QESEM y las métricas de ejecución.

Entre los campos más habituales PubResult.metadata se encuentran:

Campo
Descripción
resultsResultados del QESEM por circuito y por magnitud observable.
noisy_resultsValores esperados sin mitigar y barras de error, cuando estén disponibles.
transpiled_circsInformación sobre el circuito transpilado, incluidas las asignaciones de qubits y el número de bases de medición.
total_qpu_timeTiempo de CPU utilizado por el trabajo.
gate_fidelitiesFidelidades de puerta medidas durante el experimento.
total_shotsNúmero total de tomas utilizadas en el trabajo.
mitigation_shotsNúmero de disparos utilizados para la mitigación.
resource_usageDesglose del uso de recursos para el trabajo.

Los detalles del QESEM por observable se almacenan en metadata["results"]. Los resultados se agrupan primero por instancia de circuito y, a continuación, por observable. Cada entrada observable puede incluir el resultado de QESEM (qesem), el resultado sin mitigación (unmitigated), los resultados de escalado del ruido (noise_scaling) y los resultados heurísticos de QESEM (qesem_heuristic).

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