Qiskit

De Wikipedia, la enciclopedia libre
Qiskit
Información general
Tipo de programa Computacion cuántica
Autor IBM Research
Desarrollador IBM Research, Qiskit community
Modelo de desarrollo Código abierto
Lanzamiento inicial 07 de marzo de 2017
Licencia Apache License 2.0[1]
Información técnica
Programado en
Versiones
Última versión estable 0.39.0 ( 13 de octubre de 2022[2]​)
Enlaces

Qiskit es un kit de desarrollo de software creado por IBM 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 dispositivos cuánticos prototipo en IBM Quantum Experience o en simuladores en una computadora local. Sigue el modelo de circuito para la computación cuántica universal y se puede utilizar para cualquier hardware cuántico (actualmente admite qubits superconductores e iones atrapados [4]) que siga este modelo.

Qiskit fue fundado por IBM Research para permitir el desarrollo de software para su servicio de computación cuántica en la nube, IBM Quantum Experience.[3]​ Las contribuciones también las realizan entusiastas externos, generalmente de instituciones académicas.[4][5]

La versión principal de Qiskit usa el lenguaje de programación Python. Las versiones para Swift[6]​ y JavaScript[7]​ fueron inicialmente exploradas, aunque el desarrollo de estas versiones se ha detenido. En cambio, una reimplementación mínima de las características básicas está disponible como MicroQiskit,[8]​ que está hecho para que sea fácil de trasladar a plataformas alternativas.

Se proporciona una gama de cuadernos Jupyter con ejemplos del uso de computación cuántica.[9]​ Los ejemplos incluyen el código fuente detrás de los estudios científicos que utilizan Qiskit,[10]​ así como un conjunto 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 a nivel universitario como suplemento de un curso de computación cuántica o algoritmos cuánticos.[11]

Componentes[editar]

Qiskit está formado por elementos que trabajan juntos para permitir ejecutar programas enfocados a la computación cuántica. El objetivo central de Qiskit es crear una pila de software que facilite a cualquier persona el uso de computadoras cuánticas, independientemente de su nivel de conocimiento o área de interés; Qiskit permite a los usuarios diseñar fácilmente experimentos y aplicaciones y ejecutarlos en computadoras cuánticas reales y/o simuladores clásicos. Qiskit proporciona 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 es proporcionada por los siguientes componentes.[12]

Qiskit Terra[editar]

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 o cerca del nivel de código de máquina cuántica.[13]​ Permite que los procesos que se ejecutan en hardware cuántico se construyan explícitamente en términos de compuertas cuánticas. También proporciona herramientas que permiten optimizar los circuitos cuánticos para un dispositivo en particular, así como administrar 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 esto, se crea un circuito cuántico para dos qubits, que consta de las compuertas cuánticas necesarias para crear un estado de Bell. El circuito cuántico luego termina con mediciones cuánticas, que extraen un bit de cada qubit.

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2)

qc.h(0)
qc.cx(0, 1)
qc.measure([0,1], [0,1])

Qiskit Aer[editar]

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. Proporciona simuladores alojados localmente en el dispositivo del usuario, así como recursos HPC disponibles a través de la nube.[14]​ Los simuladores también pueden simular los efectos del ruido para modelos de ruido simples y sofisticados.[15]

Continuando con el ejemplo anterior: una vez que se ha 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.

from qiskit import Aer, execute

backend = Aer.get_backend("qasm_simulator")
job = execute(qc, backend)
result = job.result()
print(result.get_counts(qc))

La declaración final 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 producirse con la misma probabilidad. Por lo tanto, los resultados completos normalmente tendrán las muestras divididas aproximadamente en partes iguales entre los dos, como {'00': 519, '11': 505}.

Los experimentos realizados en hardware cuántico utilizando Qiskit se han utilizado en muchos trabajos de investigación,[10]​ como en pruebas de corrección de errores cuánticos,[16][17]​ generación de entrelazamiento[18]​ y simulación de dinámica lejos del equilibrio.[19]

Qiskit Ignis[editar]

El elemento Ignis proporciona herramientas para la verificación de hardware cuántico, la caracterización de ruido y la 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 comparar dispositivos a corto plazo, mitigación de errores y corrección de errores.[20]

Ignis está destinado a aquellos que desean diseñar códigos de corrección de errores cuánticos, o que desean estudiar formas de caracterizar errores a través de métodos como la tomografía, o incluso encontrar una mejor manera de usar compuertas explorando el desacoplamiento dinámico y el control óptimo.

Qiskit Aqua[editar]

A partir de la versión 0.9.0, lanzada el 2 de abril de 2021, Qiskit Aqua ha quedado obsoleto y su soporte finaliza y no se archivará de manera final antes de 3 meses a partir de esa fecha.

El elemento Aqua proporcionó una biblioteca de algoritmos de dominio cruzado sobre los cuales se pueden construir aplicaciones específicas de dominio. Sin embargo, la versión 0.25.0 de Qiskit incluyó una reestructuración de las aplicaciones y algoritmos. Lo que anteriormente se conocía como Qiskit Aqua, el módulo único de aplicaciones y algoritmos de Qiskit, ahora se divide en módulos de aplicación dedicados para Optimización, Finanzas, Aprendizaje Automático y Naturaleza (incluyendo Física y Química). Los algoritmos centrales y la funcionalidad del operador de flujo de operación se trasladaron a Qiskit Terra.

Además, a la reestructuración, todos los algoritmos siguen un nuevo paradigma unificado: los algoritmos se clasifican según los problemas que resuelven, y dentro de una clase de aplicación, los algoritmos pueden usarse indistintamente para resolver el mismo problema. Esto significa que, a diferencia de antes, las instancias de algoritmos están desacopladas del problema que resuelven.

