Qinterpreter

Qinterpreter es una herramienta de código abierto diseñada para integrar cinco populares bibliotecas cuánticas basadas en Python: Qiskit, Pyquil, Pennylane, Amazon Braket y Cirq. Desarrolladas por líderes de la industria como IBM, Amazon, Google, Rigetti Computing y Xanadu, estas bibliotecas están unificadas por Qinterpreter en un único marco de trabajo.

Esta integración permite a los usuarios interactuar y ejecutar código en las cinco plataformas de computación cuántica. Esencialmente, Qinterpreter actúa como un simulador que traduce algoritmos entre estos marcos de trabajo y está disponible gratuitamente en línea. Esto es especialmente útil para investigadores y recién llegados que carecen de acceso a computadoras cuánticas físicas.

Para obtener más información, consulte el siguiente artículo para obtener más detalles.

Unleashing quantum algorithms with Qinterpreter: bridging the gap between theory and practice across leading quantum computing platforms

¿Cuál es el propósito principal del Qinterpreter?

Qinterpreter sirve como una herramienta educativa y de entrenamiento, ofreciendo un punto de entrada fácil de usar para aquellos nuevos en la computación cuántica. Permite a los usuarios desarrollar y ejecutar circuitos cuánticos en múltiples plataformas con facilidad.

Además, el desarrollo e implementación de Qinterpreter sirven como una prueba piloto para la plataforma Quantum Science Gateway, marcando el primer paso hacia la creación de un espacio inclusivo y colaborativo que fomente la innovación y la educación en la ciencia cuántica.

Cómo funciona Qinterpreter

Qinterpreter opera en tres pasos secuenciales. El primer paso consiste en crear un lenguaje común llamado Qinterpreter. El segundo paso es traducir este lenguaje a los cinco marcos de trabajo distintos: Qiskit, Cirq, PennyLane, PyQuil y Amazon Braket. El paso final implica gestionar el proceso de simulación. Siguiendo este enfoque, Qinterpreter proporciona un entorno donde los usuarios pueden interactuar con estos cinco backends cuánticos. Estos backends sirven como interfaces a simuladores cuánticos, permitiendo a los usuarios realizar simulaciones o ejecutar código sin necesidad de comprender los detalles técnicos subyacentes.

El proceso se basa en reglas predefinidas centradas en las puertas básicas utilizadas en la computación cuántica. Dado que la mayoría de las bibliotecas siguen un conjunto estándar de puertas básicas, Qinterpreter adapta estas puertas simples para cada biblioteca específica. El núcleo del proceso de traducción es mapear las puertas del modelo independiente del marco de trabajo a las puertas correspondientes en el marco de trabajo objetivo, asegurando la compatibilidad y la ejecución exitosa en el backend elegido. Cada traductor utiliza el backend de su respectiva biblioteca para la traducción y simulación de circuitos. Por ejemplo, Qiskit utiliza el backend Aer para la simulación de vectores de estado, mientras que PennyLane utiliza su dispositivo qubit predeterminado. Antes de continuar con un ejemplo, revisemos el proceso de instalación.

Instalación y backends

Para garantizar el correcto funcionamiento de Qinterpreter, instala las versiones de biblioteca requeridas ejecutando los siguientes comandos en tu consola de Python:

pip install qiskit==0.42.0
pip install qiskit_terra==0.23.2
pip install qiskit_aer==0.12.0
pip install qiskit-ibmq-provider==0.20.2
pip install qiskit_nature==0.6.0
pip install Pennylane==0.29.1
pip install Cirq==0.9.1
pip install Pyquil==3.3.4
pip install amazon_Braket_sdk==1.36.4
pip install plotly

Si estás trabajando en Jupyter Notebook o JupyterLab, simplemente agrega ! al principio de cada comando para instalar las versiones específicas de las bibliotecas.

Instalación

A continuación, instala Qinterpreter ejecutando:

pip install git+https://github.com/Qubithub/Qinterpreter.git

Importando las bibliotecas cuánticas

Una vez completada la instalación, importa las bibliotecas cuánticas necesarias con el siguiente código:

