Tutoriel : Estimer les ressources d’un problème de chimie quantique
Ce tutoriel montre comment estimer les ressources physiques nécessaires pour calculer l’énergie d’un hamiltonien avec une précision chimique de 1 mHa à l’aide de l’estimateur de ressources Azure Quantum.
Notes
Le Kit de développement Microsoft Quantum (QDK classique) ne sera plus pris en charge après le 30 juin 2024. Si vous êtes un développeur QDK existant, nous vous recommandons de passer au nouveau Kit de développement Azure Quantum (QDK moderne) pour continuer à développer des solutions quantiques. Pour plus d’informations, consultez Migrer votre code Q# vers le QDK moderne.
Ce didacticiel présente les procédures suivantes :
- Clonez un exemple de dépôt à partir de GitHub.
- Utilisez les fichiers FCIDUMP comme paramètres d’argument pour les applications de modélisation et de simulation chimiques.
- Exécutez l’estimation des ressources pour un problème à grande échelle, qui est un exemple de chimie à double factorisation.
Prérequis
Un environnement Python avec Python et Pip installés.
La dernière version de Visual Studio Code avec le Kit de développement Azure Quantum et les extensions Python installées.
Le dernier package Azure Quantum
qsharp
et lesnumpy
packages etscipy
.python -m pip install --upgrade qsharp numpy scipy
Conseil
Vous n’avez pas besoin d’un compte Azure pour exécuter l’estimateur de ressources local.
Décrire le problème
Dans ce tutoriel, vous évaluez les estimations de ressources physiques de l’algorithme de qubitisation décrit dans Phys. Rev. Research 3, 033055 (2021) pour calculer l’énergie d’un hamiltonien fourni par l’utilisateur à une précision chimique de 1 mHa.
L’algorithme quantique qui calcule l’énergie de l’hamiltonien est basé sur la qubitisation à double factorisation. L’hamiltonien est décrit en termes d’intégrales un et deux électrons dans les fichiers FCIDUMP (interaction de configuration complète) fournis qui sont disponibles via un URI HTTPS.
L’approche de qubitisation est basée sur l’estimation de phase quantique, mais au lieu de construire la $U standard = \exp{(-i H/\alpha)}$ à partir de la matrice hamiltonienne $H$, on prend $U = \exp{(-i \sin^{-1} (H/\alpha))}$, qui peut généralement être implémenté avec moins de ressources. À l’aide de la double factorisation, $H$ est représenté de manière compacte par une combinaison d’un choix judicieux d’orbitales et de compression.
Charger l’exemple dans Visual Studio Code
Le code de ce tutoriel se trouve dans le référentiel d’exemples Q#, sous estimation/df-chemistry. Nous vous recommandons de cloner le référentiel sur votre ordinateur local pour exécuter l’exemple.
Pour cloner le dépôt, exécutez la commande suivante à partir de votre terminal :
git clone https://github.com/microsoft/qsharp.git
Sélectionner et transmettre un fichier FCIDUMP
Dans cet exemple, l’hamiltonien est décrit en termes d’intégrales à un et deux électrons au format FCIDUMP. Vous pouvez choisir l’un des fichiers FCIDUMP dans le tableau suivant ou sélectionner votre propre fichier FCIDUMP disponible sur votre ordinateur ou en ligne via un URI HTTPS accessible publiquement.
URI | Nom de l’instance | Description |
---|---|---|
https://aka.ms/fcidump/XVIII-cas4-fb-64e-56o | XVIII-cas4-fb-64e56o | 64 électrons, 56 espace actif orbital de l’un des intermédiaires stables dans le cycle de fixation du carbone catalysé au ruthénium. |
https://aka.ms/fcidump/nitrogenase-54e-54o | nitrogenase_54orbital | 54 électrons, 54 espace actif orbital du noyau actif de la nitroase. |
https://aka.ms/fcidump/fe2s2-10e-40o | fe2s2-10e-40o | 10 électrons, 40 espace actif orbital du cluster [2Fe, 2S]. |
https://aka.ms/fcidump/polyyne-24e-24o | polyyne-24e-24o | 24 électrons, 24 espace actif orbital de la molécule de polyyne. |
https://aka.ms/fcidump/n2-10e-8o | n2-10e-8o | 10 électrons, 8 espace orbital actif de lui dissocié l’azote à 3 Angstrom de distance. |
Pour passer le fichier FCIDUMP, vous devez exécuter le fichier chemistry.py et passer le nom de fichier FCIDUMP ou l’URI en tant qu’argument à l’aide de -f
ou --fcidumpfile
de .
usage: chemistry.py [-h] [-f FCIDUMPFILE]
options:
-h, --help
-f FCIDUMPFILE, --fcidumpfile FCIDUMPFILE
Exécuter l’exemple de chimie
Dans Visual Studio Code, ouvrez le dossier dans lequel vous avez cloné l’exemple de référentiel Q#.
Ouvrez un nouveau terminal, Terminal -> Nouveau terminal, puis accédez au répertoire où se trouve l’exemple de chimie quantique. Par exemple, si vous clonez l’exemple de référentiel Q# sur votre ordinateur local, le chemin d’accès est
qsharp/samples/estimation/df-chemistry
.Exécutez le fichier chemistry.py et transmettez le fichier FCIDUMP. Par exemple, la commande suivante télécharge le fichier FCIDUMP n2-10e-8o dans le dossier de travail et exécute l’estimation des ressources pour celui-ci.
python chemistry.py -f https://aka.ms/fcidump/n2-10e-8o
Après cela, vous pouvez passer le chemin d’accès au fichier téléchargé au script à la place.
python chemistry.py -f n2-10e-8o
Le résultat de l’estimation des ressources s’affiche dans le terminal. Par exemple, la sortie suivante montre l’estimation des ressources pour le fichier FCIDUMP n2-10e-8o .
Algorithm runtime: 19 mins Number of physical qubits required: 207.60k For more detailed resource counts, see file resource_estimate.json
Notes
Après avoir exécuté le fichier chemistry.py, un fichier resource_estimation.json est créé dans le dossier de travail. Le fichier resource_estimation.json contient la sortie détaillée de l’estimateur de ressources. Il s’agit des paramètres de travail, des nombres physiques, des propriétés de fabrique T, des nombres logiques et des propriétés qubit logiques.
Modifier les target paramètres
Ouvrez le fichier chemistry.py .
Les target paramètres de l’estimation des ressources se trouvent dans l’appel à
qsharp.estimate
du fichier chemistry.py. L’extrait de code suivant montre les paramètres utilisés dans ce didacticiel.# Get resource estimates res = qsharp.estimate(qsharp_string, params={"errorBudget": 0.01, "qubitParams": {"name": "qubit_maj_ns_e6"}, "qecScheme": {"name": "floquet_code"}})
Si vous souhaitez modifier les target paramètres, vous pouvez le faire en modifiant l’extrait de code précédent. Par exemple, l’extrait de code suivant montre comment modifier le budget d’erreur en 0,333. Pour plus d’informations, consultez Personnaliser les target paramètres de l’estimateur de ressources.
# Get resource estimates res = qsharp.estimate(qsharp_string, params={"errorBudget": 0.333, "qubitParams": {"name": "qubit_maj_ns_e6"}, "qecScheme": {"name": "floquet_code"}})
Pourquoi les applications de chimie de l’informatique quantique sont importantes ?
Ce tutoriel représente une première étape pour intégrer l’estimation des ressources des solutions quantiques aux problèmes de structure électronique. L’une des applications les plus importantes des ordinateurs quantiques mis à l’échelle est la résolution des problèmes de chimie quantique. La simulation de systèmes mécaniques quantiques complexes a le potentiel de percer des percées dans des domaines tels que le captage du carbone, l’insécurité alimentaire et la conception de meilleurs combustibles et matériaux.
Par exemple, l’un des fichiers FCIDUMP fournis dans cet exemple, nitrogenase_54orbital, décrit l’enzyme nitroase. Si vous pouviez simuler avec précision le fonctionnement de cette enzyme au niveau quantique, cela pourrait nous aider à comprendre comment la produire à grande échelle. Vous pourriez remplacer le processus très gourmand en énergie qui est utilisé pour produire suffisamment d’engrais pour nourrir la planète. Cela a le potentiel de réduire l’empreinte carbone mondiale et d’aider à répondre aux préoccupations concernant l’insécurité alimentaire dans une population croissante.
Étapes suivantes
Si vous souhaitez approfondir vos connaissances, voici quelques expériences que vous pouvez essayer :
- Estimez certains fichiers FCIDUMP personnalisés.
- Modifiez les hypothèses sur l’ordinateur target quantique en fournissant des paramètres qubit personnalisés.
- Consultez les autres exemples de notebooks d’estimation des ressources dans la galerie d’exemples Azure Quantum.
Continuez à explorer d’autres algorithmes et techniques quantiques :
- Le tutoriel Implémenter l’algorithme de recherche de Grover montre comment écrire un programme Q# qui utilise l’algorithme de recherche de Grover pour résoudre un problème de coloration de graphe.
- Le tutoriel Écrire et simuler des programmes de niveau qubit en Q# explique comment écrire un programme Q# qui traite directement des qubits spécifiques.
- Le tutoriel Explorer l’intrication quantique avec Q# montre comment opérer sur des qubits avec Q# pour modifier leur état, et montre les effets de la superposition et de l’intrication.
- Les katas quantiques sont des tutoriels et des exercices de programmation auto-rythmés basés sur Jupyter Notebook visant à enseigner simultanément les éléments de l’informatique quantique et de la programmation Q#.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de l’année 2024, nous abandonnerons progressivement le mécanisme de retour d’information GitHub Issues pour le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultez :Soumettre et afficher des commentaires pour