皆さんこんにちは、
この質問はどちらかというとJMPの従業員向けですが、他のユーザーからも追加情報が得られるかもしれません。
JMPがNNモデリングプラットフォームに物理情報に基づくニューラルネットワーク(PINN)を実装する予定があるかどうか興味があります。私は(学術界ではなく産業界の)物理学者として、分析するデータの多くには、標準的なJMPデータテーブルでは捉えにくい物理的な制約が存在します。JMPがXGBoostやNNなどの予測モデリングプラットフォーム、あるいはPyTorchアドインに注力してきた努力は高く評価していますが、データをモデリングする際に物理的な要因や制約を抽出するのはしばしば困難です。もちろん、理想的な状況では、データをモデル化するための独自の数式を生成できますが、現実世界では、応答を支配する調和振動子など存在せず、はるかに「複雑」で、使用できるモデル数式もありません。
物理法則に基づいたペナルティ係数をモデルに組み込めるようなオプションを追加できたら素晴らしいと思います。基本的な物理法則が破られた場合はその経路にペナルティが課され、その逆もまた然りです。さらに良いのは、複数の物理法則に基づいたペナルティ係数を含めることです。統計は確かに素晴らしいですが、ほぼすべてのデータセットには何らかの物理法則が当てはまります。
ちょっと気になっただけです。
ありがとう!、
DS
これは、Python統合がJMP 18以降にもたらす素晴らしい機能の1つです。JMPの機能をニーズに合わせてカスタマイズできるのです。ニーズに直接適合するソリューションを実装できます。「PINN物理情報ニューラルネットワーク用のPythonパッケージ」をGoogleで検索したところ、以下の結果が得られました。
物理法則に基づくニューラルネットワーク(PINN)を構築するための、最も人気があり包括的なPythonパッケージは、以下の2つのカテゴリに分類されます。
専用の高レベルPINNライブラリと低レベルのコア深層学習フレームワーク.
ジオメトリツール、境界条件、偏微分方程式ソルバーが既に組み込まれたすぐに使えるソリューションが必要な場合は、
DeepXDEのような高レベルライブラリを使用してください。完全なカスタマイズと基盤となる数学に対する最大限の制御が必要な場合は、
PyTorchや
JAXなどのコアフレームワークを使用して PINN を構築してください。
[ 1 , 2 , 3 , 4 , 5 ]
これらのドメイン固有のライブラリには、時空間ジオメトリ生成、境界/初期値条件、および特殊な最適化ツール(L-BFGSなど)のための組み込みルーチンが備わっています。
[ 1 ]
- ディープXDE :科学機械学習において最も広く利用されている包括的なフレームワークです。複雑な多次元形状、カスタム境界条件をサポートし、順問題と逆問題を容易に処理します。PyTorch、TensorFlow、JAX、またはPaddlePaddleのバックエンド上で動作します。[ 1 , 2 , 3 , 4 , 5 ]
- Modulus(NVIDIA製) :産業用物理シミュレーション向けに最適化された、高性能なエンタープライズグレードのフレームワークです。PINNを従来の物理ワークフローとシームレスに統合し、GPUアクセラレーションを活用して大規模なシミュレーションを実現します。[ 1 , 2 , 3 ]
- サイアン :KerasとTensorFlowをベースに構築されたラッパーライブラリで、物理法則に基づいた深層学習、科学計算、データ駆動型偏微分方程式の逆問題解法に特化して設計されています。[ 1 ]
- ジン :Optaxエコシステムを利用して逆問題、メタモデリング、勾配ベースの最適化を処理するために特別に構築された、非常に柔軟でモジュール式かつ高速なJAXベースのライブラリ。[ 1 ]
- PinnDE :複雑な微分方程式系を解くために、従来のPINNアーキテクチャとディープオペレーターネットワーク(DeepONets)の両方を扱うように構築された、統一されたオープンソースライブラリ。[ 1 , 2 ]
あるいは、PyTorchやその他の基盤となるライブラリを直接使用して何かを構築する。
DeepXDEをJMP環境にインストールするには、Pythonスクリプトウィンドウを開いて、
import jmp
from jmputils import pip
jpip('install', 'DeepXDE')
次に、そのスクリプトを実行してDeepXDEとその依存関係をインストールします。
多数の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
インストールが完了したら、
deepxde をインポート
...ここにPythonコードを入力...
DeepXDEのドキュメントは、こちらからご覧いただけます => https://deepxde.readthedocs.io/en/latest/index.html
機械学習、Torchライブラリ、GPUライブラリのいずれを使用する場合でも、マシンの性能が高ければ高いほど、パフォーマンスは向上します。RAM、特にGPU VRAMやApple SiliconまたはBlackwellベースのシステムなどの統合VRAMは非常に重要です。これらのツールは、最大限の効果を発揮するためにワークステーションクラスのハードウェアを必要とします。
インストールとインポートはJMP 19.2の開発版で実行されましたが、JMP 18以降のどのバージョンでも動作するはずです。
注:私はJMP 20のローカルビルドを実行していましたが、JMP 18または19では問題は発生しないと思われます。
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)
上記の「mps」と「cuda」のチェックにご注目ください。MPSはAppleのMetal Performance Shaders(MPS)の略で、CUDAはWindowsとLinuxにおけるNvidiaの主力技術です。これらのチェックにより、torchが利用可能な場合はGPUを使用していることが保証されます。
これは実行され、help(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
このような議論は、進化するテクノロジーがインドで新たなキャリア機会を生み出していることを浮き彫りにしている。特に、物理学、データサイエンス、機械学習、および特定の分野の知識を組み合わせた専門家にとって、その機会は大きい。