20170921

병렬처리
오늘은 vDNN 논문에 대해 이야기할 것. 뉴럴 넷은 데이터를 가지고 weight를 학습한다는 것이 장점이다. 이러한 weight들을 학습시키는 방법 중 하나가 stochastic gradient descent. Loss function을 최소화하는 방식으로 weight를 학습시킨다. Convolution layer는 forward / backward path 모두 convolution 연산이다. Convolution을 행렬곱으로 하면 메모리 사용량은 적지만 시간이 오래걸림, FFT로 하면 메모리 사용량은 많지만 시간이 적게 걸림. vDNN 논문에서는 FFT 사용 위한 메모리를 workspace라고 이야기함. NVprofiler를 사용하면 GPU의 자원 사용량을 알 수 있다. 특정 연산 시점을 기준으로 profiling하면 레이어 당 메모리 사용량을 알 수 있을 것. 뉴럴 넷 학습에서 대부분의 메모리 할당이 feature map에서 발생한다. weight는 상당히 적은 부분(feature maps > gradients > weights). vDNN 논문의 핵심은 GPU 메모리 부족을 CPU 메모리를 사용으로 해결하자. 그리고 이 때 뉴럴 넷 학습의 특징을 활용하자. 뉴럴 넷 학습에서 feature map은 backward path에서도 필요하다. 따라서 메모리에 계속해서 올려둘 필요 없이, 해당 시점에 올려도 된다. 중요한 가정이 있는데, 데이터 연산 속도가 데이터 이동 속도보다 느리다는 것. vDNN에서는 stream을 사용해 메모리의 offloading과 prefetching을 하도록 함.

Advertisements
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 98,779 hits
%d bloggers like this: