Unstable-Singularity-Detector : relever un problème ouvert de la mécanique des fluides vieux de 100 ans (reproduction complète en open source d’un article de DeepMind)
(github.com/Flamehaven)TL;DR
L’article de DeepMind sur la « détection de singularités dans les fluides » (2024) ne fournissait pas de code.
Il a donc été entièrement reproduit de bout en bout à partir du seul article.
Le projet publie désormais un pipeline réellement fonctionnel capable de générer un rapport PDF en 7 secondes.
💥 Le problème : une maladie chronique de la recherche en IA
DeepMind (2024)
“Discovering new solutions to century-old problems in fluid dynamics”
Résumé du contenu
- Problème ouvert depuis plus de 100 ans : un fluide peut-il exploser en temps fini ?
- Détection de singularités avec un Physics-Informed Neural Network (PINN)
- Calculs en très haute précision (10⁻¹³), apprentissage complexe en plusieurs étapes
Problèmes
- ❌ Code non publié
- ❌ Méthode de reproduction peu claire
- ❌ Impossible à exécuter à partir des seules équations
En conséquence, les chercheurs du monde entier n’avaient plus qu’à « lire puis abandonner ».
✅ La solution : un projet indépendant de reproduction ouverte
🚀 Unstable Singularity Detector
Une implémentation open source totalement indépendante, sans lien avec DeepMind
À partir des seules équations et de la méthodologie rendues publiques dans l’article,
la validation des singularités en mécanique des fluides a été reproduite de bout en bout.
💡 Philosophie : pourquoi ce projet est important
Publication d’un article → pas de code → pas de reproduction possible → recherche bloquée
Le message de ce projet :
« Transformons une science limitée aux articles en outils réellement exécutables. »
L’essence de la science ouverte, c’est la reproductibilité.
Un article sans code n’est qu’une demi-science.
🎓 Pour qui ?
- 🧠 Chercheurs en mécanique des fluides — vérification et extension de l’article
- 🔬 Développeurs PINN / SciML — référence pour l’optimisation haute précision
- 🎓 Doctorants / étudiants — entraînement à l’implémentation d’articles
- 🤖 Chercheurs en IA — prise de conscience du problème des « articles sans code »
- 🧑🏫 Enseignants — support pratique pour des cours sur les PINN
🚀 Démarrer en moins de 5 minutes
git clone https://github.com/Flamehaven/unstable-singularity-detector.git
cd unstable-singularity-detector
pip install -r requirements.txt
python examples/e2e_full_ipm.py
Résultat :
- affichage des logs de convergence en temps réel
- génération de
results/ipm_full_demo/ipm_full_report.pdf - rapport PDF de 3 pages (courbes de convergence + historique d’apprentissage + métriques)
🎯 Preuves que ça fonctionne vraiment
v1.3.2 — Complete E2E Pipelines (“Show Me It Works” Release)
1️⃣ IPM (Incompressible Porous Media)
python examples/e2e_full_ipm.py --grid-size 16
# après 7.3 secondes → génération automatique d’un rapport PDF + métriques JSON
initial conditions: sin(πx)sin(πy)sin(πz)
- Conditions initiales : sin(πx)sin(πy)sin(πz)
- Lambda funnel : convergence en 1 itération
- Résidu : 1e-3 → 1e-7 (amélioration ×1000)
- Sortie : rapport PDF de 3 pages (courbes de convergence + métriques)
2️⃣ 2D Boussinesq (convection thermique)
python examples/e2e_boussinesq_2d.py --grid-size 64
- Vérification de la conservation de l’énergie (résidu 5e-8)
- Génération automatique d’un rapport PDF
3️⃣ Équation de la chaleur 1D (validation sur solution analytique)
pytest tests_e2e/test_heat_equation_1d.py -v
# 7/7 tests PASSED
- Solution analytique : u = exp(-π²t)sin(πx)
- Erreur de la solution numérique : < 0.04
- Résidu PDE : < 0.05
🔍 Tableau de validation par rapport à l’article
| Composant | Référence dans l’article | Méthode de validation | Résultat | État |
|---|---|---|---|---|
| Formule de prédiction de lambda | Fig 2e | Comparaison numérique directe | erreur < 1% | ✅ |
| Funnel Inference | Sec 3.2 | Test de convergence | convergence en 1–2 itérations | ✅ |
| Apprentissage multi-stage | Sec 3.3 | Suivi du résidu | 10⁻⁷ atteint | ✅ |
| Gauss–Newton | Eq 7–8 | Benchmark de précision | 10⁻¹³ | ✅ |
| Conditions aux limites | Sec 2.3 | Dirichlet BC | erreur < 10⁻¹⁰ | ✅ |
| Transformation autosimilaire | Fig 3 | Transformation de coordonnées | implémentation terminée | ✅ |
✅ Taux de validation terminé : 100 % (toutes les formules publiées dans l’article)
🛠️ Points forts techniques
Innovations clés
-
Apprentissage piloté par des objectifs de précision
# Stage 1: Adam warmup → 1e-6 # Stage 2: Fourier features → 1e-9 # Stage 3: Gauss–Newton → 1e-12 -
Optimisation de l’usage mémoire
- Approximation rank-1 de la Hessienne → O(P²) → O(P)
- 1000× moins de mémoire
-
Lissage EMA
H_t = β * H_{t-1} + (1 - β) * (JᵀJ)_t -
Système de validation automatique
- 111/113 tests réussis (2 GPU skip)
- Intégration complète GitHub Actions CI/CD
📊 Exemple d’usage réel
from unstable_singularity_detector import UnstableSingularityDetector
detector = UnstableSingularityDetector(equation_type="ipm")
lambda_0 = detector.predict_next_unstable_lambda(current_order=0)
print(f"Predicted: {lambda_0:.10f}")
# Output: 1.0285722760 (écart de 0.000 % par rapport à la valeur de l’article)
🧩 Pipeline complet (résumé en 10 lignes)
from examples.e2e_full_ipm import FullIPMPipeline
from pathlib import Path
pipeline = FullIPMPipeline(output_dir=Path("results/my_experiment"), grid_size=32)
pipeline.run()
# génération d’un rapport PDF et JSON après 7 secondes
📈 État du projet (v1.3.2)
| Élément | Valeur |
|---|---|
| Code | 15,000+ lines |
| Tests | 111/113 passing (98.2%) |
| Documentation | 2,500+ lines |
| Commits | 150+ |
| Licence | MIT |
| Python | 3.8+ |
| Principales dépendances | PyTorch, NumPy, SciPy |
🔐 Transparence et limites
Indépendance clairement affirmée
- Projet de recherche personnel, sans lien avec DeepMind
- Utilise uniquement les équations publiées dans l’article
- Licence MIT
- Toutes les limites sont divulguées
Limites actuelles
- Violation des quantités conservées : IPM 128 % (limite de capacité du réseau)
- Erreur sur lambda : Boussinesq 42 % (correction empirique prévue)
- Précision : orientée démo (pas pour la production)
💬 Retours bienvenus
Changeons ensemble « un monde d’articles sans code ».
Made with 🔬 by independent researchers, for open science
Aucun commentaire pour le moment.