PINNs in JMP?Hallo zusammen,
Diese Frage richtet sich zwar eher an JMP-Mitarbeiter, aber auch andere Nutzer könnten über zusätzliche Informationen verfügen.
Ich frage mich, ob JMP plant, physikbasierte neuronale Netze (PINNs) in seine NN-Modellierungsplattform zu integrieren. Als Physiker (in der Industrie, nicht an einer Universität) analysiere ich viele Daten, die physikalischen Beschränkungen unterliegen, welche sich in einer Standard-JMP-Datentabelle nur schwer abbilden lassen. Obwohl ich die Arbeit von JMP an seinen prädiktiven Modellierungsplattformen wie XGBoost oder NN sowie dem PyTorch-Add-in sehr schätze, ist es oft schwierig, die physikalischen Einflussfaktoren und Grenzen bei der Datenmodellierung zu ermitteln. Natürlich könnte ich im Idealfall eine eigene Formel zur Datenmodellierung erstellen, aber in der Realität haben wir keine harmonischen Oszillatoren, die das Verhalten bestimmen – es ist viel komplexer, und es stehen uns keine fertigen Modellformeln zur Verfügung.
Es wäre wirklich toll, eine Art physikalisch fundierte Option hinzuzufügen, mit der ein Straffaktor in ein Modell integriert werden kann. So würde ein Pfad bestraft, der gegen ein fundamentales physikalisches Gesetz verstößt, und umgekehrt. Noch besser wäre es, mehrere physikalisch fundierte Straffaktoren zu berücksichtigen. Statistiken sind zwar wichtig, aber nahezu alle Datensätze folgen physikalischen Gesetzen.
Nur mal so aus Neugier.
Danke!,
DS
Fortgeschrittene statistische ModellierungAutomatisierung und SkripterstellungDatenexploration und -visualisierungPrädiktive Modellierung und maschinelles LernenBetreff: PINNs in JMP?Dies ist einer der großen Vorteile der Python-Integration in JMP 18 und höher: die Möglichkeit, die Funktionen von JMP an Ihre Bedürfnisse anzupassen. Sie können eine Lösung implementieren, die genau Ihren Anforderungen entspricht. Eine kurze Google-Suche nach „Python-Paketen für PINN-basierte physikbasierte neuronale Netze“ ergab folgende Ergebnisse:
Die beliebtesten und umfassendsten Python-Pakete zum Erstellen physikbasierter neuronaler Netze (PINNs) lassen sich in zwei Kategorien einteilen:
Spezielle, hochrangige PINN-Bibliotheken und niedrigrangige Kernframeworks für Deep Learning.
Wenn Sie eine sofort einsatzbereite Lösung mit vorkonfigurierten Geometriewerkzeugen, Randbedingungen und PDE-Lösern wünschen, verwenden Sie eine High-Level-Bibliothek wie
DeepXDE . Für vollständige Anpassungsmöglichkeiten und maximale Kontrolle über die zugrundeliegende Mathematik entwickeln Sie Ihr PINN-System mit Kernframeworks wie
PyTorch oder
JAX .
[ 1 , 2 , 3 , 4 , 5 ]
Hochwertige PINN-Bibliotheken
Diese domänenspezifischen Bibliotheken enthalten integrierte Routinen zur Generierung räumlich-zeitlicher Geometrien, Rand-/Anfangswertbedingungen und spezialisierte Optimierer (wie L-BFGS).
[ 1 ]
- DeepXDE : Das am weitesten verbreitete und umfassendste Framework für wissenschaftliches maschinelles Lernen. Es unterstützt komplexe mehrdimensionale Geometrien, benutzerdefinierte Randbedingungen und löst Vorwärts- und Inverse-Probleme mühelos. Es basiert auf den Backends PyTorch, TensorFlow, JAX und PaddlePaddle.[ 1 , 2 , 3 , 4 , 5 ]
- Modulus (von NVIDIA) : Ein leistungsstarkes Framework der Enterprise-Klasse, optimiert für industrielle Physiksimulationen. Es integriert PINNs nahtlos in traditionelle Physik-Workflows und nutzt GPU-Beschleunigung für massive Skalierung.[ 1 , 2 , 3 ]
- SciANN : Eine Wrapper-Bibliothek, die auf Keras und TensorFlow aufbaut und speziell für physikbasiertes Deep Learning, wissenschaftliches Rechnen und datengetriebene PDE-Inversion entwickelt wurde.[ 1 ]
- Dschinn : Eine hochflexible, modulare und schnelle JAX-basierte Bibliothek, die speziell für die Bearbeitung inverser Probleme, Metamodellierung und gradientenbasierter Optimierung unter Verwendung des Optax-Ökosystems entwickelt wurde.[ 1 ]
- PinnDE : Eine einheitliche Open-Source-Bibliothek, die sowohl traditionelle PINN-Architekturen als auch Deep Operator Networks (DeepONets) zur Lösung komplexer Systeme von Differentialgleichungen unterstützt.[ 1 , 2 ]
Oder indem man direkt mit PyTorch oder anderen zugrunde liegenden Bibliotheken etwas entwickelt .
Die Installation von DeepXDE in der JMP-Umgebung ist einfach: Man öffnet ein Python-Skriptfenster und
import jmp
from jmputils import pip
jpip('install', 'DeepXDE')
Führen Sie anschließend dieses Skript aus, um DeepXDE und seine Abhängigkeiten zu installieren.
Es installiert eine Menge Python-Pakete.
/*:
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
Sobald es installiert ist, können Sie es verwenden von
import deepxde
... Ihr Python-Code hier ...
Die DeepXDE-Dokumentation finden Sie hier: https://deepxde.readthedocs.io/en/latest/index.html
Bei allen Machine-Learning-Bibliotheken, die auf Torch oder GPUs basieren, gilt: Je leistungsfähiger Ihr Rechner ist, desto besser. RAM, insbesondere GPU-VRAM und integrierter VRAM (wie bei Systemen mit Apple Silicon oder Blackwell), ist extrem wichtig. Diese Tools benötigen Hardware der Workstation-Klasse, um ihr volles Potenzial auszuschöpfen.
Die Installation und der Import wurden auf einer Entwicklungsversion von JMP 19.2 durchgeführt, sollten aber auf jeder Version von JMP 18 oder neuer funktionieren.
Betreff: PINNs in JMP?Hinweis: Ich habe eine lokale Version von JMP 20 verwendet, erwarte aber keine Probleme mit JMP 18 oder 19.
Sie benötigen außerdem ein Backend, um deepxde importieren zu können.
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)
Beachten Sie die obige Prüfung auf „mps“ und „cuda“. MPS steht für Apples Metal Performance Shaders (MPS), und CUDA ist natürlich Nvidias wichtigste Technologie für Windows und Linux. Die Prüfungen stellen sicher, dass Torch eine GPU nutzt, sofern verfügbar.
Das Programm wurde ausgeführt und lieferte mit Hilfe von (deepdxe) eine große Ausgabe.
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
Betreff: PINNs in JMP?Diskussionen wie diese verdeutlichen, wie sich durch die Weiterentwicklung der Technologie neue Karrieremöglichkeiten in Indien ergeben, insbesondere für Fachkräfte, die Physik, Datenwissenschaft, maschinelles Lernen und fachspezifisches Wissen kombinieren.