PINN in JMP?Ciao a tutti,
Sebbene questa domanda sia rivolta principalmente ai dipendenti di JMP, anche altri utenti potrebbero avere informazioni aggiuntive.
Sono curioso di sapere se JMP ha intenzione di implementare reti neurali basate sulla fisica (PINN) nella sua piattaforma di modellazione NN. Come fisico (che lavora nell'industria, non nel mondo accademico), molti dei dati che analizzo presentano vincoli fisici sottostanti difficili da catturare all'interno di una tabella dati standard di JMP. E sebbene apprezzi l'impegno profuso da JMP nelle sue piattaforme di modellazione predittiva come XGBoost o NN, o nel suo componente aggiuntivo per PyTorch, spesso è difficile estrarre i fattori/limiti fisici durante la modellazione dei dati. Certo, in una situazione ideale, potrei generare la mia formula per modellare i dati, ma nelle situazioni reali non abbiamo oscillatori armonici che governano la risposta, la situazione è molto più "complessa" e non disponiamo di formule di modello su cui lavorare.
Sarebbe davvero fantastico aggiungere un'opzione basata sulla fisica, in cui un fattore di penalizzazione possa essere incluso in un modello, in modo che se una legge fisica fondamentale viene violata, quel percorso venga penalizzato e viceversa. Meglio ancora, sarebbe utile includere più fattori di penalizzazione basati sulla fisica. La statistica è importante, certo, ma con quasi tutti i set di dati disponibili, ci sono delle leggi fisiche che si applicano.
Solo per curiosità.
Grazie!,
DS
Modellazione statistica avanzataAutomazione e scriptingEsplorazione e visualizzazione dei datiModellazione predittiva e apprendimento automaticoOggetto: PINN in JMP?Questo è uno dei grandi vantaggi offerti dall'integrazione di Python in JMP 18 e versioni successive: la possibilità di personalizzare le funzionalità di JMP in base alle proprie esigenze. È possibile implementare una soluzione che si adatti perfettamente alle proprie necessità. Una rapida ricerca su Google con la frase "Pacchetti Python per reti neurali basate sulla fisica PINN" ha prodotto i seguenti risultati:
Panoramica sull'intelligenza artificiale
I pacchetti Python più popolari e completi per la creazione di reti neurali basate sulla fisica (PINN) si dividono in due categorie:
librerie PINN dedicate di alto livello e framework di deep learning di base di basso livello.
Se desideri una soluzione pronta all'uso con strumenti geometrici, condizioni al contorno e risolutori di equazioni differenziali parziali già integrati, utilizza una libreria di alto livello come
DeepXDE . Se invece desideri una personalizzazione completa e il massimo controllo sulla matematica sottostante, crea il tuo PINN utilizzando framework di base come
PyTorch o
JAX .
[ 1 , 2 , 3 , 4 , 5 ]
Biblioteche PINN di alto livello
Queste librerie specifiche del dominio presentano routine integrate per la generazione di geometrie spazio-temporali, condizioni al contorno/valori iniziali e ottimizzatori specializzati (come L-BFGS).
[ 1 ]
- DeepXDE : Il framework più diffuso e completo per l'apprendimento automatico scientifico. Supporta geometrie multidimensionali complesse, condizioni al contorno personalizzate e gestisce senza problemi problemi diretti e inversi. Funziona con backend come PyTorch, TensorFlow, JAX o PaddlePaddle.[ 1 , 2 , 3 , 4 , 5 ]
- Modulus (di NVIDIA) : un framework ad alte prestazioni di livello enterprise ottimizzato per la simulazione di fisica industriale. Integra perfettamente le reti PINN con i flussi di lavoro fisici tradizionali e sfrutta l'accelerazione GPU per gestire grandi quantità di dati.[ 1 , 2 , 3 ]
- SciANN : una libreria wrapper basata su Keras e TensorFlow, progettata specificamente per il deep learning basato sulla fisica, il calcolo scientifico e l'inversione di equazioni differenziali parziali guidata dai dati.[ 1 ]
- jinn : Una libreria basata su JAX, altamente flessibile, modulare e veloce, creata appositamente per gestire problemi inversi, meta-modellazione e ottimizzazione basata sul gradiente, utilizzando l'ecosistema Optax.[ 1 ]
- PinnDE : una libreria open-source unificata, progettata per gestire sia le architetture PINN tradizionali che le reti di operatori profondi (DeepONets) per la risoluzione di sistemi complessi di equazioni differenziali.[ 1 , 2 ]
Oppure creando qualcosa direttamente utilizzando PyTorch o altre librerie sottostanti.
Installare DeepXDE nell'ambiente JMP significa semplicemente aprire una finestra di script Python e
import jmp
from jmputils import pip
jpip('install', 'DeepXDE')
Dopodiché, esegui quello script per installare DeepXDE e le sue dipendenze.
Installa molti pacchetti 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
Quindi, una volta installato, lo si utilizza da
import deepxde
... il tuo codice Python qui ...
La documentazione di DeepXDE è disponibile all'indirizzo => https://deepxde.readthedocs.io/en/latest/index.html
Con qualsiasi libreria di machine learning, basata su Torch o GPU, migliore è il tuo computer, maggiori saranno i risultati. La RAM, e in particolare la VRAM della GPU e la VRAM integrata come nei sistemi basati su Apple Silicon o Blackwell, è estremamente importante. Questi strumenti richiedono hardware di classe workstation per ottenere il massimo beneficio.
L'installazione e l'importazione sono state eseguite su una versione di sviluppo di JMP 19.2, ma dovrebbero funzionare su qualsiasi versione di JMP 18 o successiva.
Oggetto: PINN in JMP?Nota: stavo utilizzando una versione locale di JMP 20, ma non prevedo problemi con JMP 18 o 19.
È inoltre necessario un backend per poter importare 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)
Si noti il controllo sopra riportato per 'mps' e 'cuda'. MPS sta per Metal Performance Shaders (MPS) di Apple e CUDA è ovviamente il motore grafico di Nvidia utilizzato su Windows e Linux. I controlli assicurano che torch stia utilizzando una GPU, se disponibile.
Questo è stato eseguito e ha fornito un output molto lungo con l'aiuto (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
Oggetto: PINN in JMP?Discussioni come questa evidenziano come l'evoluzione tecnologica crei nuove opportunità di carriera in India , soprattutto per i professionisti che combinano fisica, scienza dei dati, apprendimento automatico e conoscenze specifiche del settore.