¿PINN en JMP?Hola a todos,
Si bien esta pregunta está dirigida principalmente a los empleados de JMP, otros usuarios también podrían tener información adicional.
Me interesa saber si JMP planea implementar redes neuronales basadas en la física (PINN) en su plataforma de modelado de redes neuronales. Como físico (en la industria, no en la academia), gran parte de los datos que analizo tienen restricciones físicas subyacentes que son difíciles de capturar en una tabla de datos estándar de JMP. Y aunque aprecio el arduo trabajo que JMP ha dedicado a sus plataformas de modelado predictivo como XGBoost o NN, o su complemento para PyTorch, a menudo es difícil extraer los factores/límites físicos al modelar los datos. Claro, en una situación ideal, podría generar mi propia fórmula para modelar los datos, pero en situaciones del mundo real, no tenemos osciladores armónicos que rijan la respuesta, es mucho más "complicado" que eso, y no tenemos fórmulas de modelos con las que trabajar.
Sería genial añadir una opción basada en la física que permita incluir un factor de penalización en el modelo, de modo que si se infringe una ley física fundamental, esa ruta se penalice, y viceversa. Mejor aún, incluir múltiples factores de penalización basados en la física. Las estadísticas son excelentes, pero prácticamente todos los conjuntos de datos se rigen por leyes físicas.
Solo por curiosidad.
¡Gracias!,
DS
Modelado estadístico avanzadoAutomatización y secuencias de comandosExploración y visualización de datosModelado predictivo y aprendizaje automáticoRe: ¿PINN en JMP?Esta es una de las grandes ventajas que la integración de Python aporta a JMP 18 y versiones posteriores. La posibilidad de personalizar las funcionalidades de JMP según tus necesidades. Puedes implementar una solución que se ajuste directamente a tus necesidades. Una búsqueda rápida en Google de "paquetes de Python para redes neuronales basadas en la física PINN" arrojó los siguientes resultados:
Descripción general de la IA
Los paquetes de Python más populares y completos para construir redes neuronales basadas en la física (PINN, por sus siglas en inglés) se dividen en dos categorías:
Bibliotecas PINN de alto nivel dedicadas y marcos de aprendizaje profundo centrales de bajo nivel..
Si desea una solución lista para usar con herramientas de geometría, condiciones de contorno y solucionadores de EDP ya integrados, utilice una biblioteca de alto nivel como
DeepXDE . Si desea una personalización total y el máximo control sobre las matemáticas subyacentes, desarrolle su PINN utilizando marcos de trabajo principales como
PyTorch o
JAX .
[ 1 , 2 , 3 , 4 , 5 ]
Bibliotecas PINN de alto nivel
Estas bibliotecas específicas de dominio incluyen rutinas integradas para la generación de geometría espacio-temporal, condiciones de contorno/valor inicial y optimizadores especializados (como L-BFGS).
[ 1 ]
- DeepXDE : El marco de trabajo más completo y ampliamente utilizado para el aprendizaje automático científico. Admite geometrías multidimensionales complejas, condiciones de contorno personalizadas y resuelve problemas directos e inversos sin esfuerzo. Funciona sobre las plataformas PyTorch, TensorFlow, JAX o PaddlePaddle.[ 1 , 2 , 3 , 4 , 5 ]
- Modulus (de NVIDIA) : Un marco de trabajo empresarial de alto rendimiento optimizado para la simulación de física industrial. Integra a la perfección las redes neuronales de fase inversa (PINN) con los flujos de trabajo de física tradicionales y utiliza la aceleración por GPU para escalas masivas.[ 1 , 2 , 3 ]
- SciANN : Una biblioteca envolvente construida sobre Keras y TensorFlow, diseñada específicamente para el aprendizaje profundo basado en la física, la computación científica y la inversión de ecuaciones diferenciales parciales basada en datos.[ 1 ]
- genio : Una biblioteca basada en JAX, altamente flexible, modular y rápida, diseñada específicamente para manejar problemas inversos, metamodelado y optimización basada en gradientes, utilizando el ecosistema Optax.[ 1 ]
- PinnDE : Una biblioteca unificada de código abierto diseñada para manejar tanto arquitecturas PINN tradicionales como redes de operadores profundos (DeepONets) para resolver sistemas complejos de ecuaciones diferenciales.[ 1 , 2 ]
O construir algo directamente usando PyTorch u otras bibliotecas subyacentes.
Instalar DeepXDE en el entorno JMP es tan sencillo como abrir una ventana de script de Python y
import jmp
from jmputils import pip
jpip('install', 'DeepXDE')
Luego, ejecuta ese script para instalar DeepXDE y sus dependencias.
Instala muchos paquetes de 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
Luego, una vez instalado, lo usas desde
importar deepxde
... tu código Python aquí ...
La documentación de DeepXDE se puede encontrar en: https://deepxde.readthedocs.io/en/latest/index.html
Con cualquier biblioteca de aprendizaje automático, basada en Torch o en GPU, cuanto mejor sea tu equipo, mejor será el rendimiento. La memoria RAM, y especialmente la VRAM de la GPU y la VRAM integrada, como en sistemas basados en Apple Silicon o Blackwell, es fundamental. Estas herramientas requieren hardware de estación de trabajo para obtener el máximo provecho.
La instalación e importación se realizaron en una versión de desarrollo de JMP 19.2, pero debería funcionar en cualquier versión de JMP 18 o posterior.
Re: ¿PINN en JMP?Nota: Estaba utilizando una compilación local de JMP 20, pero no preveo problemas con JMP 18 o 19.
También necesitas un backend para poder importar 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)
Tenga en cuenta la comprobación anterior para 'mps' y 'cuda'. MPS son los sombreadores de alto rendimiento de Metal de Apple y, por supuesto, CUDA es la herramienta principal de Nvidia en Windows y Linux. Estas comprobaciones garantizan que torch utilice una GPU si está disponible.
Esto se ejecutó y proporcionó mucha información con la ayuda 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 en JMP?Debates como este ponen de relieve cómo la evolución tecnológica crea nuevas oportunidades profesionales en la India , especialmente para aquellos profesionales que combinan física, ciencia de datos, aprendizaje automático y conocimientos específicos del sector.