# multi-gpu
pytorch: multi-gpu 학습하는 방법
오늘은 pytorch DistributedDataParallel(DDP)를 이용해서 multi-gpu 학습을 하는 방법을 알아봐요. 먼저 필요한 모듈을 불러와요. 필요한 함수들을 정의해요. 이제 기존 모델 코드에 DDP를 감싸면 돼요. 그리고 기존 데이터셋에 DistributedSampler를 적용해줘요. 이 때, shuffle=False로 해줘야 된답니다. epoch를 시작할 때 traindataloader.sampler.setepoch(epoch)를 적용해요. 마지막으로, setup()과 cleanup() 함수를 적용해주면 돼요. 이제 gpu수에 맞춰서 nprocpernode를 설정하고 파일을 torchrun으로 실행시키면 돼요. > ### 참고 https://github.com/pytorch/examples/blob/main/distributed/ddp-tutorial-series/multigpu_torchrun.py
pytorch: multi-gpu 사용 시 attribute 접근 방법
DDP를 이용하여 custom model을 학습할 때 model의 attribute에 접근하려면 아래와 같이 하면 돼요.
[분산학습] Multi-GPU 학습
예전에도 정리한 적이 있지만 한 게시물로 한꺼번에 정리하려고 작성한다. 분산 학습 딥러닝 분산 학습 방법으로 모델이나 데이터를 쪼개서 학습하는 Model Parallelism, Data Parallelism이 있다. 1. Data Parallalism Data Parallelism은 데이터가 많을 때 학습 속도를 높이기 위해 사용하는 방법이다. 데이터를 나눠 여러 GPU에서 연산한 후 각 최종 업데이트 결과에 대해 평균을 내는 방식이다. 하나의 GPU가 1개의 데이터를 학습할 때 걸리는 시간이 T라면 B개의 Batch를 학습할 때 TB의 시간이 소요된다. 하지만 N개의 GPU에 B/10만큼 나눠서 학습한다면 T\B/N으로 시간을 단축할 수 있다. Synchronization N개의 GPU에서 연산한 업데이트 결과를 모아서 평균을 내고 다시 재분배하는 Synchronization 과정이 필요하다. Synchronization 과정에서도 시간이 소요되기 때문에

Multi GPU Training Scaling Strategy
Introduction Multi GPU 를 활용하여 딥러닝 모델의 분산 학습을 수행하는 경우, Scaling 과 관련된 용어가 보일 때가 있습니다. Weak Scaling 과 Strong Scaling 이 그것인데, 두 가지 개념이 헷갈리는 경우가 있어 정리해 둡니다. 두 방법은 Single GPU 에서의 실험과 비교하는 상황에서, batchsize 를 어떻게 조정할 것인가에 대한 방법입니다. Weak Scaling 1개의 worker 가 가지는 batchsize 를 고정하는 것 worker 의 개수를 증가시켰을 때, 전체 분산 처리 속도를 보게 된다. 1-GPU : 128batch 2-GPU : 128batch x 2 = 256batch 4-GPU : 128batch x 4 = 512batch 8-GPU : 128batch x 8 = 1024batch ... 그러므로 GPU 의 개수가 많아질 수록, 전체 batchsize 가 커지게 되고 이에 따라서 GPU 의

TensorFlow Multi-GPU Profiling
Introduction Setting Launch AWS g4dn.12xlarge instance Access to instance with SSH Check available conda environments Activate virtual environment Check gpu status Check multi-gpu Check name of gpu Setting for parallel training with specific gpu names data parallel synchronous Launch tensorboard SSH tunneling for tensorboard Check GPU utilization Code Result Conclusio

Multi gpu
node system과 동일하게 쓰이는 용어 model parallelization model parallelization은 alex-net에서 이미 쓰였던 적이 있다. 좋은 gpu parallelization은 그림처럼 gpu가 동시에 사용되도록 파이프라인 구조로 코딩해야한다. data parallelization gpu1에서 데이터 취합
Pytorch Multi GPU
토치에서 멀티 GPU 사용하기 1 용어 및 변수 정리 2 Code 용어 및 변수 정리. 1) DataLoader num_workers : "데이터 load 할 때 프로세스 몇 개 쓸래?" numworkers = 4 * numof_gpus 이거만 기억하면 됨. (ref) pin_memory : TRUE 2) initprocessgroup process_group이 뭘 의미할까? 여기서 하나의 process는 하나의 GPU라고 할 수 있다. 그러면 하나의 group은 distributed training에 사용되는 모든 프로세스들을 포함하는 개념이다. process_group은 group or