Inicio rápido: Solución de un problema de optimización en Azure Quantum

Obtenga información sobre cómo usar los solucionadores de optimización en Azure Quantum para solucionar un sencillo problema de optimización binaria.

Prerrequisitos

  • Para completar este tutorial, necesitará una suscripción de Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Creación de un área de trabajo de Azure Quantum

Para usar Azure Quantum, agregue un recurso de área de trabajo de Azure Quantum a su suscripción de Azure en Azure Portal. Un recurso de área de trabajo de Azure Quantum, o área de trabajo para abreviar, es una colección de recursos asociados a aplicaciones de optimización o cuánticas en ejecución.

Para abrir Azure Portal, vaya a https://portal.azure.com y siga los pasos que se detallan a continuación:

  1. Haga clic en Crear un recurso y, después, busque Azure Quantum. En la página de resultados, debería ver un icono para el servicio Azure Quantum (versión preliminar).

    Icono del servicio Azure Quantum (versión preliminar)

  2. Haga clic en Azure Quantum (versión preliminar) y, después, en Crear. Se abrirá un formulario para crear un área de trabajo.

    Creación de un recurso para el servicio Azure Quantum (versión preliminar)

  3. Rellene los detalles del área de trabajo:

    • Suscripción: la suscripción que desea asociar a esta área de trabajo.
    • Grupo de recursos: el grupo de recursos al que desea asignar esta área de trabajo.
    • Nombre: el nombre del área de trabajo.
    • Región: la región del área de trabajo.
    • Cuenta de almacenamiento: la cuenta de almacenamiento de Azure para almacenar los trabajos y resultados. Si no tiene una cuenta de almacenamiento, haga clic en Crear una nueva cuenta de almacenamiento y rellene los campos necesarios. Para esta versión preliminar, se recomienda usar los valores predeterminados.

    Propiedades del área de trabajo de Azure Quantum

    Nota

    Debe ser propietario del grupo de recursos seleccionado para crear una nueva cuenta de almacenamiento. Para obtener más información sobre cómo funcionan los grupos de recursos en Azure, consulte Control y organización de los recursos de Azure con Azure Resource Manager.

  4. Una vez rellenada la información, haga clic en la pestaña Proveedores para agregar proveedores al área de trabajo. Un proveedor proporciona acceso a un servicio cuántico, que puede ser un hardware cuántico, un simulador cuántico o un servicio de optimización.

    Proveedores para Azure Quantum

    Nota

    De forma predeterminada, el servicio Azure Quantum agrega el proveedor Microsoft QIO a cada área de trabajo.

  5. Asegúrese de que el proveedor Microsoft QIO está habilitado (lo está de forma predeterminada) y, a continuación, haga clic en Revisar y crear.

  6. Revise la configuración que ha seleccionado y, si todo es correcto, haga clic en Crear para crear el área de trabajo.

Nota

Los precios de Azure Quantum varían según el proveedor. Consulte la información de la pestaña de proveedores del área de trabajo de Azure Quantum en Azure Portal para obtener la información de precios más actualizada o visite la página Precios de Azure Quantum.

Instalación del paquete de Python para azure-quantum

Para implementar una solución, asegúrese primero de que tiene instalado el paquete de Python para azure-quantum en la máquina. Si todavía no lo tiene instalado, siga estos pasos:

  1. Instale Python 3.6 o posterior en caso de que aún no lo haya hecho.

  2. Instale PIP y asegúrese de que tiene la versión 19.2 o posterior.

  3. Instale el paquete azure-quantum de Python. Use la marca --upgrade para asegurarse de obtener la última versión.

    pip install --upgrade azure-quantum
    

Instalación de Jupyter Notebooks

También puede interactuar con la optimización de Azure Quantum mediante cuadernos de Jupyter Notebook. Para ello, deberá hacer lo siguiente:

  1. Instale el paquete de Python para azure-quantum (tal y como se describe en la sección anterior).

  2. Instale Jupyter Notebook.

  3. En el terminal que prefiera, use el siguiente comando para iniciar una nueva instancia de Jupyter Notebook:

    jupyter notebook
    

    Se abre una nueva ventana del explorador (o una nueva pestaña) que mostrará el panel de cuadernos, una especie de panel de control que permite seleccionar qué cuaderno se va a abrir (entre otras cosas).

  4. En la vista del explorador, seleccione la lista desplegable de la esquina superior derecha y elija Python 3 en la lista. Esta acción debería crear un nuevo cuaderno.

Creación y conexión a un área de trabajo de Azure Quantum

Un elemento Workspace representa el área de trabajo de Azure Quantum y es la interfaz principal para interactuar con el servicio.

from typing import List
from azure.quantum.optimization import Term
from azure.quantum import Workspace

workspace = Workspace (
    subscription_id = "",  # Add your subscription_id
    resource_group = "",   # Add your resource_group
    name = "",             # Add your workspace name
    location = ""          # Add your workspace location (for example, "westus")
    )

