Qiskit es un kit de desarrollo de software (SDK) de código abierto para trabajar con computadoras cuánticas a nivel de circuitos, pulsos y algoritmos. Proporciona herramientas para crear y manipular programas cuánticos y ejecutarlos en prototipos de dispositivos cuánticos en IBM Quantum Platform o en simuladores en una computadora local. Sigue el modelo de circuito para la computación cuántica universal y puede usarse para cualquier hardware cuántico (actualmente admite qubits superconductores e iones atrapados ) [4] que siga este modelo.
Qiskit fue fundada por IBM Research para permitir el desarrollo de software para su servicio de computación cuántica en la nube , IBM Quantum Experience . [5] [6] Las contribuciones también las realizan patrocinadores externos, generalmente de instituciones académicas. [7] [8]
La versión principal de Qiskit utiliza el lenguaje de programación Python . Inicialmente se exploraron versiones para Swift [9] y JavaScript [10] , aunque el desarrollo de estas versiones se detuvo. En cambio, está disponible una reimplementación mínima de funciones básicas como MicroQiskit , [11] que está diseñado para que sea fácil de migrar a plataformas alternativas.
Se proporciona una variedad de portátiles Jupyter con ejemplos del uso de la computación cuántica. [12] Los ejemplos incluyen el código fuente detrás de los estudios científicos que utilizan Qiskit, [13] así como una serie de ejercicios para ayudar a las personas a aprender los conceptos básicos de la programación cuántica. Un libro de texto de código abierto basado en Qiskit está disponible como complemento del curso de algoritmos cuánticos o computación cuántica a nivel universitario. [14]
Qiskit está hecho de elementos que trabajan juntos para permitir la computación cuántica. El objetivo central de Qiskit es construir una pila de software que facilite a cualquiera el uso de computadoras cuánticas, independientemente de su nivel de habilidad o área de interés; Qiskit permite a los usuarios diseñar experimentos y aplicaciones y ejecutarlos en computadoras cuánticas reales y/o simuladores clásicos. Qiskit brinda la capacidad de desarrollar software cuántico tanto a nivel de código de máquina de OpenQASM como a niveles abstractos adecuados para usuarios finales sin experiencia en computación cuántica. Esta funcionalidad la proporcionan los siguientes componentes. [15]
El elemento Terra es la base sobre la que se construye el resto de Qiskit. Qiskit Terra proporciona herramientas para crear circuitos cuánticos en el nivel del código de máquina cuántica o cerca de él . [16] Permite que los procesos que se ejecutan en hardware cuántico se construyan explícitamente en términos de puertas cuánticas . También proporciona herramientas que permiten optimizar circuitos cuánticos para un dispositivo, así como gestionar lotes de trabajos y ejecutarlos en simuladores y dispositivos cuánticos de acceso remoto.
A continuación se muestra un ejemplo sencillo de Qiskit Terra. En este se crea un circuito cuántico para dos qubits , que consta de las puertas cuánticas necesarias para crear un estado de Bell . El circuito cuántico finaliza luego con mediciones cuánticas , que extraen un bit de cada qubit.
desde qiskit importar QuantumCircuitqc = Circuito Cuántico ( 2 , 2 )control de calidad . h ( 0 ) qc . cx ( 0 , 1 ) qc . medida ([ 0 , 1 ], [ 0 , 1 ])
El elemento Aer proporciona simuladores de computación cuántica de alto rendimiento con modelos de ruido realistas. A corto plazo, el desarrollo de software cuántico dependerá en gran medida de la simulación de pequeños dispositivos cuánticos. Para Qiskit, esto lo proporciona el componente Aer. Esto proporciona simuladores alojados localmente en el dispositivo del usuario, así como recursos HPC disponibles a través de la nube. [17] Los simuladores también pueden simular los efectos del ruido para modelos de ruido simples y sofisticados. [18]
Siguiendo con el ejemplo anterior: Una vez creado el circuito cuántico, se puede ejecutar en un backend (ya sea hardware cuántico o un simulador). En el siguiente ejemplo, se utiliza un simulador local.
desde qiskit importar Aer , ejecutarbackend = Aire . get_backend ( "qasm_simulator" ) trabajo = ejecutar ( qc , backend ) resultado = trabajo . resultado () imprimir ( resultado . get_counts ( qc ))
La declaración de impresión final aquí mostrará los resultados devueltos por el backend. Este es un diccionario de Python que describe las cadenas de bits obtenidas de múltiples ejecuciones del circuito cuántico. En el circuito cuántico utilizado en este ejemplo, las cadenas de bits '00'
y '11'
deberían ser los únicos resultados posibles y deberían ocurrir con la misma probabilidad. Por lo tanto, los resultados completos normalmente tendrán las muestras divididas aproximadamente en partes iguales entre los dos, como por ejemplo {'00':519, '11':505}
.
Los experimentos realizados en hardware cuántico utilizando Qiskit se han utilizado en muchos artículos de investigación, [19] como en pruebas de corrección de errores cuánticos, [20] [21] generación de entrelazamiento [22] y simulación de dinámicas alejadas del equilibrio. [23]
A partir de la versión 0.7.0, lanzada el 6 de diciembre de 2021, Qiskit Ignis quedó obsoleto y reemplazado por el proyecto Qiskit Experiments. [24]
El elemento Ignis proporciona herramientas para la verificación de hardware cuántico, caracterización de ruido y corrección de errores. Ignis es un componente que contiene herramientas para caracterizar el ruido en dispositivos a corto plazo, además de permitir realizar cálculos en presencia de ruido. Esto incluye herramientas para evaluar dispositivos a corto plazo, mitigar y corregir errores. [25]
Ignis está destinado a aquellos que quieran diseñar códigos de corrección de errores cuánticos, o que deseen estudiar formas de caracterizar errores mediante métodos como la tomografía, o incluso encontrar una mejor manera de utilizar puertas explorando el desacoplamiento dinámico y el control óptimo.
A partir de la versión 0.9.0, lanzada el 2 de abril de 2021, Qiskit Aqua quedó obsoleto y su soporte finalizó y su eventual archivo no se realizó antes de los 3 meses a partir de esa fecha.
El elemento Aqua proporcionó una biblioteca de algoritmos entre dominios sobre los cuales se pueden construir aplicaciones de dominios específicos. Sin embargo, la versión Qiskit 0.25.0 incluyó una reestructuración de las aplicaciones y algoritmos. Lo que anteriormente se denominaba Qiskit Aqua, el módulo único de aplicaciones y algoritmos de Qiskit, ahora se divide en módulos de aplicaciones dedicados para optimización, finanzas, aprendizaje automático y naturaleza (incluidas física y química). Los algoritmos centrales y la funcionalidad del operador de flujo de operaciones se trasladaron a Qiskit Terra.
Además, a la reestructuración, todos los algoritmos siguen un paradigma unificado: los algoritmos se clasifican según los problemas que resuelven, y dentro de una clase de aplicación los algoritmos se pueden usar indistintamente para resolver el mismo problema. Esto significa que, a diferencia de antes, las instancias de algoritmos están desacopladas del problema que resuelven. [26]
Qiskit Optimization es un marco de código abierto que cubre toda la gama, desde el modelado de alto nivel de problemas de optimización , con conversión automática de problemas a diferentes representaciones requeridas, hasta un conjunto de algoritmos de optimización cuántica fáciles de usar que están listos para ejecutarse. simuladores clásicos, así como en dispositivos cuánticos reales a través de Qiskit. El módulo de optimización permite un modelado fácil y eficiente de problemas de optimización utilizando docplex. [27]
Qiskit Finance es un marco de código abierto que contiene componentes de incertidumbre para problemas de acciones/valores, traductores Ising para optimizaciones de carteras y proveedores de datos para obtener datos reales o aleatorios para financiar experimentos. [28]
El paquete Machine Learning (a partir de 2021) contiene conjuntos de datos de muestra actualmente. Tiene algunos algoritmos de clasificación como QSVM y VQC (Variational Quantum Classifier), donde estos datos se pueden utilizar para experimentos, y también existe el algoritmo QGAN (Quantum Generative Adversarial Network ). [29]
Qiskit Nature es un marco de código abierto que admite problemas que incluyen cálculos de energía del estado fundamental, estados excitados y momentos dipolares de moléculas, tanto de capa abierta como cerrada. El código comprende controladores químicos que, cuando se les proporciona una configuración molecular, devolverán integrales de uno y dos cuerpos, así como otros datos que se calculan de manera eficiente de manera clásica. Estos datos de salida de un controlador se pueden utilizar como entrada en Qiskit Nature, que contiene lógica capaz de traducirlos a una forma adecuada para algoritmos cuánticos. [30]