0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu + Anaconda 環境で NVIDIA PhysicsNeMo を動かすまでの記録

0
Last updated at Posted at 2026-03-26

Ubuntu + Anaconda 環境で NVIDIA PhysicsNeMo を動かすまでの記録

torch 2.10.0+cu128 + physicsnemo 2.0.0 で動作確認 —

はじめに

NVIDIA PhysicsNeMo の example である ldc_pinns を Ubuntu 環境で動かそうとしたところ、いくつかの import error や CUDA 関連のハマりどころがありました。

最終的には、以下の構成で ldc_pinns が正常に学習開始できました。

  • Python: 3.11
  • PyTorch: 2.10.0+cu128
  • PhysicsNeMo: 2.0.0
  • PhysicsNeMo Sym: 2.0.0
  • 実行環境: conda

本記事では、途中で遭遇したエラーと、そのうえで最終的に動いた構成をまとめます。


結論

まず結論です。

今回、以下の組み合わせで ldc_pinns が動作しました。

python -c "import torch; print(torch.__version__, torch.version.cuda)"
python -c "import physicsnemo; print(physicsnemo.__version__)"
python /pub/physicsnemo_v2.0.0/ldc_pinns/train.py

実際の出力:

2.10.0+cu128 12.8
2.0.0
...
Loss: 0.5105028748512268, LR: 0.0009999871767586216

Loss: が表示されていれば、少なくとも

  • import 通過
  • PhysicsNeMo / Sym の初期化成功
  • 学習ループ開始

までは到達できています。


最終的に動いた構成

今回うまくいった構成は以下です。

  • OS: Ubuntu
  • Python: 3.11
  • conda 環境名: nemo_safe
  • PyTorch: 2.10.0+cu128
  • CUDA runtime: 12.8
  • PhysicsNeMo: 2.0.0
  • PhysicsNeMo Sym: 2.0.0

ポイントは、CUDA 13 系や PyTorch 2.11 系ではなく、torch 2.10 + cu128 側に寄せたことです。


先に再現手順だけ知りたい人向け

以下の手順で、今回の環境は再現できます。

1. conda 環境作成

conda create -n nemo_safe python=3.11 -y
conda activate nemo_safe

2. pip を更新

python -m pip install --upgrade pip setuptools wheel

3. PyTorch 2.10 + cu128 をインストール

python -m pip install --index-url https://download.pytorch.org/whl/cu128 \
  "torch<2.11" torchvision torchaudio

確認:

python -c "import torch; print(torch.__version__, torch.version.cuda)"

期待される出力:

2.10.0+cu128 12.8

4. PhysicsNeMo 本体をインストール

python -m pip install "nvidia-physicsnemo[cu12]==2.0.0"

5. hydra-core をインストール

python -m pip install hydra-core

6. PhysicsNeMo Sym をインストール

python -m pip install Cython
python -m pip install "nvidia-physicsnemo.sym==2.0.0" --no-build-isolation

7. 実行

cd /pub/physicsnemo_v2.0.0/ldc_pinns
python train.py

途中で遭遇したエラー

ここからは、実際にハマった点を順に書きます。


1. ModuleNotFoundError: No module named 'hydra'

最初に出たのがこれです。

ModuleNotFoundError: No module named 'hydra'

これは import hydra に対して、実際のインストール対象が hydra-core であることが原因でした。

対処

conda install -c conda-forge hydra-core

もしくは

pip install hydra-core

2. ModuleNotFoundError: No module named 'physicsnemo.utils.logging'

次に出たのがこれです。

ModuleNotFoundError: No module named 'physicsnemo.utils.logging'

これは単純な依存不足というより、インストール済みの PhysicsNeMo と example 側の整合不良 の可能性が高いと感じました。

この時点で、かなり「環境構成を見直した方が早い」状態でした。


3. nvidia-physicsnemo-sym のビルド失敗(CUDA mismatch)

次にハマったのが、nvidia-physicsnemo-sym インストール時の CUDA mismatch です。

要点はこうでした。

  • PyTorch は CUDA 13.0 でビルドされていた
  • しかしビルド時に見えていた CUDA toolkit は 12.9
  • そのため nvidia-physicsnemo-sym のビルドが失敗した

つまり、PyTorch 側と CUDA toolkit 側の版が噛み合っていなかった、ということです。


4. nvcc not found

nvidia-smi は動くのに、nvcc が見つからない、という状況にも遭遇しました。

