Saltar a contenido

Primeros pasos con LaunchPad#

Introducción#

La plataforma QCentroid incluye un entorno de desarrollo alojado en la nube basado en Jupyter Notebook.

Este entorno suele llamarse IDE o LaunchPad.

Empieza a usar el IDE:

  1. Accede al entorno de desarrollo a través de esta URL: https://ide.sandbox.qcentroid.com/

    • Usa tu dirección de email y contraseña.

    Sandbox login

  2. Tu servidor se inicia automáticamente.

    • Después del login, se lanzará automáticamente un servidor Jupyter. Tendrás un entorno de 16 cores y 32GB de memoria para desarrollar y ejecutar tu solución.
  3. Después del login, se te redirigirá a tu entorno de desarrollo Jupyter Notebook.

    IDE basado en Jupyter Notebook

  4. Verás que el IDE está conectado a tu repositorio de GitHub y que la plantilla de código fuente ya está disponible.

Uso de LaunchPad#

Implementa tus solvers usando la plantilla de solver#

Una vez elegido el caso de uso y registrado un solver en la plataforma, puedes empezar a implementar el código fuente real de tu solver.

Veamos cómo implementar el solver para que pueda ejecutarse tanto en el IDE como en la plataforma QCentroid.

Entiende la plantilla de solver#

La plantilla de solver contiene dos archivos principales:

  • Launcher.ipnpy Notebook de Jupyter para probar y ejecutar tu solver en el IDE
  • qcentroid.py Archivo principal del solver que contiene el algoritmo

Las siguientes subsecciones describen los archivos que encontrarás en el repositorio.

Launcher.ipnpy#

Este es el Jupyter Notebook que puedes usar en el entorno IDE para ejecutar y probar tu algoritmo.

Contiene instrucciones adicionales y todos los pasos necesarios.

qcentroid.py#

Este archivo contendrá el solver en sí.

También tiene una función run() con una firma específica que recibe estos parámetros: input_data, solver_params y extra_arguments.

Este es el punto de entrada de tu solver. No lo modifiques.

qcentroid.py
import logging
logger = logging.getLogger("qcentroid-user-log")

from qiskit import QuantumCircuit, Aer, execute, IBMQ

def run(input_data, solver_params, extra_arguments):

    logger.info("Starting Solver...")

    # Here goes your solver's code

    logger.info("Ending Solver...")
    output = {}

    output["output_param"] = "This is an output parameter"

    # And this is the output it returns
    return output

El parámetro input_data contiene los datos de entrada de la ejecución de este job, ya sea un archivo JSON local proporcionado desde el notebook Launcher o datos proporcionados al ejecutar un job en Quantum Platform.

Modifica el código fuente del solver#

Lo normal es empezar modificando la plantilla en el archivo qcentroid.py.

Este archivo contiene la función run(), que es el punto de entrada.

Desde este punto puedes empezar a modificar el código de ejemplo y añadir tu propio algoritmo.

Cómo gestionar excepciones#

Importante

No captures excepciones de forma global en tu solver. Deja que las excepciones bloqueantes se lancen y sean gestionadas por la plataforma, para que la ejecución se detenga y el mensaje de excepción se muestre en el dashboard.

Puedes añadir gestión de excepciones con alcance limitado en el código de tu solver, pero asegúrate de lanzar los errores bloqueantes como excepciones para que la plataforma pueda capturarlos y detener la ejecución.

Puedes revisar estas excepciones en el dashboard, en la página de detalles del job, después de la ejecución.

Cómo añadir logs a tu solver#

Puedes añadir logs en tu solver y verlos en el dashboard web de la plataforma después de cada ejecución.

Tip

Añade tantos logs como quieras, especialmente durante las fases de desarrollo, pruebas y experimentación, para recopilar tanta información como sea posible sobre el rendimiento de tu solver.

Para hacerlo, realiza lo siguiente en cualquiera de los archivos de tu solver:

Primero, importa la librería nativa de Python para logging e inicialízala:

import logging
logger = logging.getLogger("qcentroid-user-log")

Después, añade tantos registros de log como quieras a lo largo del código:

logger.info("Starting solver execution...")

