Skip to main content
IBM Quantum Platform

Qiskit Paulice

qiskit-paulice Es un paquete para integrar comprobaciones de Pauli eficientes desde el punto de vista del hardware en circuitos de Clifford arbitrarios con conectividades de qubits arbitrarias, utilizando códigos estabilizadores de espacio-tiempo. Estas comprobaciones pueden utilizarse para detectar errores lógicos durante la ejecución del circuito. La selección posterior de únicamente aquellas muestras en las que no se hayan detectado errores puede mejorar la fidelidad de los estados muestreados con un procesador cuántico, a costa de algunos qubits auxiliares y de un aumento de la sobrecarga de muestreo. Este método resulta especialmente adecuado para el hardware a corto plazo, ya que supone una carga mucho menor en cuanto a qubits y puertas en comparación con la computación cuántica tolerante a fallos, al tiempo que ofrece una mejor carga de muestreo que los métodos de mitigación de errores como ZNE o PEC [1].

Aunque las comprobaciones de Pauli en el espaciotiempo pueden utilizarse para implementar rutinas autónomas de detección de errores, también son relevantes en el contexto de la mitigación y la corrección de errores. La detección de errores puede complementar las técnicas de mitigación de errores, como la cancelación probabilística de errores (PEC), al captar parte del ruido que afecta a las puertas lógicas y a las mediciones, lo que reduce el impacto de la inversión del canal de ruido y, por lo tanto, reduce la sobrecarga de muestreo. También pueden considerarse un primer paso hacia la tolerancia a fallos práctica, ya que la implementación de códigos estabilizadores para proteger los qubits de datos frente a errores lógicos es un concepto fundamental de la corrección de errores tradicional. Dado que este método permite acceder al estado cuántico en una sola medida, puede utilizarse tanto en flujos de trabajo basados en el muestreo como en aquellos basados en el valor esperado.


cómo empezar

En la guía de inicio rápido encontrarás una guía sencilla que te ayudará a empezar a utilizar este paquete rápidamente.


Ejemplos de casos de uso

Esta técnica se ha utilizado para mejorar la fidelidad de las muestras obtenidas en circuitos dominados por Clifford de hasta 50 qubits y 2.450 puertas de entrelazamiento [1].


Debate técnico

Encontrar buenos conjuntos de comprobaciones de Pauli en el espacio-tiempo

Ilustración de un circuito cuántico

Un conjunto de comprobaciones de Pauli en el espacio-tiempo se considera «bueno» si cada comprobación es válida, de bajo peso y efectiva.

Una comprobación se compone de una serie de rotaciones de Pauli controladas, PP, aplicadas a algunos cables del circuito, ww : {(P1,w1),...,(Pk,wk)}\{(P_1,w_1), ..., (P_k,w_k)\}. Para una comprobación determinada, los controles se aplican a un único qubit auxiliar, y las rotaciones se producen en los cables de un único qubit objetivo. En los circuitos de Clifford, una comprobación es válida si su producto retropropagado es un estabilizador del estado preparado por el circuito ideal: iB(Pi,wi)S\prod_{i}B(P_i,w_i) \in S, donde B(P,w)B(P,w) es el retropropagador de PP desde ww hasta el inicio del circuito, y SS es el conjunto de todos los estabilizadores del circuito.

Una comprobación se considera de bajo peso si requiere pocas puertas de entrelazamiento para su implementación. El algoritmo de selección de cheques dará prioridad a aquellos que tengan un peso reducido y ofrezcan la detección de errores más eficaz.

Una comprobación es eficaz si detecta muchos más errores de los que introduce. Una comprobación de Pauli se compone de varias puertas de entrelazamiento y, por lo tanto, introduce algo de ruido adicional de las puertas en el cálculo. Es importante asegurarse de que cada comprobación adicional aporte una mayor capacidad de detección de errores. La eficacia de un conjunto de comprobaciones puede estimarse combinando los errores de Pauli detectados por dichas comprobaciones en un canal de ruido postseleccionado y calculando su impacto. Minimizar la sobrecarga de muestreo que supone la implementación del canal de ruido inverso no cubierto constituye una heurística sólida para seleccionar buenas comprobaciones, ya que ofrece una indicación del volumen de error que estas comprobaciones no pueden detectar. Un enfoque más lento, pero más realista, consiste en realizar un muestreo de Monte Carlo a partir del estado con ruido y calcular empíricamente la tasa de error lógico de la distribución postseleccionada. Ambos enfoques están disponibles como funciones de coste integradas en la qiskit_paulice.add_pauli_checks función.

