Qiskit Paulice
qiskit-paulice es un paquete para incorporar comprobaciones de Pauli eficientes en hardware en circuitos Clifford arbitrarios sobre conectividades de qubits arbitrarias, utilizando códigos estabilizadores espaciotemporales. Estas comprobaciones se pueden usar para detectar errores lógicos durante la ejecución del circuito. Posseleccionar solo las muestras sin errores detectados 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 es especialmente adecuado para el hardware a corto plazo, ya que tiene una sobrecarga mucho menor en qubits y puertas que la computación cuántica tolerante a fallos, y a la vez una sobrecarga de muestreo mejor que la de los métodos de mitigación de errores como ZNE o PEC [1].
Aunque las comprobaciones de Pauli espaciotemporales pueden usarse para implementar rutinas independientes 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 técnicas de mitigación como la cancelación probabilística de errores (PEC) al capturar parte del ruido que afecta a las puertas y a las mediciones, reduciendo el impacto del canal de ruido que se invierte y, por tanto, la sobrecarga de muestreo. También pueden verse como un primer paso hacia una tolerancia a fallos práctica, ya que implementar códigos estabilizadores para proteger los qubits de datos frente a errores lógicos es un concepto central de la corrección de errores tradicional. Como este método ofrece acceso de un solo shot al estado cuántico, puede usarse tanto en flujos de trabajo basados en muestreo como en los basados en valores esperados.
Primeros pasos
Una guía sencilla para empezar rápidamente con este paquete está disponible en la guía de inicio rápido.
Ejemplos de casos de uso
Esta técnica se ha usado para mejorar la fidelidad de las muestras de circuitos dominados por puertas Clifford, utilizando 97 qubits físicos para codificar 2415 puertas entrelazantes lógicas en 70 qubits lógicos [2].
Discusión técnica
Cómo encontrar buenos conjuntos de comprobaciones de Pauli espaciotemporales
Un conjunto de comprobaciones de Pauli espaciotemporales es «bueno» si cada comprobación es válida, de bajo peso y eficaz.
Una comprobación consta de varias rotaciones de Pauli controladas, , situadas en algunos cables del circuito, : . Para una comprobación dada, los controles están en un único qubit auxiliar y las rotaciones se aplican sobre cables de un único qubit objetivo. Para circuitos Clifford, una comprobación es válida si su producto retropropagado es un estabilizador del estado preparado por el circuito ideal: , donde es el retropropagador de desde hasta el comienzo del circuito y es el conjunto de todos los estabilizadores del circuito.
Una comprobación es de bajo peso si requiere pocas puertas entrelazantes para implementarse. El algoritmo de selección de comprobaciones favorecerá las de bajo peso que proporcionen la detección de errores más eficaz.
Una comprobación es eficaz si captura mucho más error del que introduce. Una comprobación de Pauli consta de varias puertas entrelazantes y, por tanto, introduce algo de ruido adicional de puertas en el cálculo. Es importante asegurarse de que cada comprobación adicional aporte alguna capacidad adicional de detección de errores. La eficacia de un conjunto de comprobaciones puede aproximarse componiendo los errores de Pauli que las comprobaciones descubren en un canal de ruido posseleccionado y calculando su impacto. Minimizar la sobrecarga de muestreo para implementar el canal de ruido inverso descubierto es una heurística sólida para seleccionar buenas comprobaciones, ya que indica cuánto error no pueden detectar las comprobaciones. Un enfoque más lento pero más realista consiste en realizar un muestreo de Monte Carlo del estado ruidoso y calcular empíricamente la tasa de error lógico de la distribución posseleccionada. Ambos enfoques están disponibles como funciones de coste integradas en la función qiskit_paulice.add_pauli_checks.
Posselección de muestras a partir de los datos de síndrome
En este paquete, una comprobación se implementa mediante puertas entrelazantes entre un qubit auxiliar y un qubit objetivo. Cada qubit auxiliar comienza en , por lo que estabiliza su estado de entrada. Propagar hacia delante desde el comienzo del qubit auxiliar a través de todo el circuito con comprobaciones produce un operador de Pauli en la salida, que puede tener mayor peso y extenderse hacia el circuito de carga útil. Los índices de qubit en los que este operador de salida tiene términos distintos de la identidad se denominan el soporte de la comprobación, y la comprobación se supera si los bits, , en el soporte de la comprobación tienen paridad par: . Una muestra se conserva si cada comprobación produce en su comprobación de paridad.
Características del software
-
Creación automática de modelos de ruido a partir de datos de benchmarking del backend
-
Búsqueda de comprobaciones acelerada con Rust
-
3 algoritmos integrados para la búsqueda de comprobaciones
-
Compatibilidad con el dopaje de puertas RZ
-
Compatibilidad para combinar la detección de errores con la mitigación de errores
Problemas conocidos
-
El ruido de inactividad no se proporciona mediante
NoiseModel.get_backendy se ignora durante la selección de comprobaciones -
Aunque muchos pasos estocásticos del algoritmo pueden controlarse con una semilla aleatoria, algunas características tienen una aleatoriedad que no se puede controlar con una semilla. En concreto, los siguientes valores de argumentos de
add_pauli_checksprovocarán una selección de comprobaciones no determinista:cost="LER",method="genetic"ymethod="windowed_genetic". Para un comportamiento determinista, usaadd_pauli_checks(..., cost="gamma", method="windowed"), que son los valores predeterminados.
Trabajo futuro
-
Gestión del ruido de inactividad al elegir las comprobaciones
-
Aleatoriedad controlable para la función de coste de tasa de error lógico y los algoritmos de búsqueda genéticos
Contribuir
El código fuente está disponible en GitHub.
La guía para desarrolladores se encuentra en CONTRIBUTING.md, en la raíz del repositorio de este proyecto. Al participar, se espera que respetes el código de conducta de Qiskit.
Cómo citar este paquete
Si usas este paquete en tu investigación, utiliza el archivo CITATION.bib del repositorio de este proyecto para citar las referencias adecuadas.
Licencia
Política de obsolescencia
Seguimos el versionado semántico. Ocasionalmente podemos introducir cambios incompatibles para mejorar la experiencia del usuario. Cuando sea posible, mantendremos las interfaces antiguas y las marcaremos como obsoletas, siempre que puedan coexistir con las nuevas. Cada mejora sustancial, cambio incompatible u obsolescencia quedará documentado en las notas de la versión.
Referencias
-
Simon Martiel, Ali Javadi-Abhari, Low-overhead error detection with spacetime codes, arXiv:2504.15725 [quant-ph].
-
Simon Martiel, et al., Sampling hard circuits with verifiably high fidelity, arXiv:2607.25941 [quant-ph].