Las bibliotecas de Q#
El kit de desarrollo de Quantum (QDK) proporciona funcionalidad adicional específica del dominio a través de paquetes NuGet que se pueden agregar a los proyectos de Q#.
Biblioteca de Q# | Paquete de NuGet | Notas |
---|---|---|
Bibliotecas estándar de Q# | Microsoft.Quantum.Standard | Se incluye de manera predeterminada |
Biblioteca de química cuántica | Microsoft.Quantum.Chemistry | |
Biblioteca de aprendizaje automático cuántico | Microsoft.Quantum.MachineLearning | |
Biblioteca de valores numéricos cuánticos | Microsoft.Quantum.Numerics |
Bibliotecas estándar
El Microsoft.Quantum.Sdk
paquete NuGet instalado durante la instalación y validación proporciona automáticamente la biblioteca estándar Q#. Las bibliotecas estándar proporcionan un conjunto de funciones y operaciones esenciales muy útiles que se pueden usar para escribir programas cuánticos en Q#.
La funcionalidad de las bibliotecas estándar incluye matemáticas clásicas, conversiones de tipos entre varios tipos de datos de Q#, diagnóstico de errores y errores en programas cuánticos, corrección de errores cuánticos, caracterización de los efectos de las operaciones para desarrollar algoritmos cuánticos útiles y muchas más características.
Para más información, consulte Bibliotecas estándar.
Biblioteca de química cuántica
La simulación de sistemas físicos juega un papel primordial en la computación cuántica. Esto se debe a que la dinámica cuántica se considera inextricable para realizar simulaciones en equipos clásicos, lo que significa que la complejidad de la simulación del sistema aumenta exponencialmente con el tamaño del sistema cuántico en cuestión. La simulación de problemas en química y ciencia de materiales sigue siendo posiblemente la aplicación más evocadora de la computación cuántica y nos permitirá probar mecanismos de reacción química que hasta la fecha estaban fuera de nuestra capacidad de medir o simular. También nos permitirá simular materiales electrónicos correlacionados, como superconductores a alta temperatura. La lista de aplicaciones en este espacio es inmensa.
La documentación de la biblioteca de química cuántica del Kit de desarrollo de Quantum proporciona una introducción y varios ejemplos para simular problemas de estructura electrónica en equipos cuánticos con el fin de ayudar al lector a comprender el rol que desempeñan muchos aspectos de la biblioteca de simulación de Hamilton dentro del espacio. Para más información, consulte Biblioteca de química cuántica.
La biblioteca de química cuántica del Kit de desarrollo de Quantum está diseñada para funcionar bien con paquetes de química de cálculo, especialmente con la plataforma de química computacional NWChem que ha desarrollado el Laboratorio de Ciencias Moleculares del Entorno (EMSL) en el Laboratorio Nacional del Noroeste del Pacífico. Para más información, consulte Instalación de la biblioteca de química cuántica.
Biblioteca de aprendizaje automático cuántico
La biblioteca de aprendizaje automático cuántico es una API escrita en Q# que ofrece la posibilidad de ejecutar experimentos de aprendizaje automático híbridos clásicos y cuánticos. La biblioteca permite:
- Cargar sus propios datos para clasificarlos con simuladores cuánticos.
- Usar ejemplos y tutoriales para introducirse en el campo del aprendizaje automático cuántico.
Es de esperar un rendimiento bajo en comparación con las plataformas de aprendizaje automático clásicas actuales (recuerde que todo se ejecuta en la simulación de un dispositivo cuántico, que ya es costoso desde el punto de vista del cálculo). El modelo implementado en esta biblioteca se basa en el esquema de aprendizaje automático cuántico-clásico presentado en Clasificadores cuánticos centrados en circuitos.
La documentación de la biblioteca de aprendizaje automático cuántico proporciona una implementación de los clasificadores secuenciales que aprovechan las ventajas de la computación cuántica para comprender los datos. En esta documentación encontrará:
- Una introducción a los conceptos de aprendizaje automático y, concretamente, su aplicación en clasificadores cuánticos centrados en circuitos (también conocidos como clasificadores cuánticos secuenciales).
- Una clasificación básica con QDK, para ejecutar un clasificador secuencial cuántico escrito en Q#, usando la biblioteca de aprendizaje automático cuántico del QDK. Para ello, entrenará un modelo secuencial sencillo usando una estructura de clasificador definida en Q#.
- Cómo diseñar su propio clasificador con Q#, para aprender los conceptos básicos que forman el diseño de modelos de circuito para el clasificador centrado en un circuito cuántico.
- Cómo cargar su propio conjunto de datos para entrenar un modelo de clasificador con el Kit de desarrollo de Quantum (QDK).
- Por último, un glosario de aprendizaje automático cuántico, con los conceptos principales y los componentes del proceso de entrenamiento.
Biblioteca de valores numéricos cuánticos
Muchos algoritmos cuánticos se basan en cajas negras que evalúan funciones matemáticas en una superposición de entradas. El componente principal del algoritmo de Shor, por ejemplo, evalúa $f(x) = a^x\operatorname{mod} N$ para un $a$ fijo, el número que se va a factorizar $N$, y $x$, el entero $2n$-qubit en una superposición uniforme de las $2n$-bit cadenas.
Para ejecutar el algoritmo de Shor en un equipo cuántico real, esta función debe escribirse en función de las operaciones nativas del equipo de destino. Usando la representación binaria de $x$, siendo $x _i$ el bit número $i$ contando desde el bit menos significativo, $f(x)$ se puede escribir como $f(x) = a^{\sum_{i=0}^{2n-1} x_i 2^i} \operatorname{mod} N$.
A su vez, esto se puede escribir como un producto (mod N) de términos $a^{2^i x_i}=(a^{2^i})^{x_i}$. Por lo tanto, la función $f(x)$ se puede implementar utilizando una secuencia de $2n$ multiplicaciones (modulares) por $a^{2^i}$, con la condición de que $x_i$ no sea cero. Las constantes $a^{2^i}$ se pueden calcular previamente y reducir al módulo N antes de ejecutar el algoritmo.
Esta secuencia de multiplicaciones modulares controladas se puede simplificar aún más: Cada multiplicación se puede realizar mediante una secuencia de adiciones modulares controladas por $n$; y cada adición modular se puede crear a partir de una suma normal y un comparador.
Como se necesitan muchos pasos para llegar a una implementación real, resultaría muy útil tener dicha funcionalidad disponible desde el principio. Por este motivo, Quantum Development Kit proporciona compatibilidad con una amplia gama de funciones numéricas.
Además de la aritmética de enteros mencionada, la biblioteca de valores numéricos proporciona:
- Funcionalidad de enteros con o sin signo (multiplicación, cuadrado, división con resto, inversión, etc.) con uno o dos números enteros cuánticos como entrada.
- Funcionalidad de punto fijo (suma/resta, multiplicación, cuadrado, 1/x, evaluación polinómica) con uno o dos números de punto fijo cuánticos como entrada.
Instalación
Una vez que haya instalado el kit de desarrollo de Quantum para su uso con su entorno y lenguaje host preferidos, puede agregar fácilmente bibliotecas a proyectos de Q# individuales sin ninguna instalación adicional.
Nota:
Algunas bibliotecas de Q# pueden funcionar bien con herramientas adicionales que funcionan junto con los programas de Q# o que se integran con las aplicaciones host.
Por ejemplo, las instrucciones de instalación de la biblioteca de química describen cómo usar el paquete Microsoft.Quantum.Chemistry junto con la plataforma de química computacional NWChem y cómo instalar las herramientas de línea de comandos qdk-chem
para trabajar con datos de química cuántica.
Símbolo del sistema o Visual Studio Code: con el símbolo del sistema por sí mismo o desde Visual Studio Code, puede usar el comando dotnet
para agregar una referencia de paquete NuGet al proyecto.
Por ejemplo, para agregar el paquete Microsoft.Quantum.Numerics, ejecute el siguiente comando:
dotnet add package Microsoft.Quantum.Numerics
Visual Studio: si usa Visual Studio 2022 o posterior, puede agregar paquetes de Q# adicionales mediante el administrador de paquetes NuGet. Para cargar un paquete:
Con un proyecto abierto en Visual Studio, seleccione Administrar paquetes NuGet... en el menú Proyecto.
Haga clic enExaminar, seleccione Incluir versión preliminar y busque el nombre del paquete "Microsoft.Quantum.Numerics". Esto enumerará los paquetes disponibles para su descarga.
Mantenga el puntero sobre Microsoft.Quantum.Numerics y haga clic en la flecha hacia abajo situada a la derecha del número de versión para instalar el paquete numérico.
Para más información, consulte la guía de interfaz de usuario del Administrador de paquetes.
Como alternativa, puede usar la consola del Administrador de paquetes para agregar la biblioteca de valores numéricos al proyecto a través de la interfaz de la línea de comandos.
En la consola del Administrador de paquetes, ejecute el siguiente comando:
Install-Package Microsoft.Quantum.Numerics
Para más información, consulte la guía de interfaz de usuario del Administrador de paquetes.
Pasos siguientes
Los orígenes de las bibliotecas y los ejemplos de código se pueden obtener de GitHub. Para más información, consulte Licencias. Tenga en cuenta que también hay disponibles referencias de paquete ("archivos binarios") para las bibliotecas y ofrecen otra manera de incluir las bibliotecas en los proyectos.