Flujo de desarrollo
El término patrón de Qiskit describe el flujo de desarrollo para descomponer problemas específicos de dominio y contextualizar las capacidades necesarias en etapas. Esto permite la composición fluida de nuevas capacidades desarrolladas por los investigadores de IBM Quantum® (y otros) y hace posible un futuro en el que las tareas de computación cuántica sean ejecutadas por una infraestructura de cómputo heterogénea y potente (CPU/GPU/QPU). Los bloques o grupos de bloques realizan los pasos de un patrón, con el SDK de Qiskit proporcionando una capa fundacional importante, respaldada por otras herramientas o servicios desarrollados por IBM Quantum o la comunidad de código abierto cuántico. Los patrones de Qiskit permiten a los expertos en dominios especificar un problema y componer las herramientas (bloques) que logran un patrón de Qiskit. Ese patrón puede ejecutarse localmente, a través de servicios en la nube, o desplegarse con Qiskit Serverless.
Los cuatro pasos de un patrón de Qiskit son los siguientes:
- Mapear el problema a circuitos cuánticos y operadores
- Optimizar para el hardware objetivo
- Ejecutar en el hardware objetivo
- Posprocesar los resultados
Cada paso se detalla en las secciones a continuación.
Mapear el problema a circuitos cuánticos y operadores
Este paso describe cómo un usuario parte de un problema clásico y determina cómo mapearlo a una computadora cuántica. Por ejemplo, en aplicaciones como la química y la simulación cuántica, este paso generalmente implica construir un circuito cuántico que represente el Hamiltoniano que se intenta resolver. Durante este paso, para ciertos problemas, también puede ser conveniente especificar desde el principio el mapeo del problema sobre los qubits en la red heavy-hex (o gross) del hardware de IBM®, si la estructura del problema facilita la optimización desde una etapa temprana. También vale la pena considerar en este punto cuál será el resultado del algoritmo en cuestión, en preparación para el paso de ejecución posterior; por ejemplo, si el resultado deseado implica inferir funciones de correlación mediante pruebas de Hadamard, podrías prepararte para usar el Sampler, mientras que especificar observables usaría el Estimator y podría ofrecer muchas opciones de mitigación de errores.
El resultado de este paso es normalmente una colección de circuitos u operadores cuánticos que pueden optimizarse para el hardware en el siguiente paso.
Optimizar para el hardware objetivo
En este paso tomas los circuitos (u operadores) abstractos producidos en el paso de mapeo y realizas una serie de optimizaciones sobre ellos. Esto puede incluir mapear la ruta y el diseño del Circuit al hardware de qubits físicos, convertir a las gates base del hardware y reducir el número de operaciones, todo orientado a maximizar la probabilidad de éxito en el paso de ejecución posterior. En este punto también es posible que quieras probar tus circuitos con un simulador antes de ejecutarlos en hardware real en el siguiente paso.
Durante este paso, los circuitos abstractos deben transpilarse a circuitos de Conjunto de Instrucciones de Arquitectura (ISA, por sus siglas en inglés). Un circuito ISA es aquel que solo contiene gates que el hardware objetivo comprende (gates base), y cualquier gate de múltiples qubits que deba cumplir con las restricciones de conectividad (mapa de acoplamiento). Solo los circuitos ISA pueden ejecutarse en hardware de IBM usando IBM Qiskit Runtime.
Ejecutar en el hardware objetivo
Este paso implica ejecutar tus circuitos en hardware y produce los resultados del cómputo cuántico. Los circuitos ISA producidos en el paso anterior pueden ejecutarse usando la primitiva Sampler o Estimator de Qiskit Runtime, inicializada localmente en tu computadora o desde un clúster u otro entorno de cómputo heterogéneo. Estos pueden ejecutarse en un Batch, que permite la transpilación en paralelo para mayor eficiencia computacional clásica, o en una Session, que permite implementar tareas iterativas de forma eficiente sin demoras en la cola. Durante este paso, también existe la opción de configurar ciertas técnicas de supresión y mitigación de errores proporcionadas por Qiskit Runtime.
Dependiendo de si usas la primitiva Sampler o Estimator, el resultado de este paso será diferente. Si usas el Sampler, la salida serán mediciones por disparo en forma de cadenas de bits (bitstrings). Si usas el Estimator, la salida serán valores de expectación de observables correspondientes a cantidades físicas o funciones de costo.
Posprocesar los resultados
Este paso final implica ensamblar los resultados del paso anterior para obtener el resultado deseado. Esto puede involucrar una variedad de pasos de procesamiento de datos clásico, como visualizar resultados, técnicas de mitigación de errores de lectura, marginalizar distribuciones de cuasiprobabilidad para obtener resultados en conjuntos más pequeños de qubits, o la postselección basada en propiedades inherentes del problema, como el espín total, la paridad o la conservación de partículas al eliminar observables no físicos.
A medida que el campo avanza desde la construcción artesanal de circuitos hacia flujos de trabajo a escala de utilidad, la flexibilidad y la facilidad con que los patrones de Qiskit permiten a los usuarios componer los diferentes pasos del patrón abre la computación cuántica a una amplia variedad de aplicaciones y técnicas de fácil uso para los científicos computacionales cuánticos.