Skip to content

Repository files navigation

Data Clustering on Multi-QPU Architecture

Stratégie de parallélisation d’un algorithme de clustering génératif sur architecture hybride CPU-QPU

🚀 Objectif

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).

🧩 Fonctionnalités clés

  • 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.)

📁 Structure du projet

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

⚙️ Installation

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

🧪 Premiers tests

  1. Créez un compte sur quantum.ibm.com et enregistrez votre token dans un fichier token.txt.
  2. Activez votre compte IBM avec :
    python activate_token.py
  3. Lancez une simulation simple :
    bash run_script.sh 2 --dataset_type TWO_MOONS --k 2 --model_type Discrete_QCBM --sync 1 --run_type SIM

💡 Exemples de commande

# 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

📊 Résultats

  • 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.

📚 Références

  • 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

👨‍💻 Auteurs

Encadrants MICS et LISN : Stéphane Vialle, Laurent Cabaret, Julien Rauch

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages