Ubuntu + Anaconda 環境で NVIDIA PhysicsNeMo を動かすまでのメモ (エラー暫定回避版)
CUDA 13.1 / RTX 5070 Ti / PhysicsNeMo + PhysicsNeMo Sym / Lid Driven Cavity example 実行まで
こちらのサイトは緊急避難的に環境設定時のエラーを緊急避難的(イレギュラー)に解決したときの対応をまとめています。
筋が良い対応方法はこちらにまとめております。
はじめに
Ubuntu 環境で NVIDIA PhysicsNeMo を試そうとしたところ、PyPI 版のインストールだけではそのまま example が動かず、いくつか追加対応が必要でした。
本記事では、実際に行った対応をまとめます。
対象は以下です。
- Ubuntu
- Anaconda
- NVIDIA GPU
- CUDA 13.1
physicsnemophysicsnemo-sym- example:
examples/cfd/ldc_pinns
最終的には、Lid Driven Cavity の example が学習を開始し、Loss が表示されるところまで確認できました。
実行環境
nvidia-smi の結果は以下の通りでした。
nvidia-smi
要点だけ抜き出すと、
- GPU:
NVIDIA GeForce RTX 5070 Ti - Driver Version:
590.48.01 - CUDA Version:
13.1
という構成です。
1. conda 環境を作成する
まず、新しい conda 環境を作成しました。
conda create -n nphysics00 python=3.11 -y
conda activate nphysics00
続けて、pip などを更新しておきます。
python -m pip install --upgrade pip setuptools wheel
2. PhysicsNeMo 本体と Sym を GitHub から取得する
今回、最終的には PyPI 版ではなく source / editable install を使う方が安定しました。
そのため、まず GitHub から clone します。
PhysicsNeMo 本体
cd ~/Downloads
git clone https://github.com/NVIDIA/physicsnemo.git
PhysicsNeMo Sym
cd ~/Downloads
git clone https://github.com/NVIDIA/physicsnemo-sym.git
3. 既存の PyPI 版を削除する
最初に PyPI 版を入れていた場合は、あとで source 版と衝突しやすいので削除しておきます。
conda activate nphysics00
python -m pip uninstall -y nvidia-physicsnemo nvidia-physicsnemo.sym
4. source / editable install を行う
PhysicsNeMo core
cd ~/Downloads/physicsnemo
python -m pip install -e .
PhysicsNeMo Sym
physicsnemo-sym 側は、今回の環境では --no-build-isolation を付けた方が通りやすかったです。
cd ~/Downloads/physicsnemo-sym
python -m pip install -e . --no-build-isolation
5. source 版が読まれていることを確認する
ちゃんと clone したソースを参照しているか確認します。
python - <<'PY'
import physicsnemo
import physicsnemo.sym
print("physicsnemo :", physicsnemo.__file__)
print("physicsnemo.sym :", physicsnemo.sym.__file__)
PY
期待するのは、以下のように site-packages ではなく clone したディレクトリを読んでいる状態です。
physicsnemo : /home/USER/Downloads/physicsnemo/physicsnemo/__init__.py
physicsnemo.sym : /home/USER/Downloads/physicsnemo-sym/physicsnemo/sym/__init__.py
6. example 実行時に起きた問題と対応
対象の example は以下です。
cd ~/Downloads/physicsnemo/examples/cfd/ldc_pinns
実行コマンドはこれです。
python -u train.py
ただし、最初はそのままでは動きませんでした。
6.1 torch.distributed.tensor._ops.registration エラー
最初に出たのは以下のエラーです。
ModuleNotFoundError: No module named 'torch.distributed.tensor._ops.registration'
原因
train.py では from physicsnemo.models.fno import FNO を使いたいだけなのですが、
physicsnemo/models/__init__.py が DiT まで import してしまい、その過程で domain_parallel → custom_ops → torch.distributed.tensor._ops.registration に進んで落ちていました。
つまり、FNO を使いたいだけなのに、不要な DiT の import が巻き込まれている 状態でした。
対応
以下のファイルを編集しました。
~/Downloads/physicsnemo/physicsnemo/models/__init__.py
元々入っていた
from .dit import DiT
を、一時的に無効化しました。
# from .dit import DiT
あるいは、少し安全にするなら次のようにしてもよいです。
try:
from .dit import DiT
except Exception:
DiT = None
6.2 numba が無い
次に、以下のエラーが出ました。
ModuleNotFoundError: No module named 'numba'
対応
conda activate nphysics00
python -m pip install numba
6.3 nvidia.dali が無い
さらに、以下のエラーが出ました。
ModuleNotFoundError: No module named 'nvidia.dali'
対応
今回の環境は CUDA 13.1 なので、DALI は CUDA 13 系向けを入れました。
conda activate nphysics00
python -m pip install --extra-index-url https://pypi.nvidia.com --upgrade nvidia-dali-cuda130
確認用:
python - <<'PY'
import nvidia.dali as dali
print("DALI import OK")
print("DALI version:", dali.__version__)
PY
7. uv について
途中で uv run python ... も試しましたが、今回の環境では
-
physicsnemo.symの見え方が不安定 - conda 環境に入れたものと
uv実行時の見え方が一致しないケースがある
という状態がありました。
そのため、今回は 素直に conda activate nphysics00 後の python -u train.py を使う方が安定しました。
8. 最終的に成功した実行コマンド
以下で example が動きました。
conda activate nphysics00
cd ~/Downloads/physicsnemo/examples/cfd/ldc_pinns
python -u train.py
実際には次のようなログが出ました。
/home/taka/Downloads/physicsnemo/physicsnemo/distributed/manager.py:415: UserWarning: Could not initialize using ENV, SLURM or OPENMPI methods. Assuming this is a single process job
/home/taka/anaconda3/envs/nphysics00/lib/python3.11/site-packages/nvidia/dali/plugin/base_iterator.py:208: Warning: Please set `reader_name` ...
Loss: 0.5098664164543152, LR: 0.0009999871767586216
Loss: 0.012258127331733704, LR: 0.0009872458850468222
少なくとも以下は確認できました。
- 学習ループに入っている
- DALI が動作している
- Loss が表示されている
- Loss が低下している
9. warning について
single process job の warning
Could not initialize using ENV, SLURM or OPENMPI methods. Assuming this is a single process job
これは、分散実行ではなく 単一 GPU / 単一プロセス で実行しているという意味です。
ローカル動作確認では問題ありません。
Warp DeprecationWarning
Warp DeprecationWarning: The symbol `warp.context.Device` will soon be removed from the public API. Use `warp.Device` instead.
これは将来の API 変更予告であり、今回の失敗要因ではありません。
DALI の warning
Please set `reader_name` ...
これも dataloader 実装上の注意で、今回の example 動作確認の段階では致命的ではありません。
10. 最終的なおすすめ構成
今回の経験から、以下の構成が扱いやすかったです。
- Python 環境:
conda - 環境名:
nphysics00 - PhysicsNeMo core: GitHub clone +
pip install -e . - PhysicsNeMo Sym: GitHub clone +
pip install -e . --no-build-isolation - 実行方法:
conda activate nphysics00の後にpython -u train.py
11. 再現用コマンドまとめ
以下をまとめて実行すれば、今回の構成を再現しやすいです。
# conda 環境
conda create -n nphysics00 python=3.11 -y
conda activate nphysics00
python -m pip install --upgrade pip setuptools wheel
# clone
cd ~/Downloads
git clone https://github.com/NVIDIA/physicsnemo.git
git clone https://github.com/NVIDIA/physicsnemo-sym.git
# 既存 PyPI 版の削除(必要なら)
python -m pip uninstall -y nvidia-physicsnemo nvidia-physicsnemo.sym
# editable install
cd ~/Downloads/physicsnemo
python -m pip install -e .
cd ~/Downloads/physicsnemo-sym
python -m pip install -e . --no-build-isolation
# 追加依存
python -m pip install numba
python -m pip install --extra-index-url https://pypi.nvidia.com --upgrade nvidia-dali-cuda130
# example 実行
cd ~/Downloads/physicsnemo/examples/cfd/ldc_pinns
python -u train.py
12. まとめ
今回のポイントは次の3点でした。
- PyPI 版と GitHub source 版を混在させない
- core と sym の両方を source / editable install に揃える
DiTの不要 import を避ける
PhysicsNeMo はそのままでも入りますが、example 実行まで考えると、環境によっては追加調整が必要でした。
同じように詰まっている方の参考になれば幸いです。