우리 클러스터에서는 LMOD를 사용하여 사전 설치된 특정 모듈(예: PyTorch 또는 기타 과학 패키지)을 동적으로 로드합니다. 가장 중요한 것은 일부 코드를 실행하고 싶다는 것입니다.깊은 속도노드 전체에 분산 코드를 최적화하여 실행할 수 있는 프레임워크입니다. pdsh
내가 겪고 있는 문제는 물론 ssh 세션이 마스터 노드에 이미 로드한 모듈을 로드하지 않는다는 것입니다. 그러나 이로 인해 일부 필수 라이브러리를 찾을 수 없기 때문에 문제가 발생합니다 . 파이썬으로.
예: 여러 노드가 포함된 대화형 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