pdshセッション検出

pdshセッション検出

クラスタでは、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

関連情報