Select Page

Qiskit es parte del proyecto abierto de IBM para que cualquiera pueda experimentar con computadoras cuánticas. En esta tercera parte, veremos qué se puede programar en una computadora cuántica, y cómo jugar con las computadoras cuánticas que IBM pone a disposición de la comunidad.

Ya vimos algunos conceptos básicos de computación cuántica, hablamos de hardware y de software. Ahora vamos a poner manos a la obra.

Para poder jugar con las computadoras cuánticas de IBM, lo primero que tenemos que hacer es darnos de alta el el sitio correspondiente, es decir: https://quantum-computing.ibm.com.

Fig. 1 – IBM Quantum computing – login.

 

Como podemos ver, nos podemos loguear con cualquiera de estas opciones. Aunque por temas de seguridad, mi recomendación es NUNCA utilizar autenticación cruzada.

Una vez logueado, lo recomendables es recorrer los tutoriales y “getting started” iniciales para poder comenzar a entender lo que vamos a hacer.

 

Fig. 2 – IBM Quantum computing – home.

 

A la derecha se pueden las herramientas cuánticas disponibles. En el momento de tomar el screenshot, había 5 backends disponibles: las cuatro computadoras cuánticas y un simulador. Como puede verse, las computadoras cuánticas de Yorkshire y de Tenerife (ambas de 5 quibits) se encontraban en mantenimiento. Por otro lado, las de Melbourne (14 qubits) y Ourense (5 qubits) estaban en linea. Al final de la lista, puede verse un simulador de hasta 32 qubits.

Al hacer clic sobre cada máquina, se pueden ver sus características y su estructura. A modo de ejemplo, se muestra la computadora de Melbourne:

Fig. 3 – Estructura de la computadora cuántica de Melbourne de 14 qubits.

¿Qué es qiskit?

Qiskit es un framework de desarrollo open source, que permite desarrollar software sobre las computadoras cuánticas actuales. Qiskit cuenta con diferentes frameworks y librerías que tienen por objeto experimentar diferentes aspectos de las computadoras cuánticas. Como ejemplo:

Terra

Es prácticamente el core del sistema. Incluye herramientas para desarrollar programas cuánticos a nivel de circuitos y pulsos, optimizándolos para un procesador cuántico físico en particular.

Aqua

Incluye librerías con algoritmos cuánticos en diferentes dominios sobre los que se pueden desarrollar aplicaciones en forma relativamente sencilla y rápida. Permite hacer experimentos con aplicaciones de química, inteligencia artificial, optimización y finanzas.

Aer

Tal como comenté en la parte 1, el ruido o la decoherencia es uno de los grandes enemigos de las computadoras cuánticas. Aer tiene un conjunto de herramientas para trabajar con modelos de ruido altamente configurables para crear simulaciones de ruido realistas. Esto permite minimizar los errores que se producen durante la ejecución en dispositivos reales.

Ignis

Como Aer, es otro framework para entender y mitigar el ruido en circuitos y sistemas cuánticos.

Una de las mayores dificultades que, al menos yo, he tenido, fue la de trasladar los problemas del mundo real para resolverlos en una computadora cuántica en vez de en una computadora convencional. Para esto, qiskit ayuda bastante. He aquí por ejemplo un tutorial en el que con ejemplos muy básicos nos va guiando a cómo hacer ese cambio de paradigma en la cabeza.

 

Hello world!

Ok, ¿cómo empezamos a programar? Usando Qiskit, se pueden utilizar como inicio los tutoriales de Quiskit. Aquí se nos presentan no sólo las bases de la programación de framework, sino que también notebooks armadas de Jupyter donde podemos jugar desarrollando piezas simples de código.

Para trabajar con Aqua, un buen pinto de comienzo son los tutoriales y ejemplos que se encuentran en Github. Se puede comenzar con los fundamentals, y continuar con el advanced. Si bien muchos de estos notebooks se pueden encontrar dentro del sitio de IBM una vez que se logueen, si se encuentran algún notebook por ahí que no esé, se puede importar dentro de la app de IBM.

 

Fig. 3 – Menú de Notebooks de Qiskit.

 

 

Fig. 4 – Importar Notebooks en Qiskit.

 

Además de toda la información que se puede encontrar en el proyecto de IBM, existen otras fuentes que se pueden consultar y de donde aprender para empezar a desarrollar en modo Q. Una de ellas es Project Q, un proyecto que está bajo la licencia Apache 2. Su propósito es el de proporcionar herramientas que faciliten la invención, implementación, prueba, debugging y ejecución de algoritmos cuánticos utilizando tanto hardware clásico como computadoras cuánticas reales. En Project Q podemos encontrar 3 ejemplos concretos de aplicaciones desarrolladas para computación cuántica.

 

Shor

Hasta ahora llevamos tres partes de la nota y no hicimos ninguna mención a aplicaciones de ciberseguridad. Pero es obvio que las hay. La estrella de estas aplicaciones es el algoritmo de Shor. Peter Shor es un matemático del MIT que desarrolló un algoritmo revolucionario. El mismo permite factorizar números primos en una computadora cuántica de una forma que es imposible en computadoras clásicas debido a la complejidad y el tiempo necesario para el cálculo (años, siglos o milenios…). No hace falta que explique que si tenemos un número enorme que forma parte de un algoritmo de cifrado… y podemos extraer los dos números primos que se multiplicaron para obtenerlo… estamos a un paso de descifrar el mensaje sin tener las claves.

 

Hasta el infinito y más allá…

Pero esto recién empieza. Las posibilidades del uso de computación cuántica se multiplican en todas las ramas. Por lo que todo lo que necesite horas o días de procesamiento y hoy no se puede hacer, será posible cuando la potencia de cálculo cuántico esté disponible masivamente. Las aplicaciones de ciberseguridad no quedan ajenas. Desde las aplicaciones de redes como las Network Centric Quantum Communications, para la protección de infraestructuras críticas, como el uso de Machine Learning a velocidades de cálculo extremas, o sistemas de clasificación basados en Support Vector Machines.

¿Será entonces cuestión de esperar…? NOOO!!! Será entonces cuestión de poner manos a la obra, aprender, programar, experimentar y desarrollarse en este campo.

 

 

 

Nota: Vayan mis respetos a uno de mis colegas, ex-Si6, que hoy se encuentra trabajando en el proyecto Qiskit. Mis felicitaciones Luciano Bello!!! y GRACIAS por revisar y ayudar a mejorar el artículo.

 

 

 

< Jugando con Qubits (parte 2)

 

 

 

 

Nota por Carlos Benitez

Carlos Benitez es un reconocido experto en seguridad de la información.