from quantumgateway.quantum_circuit import QuantumCircuit, QuantumGate
from quantumgateway.quantum_translator.braket_translator import BraketTranslator
from quantumgateway.quantum_translator.cirq_translator import CirqTranslator
from quantumgateway.quantum_translator.qiskit_translator import QiskitTranslator
from quantumgateway.quantum_translator.pennylane_translator import PennyLaneTranslator
from quantumgateway.quantum_translator.pyquil_translator import PyQuilTranslator
from quantumgateway.main import translate_to_framework, simulate_circuit

Funciones de Qinterpreter

Los usuarios deben familiarizarse con las reglas e instrucciones de Qinterpreter. Como ejemplo, simulemos un circuito cuántico básico que crea el estado de Bell.

|Ψ+⟩ = (1/√2)(|00⟩ + |11⟩)

Un estado entrelazado de dos qubits

Función Circuito Cuántico

La función QuantumCircuit(), dentro de Qinterpreter, es responsable de crear un circuito basado en el número especificado de qubits y registros clásicos. Para nuestro ejemplo del estado de Bell, necesitamos dos registros cuánticos y dos registros clásicos:

n=2
circuit = QuantumCircuit(n,n)

Función Circuit.Add_Gate()

Posteriormente, añadimos las puertas cuánticas necesarias para simular nuestro estado de Bell.

circuit.add_gate(QuantumGate("h", [0]))
circuit.add_gate(QuantumGate("cnot", [0,1]))

Donde la compuerta Hadamard (h) crea una superposición, resultando en el estado (|00⟩ + |01⟩) / √2, mientras que la puerta CNOT entrelaza los qubits para formar el estado de Bell (|00⟩ + |11⟩) / √2.

Función Medir

Para realizar la simulación de nuestro circuito, implementamos la operación de medición de la siguiente manera:

circuit.add_gate(QuantumGate("MEASURE", [0,0]))
circuit.add_gate(QuantumGate("MEASURE", [1,1]))

Función Translate_to_framework()

Selecciona el marco de trabajo para visualizar la simulación (Qiskit, Pyquil, Pennylane, Amazon Braket o Cirq) y utiliza el siguiente comando:

selected_framework = 'qiskit' # For Qiskit framework
selected_framework = 'cirq' # For Cirq framework
selected_framework = 'Pyquil' # For Pyquil framework
selected_framework = 'pennylane' # For Pennylane framework
selected_framework = 'amazonbraket' # For Amazon-Braket framework
translated_circuit = translate_to_framework(circuit, selected_framework)

Function Translated_circuit.print_circuit()

Imprimir el circuito en cualquier biblioteca de computación cuántica permite a los usuarios visualizar y depurar sus circuitos cuánticos creados. En este caso, para visualizar el circuito y asegurarse de que funciona correctamente, se aplica la siguiente regla:

translated_circuit.print_circuit()

Función simulate_circuit()

Para simular el circuito, utilizamos los simuladores específicos que proporciona cada biblioteca. En el caso de Qiskit, se utiliza el simulador QASM. Sin embargo, para el framework específico de Pyquil, el usuario debe instalar los requisitos de software descritos en la documentación proporcionada por Rigetti (Instalación y Primeros Pasos — documentación de pyQuil 3.5.4 (rigetti.com)). El comando para realizar e imprimir las simulaciones es el siguiente:

print("The results of our simulated circuit are: ")
counts = simulate_circuit(circuit, selected_framework)
print(counts)
# Plot the histogram
from qiskit.visualization import plot_histogram
plot_histogram(counts, title='Histogram of Quantum States (Qiskit)')

¡Felicitaciones! Has creado y simulado tu primer circuito cuántico.

Acerca de

QubitHub

Qubithub.org es una iniciativa latinoamericana con socios en los Estados Unidos enfocada en el avance de la computación cuántica y sus campos interdisciplinarios relacionados, como la óptica cuántica, la información cuántica, la fotónica, la inteligencia artificial, las nanociencias y la robótica.

QubitHub.org
Recursos Cuánticos
Contáctanos