La primera vez que ejecute un método que interactúe con el servicio de Azure, es posible que una ventana le pida sus credenciales en el explorador predeterminado. Opcionalmente, puede pasar la credencial que se usará en la autenticación en la construcción del objeto Workspace o por medio de su propiedad credentials. Para más información, consulte Área de trabajo de Quantum.

Nota

El método workspace.login() está en desuso y ya no es necesario. La primera vez que se llama al servicio, se intenta realizar una autenticación con las credenciales pasadas al constructor Workspace o a su propiedad credentials. Si no se han pasado credenciales, se intentan varios métodos de autenticación con DefaultAzureCredential.

Expresión de un problema simple

Para expresar un problema simple que se resolverá, cree una instancia de Problem establezca problem_type en ProblemType.ising o ProblemType.pubo. Para más información, consulte ProblemType.

from azure.quantum.optimization import Problem, ProblemType, Term

problem = Problem(name="My First Problem", problem_type=ProblemType.ising)

A continuación, cree una matriz de objetos Term y agréguelos a Problem:

terms = [
    Term(c=-9, indices=[0]),
    Term(c=-3, indices=[1,0]),
    Term(c=5, indices=[2,0]),
    Term(c=9, indices=[2,1]),
    Term(c=2, indices=[3,0]),
    Term(c=-4, indices=[3,1]),
    Term(c=4, indices=[3,2])
]

problem.add_terms(terms=terms)

Nota

Hay varias maneras de proporcionar términos al problema y no todos los términos deben agregarse al mismo tiempo.

Aplicación de un solucionador de optimización

Para el proveedor Microsoft QIO, usaremos una versión sin parámetros del templado paralelo. Puede consultar la documentación acerca de este solucionador y los otros disponibles en la referencia del proveedor de Microsoft QIO.

from azure.quantum.optimization import ParallelTempering

solver = ParallelTempering(workspace, timeout=100)

result = solver.optimize(problem)
print(result)

Este método envía el problema a Azure Quantum para la optimización y espera sincrónicamente a que se resuelva. Verá una salida similar a la siguiente en la ventana de terminal o en Jupyter Notebook:

{'solutions': [{'configuration': {'0': 1, '1': 1, '2': -1, '3': 1}, 'cost': -32.0}]}

Prerrequisitos

  • Para completar este tutorial, necesitará una suscripción de Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Creación de un área de trabajo de Azure Quantum

Para usar Azure Quantum, agregue un recurso de área de trabajo del servicio a su suscripción de Azure en Azure Portal. Un recurso de área de trabajo de Azure Quantum, o área de trabajo para abreviar, es una colección de recursos asociados a aplicaciones de optimización o cuánticas en ejecución.

Para abrir Azure Portal, vaya a https://portal.azure.com y siga los pasos que se detallan a continuación:

  1. Haga clic en Crear un recurso y, después, busque Azure Quantum. En la página de resultados, debería ver un icono para el servicio Azure Quantum (versión preliminar).

    Icono del servicio Azure Quantum (versión preliminar)

  2. Haga clic en Azure Quantum (versión preliminar) y, después, en Crear. Se abrirá un formulario para crear un área de trabajo.

    Creación de un recurso para el servicio Azure Quantum (versión preliminar)

  3. Rellene los detalles del área de trabajo:

    • Suscripción: la suscripción que desea asociar a esta área de trabajo.
    • Grupo de recursos: el grupo de recursos al que desea asignar esta área de trabajo.
    • Nombre: el nombre del área de trabajo.
    • Región: la región del área de trabajo.
    • Cuenta de almacenamiento: la cuenta de almacenamiento de Azure para almacenar los trabajos y resultados. Si no tiene una cuenta de almacenamiento, haga clic en Crear una nueva cuenta de almacenamiento y rellene los campos necesarios. Para esta versión preliminar, se recomienda usar los valores predeterminados.

    Propiedades del área de trabajo de Azure Quantum

    Nota

    Debe ser propietario del grupo de recursos seleccionado para crear una nueva cuenta de almacenamiento. Para obtener más información sobre cómo funcionan los grupos de recursos en Azure, consulte Control y organización de los recursos de Azure con Azure Resource Manager.

  4. Una vez rellenada la información, haga clic en la pestaña Proveedores para agregar proveedores al área de trabajo. Un proveedor proporciona acceso a un servicio cuántico, que puede ser un hardware cuántico, un simulador cuántico o un servicio de optimización.

    Proveedores para Azure Quantum

    Nota

    De forma predeterminada, el servicio Azure Quantum agrega el proveedor Microsoft QIO a cada área de trabajo.

  5. Agregue al menos el proveedor 1Qloud Optimization Platform y, a continuación, haga clic en Revisar y crear.

  6. Revise la configuración que ha seleccionado y, si todo es correcto, haga clic en Crear para crear el área de trabajo.

    Revisión y creación del área de trabajo