Qiskit Optimization[editar]

Qiskit Optimization es un framework de código abierto que cubre todo el rango, 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 en simuladores clásicos, así como en dispositivos cuánticos reales a través de Qiskit. El módulo Optimización permite un modelado fácil y eficiente de problemas de optimización utilizando docplex.[21]

Qiskit Finance[editar]

Qiskit Finance es un framework de código abierto que contiene componentes de incertidumbre para problemas de acciones/valores, traductores de Ising para optimizaciones de cartera y proveedores de datos para obtener datos reales o aleatorios para experimentos de finanzas.[22]

Qiskit Machine Learning[editar]

El paquete de machine learning simplemente contiene conjuntos de datos de muestra en la actualidad. 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).[23]

Qiskit Nature[editar]

Qiskit Nature es un framework de código abierto que admite problemas que incluyen cálculos de energía del estado fundamental, estados excitados y momentos dipolares de la molécula, tanto de capa abierta como cerrada. El código comprende controladores de química, que cuando se proporcionan con una configuración molecular devolverán integrales de uno y dos cuerpos, así como otros datos que se calculan de manera clásica de manera eficiente. Estos datos de salida de un controlador se pueden usar como entrada en Qiskit Nature que contiene lógica que puede traducir esto en una forma adecuada para algoritmos cuánticos.[24]

Referencias[editar]

  1. License
  2. «Releases – Qiskit». 
  3. Hemsoth, Nicole (7 de agosto de 2018). «QISKit Developments Key to IBM Quantum Engagement». The Next Platform (en inglés estadounidense). Consultado el 14 de julio de 2021. 
  4. «Qiskit». GitHub (en inglés). Consultado el 14 de julio de 2021. 
  5. Wille, Robert; Van Meter, Rod; Naveh, Yehuda (2019-03). «IBM’s Qiskit Tool Chain: Working with and Developing for Real Quantum Computers». 2019 Design, Automation Test in Europe Conference Exhibition (DATE): 1234-1240. doi:10.23919/DATE.2019.8715261. Consultado el 14 de julio de 2021. 
  6. qiskit-community/qiskit-swift, Qiskit Community, 9 de julio de 2021, consultado el 14 de julio de 2021 .
  7. qiskit-community/qiskit-js, Qiskit Community, 25 de junio de 2021, consultado el 14 de julio de 2021 .
  8. qiskit-community/MicroQiskit, Qiskit Community, 21 de junio de 2021, consultado el 14 de julio de 2021 .
  9. Qiskit/qiskit-tutorials, Qiskit, 12 de julio de 2021, consultado el 14 de julio de 2021 .
  10. a b «IBM Q Experience community publishes research». IBM Research Blog (en inglés estadounidense). 8 de marzo de 2018. Consultado el 14 de julio de 2021. 
  11. «Learn Quantum Computation using Qiskit». community.qiskit.org (en inglés). Consultado el 14 de julio de 2021. 
  12. Qiskit (15 de julio de 2020). «Qiskit and its Fundamental Elements». Medium (en inglés). Consultado el 14 de julio de 2021. 
  13. «Qiskit». web.archive.org. 10 de octubre de 2019. Archivado desde el original el 10 de octubre de 2019. Consultado el 14 de julio de 2021. 
  14. «An Open High-Performance Simulator for Quantum Circuits». IBM Research Blog (en inglés estadounidense). 1 de mayo de 2018. Consultado el 14 de julio de 2021. 
  15. Qiskit (19 de diciembre de 2018). «Introducing Qiskit Aer: A high performance simulator framework for quantum circuits». Medium (en inglés). Consultado el 14 de julio de 2021. 
  16. Wootton, James R.; Loss, Daniel (10 de mayo de 2018). «A repetition code of 15 qubits». Physical Review A 97 (5): 052313. ISSN 2469-9926. doi:10.1103/PhysRevA.97.052313. Consultado el 14 de julio de 2021. 
  17. Roffe, Joschka; Headley, David; Chancellor, Nicholas; Horsman, Dominic; Kendon, Viv (2018-07). «Protecting quantum memories using coherent parity check codes». Quantum Science and Technology 3 (3): 035010. ISSN 2058-9565. doi:10.1088/2058-9565/aac64e. Consultado el 14 de julio de 2021. 
  18. Wang, Yuanhao; Li, Ying; Yin, Zhang-qi; Zeng, Bei (27 de septiembre de 2018). «16-qubit IBM universal quantum computer can be fully entangled». npj Quantum Information (en inglés) 4 (1): 1-6. ISSN 2056-6387. doi:10.1038/s41534-018-0095-x. Consultado el 14 de julio de 2021. 
  19. Zhukov, A. A.; Remizov, S. V.; Pogosov, W. V.; Lozovik, Yu E. (2018-09). «Algorithmic simulation of far-from-equilibrium dynamics using quantum computer». Quantum Information Processing 17 (9): 223. ISSN 1570-0755. doi:10.1007/s11128-018-2002-y. Consultado el 14 de julio de 2021. 
  20. Qiskit/qiskit-ignis, Qiskit, 10 de julio de 2021, consultado el 14 de julio de 2021 .
  21. Qiskit/qiskit-optimization, Qiskit, 13 de julio de 2021, consultado el 14 de julio de 2021 .
  22. Qiskit/qiskit-finance, Qiskit, 13 de julio de 2021, consultado el 14 de julio de 2021 .
  23. Qiskit/qiskit-machine-learning, Qiskit, 13 de julio de 2021, consultado el 14 de julio de 2021 .
  24. Qiskit/qiskit-nature, Qiskit, 13 de julio de 2021, consultado el 14 de julio de 2021 .