티스토리 뷰
[PyTorch] Depthwise Convolutional Layer 속도 향상 방법
developer0hye 2021. 1. 8. 23:30일반적으로 Depthwise Convolutional Layer는 CNN 모델의 연산량과 파라미터 수를 줄이기 위하여 제안되었으나, 실제로 이를 사용하여 모델을 구현한 뒤에 속도를 측정해보면 줄어드는 연산량 대비 고속화의 정도가 크지 않습니다.
특히, 저의 경우 Depthwise Convolutional Layer가 포함된 CNN 모델을 학습시키려하니, Forward 및 Backward 과정에서 비정상적으로 긴 시간이 걸리는 것을 확인하였습니다. 이러한 경우 코드상에서 Forward 및 Backward 과정 이전에 아래의 코드를 작성해주면 소요시간을 단축시킬 수 있습니다.
torch.backends.cudnn.deterministic = False
torch.backends.cudnn.benchmark = True
torch.backends.cudnn.deterministic = True인 경우, Reproducibility를 보장하도록 연산이 실행됩니다.
torch.backends.cudnn.deterministic = False인 경우, Reproducibility를 보장하지못하나 보다 빠른 속도로 연산이 실행될 수 있습니다.
torch.backends.cudnn.benchmark = True인 경우, 보다 최적화된 알고리즘으로 연산을 실행하게 되어 속도를 향상시킬 수 있습니다.
Reproducibility를 보장해야하는 경우 위 방법은 권장되지 않습니다.
저의 경우, 위 코드를 추가했을때 Forward 및 Backward 과정에 소요되는 속도가 약 3배 가량 증가되는 것을 확인할 수 있었습니다.
torch.backends.cudnn.benchmark 만 True로 세팅해줘도 속도 향상이 크니 시도해보시길 권장드립니다.
'Deep Learning > PyTorch' 카테고리의 다른 글
[PyTorch] Get a single batch from DataLoader without iterating (0) | 2021.01.24 |
---|---|
[PyTorch] torch.exp 와 auto mixed precision (0) | 2021.01.19 |
Image(Numpy, Opencv) To Tensor (0) | 2020.12.22 |
PyTorch - Multi GPUs로 학습된 Model의 Weights을 DataParallel을 호출하지 않고 Load하는 방법 (0) | 2020.10.08 |
layer 별 learning rate 할당 방법 (0) | 2020.09.23 |
- Total
- Today
- Yesterday
- 위상 정렬 알고리즘
- 백준 1766
- 백준
- 이분탐색
- LCA
- Lowest Common Ancestor
- 백준 11437
- 순열
- cosine
- 조합
- 백준 11053
- 인공지능을 위한 선형대수
- 가장 긴 증가하는 부분 수열
- 파이참
- 백트래킹
- MOT
- FairMOT
- PyCharm
- 단축키
- 문제집
- C++ Deploy
- ㅂ
- 자료구조
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |