파이썬으로 분산 컴퓨팅을 해 보자.
사실은 쿠버네티스를 썩히고 있어서 내심 좀 그런데
바로 잘 짜여진 컨테이너들의 예제만 다루면 깊은 이해가 없을 것 같아서
일단은 바닐라부터 해보자.
1. 싱글노드에서 싱글프로세싱
기본적인걸 우선 확인하자.
파이썬은 잘 깔려 있고
pip 가 안깔려있다.
설치해준다.
mpi4py 도 설치해 준다.
이때 mpi에 관한 라이브러리가 깔려있지 않다면 동작하지 않으므로
mpi를 반드시 설치해 주어야 한다.
설치 방법은 아래의 글에 설명되어 있다.
2023.09.03 - [Backend MLOps/On-premise setting] - [MPI] 멀티노드로 병렬연산, 분산컴퓨팅 처리하기
설치에 생각보다 시간이 더 걸린다.
vim 으로 간단한 스크립트를 작성해 준다.
가장 기본적으로 랭크를 얻어 출력하는 스크립트를 작성해 보았다.
mpirun으로 동작시키면 정상 작동 된다.
2. 싱글 노드에서 멀티 프로세싱
멀티 프로세싱을 생성하는 것은 간단하다.
-np 이후에 몇개의 프로세싱을 돌릴지 적어주기만 하면 끝난다.
로컬호스트의 프로세서 수를 제한하고 싶다면 위와 같이 콜론 뒤에 숫자로 적어줄 수 있다.
3. 멀티노드에서 멀티프로세싱
우선 다른 노드에도 pip와 mpi4py를 설치해 줘야 하기 때문에 명령어를 쭉 뿌릴건데
이때 nfs도 함께 맞춰주도록 하자.
먼저 nfs서버에 가서 디렉토리를 만들어 준다.
나는 이전 글을 통해 만들어져 있는 디렉토리에서 작업할 것이다.
commands="
if [[ \$(pwd) == \$(echo \$HOME) ]];
then
echo \"True\";
mkdir -p ./multi-node-MPI/;
else
echo \"False\";
fi;
sudo mount 192.168.0.10:/home/manager/nfs/shared/mpi/ ./multi-node-MPI/;
sudo apt install python3-pip;
pip install mpi4py;
"
eval $commands
ssh pi@192.168.0.12 -t $commands
ssh pi@192.168.0.13 -t $commands
ssh pi@192.168.0.14 -t $commands
저렇게 상위 폴더만 마운트 후 들어가서 작업을 하자.
-y 같은 옵션으로 y를 입력하는 것을 건너뛰면 더 편하다.
이전 발행 글에서 만들어두었던 c 언어 헬로월드가 보인다.
여기서 py 라는 디렉토리를 만들어서 아까의 튜토리얼을 저장하자.
요렇게 하면 준비가 다 됐다.
위와 같이 참여할 호스트를 적은 호스트 파일을 만들어 주고
이름은 hostfile.txt 같이 아무거나 해준다.
이렇게 실행되는 것을 볼 수 있다.
이게 진짜 여러 노드에서 돌아간건지 확인하기 위해
호스트 이름을 출력해 보자.
호스트 네임이 출력되는 구문을 추가했다.
여러 노드에서 동시다발적으로 프로세스가 생성, 진행되는 것을 알 수 있다.
그라파나에서도 모든 노드의 모든 프로세서에서 사용이 감지된 것을 볼 수 있다.
'Backend MLOps > On-premise setting' 카테고리의 다른 글
[k8s] Jetson Nano에 k3s 설치하고 워커노드로 구축하기 (0) | 2023.09.24 |
---|---|
[MPI] 파이썬으로 멀티노드 분산컴퓨팅 처리 - 2 (0) | 2023.09.12 |
[MPI] 멀티노드로 병렬연산, 분산컴퓨팅 처리하기 (0) | 2023.09.03 |
[k8s] NFS 기반 PersistentVolume 직접 구축하기 - 2 (0) | 2023.09.02 |
[k8s] NFS 기반 PersistentVolume 직접 구축하기 - 1 (0) | 2023.09.02 |
댓글