PINN dans JMP ?Bonjour à tous,
Bien que cette question s'adresse davantage aux employés de JMP, d'autres utilisateurs pourraient également avoir des informations complémentaires.
Je me demande si JMP prévoit d'intégrer des réseaux de neurones à information physique (PINN) à sa plateforme de modélisation. En tant que physicien (dans l'industrie, pas dans le milieu universitaire), une grande partie des données que j'analyse est soumise à des contraintes physiques sous-jacentes difficiles à intégrer dans un tableau de données JMP standard. Bien que j'apprécie le travail considérable fourni par JMP sur ses plateformes de modélisation prédictive comme XGBoost ou NN, ou encore son module complémentaire PyTorch, il est souvent complexe d'extraire les facteurs et limites physiques lors de la modélisation des données. Idéalement, je pourrais générer ma propre formule pour modéliser les données, mais dans la réalité, la réponse n'est pas régie par des oscillateurs harmoniques ; le phénomène est bien plus complexe et nous ne disposons pas de formules de modélisation prédéfinies.
Ce serait vraiment génial d'ajouter une option basée sur la physique, permettant d'intégrer un facteur de pénalité au modèle. Ainsi, si une loi physique fondamentale est violée, le chemin à suivre est pénalisé, et inversement. Mieux encore, on pourrait inclure plusieurs facteurs de pénalité basés sur la physique. Les statistiques, c'est bien beau, mais pour presque tous les ensembles de données, il existe des lois physiques qui s'appliquent.
Par simple curiosité.
Merci!,
DS
Modélisation statistique avancéeAutomatisation et scriptageExploration et visualisation des donnéesModélisation prédictive et apprentissage automatiqueRe: PINN dans JMP ?C'est l'un des grands avantages de l'intégration Python dans JMP 18 et versions ultérieures : la possibilité de personnaliser les fonctionnalités de JMP selon vos besoins. Vous pouvez ainsi implémenter une solution parfaitement adaptée. Une recherche rapide sur Google avec les mots-clés « Packages Python pour les réseaux de neurones PINN basés sur la physique » a donné les résultats suivants :
Les packages Python les plus populaires et les plus complets pour la construction de réseaux neuronaux informés par la physique (PINN) se répartissent en deux catégories :
bibliothèques PINN de haut niveau dédiées et frameworks d'apprentissage profond de bas niveau.
Si vous souhaitez une solution clé en main avec des outils géométriques, des conditions aux limites et des solveurs d'EDP déjà intégrés, utilisez une bibliothèque de haut niveau comme
DeepXDE . Si vous préférez une personnalisation complète et un contrôle maximal sur les mathématiques sous-jacentes, développez votre PINN à l'aide de frameworks comme
PyTorch ou
JAX .
[ 1 , 2 , 3 , 4 , 5 ]
Bibliothèques PINN de haut niveau
Ces bibliothèques spécifiques au domaine comportent des routines intégrées pour la génération de géométrie spatio-temporelle, les conditions aux limites/initiales et des optimiseurs spécialisés (comme L-BFGS).
[ 1 ]
- DeepXDE : Le framework le plus utilisé et le plus complet pour l’apprentissage automatique scientifique. Il prend en charge les géométries multidimensionnelles complexes, les conditions aux limites personnalisées et gère facilement les problèmes directs et inverses. Il fonctionne avec les backends PyTorch, TensorFlow, JAX ou PaddlePaddle.[ 1 , 2 , 3 , 4 , 5 ]
- Modulus (par NVIDIA) : Un framework haute performance de niveau entreprise optimisé pour la simulation physique industrielle. Il intègre de manière transparente les PINN aux flux de travail physiques traditionnels et exploite l’accélération GPU pour une mise à l’échelle massive.[ 1 , 2 , 3 ]
- SciANN : Une bibliothèque wrapper construite sur Keras et TensorFlow conçue spécifiquement pour l'apprentissage profond informé par la physique, le calcul scientifique et l'inversion des EDP basée sur les données.[ 1 ]
- djinn : Une bibliothèque JAX hautement flexible, modulaire et rapide, spécialement conçue pour gérer les problèmes inverses, la méta-modélisation et l'optimisation basée sur le gradient en utilisant l'écosystème Optax.[ 1 ]
- PinnDE : Une bibliothèque open-source unifiée conçue pour gérer à la fois les architectures PINN traditionnelles et les réseaux d'opérateurs profonds (DeepONets) pour la résolution de systèmes complexes d'équations différentielles.[ 1 , 2 ]
Ou en construisant directement quelque chose à l'aide de PyTorch, ou d'autres bibliothèques sous-jacentes.
L'installation de DeepXDE dans l'environnement JMP consiste simplement à ouvrir une fenêtre de script Python et
import jmp
from jmputils import pip
jpip('install', 'DeepXDE')
Exécutez ensuite ce script pour installer DeepXDE et ses dépendances.
Il installe de nombreux paquets Python.
/*:
Collecting DeepXDE
Downloading deepxde-1.15.0-py3-none-any.whl.metadata (12 kB)
Collecting matplotlib (from DeepXDE)
Downloading matplotlib-3.11.1-cp314-cp314-macosx_11_0_arm64.whl.metadata (80 kB)
Requirement already satisfied: numpy in /Users/panels/Library/Application Support/JMP/Python/3.14/lib/python/site-packages (from DeepXDE) (2.5.0)
Collecting scikit-learn (from DeepXDE)
Downloading scikit_learn-1.9.0-cp314-cp314-macosx_12_0_arm64.whl.metadata (11 kB)
Collecting scikit-optimize>=0.10.2 (from DeepXDE)
Downloading scikit_optimize-0.10.2-py2.py3-none-any.whl.metadata (9.7 kB)
Collecting scipy (from DeepXDE)
Downloading scipy-1.18.0-cp314-cp314-macosx_14_0_arm64.whl.metadata (62 kB)
Collecting joblib>=0.11 (from scikit-optimize>=0.10.2->DeepXDE)
Downloading joblib-1.5.3-py3-none-any.whl.metadata (5.5 kB)
Collecting pyaml>=16.9 (from scikit-optimize>=0.10.2->DeepXDE)
Downloading pyaml-26.7.0-py3-none-any.whl.metadata (12 kB)
Collecting packaging>=21.3 (from scikit-optimize>=0.10.2->DeepXDE)
Downloading packaging-26.3-py3-none-any.whl.metadata (3.5 kB)
Collecting PyYAML (from pyaml>=16.9->scikit-optimize>=0.10.2->DeepXDE)
Downloading pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl.metadata (2.4 kB)
Collecting narwhals>=2.0.1 (from scikit-learn->DeepXDE)
Downloading narwhals-2.24.0-py3-none-any.whl.metadata (15 kB)
Collecting threadpoolctl>=3.5.0 (from scikit-learn->DeepXDE)
Downloading threadpoolctl-3.6.0-py3-none-any.whl.metadata (13 kB)
Collecting contourpy>=1.0.1 (from matplotlib->DeepXDE)
Downloading contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl.metadata (5.5 kB)
Collecting cycler>=0.10 (from matplotlib->DeepXDE)
Downloading cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)
Collecting fonttools>=4.28.2 (from matplotlib->DeepXDE)
Downloading fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl.metadata (118 kB)
Collecting kiwisolver>=1.3.1 (from matplotlib->DeepXDE)
Downloading kiwisolver-1.5.0-cp314-cp314-macosx_11_0_arm64.whl.metadata (5.1 kB)
Collecting pillow>=9 (from matplotlib->DeepXDE)
Downloading pillow-12.3.0-cp314-cp314-macosx_11_0_arm64.whl.metadata (9.1 kB)
Collecting pyparsing>=3 (from matplotlib->DeepXDE)
Downloading pyparsing-3.3.2-py3-none-any.whl.metadata (5.8 kB)
Requirement already satisfied: python-dateutil>=2.7 in /Users/panels/Library/Application Support/JMP/Python/3.14/lib/python/site-packages (from matplotlib->DeepXDE) (2.9.0.post0)
Requirement already satisfied: six>=1.5 in /Users/panels/Library/Application Support/JMP/Python/3.14/lib/python/site-packages (from python-dateutil>=2.7->matplotlib->DeepXDE) (1.17.0)
Downloading deepxde-1.15.0-py3-none-any.whl (195 kB)
Downloading scikit_optimize-0.10.2-py2.py3-none-any.whl (107 kB)
Downloading joblib-1.5.3-py3-none-any.whl (309 kB)
Downloading packaging-26.3-py3-none-any.whl (129 kB)
Downloading pyaml-26.7.0-py3-none-any.whl (27 kB)
Downloading scikit_learn-1.9.0-cp314-cp314-macosx_12_0_arm64.whl (8.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.2/8.2 MB 82.6 MB/s 0:00:00
Downloading narwhals-2.24.0-py3-none-any.whl (461 kB)
Downloading scipy-1.18.0-cp314-cp314-macosx_14_0_arm64.whl (20.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 20.4/20.4 MB 96.4 MB/s 0:00:00
Downloading threadpoolctl-3.6.0-py3-none-any.whl (18 kB)
Downloading matplotlib-3.11.1-cp314-cp314-macosx_11_0_arm64.whl (9.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.3/9.3 MB 94.1 MB/s 0:00:00
Downloading contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl (273 kB)
Downloading cycler-0.12.1-py3-none-any.whl (8.3 kB)
Downloading fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl (2.9 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.9/2.9 MB 75.6 MB/s 0:00:00
Downloading kiwisolver-1.5.0-cp314-cp314-macosx_11_0_arm64.whl (64 kB)
Downloading pillow-12.3.0-cp314-cp314-macosx_11_0_arm64.whl (4.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.8/4.8 MB 85.4 MB/s 0:00:00
Downloading pyparsing-3.3.2-py3-none-any.whl (122 kB)
Downloading pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl (173 kB)
Installing collected packages: threadpoolctl, scipy, PyYAML, pyparsing, pillow, packaging, narwhals, kiwisolver, joblib, fonttools, cycler, contourpy, scikit-learn, pyaml, matplotlib, scikit-optimize, DeepXDE
Successfully installed DeepXDE-1.15.0 PyYAML-6.0.3 contourpy-1.3.3 cycler-0.12.1 fonttools-4.63.0 joblib-1.5.3 kiwisolver-1.5.0 matplotlib-3.11.1 narwhals-2.24.0 packaging-26.3 pillow-12.3.0 pyaml-26.7.0 pyparsing-3.3.2 scikit-learn-1.9.0 scikit-optimize-0.10.2 scipy-1.18.0 threadpoolctl-3.6.0
Une fois installé, vous l'utilisez à partir de
importer deepxde
... votre code Python ici ...
La documentation de DeepXDE est disponible ici : https://deepxde.readthedocs.io/en/latest/index.html
Avec les bibliothèques d'apprentissage automatique, qu'elles utilisent PyTorch ou le GPU, plus votre machine est performante, plus vous en tirerez profit. La RAM, et en particulier la VRAM du GPU et la VRAM intégrée (comme sur les systèmes Apple Silicon ou Blackwell), est cruciale. Ces outils nécessitent un matériel de type station de travail pour un fonctionnement optimal.
L'installation et l'importation ont été effectuées sur une version de développement de JMP 19.2, mais devraient fonctionner sur toute version de JMP 18 ou plus récente.
Re: PINN dans JMP ?Remarque : J’utilisais une version locale de JMP 20, mais je ne prévois aucun problème avec JMP 18 ou 19.
Vous avez également besoin d'un serveur dorsal pour pouvoir importer deepxde.
import jmp
from jmputils import jpip
jpip('install','torch')
import os
os.environ['DDE_BACKEND']='pytorch'
import torch
if torch.mps.is_available():
torch.set_default_device('mps')
if torch.cuda.is_available():
torch.set_default_device('cuda')
import deepxde
help(deepxde)
Notez la vérification ci-dessus pour « mps » et « cuda ». MPS correspond aux shaders de performances Metal d'Apple et CUDA est le processeur graphique principal de Nvidia sous Windows et Linux. Ces vérifications garantissent que Torch utilise un GPU, si disponible.
Ce programme s'est exécuté et a fourni de nombreux résultats grâce à l'aide de deepdxe.
import deepxde
help(deepxde)
/*:
Using backend: pytorch
Other supported backends: tensorflow.compat.v1, tensorflow, jax, paddle.
paddle supports more examples now and is recommended.
Matplotlib is building the font cache; this may take a moment.
Help on package deepxde:
NAME
deepxde
PACKAGE CONTENTS
_version
backend (package)
callbacks
config
...
DATA
__all__ = ['backend', 'callbacks', 'data', 'geometry', 'grad', 'icbc',...
VERSION
1.15.0
FILE
/Users/panels/Library/Application Support/JMP/Python/3.14/lib/python/site-packages/deepxde/__init__.py
Re: PINN dans JMP ?Des discussions comme celle-ci mettent en lumière comment l'évolution technologique crée de nouvelles opportunités de carrière en Inde , notamment pour les professionnels combinant physique, science des données, apprentissage automatique et connaissances spécifiques au domaine.