Simulando la naturaleza
Mira este video de Olivia Lanes sobre la simulación de la naturaleza con computadoras cuánticas, o ábrelo en una ventana separada en YouTube.
Esta lección utiliza contenido del siguiente tutorial:
Tutorial de mitigación de errores a escala de utilidad con amplificación probabilística de errores
Introducción
Una de las aplicaciones más atractivas de las computadoras cuánticas es su capacidad para simular fenómenos naturales. En esta lección, exploraremos cómo se usan las computadoras cuánticas para resolver problemas de dinámica cuántica —específicamente, cómo nos ayudan a comprender la evolución temporal de un sistema cuántico.
Primero, daremos un vistazo general a los pasos involucrados en la realización de estas simulaciones. Luego, examinaremos un ejemplo concreto: el experimento que IBM presentó en 2023, que mostró el concepto de utilidad cuántica. Este experimento sirve como un excelente caso de estudio para entender los pasos prácticos e implicaciones de simular dinámica cuántica con hardware cuántico real. Al final, tendrás una imagen más clara de cómo los investigadores abordan estos desafíos y por qué la simulación cuántica tiene tanto potencial para avanzar en nuestra comprensión del mundo natural.
Richard Feynman dio una conferencia muy influyente en Caltech en 1959. Su famoso título era "There's Plenty of Room at the Bottom" (Hay mucho espacio en el fondo), una alusión lúdica a las vastas e inexploradas posibilidades a escala microscópica. Feynman argumentó que gran parte de la física a nivel atómico y subatómico aún estaba por descubrirse.
La importancia de esta charla creció en los años 80 a medida que avanzó la tecnología. Durante este período, Feynman retomó estas ideas en otra conferencia importante en Caltech, presentando un artículo titulado "Simulating Nature with Computers" (Simulando la naturaleza con computadoras). Allí planteó una pregunta audaz: ¿podrían las computadoras realizar simulaciones exactas que repliquen el comportamiento de la naturaleza a nivel cuántico? Feynman sugirió que, en lugar de depender de aproximaciones para modelar procesos atómicos, podríamos usar computadoras que aprovechan las propias leyes de la mecánica cuántica —no solo para modelar la naturaleza, sino para emularla.
Es este tipo de simulación física el que examinaremos a lo largo de esta lección.
Recuerda este gráfico de línea de tiempo introducido en un episodio anterior. En un extremo del espectro vemos problemas que son sencillos de resolver y no requieren la velocidad mejorada que podría aportar la computación cuántica.
En el extremo opuesto se encuentran problemas extremadamente difíciles que requieren máquinas cuánticas completamente tolerantes a fallas —tecnología que aún no está disponible. Afortunadamente, se cree que muchos problemas de simulación caen en algún punto intermedio de esta línea de tiempo, dentro del rango donde las computadoras cuánticas actuales ya pueden aplicarse de manera efectiva. Hay muchas razones para estar entusiasmado e intrigado por esta perspectiva, ya que simular la naturaleza es la base de una amplia gama de aplicaciones prometedoras.
La siguiente información cubre el flujo de trabajo general en las simulaciones de la naturaleza y luego una instancia específica del flujo de trabajo para replicar los resultados de un estudio bien conocido.
Flujo de trabajo general
Antes de poder aplicar la computación cuántica a estas emocionantes áreas, es importante primero entender los pasos básicos de un flujo de trabajo de simulación típico:
- Identificar el Hamiltoniano del sistema
- Codificación del Hamiltoniano
- Preparación del estado
- Evolución temporal del estado
- Optimización del Circuit
- Ejecución del Circuit
- Posprocesamiento
El proceso comienza identificando un sistema cuántico de interés. Esto ayuda a determinar el Hamiltoniano que gobierna su evolución temporal, así como una descripción significativa de sus propiedades iniciales, o su estado. A continuación, debes seleccionar un método apropiado para implementar la evolución temporal de este estado. Ten en cuenta que los primeros cuatro pasos de este flujo de trabajo forman parte del paso de Mapeo en el marco de patrones de Qiskit.
Después de configurar el circuito de evolución temporal, las etapas siguientes implican realizar el experimento real. Esto generalmente incluye optimizar el Circuit cuántico que implementa el algoritmo de evolución temporal, ejecutar el Circuit en hardware cuántico y posprocesar los resultados. Estos son los mismos que los últimos tres pasos en el marco de patrones de Qiskit.
A continuación, analizaremos qué significan estos pasos antes de pasar al código.
1. Identificar el Hamiltoniano del sistema
El primer paso esencial para realizar un experimento de simulación es identificar el Hamiltoniano que describe el sistema. En muchos casos, el Hamiltoniano está bien establecido. Sin embargo, a menudo lo construimos sumando las contribuciones de energía de partes más pequeñas del sistema. Esto se expresa típicamente como una suma de términos:
donde cada término actúa sobre uno de los subsistemas locales (como una sola partícula o un pequeño grupo de partículas) del Hamiltoniano total . En el caso de partículas elementales indistinguibles, es importante determinar si el sistema involucra fermiones o bosones, donde los fermiones obedecen el Principio de Exclusión de Pauli, lo que significa que dos fermiones idénticos no pueden ocupar el mismo estado cuántico, como los electrones. A diferencia de los fermiones, múltiples bosones pueden existir en el mismo estado cuántico, y esta diferencia afecta las estadísticas del sistema y cómo debe modelarse.
En la práctica, las personas suelen estar interesadas en sistemas físicos en los que se presume que los elementos están bien separados o etiquetados, y por lo tanto son distinguibles, como los espines en una red.
Este sistema consiste en espines magnéticos de dipolo dispuestos en una red, tratados como partículas distinguibles mediante el conteo de su posición. Este sistema se describe mediante el Modelo de Ising de Campo Transversal, y su Hamiltoniano se construye a partir de la suma de dos partes:
Donde el primer término representa la energía de interacción entre espines vecinos. Aquí indica que sumamos sobre todos los pares de espines directamente conectados en la red, y son las matrices de Pauli-Z, que representan el estado de los espines en los sitios y , y es la constante de acoplamiento, que define la fuerza de esta interacción. El segundo término representa la influencia de un campo magnético externo aplicado en todo el sistema. Aquí es la matriz de Pauli-X que actúa sobre el espín individual en el sitio , y indica la intensidad de este campo externo.
2. Codificación del Hamiltoniano
El siguiente paso es traducir el Hamiltoniano a una forma que una computadora cuántica pueda procesar, lo que llamamos codificación. Este proceso de codificación depende críticamente del tipo de partículas en los sistemas: distinguibles o indistinguibles, y fermiones o bosones en el caso de partículas indistinguibles.
Si tienes un sistema con partículas distinguibles, como espines fijos en una red, que analizamos brevemente antes, el Hamiltoniano a menudo ya está escrito en un lenguaje compatible con los qubits. El operador de Pauli-Z, por ejemplo, describe naturalmente un espín hacia arriba o hacia abajo, y no se necesita ninguna codificación especial.
Al simular partículas indistinguibles de fermiones o bosones, es necesario aplicar una transformación de codificación. Estas partículas se describen dentro de un marco matemático especial llamado segunda cuantización, que rastrea el número de ocupación de cada estado cuántico introduciendo operadores de creación y aniquilación, donde el operador de creación agrega una partícula al estado mientras que el operador de aniquilación elimina una partícula del estado . Basándose en este marco de segunda cuantización, el fermión puede transformarse mediante Bravyi-Kitaev y Jordan-Wigner. La transformación de Jordan-Wigner define el operador de creación fermiónico
que llena el -ésimo estado cuántico con un fermión y el operador de aniquilación fermiónico que vacía un fermión del estado . Puedes encontrar más detalles de esta transformación de Jordan-Wigner en nuestro Quantum Computing en la Práctica, episodio 5 - Mapeo. De igual manera, los bosones también requieren sus propios métodos de codificación, como la transformación de Holstein-Primakoff, para ser representados por qubits.
En última instancia, ya sea que el camino sea directo o requiera una traducción, el objetivo es el mismo: expresar el Hamiltoniano del sistema en la forma de operadores de espín de Pauli que una computadora cuántica pueda comprender y ejecutar.
3. Preparación del estado
Tras codificar el Hamiltoniano deseado en el conjunto de puertas de la computadora cuántica, el siguiente paso importante es seleccionar un estado cuántico inicial apropiado para comenzar la simulación. La elección del estado inicial influye no solo en la convergencia de algoritmos variacionales como el Variational Quantum Eigensolver (VQE), sino que también afecta la precisión y eficiencia de la evolución temporal y el muestreo. Esencialmente, el estado inicial sirve como punto de partida para el cómputo, sentando las bases para extraer observables útiles del sistema cuántico que se está modelando. Idealmente, este estado debe representar una configuración físicamente significativa del sistema en estudio.
Para muchas simulaciones de química cuántica, el estado de Hartree-Fock puede ser un buen punto de partida. En el lenguaje de la segunda cuantización, el estado de Hartree-Fock () se crea aplicando operadores de creación () para cada uno de los orbitales de menor energía al estado de vacío (), un estado sin electrones.
Además, un ansatz fácilmente preparado con una superposición significativa con el verdadero estado base puede servir como buen estado inicial para problemas de química, como encontrar la energía del estado base.
De manera más general, podemos escribir un estado arbitrario de qubits como una superposición de estados de la base computacional con coeficientes , satisfaciendo las condiciones de normalización. Preparar tal estado se puede abordar generalmente aplicando un operador específico al estado inicial, que por convención es el estado de base estándar de todo ceros.
Sin embargo, este proceso a menudo requiere un número exponencial de puertas CNOT, lo que lo hace generalmente costoso en recursos. A menudo nos enfocamos en preparar estados iniciales cuyas demandas de implementación sean más modestas. Por esta razón, nos centramos frecuentemente en preparar estados iniciales menos complejos. Una elección común y práctica es un estado producto, donde los qubits no están entrelazados, que puede prepararse usando solo operaciones de un solo qubit, reduciendo significativamente las demandas de recursos y la complejidad de la preparación del estado. 4. Evolución temporal del estado
Ahora que el estado inicial está establecido, finalmente podemos comenzar la simulación en sí: examinar cómo el estado del sistema cambió a después de algún tiempo . En mecánica cuántica, esta evolución se describe mediante una única operación matemática llamada operador de evolución temporal:
donde hemos establecido por convención. Aplicar este operador a nuestro estado inicial nos da el estado final:
Sin embargo, construir un Circuit cuántico que implemente directamente el operador completo es típicamente imposible cuando nuestro Hamiltoniano es una suma de diferentes partes. Por lo tanto, necesitamos la Trotterización.
En términos simples, la Trotterización es una técnica para aproximar la exponenciación de una matriz (aquí el Hamiltoniano, ), especialmente cuando el exponente contiene operadores que no conmutan (). Con frecuencia, el Hamiltoniano consta de múltiples operadores que no conmutan. En este caso, no puedes separar sus exponenciales:
Un enfoque útil es aplicar alternativamente sus exponenciales de evolución temporal durante pequeñas duraciones, , un total de veces. En el caso de estas dos contribuciones que no conmutan, escribiríamos
El error introducido por esta aproximación se llama error de Trotter. Podemos reducir este error aumentando , pero esto tiene un costo. También existen fórmulas de orden superior más avanzadas (de segundo orden y otras variantes). Por ejemplo, la fórmula de segundo orden ofrece mayor precisión al aplicar los pasos en un patrón simétrico.
Aquí, es el número de términos que no conmutan, , en el Hamiltoniano que se desglosa de esta manera, y es el número de pequeños pasos temporales en los que se divide esta evolución. Observa el orden inverso de los operadores en el segundo producto del tratamiento de segundo orden.
Consulta la sección de Trotterización en el curso Algoritmos de Diagonalización Cuántica para más detalles. 5. Optimización del Circuit
Tras generar el Circuit trotterizado, el paso de mapeo está completo y podemos proceder a la optimización del Circuit. Este proceso implica varias tareas clave:
- Establecer un diseño de qubits que mapee los qubits abstractos del Circuit a los qubits físicos del hardware. Este paso es necesario porque la arquitectura del hardware a menudo tiene restricciones de conectividad específicas, mientras que los diseños de Circuit cuántico típicamente asumen que cualquier qubit puede interactuar con cualquier otro.
- Insertar puertas swap según sea necesario para habilitar interacciones entre qubits que no están directamente conectados en el dispositivo.
- Traducir las puertas del Circuit a instrucciones de la Arquitectura del Conjunto de Instrucciones (ISA) que el hardware pueda ejecutar directamente.
- Realizar optimizaciones del Circuit para reducir la profundidad del Circuit y el conteo de puertas. Esta optimización también puede aplicarse antes, en el Circuit virtual antes de que los qubits sean asignados a conexiones específicas del hardware.
Es importante tener en cuenta que gran parte de este proceso de optimización es manejado automáticamente por las herramientas de Qiskit. Exploraremos exactamente cómo funciona esto más adelante en esta lección.
6. Ejecución del Circuit
Después de completar el paso de optimización, estamos listos para ejecutar el Circuit usando una primitiva. Estamos considerando un experimento de simulación cuyo objetivo es entender cómo ciertas propiedades del sistema cambian con el tiempo. Para este propósito, la primitiva Estimator es la elección más apropiada, ya que te permite medir los valores esperados de los observables que corresponden a estas propiedades.
A continuación, usamos opciones que incluyen técnicas de supresión y mitigación de errores, para mejorar la precisión del Estimator. Finalmente, ejecutamos el experimento para recopilar los resultados.
7. Posprocesamiento
El paso final es posprocesar los datos recopilados. Esto implica extraer los valores esperados medidos o, si se utilizó la primitiva Sampler, la distribución de probabilidad muestreada en la base computacional. Cuando solo se necesitan los valores esperados de los observables relevantes, estos pueden obtenerse directamente de la primitiva Estimator, disponibles tanto como resultados sin procesar como con mitigación de errores aplicada. A menudo, estos valores esperados medidos sirven como punto de partida para cálculos adicionales que involucran otras cantidades de interés. Tales cálculos adicionales típicamente no requieren computación cuántica y pueden realizarse eficientemente en una computadora clásica.
Replicando el artículo de "Utilidad"
Esta parte es un recorrido de alto nivel del tutorial Mitigación de errores a escala de utilidad con amplificación probabilística de errores, que replica los resultados del artículo Evidence for the Utility of Quantum Computing Before Fault Tolerance. Te recomendamos encarecidamente que abras el tutorial referenciado junto con esta sesión.
Ahora examinaremos un ejemplo concreto de un artículo muy influyente publicado por IBM en 2023, titulado Evidence for the Utility of Quantum Computing Before Fault Tolerance, a menudo conocido como el "artículo de Utilidad".
Desde su publicación, este trabajo se convirtió rápidamente en un estudio emblemático dentro de la comunidad de computación cuántica. Su tesis central es que una computadora cuántica ruidosa, que utiliza 127 qubits y 2.880 puertas, puede producir valores esperados precisos para Circuits cuánticos que están fuera del alcance de los métodos de simulación clásica por fuerza bruta, que intentan simular exactamente los mismos Circuits.
Este estudio fue particularmente significativo porque demostró que las computadoras cuánticas pueden usarse para verificar o comparar resultados con métodos de simulación clásica aproximados, como los algoritmos de redes tensoriales —especialmente en escenarios donde la solución exacta no se conoce de antemano.
Otro aspecto notable de este trabajo es que ha sido ampliamente reproducido: los investigadores y usuarios ahora tienen la capacidad de replicar y verificar el experimento utilizando los sistemas cuánticos accesibles en la nube de IBM y el marco de software Qiskit. A continuación, te guiaremos a través de los pasos para realizar esta replicación tú mismo revisando el tutorial de IBM paso a paso.
En esta lección, discutimos los pasos específicos necesarios para traducir el problema en entradas que un dispositivo cuántico pueda procesar. Nos enfocamos en simular la dinámica de la magnetización total en un sistema de espines magnéticos de dipolo dispuestos en una red, sometidos a un campo magnético externo. Este sistema puede describirse mediante un modelo de Ising con un campo magnético transversal. Lo representamos usando un Circuit cuántico parametrizado, donde los parámetros corresponden a los valores ajustables de las interacciones espín-espín () y la fuerza del campo magnético transversal externo (, parametrizado usando ).
Dado que esta serie se titula Quantum Computing en la Práctica, cubriremos detalles adicionales de las técnicas experimentales utilizadas para mejorar la calidad de los resultados. Un procedimiento importante implica identificar y eliminar los qubits "malos" —aquellos con bajas fidelidades de puertas o tiempos de decoherencia cortos— que podrían afectar significativamente el resultado del experimento. Tales qubits problemáticos pueden surgir por una calibración deficiente o por interacciones con sistemas de dos niveles (TLS). Eliminar estos qubits altera la topología nativa del hardware, cambiando efectivamente la red en la que se simula el sistema.
Además, discutiremos cómo construir el Circuit cuántico parametrizado que implementa la evolución temporal del sistema usando Trotterización. Una parte clave de este proceso es identificar las capas de entrelazamiento dentro del Circuit, que desempeñan un papel crucial en la principal técnica de mitigación de errores.
Paso 1 de los patrones de Qiskit: Mapear
El tutorial realiza el paso de mapeo de manera similar al enfoque general descrito anteriormente. Específicamente para este problema, el tutorial hace lo siguiente:
- Crea un Circuit del modelo de Ising parametrizado
- Crea capas de entrelazamiento y elimina qubits malos
- Genera una versión trotterizada del Circuit
En el tutorial, comenzamos creando una serie de funciones auxiliares al inicio del cuaderno. Estas funciones están diseñadas para simplificar el proceso a medida que avanzamos. No son una parte obligatoria del procedimiento, pero es una buena práctica común cuando se trabaja en experimentos similares: descomponer el problema en componentes manejables. Las funciones incluyen:
- Eliminar acoplamientos de qubits
- Definir acoplamientos de qubits
- Construir los acoplamientos de capas
- Construir la capa de entrelazamiento
- Definir el Circuit trotterizado
A continuación, exploremos un poco más los temas relacionados con estas funciones. Acoplamientos de capas
Los acoplamientos de capas definen cómo los qubits interactúan con sus vecinos durante la simulación. Nuestros dispositivos cuánticos utilizan un diseño de hexágono pesado, un patrón distintivo para conectar qubits. Dentro de este diseño, las conexiones entre qubits —conocidas como "aristas"— pueden dividirse en tres conjuntos distintos. Importante: no hay dos conexiones en el mismo conjunto que compartan un qubit. Esta organización aborda una restricción clave del hardware: en una computadora cuántica real, un qubit solo puede participar en una puerta de dos qubits en un momento dado.
Al estructurar todas las conexiones en tres capas separadas, las puertas de dos qubits pueden aplicarse en todo el dispositivo en tres rondas sucesivas. Esto garantiza que ningún qubit esté involucrado en más de una puerta por capa. Estas puertas implementan la interacción ZZ en el modelo de Ising, y se repiten en cada paso temporal de la simulación (cada paso de Trotter).
Además, se emplea una técnica llamada twirling para modificar las características del ruido en el dispositivo. El twirling transforma el ruido de tal manera que incluso los modelos de ruido simples se convierten en representaciones más precisas de los errores físicos. Esta mejora permite una caracterización más precisa del ruido, que luego puede aprovecharse para mejorar las estrategias de mitigación de errores. Eliminación de qubits "malos"
El siguiente paso implica eliminar los qubits "malos" de la lista de qubits físicos disponibles para el experimento. Un qubit puede volverse "malo" por varias razones. A veces es simplemente una cuestión de calibración deficiente, que puede corregirse recalibrando. En otros casos, el problema es más complejo y está relacionado con lo que se conoce como un defecto de sistema de dos niveles (TLS). Estos defectos TLS causan fluctuaciones en los parámetros de los qubits y relajación. Resolver esto a menudo requiere calentar todo el sistema y luego enfriarlo de nuevo —un proceso que puede llevar algo de tiempo y que no es viable cuando se accede al hardware cuántico de forma remota a través de la nube.
Por ahora, el enfoque más sencillo es excluir estos qubits problemáticos del conjunto de qubits físicos que se usarán en el experimento. IBM Quantum Platform® facilita identificar qué qubits tienen un rendimiento inferior en una QPU. Puedes abrir la QPU y visualizar sus características directamente en la plataforma o descargar los datos de la plataforma como un archivo CSV. A continuación, crea una lista de qubits para excluir y elimínalos del conjunto total de qubits físicos del dispositivo.
Eliminar qubits poco confiables garantiza que el comportamiento del sistema sea más predecible, lo que mejora la precisión del experimento. También permite un mejor modelado del ruido, lo cual es esencial para implementar estrategias efectivas de mitigación de errores. Circuit trotterizado
Es momento de construir nuestro Circuit trotterizado. Como se discutió anteriormente, la Trotterización desglosa la evolución temporal en pasos discretos, por lo que debemos elegir cuántos pasos usar. Para este ejemplo, seleccionaremos seis pasos. En general, el enfoque implica equilibrar el error de Trotter —un error de aproximación introducido por el algoritmo— con los errores causados por la decoherencia. Aumentar el número de pasos de Trotter reduce el error de aproximación, pero requiere Circuits cuánticos más profundos, que son más susceptibles al ruido de decoherencia.
El Circuit se definirá usando varios parámetros: el parámetro theta que representa la fuerza del campo magnético externo, los acoplamientos entre capas, el número de pasos, el número de qubits y, por supuesto, la elección del Backend del dispositivo. Dado que la magnetización del sistema depende de la fuerza del campo magnético externo, es valioso ejecutar la simulación con diferentes valores de campo magnético. Esta variación corresponde a diferentes ángulos de rotación para la puerta RX en el Circuit.
from qiskit.circuit import Parameter
num_steps = 6 #Trotter steps
theta = Parameter("theta")
circuit = trotter_circuit(
theta, layer_couplings, num_steps, qubits = good_qubits, backend = backend
)
num_params = 12
# 12 parameter values for Rx between [0,p/2].
#Reshape to outer product broadcast with observables
parameter_values = np.linespace(0,np.pi/2,num_params).reshape((num_params,1))
num_params = parameter_values.size
Paso 2 de los patrones de Qiskit: Optimizar
Ahora que hemos generado nuestro Circuit, el siguiente paso es optimizarlo. La primera parte de este proceso implica definir un gestor de pases. En el contexto del SDK de Qiskit, la transpilación es el proceso de transformar un Circuit de entrada a una forma adecuada para su ejecución en un dispositivo cuántico. Esta transformación ocurre a través de una secuencia de pasos conocidos como pases del Transpiler.
Un gestor de pases es un objeto que contiene una lista de estos pases del Transpiler y puede aplicarlos a un Circuit. Para crear uno, inicializas un PassManager con la lista deseada de pases del Transpiler. En última instancia, el gestor de pases produce un Circuit ISA —un Circuit expresado en términos de la Arquitectura del Conjunto de Instrucciones (ISA) del Backend. Esto significa que el Circuit se representa usando puertas nativas del hardware del Backend, aunque todavía no incluye la información de temporización necesaria para ejecutar el Circuit en el dispositivo.
Paso 3 de los patrones de Qiskit: Ejecutar usando primitivas
Ahora es el momento de ejecutar nuestro Circuit. Usaremos el Estimator como nuestra herramienta principal para este experimento porque nuestro objetivo es medir la magnetización total del sistema. El Estimator está específicamente diseñado para estimar los valores esperados de los observables, lo que lo convierte en la elección ideal aquí. En esta etapa, también es esencial configurar nuestros ajustes de mitigación de errores. Aplicaremos la Extrapolación a Ruido Cero (ZNE) para mejorar la precisión de nuestros resultados. En el tutorial, verás que especificamos dos o más valores de factor de ruido a los que evaluar los modelos extrapolados, y seleccionamos la "Amplificación Probabilística de Errores" (PEA) como nuestro método de amplificación. PEA es preferido para este experimento porque escala significativamente mejor que otras opciones, lo cual es crucial cuando se trabaja con sistemas de 100 o más qubits.
Esto es todo lo que se necesita para ejecutar el experimento.
Paréntesis sobre la mitigación de errores
Antes de proceder al posprocesamiento, tomemos un breve momento para aclarar qué se entiende por Extrapolación a Ruido Cero (ZNE). Hemos tocado este concepto en episodios anteriores, pero vale la pena revisarlo brevemente. ZNE es una técnica de mitigación de errores diseñada para reducir el impacto del ruido desconocido que ocurre durante la ejecución de Circuits cuánticos, siempre que este ruido pueda escalarse de manera controlada. El método se basa en el supuesto de que los valores esperados escalan con el ruido de acuerdo con una función conocida:
donde representa la intensidad del ruido, que puede amplificarse intencionalmente.
El proceso de implementar ZNE consta de los siguientes pasos:
- Amplificar el ruido del Circuit para varios factores de ruido , , … .
- Ejecutar cada Circuit con ruido amplificado para medir los valores esperados correspondientes , , ….
- Extrapolar estos resultados de vuelta al límite de ruido cero .
Esta técnica nos permite estimar cuál sería el resultado si no hubiera ruido, mejorando la precisión de los cómputos cuánticos.
El principal desafío para implementar ZNE de manera efectiva es desarrollar un modelo de ruido preciso para el valor esperado y amplificar el ruido de manera controlada y bien entendida. Las técnicas comunes para la amplificación de errores en ZNE incluyen escalar la duración del pulso mediante calibración, repetir puertas usando ciclos de identidad, y añadir ruido mediante el muestreo de canales de Pauli —un método conocido como Amplificación Probabilística de Errores (PEA).
Entre estas, PEA es a menudo la opción preferida por varias razones:
- El estiramiento de pulsos incurre en un alto costo computacional.
- El plegado de puertas, que usa inserciones de identidad, carece de garantías teóricas sólidas para preservar el sesgo del ruido.
- PEA es aplicable a cualquier Circuit ejecutado con un factor de ruido nativo, aunque requiere aprender el modelo de ruido con antelación.
PEA opera bajo el supuesto de un modelo de ruido basado en capas similar al utilizado en la cancelación probabilística de errores (PEC). Sin embargo, a diferencia de PEC, evita la sobrecarga de muestreo exponencial que típicamente crece con el ruido del Circuit. Esta eficiencia hace que PEA sea un enfoque práctico y robusto para la amplificación de ruido en ZNE, facilitando una mitigación de errores cuánticos más confiable. Para caracterizar el modelo de ruido, primero debemos identificar las capas distintas de operaciones de dos qubits dentro del Circuit. Para cada una de estas capas, aplicamos un procedimiento de twirling de Pauli a las puertas de dos qubits, lo que ayuda a garantizar que el ruido pueda describirse con precisión mediante un modelo de ruido de amortiguación. A continuación, repetimos pares de capas de identidad a varias profundidades y, finalmente, ajustamos los valores de fidelidad para determinar las tasas de error de cada canal de ruido.
Si bien es beneficioso entender este método conceptualmente, implementarlo manualmente en Qiskit es mucho más sencillo, como se demuestra en el tutorial que lo acompaña.
Paso 4 de los patrones de Qiskit: Posprocesar
Después de que el experimento finaliza, puedes ver el resultado posprocesándolo. La línea gris punteada en los datos graficados representa los resultados obtenidos usando métodos clásicos aproximados, con el error de aproximación reducido a un umbral bajo. Los puntos de datos sin procesar para los distintos factores de ruido, seleccionados al inicio, están claramente desviados de esta línea punteada. En contraste, la línea azul sólida muestra los datos después de aplicar nuestro procesamiento ZNE, que notablemente acerca los resultados mucho más a los valores exactos. En resumen, los valores obtenidos bajo condiciones de ruido normal (factor de ruido nf=1.0) muestran una desviación significativa de los resultados exactos. Mientras tanto, los valores mitigados se alinean estrechamente con los exactos, demostrando la efectividad de la técnica de mitigación de ruido basada en PEA.
Resumen
Para resumir rápidamente lo que hemos aprendido:
- La simulación cuántica es una de las áreas de aplicación más prometedoras a corto y mediano plazo.
- Tiene aplicaciones de amplio alcance, desde la industria farmacéutica hasta la física de altas energías, la ciencia de materiales y más.
- El artículo de Utilidad de IBM, publicado en 2023, marcó el camino hacia el uso de computadoras cuánticas para el descubrimiento científico, y trabajamos a través del tutorial asociado que acompaña a ese artículo.
- Los pasos para abordar un problema de simulación de principio a fin son relativamente directos, y esperamos que ahora puedas usar este video y tutorial como guía para aún más problemas de simulación.
Encuesta al final del curso
¡Felicitaciones por completar este curso! Por favor, tómate un momento para ayudarnos a mejorar nuestro curso completando la siguiente encuesta rápida. Tus comentarios se usarán para mejorar nuestra oferta de contenido y la experiencia del usuario. ¡Gracias!