Stratégie de parallélisation d’un algorithme de clustering génératif sur architecture hybride CPU-QPU
Ce projet vise à améliorer un algorithme de clustering génératif développé au sein du laboratoire MICS (CentraleSupélec) en explorant sa parallélisation sur une architecture hybride CPU-QPU, notamment via des simulations de circuits quantiques avec Qiskit et des approches synchrones et asynchrones avec MPI.
L’algorithme repose sur des Quantum Circuit Born Machines (QCBM) intégrées dans un schéma Expectation-Maximization (EM).
- Implémentation d’un clustering génératif sur architecture hybride
- Parallélisation synchrone et asynchrone via
mpi4py - Support des modèles Discrete et Continuous QCBM
- Simulations sur FAKE machines IBM et vraies machines quantiques
- Benchmarks sur différents datasets (TWO_MOONS, K_GAUSS, etc.)
DATA-CLUSTERING_MULTI-QPU/
├── clustering-main/ # Cœur de l’algorithme et logique MPI
├── experiments/ # Résultats des runs (logs, modèles, visualisations)
├── encoding-example/ # Exemples d'encodage
├── run_script.sh # Script de lancement principal
├── requirements.txt # Dépendances Python
└── README.md
git clone https://gitlab-student.centralesupelec.fr/marius.nadalin/data-clustering_multi-qpu.git
cd data-clustering_multi-qpu
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt- Créez un compte sur quantum.ibm.com et enregistrez votre token dans un fichier
token.txt. - Activez votre compte IBM avec :
python activate_token.py
- Lancez une simulation simple :
bash run_script.sh 2 --dataset_type TWO_MOONS --k 2 --model_type Discrete_QCBM --sync 1 --run_type SIM
# Simulation non bruitée, 8 clusters, exécution synchrone
bash run_script.sh 8 --dataset_type K_GAUSS --k 8 --model_type Discrete_QCBM --sync 1 --seed 160 --run_type SIM
# Simulation bruitée (FakeMachine), exécution asynchrone
bash run_script.sh 9 --dataset_type K_GAUSS --k 8 --model_type Discrete_QCBM --sync 0 --queue_size 3 --run_type FAKE- Asynchronous vs Synchronous : La version asynchrone permet des gains en temps sous certaines conditions (queue size ≤ 50%) mais peut affecter la stabilité de convergence.
- Benchmarks : Voir les résultats dans
./experiments/(graphiques, logs, scores de clustering). - Vraies machines IBM : Fonctionne avec Runtime V2, nécessite une gestion précise du temps disponible.
- Qiskit Documentation
- J. Rauch et al., Generative-based algorithm for data clustering on hybrid classical-quantum NISQ architecture
Livre intéressant pour découvrir l'univers de l'informatique quantique :
- A. Bodin, Un peu de mathématiques pour l’informatique quantique - version digitale
- Bastien Goullet de Rugy – bastien.goullet-de-rugy@student-cs.fr
- Marius Nadalin – marius.nadalin@student-cs.fr
- Louis Becker – louis.becker@student-cs.fr
Encadrants MICS et LISN : Stéphane Vialle, Laurent Cabaret, Julien Rauch