Este artículo está inspirado en la necesidad de más ingenieros de software en computación cuántica. Sin mencionar a los demás desarrolladores, diseñadores de UX, probadores de control de calidad, gerentes de producto y todo el resto del talento que hace posible enviar un producto real a clientes reales. Especialmente productos de Deep Tech y Frontier Tech como la computación cuántica.
Estos productos y los equipos que intentan crearlos están sujetos a un viaje largo y desafiante desde "la ciencia a la tecnología, la ingeniería y el producto" . Una serie de cambios de fase que tienen más que ver con la evolución organizacional (y comunitaria) que con una simple progresión lineal a través de la preparación tecnológica.
Esta evolución no ocurre por casualidad. Para aquellos de nosotros que trabajamos en estos equipos, enfrentamos el desafío de reinventar la organización a medida que pasa de lo académico a lo técnico a algo más ampliamente comprometido con el mercado. Lo que significa buscar y colaborar con una creciente comunidad de talentos, así como evolucionar y desarrollar continuamente nuestras propias habilidades.
Esto fue algo que mencioné en mi charla " El código abierto: tu camino hacia una carrera en informática cuántica " en 2022 en la Cumbre de código abierto de la Fundación Linux. Y ha crecido aún más en el año posterior, con un notable cambio en la industria hacia la "utilidad cuántica" (un término que usamos para centrarnos en la utilidad del mundo real en lugar de la supremacía teórica ) y el inicio de algunos proyectos masivos. Como la inversión de casi mil millones de dólares del gobierno australiano en PsiQuantum para instalar una computadora cuántica comercial en mi ciudad natal de Brisbane (dicho con un poco de nostalgia desde aquí en Seattle).
Entonces sí, están sucediendo muchas cosas. Lo que hace que este sea un muy buen momento para comprender de qué están compuestos realmente estos sistemas cuánticos y dónde encaja su talento y curiosidad. He incluido algunas recomendaciones al final sobre cómo participar. Y debo agregar una rápida advertencia de que en realidad no existe un paradigma de "computadora cuántica". He resumido los elementos más comunes de los diversos sistemas en los que trabajamos por su valor educativo, pero agradezco cualquier desafío o refutaciones a medida que este modelo evoluciona con el tiempo.
En muchos sentidos, la pila de computación cuántica coincide con el patrón de una pila moderna de computación de alto rendimiento (HPC). Y, en menor medida, resultará bastante familiar para cualquiera que trabaje en el espacio de la computación en la nube. Pasamos de una experiencia de usuario de alto nivel a algún tipo de plataforma que toma nuestra carga de trabajo y la convierte en algo que luego se ejecutará en el hardware. Lo suficientemente simple como para entendernos.
El matiz es mucho más complicado. Como comprender que una computadora cuántica es tan buena como el algoritmo cuántico que se utiliza. Todo lo sofisticado que has oído sobre la superposición y el entrelazamiento en realidad se reduce a una forma de ejecutar de manera confiable algunos algoritmos útiles que, a nivel de hardware, usan fase e interferencia para realizar el "cálculo" que genera una probabilidad de la respuesta correcta. respuesta. Hacer esto con frecuencia crea una mayor probabilidad de obtener la respuesta correcta. Hacer esto requiere un algoritmo útil y una implementación de sistema confiable.
La simulación también juega un papel crucial. Es posible que veas que esto tiene que ver con "ahorrar en costosas compras de hardware", pero en realidad no es así (y a menudo es una pista de que alguien simplemente está usando IA para escribir su clickbait cuántico). Confiamos en la simulación no solo para ayudar a desarrollar algoritmos nuevos e interesantes, sino también para explorar las diversas formas de configurar una carga de trabajo. También es una parte central de los flujos de trabajo hacia los que muchos de nosotros estamos construyendo, donde un sistema verdaderamente híbrido usaría recursos informáticos clásicos para manejar la carga de trabajo y la programación, junto con la aceleración a través de GPU (o chips más nuevos como TPU y LPU ), e impulsar de manera efectiva ciertas cargas de trabajo a la unidad de procesamiento cuántico (QPU), donde un algoritmo cuántico puede ser útil para la tarea en cuestión. Mientras que algunos, como yo, nos centramos en integrar la computación cuántica con la infraestructura existente, otros se dedican a construir el sistema cuántico independiente más potente. De ahí la amplia gama de exploración en la industria.
Si lo único que se puede sacar de esto es que una computadora cuántica es un sistema especializado que incluye una QPU además de la pila de computación existente para ejecutar algoritmos cuánticos especializados, entonces eso es una victoria. No se requieren gatos, rendijas ni movimientos espeluznantes con las manos.
Las siguientes secciones van desde la capa superior de usuario hacia abajo, a través de la plataforma y, finalmente, hasta la capa de hardware. Si bien los límites entre estas capas pueden ser borrosos en la práctica, seguiremos un modelo basado en una carga de trabajo o flujo de trabajo típico para mayor claridad (y cordura).
En el nivel más alto del sistema cuántico está el ser humano tecleando el teclado. Los lenguajes de programación cuántica proporcionan el alto nivel de abstracción necesario para explorar algoritmos cuánticos y crear programas en una forma manejable. La experiencia de trabajar con estos lenguajes se amplía con kits de desarrollo de software (SDK) que ofrecen las bibliotecas y herramientas necesarias para desarrollar software cuántico.
Existe cierta confusión en la distinción entre SDK y marcos y entornos de desarrollo integrados (IDE). Esto está determinado por los diversos enfoques de los proveedores cuánticos y la integración de plataformas y verticales de productos adaptados a usuarios finales específicos. Un investigador que desee acceso local completo y control del nivel de pulso será diferente de un equipo empresarial que desarrolle cargas de trabajo híbridas, que será diferente de una startup de tecnología financiera que se construye sobre una plataforma cuántica basada en la nube. Este patrón es familiar en proyectos empresariales o basados en la nube, pero evolucionará con matices a medida que el valor comercial de los sistemas cuánticos se vuelva más evidente e influya en el diseño del producto. Mientras tanto, los SDK más frecuentes y sus lenguajes de programación asociados son los siguientes.
Bajando por la pila llegamos a los algoritmos que están en el centro de cualquier carga de trabajo cuántica deseada. A medida que mejoran los diversos enfoques competitivos para la creación de computadoras cuánticas, también lo hacen las oportunidades para aplicaciones en el mundo real. Se están creando una variedad de bibliotecas y paquetes de software para áreas funcionales específicas de uso (como Qiskit Machine Learning de IBM para el aprendizaje automático cuántico o OpenFermion de Google para la química cuántica), y los investigadores están ampliando y optimizando las bibliotecas existentes de algoritmos cuánticos conocidos. y proveedores comerciales (como el Quantum Algorithm Zoo de Stephen Jordan y la biblioteca de Classiq ).
Algunos algoritmos cuánticos han alcanzado un estatus casi de celebridad. Otros son adaptaciones cuánticas de algoritmos clásicos o sirven como componentes básicos para cargas de trabajo más grandes. Incluso hay algunos algoritmos cuánticos que son funcionalmente inútiles en el mundo real (inserte aquí un chiste sobre físicos si te atreves), pero son ejemplos importantes de ventaja cuántica. Para profundizar más, consulte mi artículo sobre algoritmos cuánticos, pero aquí hay algunos ejemplos notables.
Los simuladores cuánticos son herramientas de software utilizadas para replicar el comportamiento de los sistemas cuánticos en computadoras clásicas. Forman una parte esencial de nuestro flujo de trabajo desarrollando algoritmos y optimizando cargas de trabajo potenciales (especialmente con simuladores que cuentan con el mismo conjunto de puertas u otros elementos del hardware específico). El papel de los simuladores ha evolucionado a medida que la propia industria evoluciona desde la pura investigación académica hasta una posible utilidad comercial. La precisión de la simulación para hardware cuántico específico ha mejorado hasta el punto de modelar el ruido y los errores únicos del sistema. Tenga en cuenta que los siguientes ejemplos están sujetos a cambios o desuso a medida que los proveedores ( mirándolo, Qiskit 1.0 ) iteren o optimicen sus gamas de productos a medida que la industria madura.
Antes de avanzar más en la pila, debemos hacer una pequeña nota al margen sobre el tema de las plataformas de nube cuántica. En la era actual hay un puñado de proveedores importantes con unos pocos sistemas de hardware en funcionamiento. Cada uno se enfrenta a la misma cuestión de si intentar vender unidades de hardware directamente, alojarlas en su propio campus, vender acceso a través de Internet o alguna combinación de lo anterior. Y luego agregue a la mezcla interconexiones privadas, proveedores de nube pública, capacidad soberana y laboratorios de investigación. No es un hecho que el modelo de plataforma en la nube resulte ser el modelo económico definitorio para la computación cuántica, aunque ocupa la mayor participación fuera del sector dados los patrones de la computación en la nube que vinieron antes.
Dicho todo esto, preste atención también a las empresas que optan por no aprovisionar sus sistemas para el acceso a la plataforma en la nube. En Quantum Brilliance, mi atención se centró en clústeres de computación de borde altamente paralelizados que utilizan el enfoque de centro NV de diamante que permite QPU de factor de forma pequeño y temperatura ambiente (el primero ). Al hablar con otras startups cuánticas, los casos de uso para todas las formas de implementación fija o móvil parecen aplicarse, y se están realizando muchos trabajos interesantes (y a menudo no divulgados) fuera de la web. Entre los accesibles en línea, aquí hay algunos para ver.
La función del compilador cuántico es traducir los programas cuánticos de alto nivel en instrucciones de bajo nivel que se ejecutarán en hardware cuántico. Si bien los detalles están fuera del alcance de este artículo, el proceso implica la descomposición de puertas (para hacer coincidir las puertas abstractas con los qubits físicos), el mapeo y la programación (para hacer coincidir los qubits lógicos del algoritmo con los qubits físicos) y detalles específicos del proveedor y su sistema particular (como fidelidad, tasas de error y conectividad).
Para simplificar esta pila de ejemplo, incluiremos en este nivel las diversas formas de optimización de circuitos cuánticos que aplican técnicas para minimizar la cantidad de puertas cuánticas, profundidad u otros elementos de recursos sin cambiar la función subyacente. Esto puede ocurrir antes de la compilación, como parte de ella durante el proceso de compilación o más adelante como parte de un ajuste del proceso de hardware. Para mayor claridad, agrupémoslo aquí dentro de nuestro flujo de trabajo. A continuación se muestran algunos ejemplos que debe tener en cuenta.
El papel de la corrección de errores cuánticos en la era actual de sistemas cuánticos "ruidosos" es especialmente importante. Hasta el punto de que existen empresas especializadas en esta capa del stack. La necesidad de estas empresas y el esfuerzo más amplio de corrección de errores se debe a la naturaleza frágil de los sistemas cuánticos. Si bien las computadoras cuánticas superconductoras dominan la imaginación popular, la corrección de errores es vital en todos los métodos (iones atrapados, fotónicos, centros NV, etc.).
Independientemente del método de generación de qubits, surgen desafíos en la preparación, ejecución de la carga de trabajo y medición. La decoherencia afecta a todos los métodos, junto con los errores de puerta, los errores de medición y la calidad de los qubits individuales. La corrección de errores cuánticos es comprensiblemente compleja, pero puede incorporar técnicas como la redundancia del sistema (difundir la información cuántica entre múltiples qubits), la gestión de síndromes (utilizar qubits auxiliares para detectar errores sin alterar la información codificada) y perfilar el rendimiento de qubits individuales o agrupados. con el tiempo. Si bien estos seguirán siendo importantes si se puede lograr la era de la computación cuántica verdaderamente tolerante a fallas, son un tema de investigación apasionante en la actual era ruidosa de escala intermedia cuántica (NISQ) en la que nos encontramos. Los principales proveedores y ejemplos incluyen los siguientes .
El sistema de control cuántico es responsable de gestionar y controlar las operaciones del hardware cuántico. Maneja tareas a nivel de hardware como calibración, configuración de pulso y control de qubit. Dadas las diferentes formas de computación cuántica que se están desarrollando y la variedad de implementaciones de sistemas cuánticos monolíticos o en red, podemos considerar que el término "sistema de control cuántico" es inclusivo más que específico. Del mismo modo, no existe una definición estricta y rápida de "sistema operativo cuántico".
Es probable que esto cambie con el tiempo a medida que la fase de desarrollo pase de la fase de "Ciencia a la Tecnología" a la de "Ingeniería al Producto" . Especialmente cuando es deseable una mayor alineación con los patrones de productos existentes y la terminología de los usuarios y/o el mercado. En su mayor parte, el sistema de control será un recurso interno (algo entre un sistema operativo y firmware), pero se destacan los siguientes proveedores y productos.
La última capa de nuestra pila es el propio hardware cuántico. Es útil recordar que no existe una forma única o correcta de generar y trabajar con qubits. Tampoco existe un enfoque claro que lidere el mercado. Cada método o enfoque tiene sus propios desafíos y puede resultar que existan múltiples enfoques con beneficios para escenarios específicos.
La capa de hardware es en lo que muchos piensan cuando escuchan el término "computación cuántica", de la misma manera que los primeros dispositivos informáticos de tubos y válvulas definían la terminología y el lenguaje por pura fuerza de interacción mecánica. Con el tiempo, los interruptores y las tarjetas perforadas dieron paso a instrucciones y programas, que a su vez se ampliaron mediante memoria y almacenamiento, y luego se conectaron mediante redes y servidores.
Estos patrones están presentes en la investigación y el desarrollo de dispositivos cuánticos y, como podemos ver en lo anterior, las capas de una pila cuántica de ejemplo brindan la oportunidad para que la experiencia existente en cada capa proporcione ideas nuevas e interesantes. Con suerte, de nuevas formas que nunca hubiéramos considerado, dados los matices que proporciona cada tecnología subyacente y capa de la pila.
El trabajo que realizan los físicos cuánticos, los ingenieros eléctricos y electrónicos, los fabricantes y todo tipo de manipuladores de átomos no sólo está respaldado sino también habilitado por aquellos de nosotros que disputamos los bits y los (zetta)bytes. Es un buen momento para involucrarse.
Un buen comienzo para los nuevos estudiantes es Black Opal de Q-CTRL , el MOOC de alto nivel en edX de la Universidad de Delft y el camino inevitable hacia Qiskit de IBM . Para aquellos de ustedes que trabajan con C#, esta introducción de Microsoft ofrece un vistazo rápido a su enfoque con Q# y cómo se implementa en el ecosistema de Azure. Y vale la pena marcar la biblioteca de algoritmos Classiq .
Pronto escribiré un artículo dedicado al aprendizaje cuántico para ingenieros de software, ya que este es un tema sobre el que recibo correos electrónicos casi semanalmente desde mi charla en la Open Source Summit (y los continuos despidos de talentos de ingeniería que han ocurrido desde entonces). Si bien cualquier cambio en la industria es difícil para las personas y familias afectadas por el frío de la economía, a su vez puede ser una oportunidad para desbloquear el talento (y las trayectorias profesionales) que de otro modo estarían bloqueados. Entonces, si está considerando explorar más a fondo, hágalo y escríbame si hay algo que pueda hacer para ayudar . Y asegúrese de suscribirse al boletín informativo Product In Deep , donde profundizamos en la estrategia y el arte necesarios para enviar productos reales en los ámbitos de Deep Tech y Frontier Technology.