Selección a posteriori de muestras en función de los datos del síndrome

En este paquete se implementa una comprobación mediante puertas de entrelazamiento entre un qubit auxiliar y un qubit objetivo. Cada ancilla comienza en un estado de « 0|0\rangle », por lo que « ZancZ_\text{anc} » estabiliza su estado de entrada. La propagación hacia adelante de « ZancZ_\text{anc} » desde el inicio de la ancilla a lo largo de todo el circuito comprobado da como resultado un operador de Pauli en la salida, lo que podría suponer un mayor peso y extenderse hasta el circuito de carga útil. Los índices de los qubits en los que este operador de salida presenta términos distintos de la identidad se denominan «soporte de la comprobación», y la comprobación se supera si los bits, bb, que forman parte del soporte de la comprobación tienen paridad par: i=1bi=0\bigoplus_{i=1} b_i = 0. Se conserva una muestra si cada comprobación da como resultado 00 en su comprobación de paridad.

Características del software

  • Creación automática de modelos de ruido a partir de datos de pruebas de rendimiento del backend
  • Detección de cheques acelerada por Rust
  • Tres algoritmos integrados para la detección de cheques
  • Evaluar la eficacia de las comprobaciones basándose en la sobrecarga de muestreo del canal de ruido inverso postseleccionado o en la tasa de error lógico basada en el muestreo de Monte Carlo del estado con ruido
  • Funcionalidad auxiliar para encontrar pares de qubits auxiliares y de destino para un backend determinado

Problemas conocidos

  • El ruido en ralentí no se transmite a través de NoiseModel.get_backend y se ignora durante la selección de comprobación
  • Aunque muchos pasos estocásticos del algoritmo pueden controlarse mediante una semilla aleatoria, algunas características presentan un componente aleatorio que no puede controlarse con una semilla. En concreto, los siguientes valores de kwargs para add_pauli_checks provocarán una selección indeterminista de comprobaciones: cost="LER", method="genetic", y method="windowed_genetic". Para un comportamiento determinista, utiliza add_pauli_checks(..., cost="gamma", method="windowed"), que son los valores predeterminados.

Trabajos futuros

  • Compatibilidad con sistemas que no sean de Clifford
  • Mayor apoyo para el análisis del canal de ruido postseleccionado
  • Cómo lidiar con el ruido del motor al ralentí al recoger los cheques
  • Aleatoriedad controlable para la función de coste de la tasa de error lógico y los algoritmos de búsqueda genética

contribuir

El código fuente está disponible en GitHub.

La guía para desarrolladores se encuentra en CONTRIBUTING.md, en el directorio raíz del repositorio de este proyecto. Al participar, se espera que respetes el código de conducta de Qiskit.


Citando este paquete

Si utilizas este paquete en tu investigación, utiliza el archivo « CITATION.bib » que se encuentra en el repositorio de este proyecto para citar las referencias correspondientes.


Licencia

Apache Licencia 2.0


Política de obsolescencia

Seguimos el sistema de versionado semántico. Es posible que, de vez en cuando, realicemos cambios que afecten a la compatibilidad con versiones anteriores con el fin de mejorar la experiencia del usuario. Siempre que sea posible, mantendremos las interfaces antiguas y las marcaremos como obsoletas, siempre y cuando puedan coexistir con las nuevas. Cada mejora significativa, cambio que implique incompatibilidad o función en desuso se documentará en las notas de la versión.


Referencias

[1] ( 1, 2 )

Simon Martiel, Ali Javadi-Abhari, «Detección de errores con baja sobrecarga mediante códigos espaciotemporales», arXiv:2504.15725 [quant-ph].

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