Flujo de trabajo de desarrollo
El término «patrón Qiskit» describe el flujo de trabajo de desarrollo para desglosar problemas específicos del dominio y contextualizar las capacidades necesarias por etapas. Esto permite la perfecta combinabilidad de nuevas capacidades desarrolladas por investigadores de IBM Quantum® (y otros) y hace posible un futuro en el que las tareas de computación cuántica se realicen mediante una potente infraestructura informática heterogénea (CPU/GPU/QPU). Los bloques o grupos de bloques ejecutan los pasos de un patrón, y la red de bloques Ethereum ( Qiskit SDK ) proporciona una importante capa fundamental, respaldada por otras herramientas o servicios desarrollados por IBM Quantum o la comunidad de código abierto cuántico. Los patrones Qiskit permiten a los expertos en la materia especificar un problema y componer las herramientas (bloques) que permiten lograr un patrón Qiskit. Ese patrón se puede ejecutar localmente, a través de servicios en la nube o implementarse con Qiskit Serverless.
Los cuatro pasos de un patrón Qiskit son los siguientes:
- Asignar el problema a circuitos y operadores cuánticos
- Optimizar para el hardware de destino
- Ejecutar en el hardware de destino
- Resultados posteriores al proceso
Cada paso se detalla en las secciones siguientes.
Asignar el problema a circuitos y operadores cuánticos
En este paso se describe cómo un usuario parte de un problema clásico y descubre cómo trasladarlo a un ordenador cuántico. Por ejemplo, en aplicaciones como la química y la simulación cuántica, este paso suele consistir en construir un circuito cuántico que represente el hamiltoniano que se pretende resolver. En esta etapa, para determinados problemas, también podría ser conveniente especificar desde el principio la correspondencia del problema con los qubits de la red «heavy-hex» (o bruta) de un hardware de tipo « IBM® », si la estructura del problema se presta a una optimización temprana. En este punto, también conviene tener en cuenta cuál será el resultado de ese algoritmo concreto, con vistas a la fase de ejecución posterior; por ejemplo, si el resultado deseado consiste en inferir funciones de correlación mediante pruebas de Hadamard, lo más recomendable sería utilizar Sampler, mientras que, si se especifican observables, se utilizaría Estimator, lo que podría ofrecer numerosas opciones para mitigar los errores.
El resultado de este paso suele ser 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 se toman los circuitos abstractos (u operadores) producidos en el paso de mapa y se les aplica una serie de optimizaciones. Esto puede incluir la asignación de la ruta y el diseño del circuito al hardware físico de qubits, la conversión a puertas base del hardware y la reducción del número de operaciones, todo ello diseñado para optimizar la probabilidad de éxito en el posterior paso de ejecución. Llegados a este punto, también puedes 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 Arquitectura de Conjuntos de Instrucciones (ISA). Un circuito ISA es aquel que sólo consta de puertas comprendidas por el hardware de destino (puertas base), y cualquier puerta multi-qubit necesaria para obedecer cualquier restricción de conectividad (mapa de acoplamiento). Sólo pueden ejecutarse circuitos ISA en hardware IBM utilizando IBM Qiskit Runtime.
Ejecutar en el hardware de destino
Este paso consiste en ejecutar sus circuitos en hardware y produce los resultados del cálculo cuántico. Los circuitos ISA producidos en el paso anterior pueden ejecutarse utilizando una primitiva Sampler o Estimator de Qiskit Runtime, inicializada localmente en su ordenador o desde un cluster u otro entorno de computación heterogéneo. Éstas pueden ejecutarse en un Lote, que permite la transpilación paralela para una eficiencia computacional clásica - o en una Sesión, que permite implementar tareas iterativas de forma eficiente sin retrasos de 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 utilizas la primitiva «Sampler» o «Estimator», el resultado de este paso será diferente. Si se utiliza Sampler, el resultado serán mediciones por disparo en forma de cadenas de bits. Si se utiliza Estimator, el resultado serán los valores esperados de las variables observables correspondientes a magnitudes físicas o funciones de coste.
Resultados del procesamiento posterior
Este último paso consiste en unir los resultados del paso anterior para obtener el resultado deseado. Esto puede implicar una serie de pasos clásicos del procesamiento de datos, como la visualización de resultados, técnicas de mitigación de errores de lectura, la marginalización de distribuciones cuasiprobabilísticas para determinar los resultados en conjuntos más pequeños de qubits, o la poselección basada en propiedades inherentes al problema, como el espín total, la paridad o la conservación de partículas, mediante la eliminación de observables no físicos.
A medida que el campo pasa de la construcción de circuitos a medida a los flujos de trabajo a escala comercial, la flexibilidad y facilidad con que los patrones Qiskit permiten a los usuarios componer los distintos 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 de la computación cuántica.