当時の状況

  • nvidia-smi は動く
  • しかし nvcccommand not found

これは、

  • GPU ドライバは入っている
  • しかし CUDA Toolkit の bin へ PATH が通っていない

という状態でした。

確認したコマンドはこれです。

ls -d /usr/local/cuda*
find /usr/local -name nvcc
echo $PATH

実際には以下の nvcc が存在していました。

/usr/local/cuda-13.2/bin/nvcc
/usr/local/cuda-12.9/bin/nvcc

つまり、nvcc が無いのではなく、PATH に入っていないだけでした。

対処例(zsh)

export CUDA_HOME=/usr/local/cuda-13.2
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
hash -r

恒久化するなら ~/.zshrc に追記します。

echo 'export CUDA_HOME=/usr/local/cuda-13.2' >> ~/.zshrc
echo 'export PATH=$CUDA_HOME/bin:$PATH' >> ~/.zshrc
echo 'export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH' >> ~/.zshrc
source ~/.zshrc

5. torch.distributed.tensor._ops.registration が見つからない

最も厄介だったのがこれです。

ModuleNotFoundError: No module named 'torch.distributed.tensor._ops.registration'

このときの組み合わせは以下でした。

  • torch 2.11.0+cu130
  • physicsnemo 2.0.0

この段階では、PhysicsNeMo 2.0.0 が期待している内部 API と、PyTorch 2.11 側の構成が噛み合っていない 可能性が高いと判断しました。

そこで最終的には、PyTorch を 2.10 + cu128 に落とす 方向へ切り替えました。


なぜ CUDA 13 系ではなく CUDA 12.8 側に寄せたか

最初は CUDA 13 系で揃えようとしました。
ただし、実際には次のような問題がありました。

  • CUDA 13 系の toolkit / PyTorch / PhysicsNeMo Sym のビルド整合がややシビア
  • torch 2.11.0+cu130physicsnemo 2.0.0 の組み合わせで import error に遭遇
  • 一方で、torch 2.10.0+cu128 に切り替えると ldc_pinns が正常に学習開始した

そのため、少なくとも 「まず example を動かす」 という目的では、
torch 2.10 + cu128 側に寄せた方が安定でした。


実行時に出た warning について

最終的に動いたあとも、いくつか warning は出ました。
ただし、少なくとも今回の ldc_pinns 実行では致命的ではありませんでした。

Warp DeprecationWarning

Warp DeprecationWarning: The symbol `warp.context.Device` will soon be removed...

→ 将来のAPI変更予告。今すぐの停止要因ではない。

distributed manager warning

Could not initialize using ENV, SLURM or OPENMPI methods. Assuming this is a single process job

→ 単一プロセスとして実行するだけで、通常は問題ない。

DALI warning

Please set `reader_name` ...

→ データローダ側の注意喚起。今回の example 実行では致命的ではない。


今回の学び

今回の経験で感じたことは次の通りです。

1. nvidia-smi の CUDA Version を過信しない

nvidia-smi に表示される CUDA Version は、ドライバがサポートする最大版です。
nvcc の版や、いま実際にビルドで使われる toolkit の版とは一致しないことがあります。

2. nvcc の有無は必ず確認する

以下は一度確認した方がよいです。

which nvcc
nvcc --version

3. PhysicsNeMo は「最新すぎる構成」が必ずしも安全ではない

今回のように、CUDA 13 + torch 2.11 + physicsnemo 2.0.0 よりも、
torch 2.10 + cu128 の方が素直に通る場合がありました。


動いた環境は固定しておく

こういう環境は、あとで再現できなくなるのが怖いので、保存しておくと安心です。

python -V
python -c "import torch; print(torch.__version__, torch.version.cuda)"
python -c "import physicsnemo; print(physicsnemo.__version__)"
pip freeze > requirements_nemo_safe.txt
conda env export > nemo_safe_environment.yml

まとめ

今回、PhysicsNeMo ldc_pinns を動かす上では、
最新寄りの CUDA 13 / torch 2.11 系よりも、torch 2.10.0+cu128 を使う安全側構成の方が安定していました。

少なくとも今回の環境では、以下の構成で正常に学習開始まで到達できました。

  • Python 3.11
  • PyTorch 2.10.0+cu128
  • PhysicsNeMo 2.0.0
  • PhysicsNeMo Sym 2.0.0

ldc_pinns をまず一度確実に動かしたい、という方の参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?