Nota

Los precios de Azure Quantum varían según el proveedor. Consulte la información de la pestaña de proveedores del área de trabajo de Azure Quantum en Azure Portal para obtener la información de precios más actualizada o visite la página Precios de Azure Quantum.

Instalación del paquete de Python para azure-quantum

Para implementar una solución, asegúrese primero de que tiene instalado el paquete de Python para azure-quantum en la máquina. Si todavía no lo tiene instalado, siga estos pasos:

  1. Instale Python 3.6 o posterior en caso de que aún no lo haya hecho.

  2. Instale PIP y asegúrese de que tiene la versión 19.2 o posterior.

  3. Instale el paquete azure-quantum de Python. Use la marca --upgrade para asegurarse de obtener la última versión.

    pip install --upgrade azure-quantum
    

Instalación de Jupyter Notebooks

También puede interactuar con la optimización de Azure Quantum mediante cuadernos de Jupyter Notebook. Para ello, deberá hacer lo siguiente:

  1. Instale el paquete de Python para azure-quantum (tal y como se describe en la sección anterior).

  2. Instale Jupyter Notebook.

  3. En el terminal que prefiera, use el siguiente comando para iniciar una nueva instancia de Jupyter Notebook:

    jupyter notebook
    

    Se abre una nueva ventana del explorador (o una nueva pestaña) que mostrará el panel de cuadernos, una especie de panel de control que permite seleccionar qué cuaderno se va a abrir (entre otras cosas).

  4. En la vista del explorador, seleccione la lista desplegable de la esquina superior derecha y elija Python 3 en la lista. Esta acción debería crear un nuevo cuaderno.

Creación y conexión a un área de trabajo de Azure Quantum

Un elemento Workspace representa el área de trabajo de Azure Quantum y es la interfaz principal para interactuar con el servicio.

from typing import List
from azure.quantum.optimization import Term
from azure.quantum import Workspace

workspace = Workspace (
    subscription_id = "",  # Add your subscription_id
    resource_group = "",   # Add your resource_group
    name = "",             # Add your workspace name
    location = ""          # Add your workspace location (for example, "westus")
    )

La primera vez que ejecute un método que interactúe con el servicio de Azure, es posible que una ventana le pida sus credenciales en el explorador predeterminado. Opcionalmente, puede pasar la credencial que se usará en la autenticación en la construcción del objeto Workspace o por medio de su propiedad credentials. Para más información, consulte Área de trabajo de Quantum.

Nota

El método workspace.login() está en desuso y ya no es necesario. La primera vez que se llama al servicio, se intenta realizar una autenticación con las credenciales pasadas al constructor Workspace o a su propiedad credentials. Si no se han pasado credenciales, se intentan varios métodos de autenticación con DefaultAzureCredential.

Expresión de un problema simple

Para expresar un problema simple que se resolverá, cree una instancia de Problem establezca problem_type en ProblemType.ising o ProblemType.pubo. Para más información, consulte ProblemType.

from azure.quantum.optimization import Problem, ProblemType, Term

problem = Problem(name="My First Problem", problem_type=ProblemType.ising)

A continuación, cree una matriz de objetos Term y agréguelos a Problem:

terms = [
    Term(c=-9, indices=[0]),
    Term(c=-3, indices=[1,0]),
    Term(c=5, indices=[2,0]),
    Term(c=9, indices=[2,1]),
    Term(c=2, indices=[3,0]),
    Term(c=-4, indices=[3,1]),
    Term(c=4, indices=[3,2])
]

problem.add_terms(terms=terms)

Nota

Hay varias maneras de proporcionar términos al problema y no todos los términos deben agregarse al mismo tiempo.

Aplicación de un solucionador de optimización

Para el proveedor 1QBit, usaremos el solucionador de revinculación de ruta de acceso. Puede consultar la documentación acerca de este solucionador y otros disponibles en la referencia del proveedor 1QBit.


from azure.quantum.optimization.oneqbit import PathRelinkingSolver

solver = PathRelinkingSolver(workspace)

result = solver.optimize(problem)
print(result)

Este método envía el problema a Azure Quantum para la optimización y espera sincrónicamente a que se resuelva. Verá una salida similar a la siguiente en la ventana de terminal o en Jupyter Notebook:

{'solutions': [{'configuration': {'0': 1, '1': 1, '2': -1, '3': 1}, 'cost': -32.0}]}

Nota

Si se produce un error al trabajar con Azure Quantum, puede consultar nuestra lista de problemas comunes. Además, si usa un solucionador de optimización y aparece un error con el formato <AZQxxx>, puede consultar nuestra lista de errores comunes de usuario en solucionadores de optimización.

Pasos siguientes

Documentación

Ejemplos y aprendizaje integral