데이터셋 : 30프레임 1초짜리 영상 train 610개 test 153 총 용량 1기가
배치사이즈 2로 한번 학습(Epoch) 하는데 약 7분
총 20번 학습하도록 했는데 그러면 약 140분이 걸립니다..
GPU사용률을 더 올리는 방법을 찾아보고
안된다면 그래픽카드 구매를 고려해봐야겠습니다.
배치 처리
배치(batch) 단위로 데이터를 처리하여 GPU 사용률을 향상시킬 수 있습니다. GPU는 병렬 처리를 지원하므로, 여러 데이터 샘플을 동시에 처리하면 GPU 사용률이 높아집니다. 배치 크기(batch size)를 적절히 설정하여 GPU를 효율적으로 활용할 수 있습니다.
num_workers ++ (Multi Process Data Loading)
가장 간단히 해결할 수 있는 방법은 data를 가져오는 프로세스를 늘리는 방법입니다. PyTorch는 아래 코드와 같이 DataLoader를 설정할 수 있습니다.
train_dataloader = DataLoader(dataset=train_dataset, num_workers=4, batch_size=16, ...)
프로세스 a가 한 배치 데이터를 GPU 올려서 학습하는 동안, 프로세스 b는 다음 배치 데이터를 미리 준비하는 것입니다 (Queue 사용). 이렇게 되면 GPU는 끊임없이 data를 가져올 수 있기 때문에 GPU-Util을 높일 수 있습니다. 당연히, num_workers는 다다익선이라 볼 수 있지만, 모든 코어를 전부 데이터 로드에 사용하게되면, 다른 처리에 딜레이를 일으킬 수 밖에 없습니다.
즉 적당한 값의 num_workers를 설정해줘야합니다.
num_workers 수 = 가용할cpu 스레드 개수
보통 num_worker는 4x가용 gpu 로 두는게 정석이라고 합니다.
GPU 2개 이상 병렬 처리
여러 개의 GPU를 사용하는 경우, 모델을 여러 GPU에 분산하여 병렬 처리를 수행할 수 있습니다. torch.nn.DataParallel 또는 torch.nn.parallel.DistributedDataParallel을 사용하여 모델을 병렬화할 수 있습니다. 이를 통해 여러 GPU의 처리 능력을 활용할 수 있습니다.
'파이썬 > Tensorflow,Pytorch' 카테고리의 다른 글
multilabel vs multiclass 차이 (56) | 2023.02.22 |
---|---|
머신러닝 시각화 툴킷 Tensorboard 설치 및 사용방법 (83) | 2023.01.27 |
ERROR: Could not find a version that satisfies the requirement mediapip (from versions: none) ERROR: No matching distribution found for mediapip (15) | 2023.01.10 |
LSTM 순환 신경망 텐서플로로 구현하기 (7) | 2022.12.19 |
순환신경망 Tensorflow로 구현 (0) | 2022.12.19 |