Este es un ejemplo de archivo qcentroid.py que incluye registros de log:

qcentroid.py
import logging
logger = logging.getLogger("qcentroid-user-log")

def run(input_data, solver_params, extra_arguments):

    logger.info("Starting solver execution...")

    # This is your solver's code:

    input_param_1 = int(input_data['param_1'])

    logger.info(f"Input param_1: { input_param_1 }")

    output = {"output_param": "This is an output parameter"}

    # And this is the output it returns
    logger.info("End of solver execution.")

    return output

Todos estos registros de log se almacenan y se muestran en el dashboard web, en la página de detalles del job, en la pestaña Execution logs.

Cómo medir el tiempo de ejecución#

Puedes usar esta funcionalidad de logging para medir el tiempo efectivo de ejecución de tu solver usando la librería time.

Tip

Puedes medir el tiempo de ejecución de tu solver o de cualquier subproceso dentro de tu solver.

Importa la librería nativa de Python time:

import time

Registra el tiempo de inicio y fin, réstalos y envía el resultado al log de ejecución:

start_time = time.time()  # Start timing

# The process you want to measure

end_time = time.time()  # End timing

elapsed_time = end_time - start_time

logger.info(f"Elapsed time (in seconds): { elapsed_time }")

Ejecuta el solver en el IDE#

Para ejecutar tu solver en el IDE durante el proceso de desarrollo y antes de subirlo a la plataforma, usa el Jupyter notebook proporcionado, Launcher.ipnpy.

3. Haz push del código a GitHub#

Cuando tengas una versión funcional de tu solver, haz track, stage, commit y push del código al repositorio de GitHub desde la barra lateral izquierda del IDE.

Push changes to Git server

Para hacerlo:

  1. Haz clic en la pestaña Git de la barra de herramientas izquierda.
  2. Para archivos nuevos, haz track y stage haciendo clic en el botón plus (+) junto a tus archivos sin seguimiento.
  3. Para archivos modificados, usa los botones plus (+) junto a los archivos cambiados para hacer stage.
  4. Escribe un mensaje de commit y haz clic en el botón COMMIT.
  5. Por último, haz clic en el botón Push en la esquina superior derecha del panel para enviar los cambios al servidor.

En este punto, tu código fuente está almacenado en GitHub y puede transferirse (Pull and build) a la plataforma.

4. Pull del nuevo código del solver en la plataforma#

Ahora que tienes el código fuente de tu solver gestionado en un repositorio, puedes hacer Pull and build en la plataforma para poder ejecutar jobs con él.

Ve a la página de detalle del Repository desde el menú lateral izquierdo, Solvers > Repositories. Después haz clic en tu repositorio y en el botón Pull & build junto a tu solver.

Pull and build solver

Debajo puedes consultar el historial de builds. Espera hasta que este proceso aparezca como Finished y asegúrate de que el commit utilizado sea el que acabas de subir a GitHub.

Ahora, tu solver está listo para ejecutar jobs en la plataforma.

5. Ejecuta tu solver en la plataforma#

El último paso será ejecutar en la plataforma el solver que acabas de crear.

Con la funcionalidad de ejecuciones no-code de QCentroid, puedes lanzar jobs directamente desde el dashboard de la plataforma.

Para lanzar un job:

  1. Navega a la sección Jobs desde el menú lateral izquierdo.
  2. Haz clic en el botón Run job y continúa con el asistente.

    Run job button

  3. Selecciona el caso de uso:

    Run job step 1

  4. Selecciona tu solver (arrástralo y suéltalo en el lado derecho):

    Run job step 2

  5. Selecciona los datos de entrada para esta ejecución desde cualquiera de los sample datasets.

    Run job step 3

  6. Escribe la descripción y comentario del job:

    Run job step 4

  7. Revisa el resumen del job:

    Run job step 5

  8. Haz clic en el botón Execute job.

Recibirás una notificación en la esquina superior derecha confirmando que se ha lanzado un nuevo job.

Job ejecutado correctamente

Espera hasta que el job esté en estado Finished y haz clic en él para ver los resultados.

Haz clic en la pestaña Raw results para ver la salida del solver si el job se ha ejecutado correctamente, o la traza de error si ha fallado.