クラスタでは、LMODを使用して、プリインストールされた特定のモジュール(PyTorchや他の科学パッケージなど)を動的にロードします。最も重要なのは、いくつかのコードを実行したいということです。深い速度ノード全体に分散コードを最適化して実行できるフレームワークです。pdsh
私が経験している問題はもちろん、sshセッションがマスターノードにすでにロードしているモジュールをロードしないことです。ただし、これにより一部の必須ライブラリが見つからないため、問題が発生します。 Pythonで。
例: 複数のノードを含む対話型 SLURM ジョブを要求するとします。マスターノードからPyTorch + Pythonとpdshモジュールをロードします。
module load PyTorch/1.12.0-foss-2022a-CUDA-11.7.0
module load pdsh/2.34-GCCcore-11.3.0
その後、いくつかの deepspeed コマンドを実行すると、すべてのノードのパラレル SSH セッションが開始されます。ただし、これはそのノードの新しいセッションなので、上記のモジュールはロードされません。それアドバイスを受けるこれらのmodule load
コマンドをmyに追加すると、.bashrc
そのコマンドが常にロードされるという意味なので、おそらく望ましくないでしょう。
だからセッションがで使用されているかどうかを検出する方法を探していますpdsh
。その条件がtrueの場合pdsh
にのみ有効になっている.bashrcで使用できる変数はありますか?module load
答え1
didal24のコメントに触発され、ホスト名が始まる特定のノードにsshを接続するときにのみモジュールをロードして問題を解決しましたgpu
。
if [[ $(hostname) == gpu* ]]; then
module load PyTorch/1.12.0-foss-2022a-CUDA-11.7.0;
module load pdsh/2.34-GCCcore-11.3.0;
fi