728x90
반응형

더 빠르게(딥러닝 고속화)

  • 빅데이터와 네트워크의 발전으로 딥러닝에서는 대량의 연산을 수행해야 한다.
  • 과거에는 CPU가 계산을 담당했으나, CPU만으로 부족해 실제 딥러닝 프레임워크 대부분은 GPU(Graphics Processing Unit)를 활용해 대량의 연산을 고속으로 처리할 수 있다.
  • 최근 프레임워크에서는 학습을 복수의 GPU와 여러 기기로 분산 수행하기 시작했다.

 

GPU를 활용한 고속화

  • GPU는 원래 그래픽 전용 보드에 이용해왔다. 그러나 최근에는 그래픽 처리뿐 아니라 범용 수치 연산에도 이용한다.
  • GPU는 병렬 수치 연산을 고속으로 처리할 수 있으니, 그 압도적인 힘을 다양한 용도로 활용하자는 것이 GPU 컴퓨팅의 목적이다.
  • GPU로 범용 수치 연산을 수행하는 것을 GPU 컴퓨팅이라고 한다.
  • 딥러닝에서는 대량의 단일 곱셈-누산(또는 큰 행렬의 곱)을 수행해야 한다.
    • 이런 대량 병렬 연산은 GPU의 특기다.(CPU는 연속적인 복잡한 계산을 잘 처리한다.)

 

AlexNet의 학습 시간을 '16 코어 제온 CPU'와 엔비디아 '타이탄 GPU'에서 비교한 결과

[그림1] AlexNet의 학습 시간을 '16코어 제온 CPU'와 비교한 결과

  • CPU에서는 40일이나 걸리지만 GPU로는 6일까지 단축되었다.
  • cuDNN이라는 딥러닝에 최적화된 라이브러리를 이용하면 더욱 빨라짐을 확인할 수 있다.
  • GPU는 주로 엔비디아와 AMD가 제공한다.
    • 둘 모두 범용 수치 연산에 적용할 수 있지만 아직까지 딥러닝과 더 친한 쪽은 엔비디아 GPU다.
    • CUDA 사용하기 때문 - cuDNN은 CUDA 위에서 동작하는 라이브러리로, 딥러닝에 최적화된 함수 등이 구현되어 있다.
  • im2 col방식은 GPU로 구현하기에도 적합하다.
  • GPU는 '작은'단위로 계산하기보다는 큰 덩어리를 한 번에 계산하는 데 유리하기 때문이다. im2 col로 거대한 행렬 곱 한 번에 계산해 GPU잠재력을 이끈다.

 

분산 학습

  • GPU로 딥러닝 연산을 꽤 가속할 수 있지만, 심층 신경망에서는 학습에 며칠 혹은 몇주가 걸리기도 한다.
  • 1회 학습에 걸리는 시간을 최대한 단축하고 싶다면 딥러닝 학습을 수평 확장(scale out)하자는 아이디어('분산학습')가 중요해진다.
  • 최근에는 다수의 GPU와 기기로 분산하기도 한다.
    • 예) 구글의 텐서플로와 마이크로소프트의 CNTK(Computational Network Toolkit)는 분산학습에 역점을 두고 개발하고 있다.
    • 거대한 데이터센터의 저지연 · 고처리량(low latency, high throughput) 네트워크 위에서 이 프레임워크들이 수행하는 분산 학습은 놀라운 효과를 보이고 있다.

텐서 플로의 분산 학습 성능 : 가로는 GPU의 수, 세로는 GPU1개 일 때 비교한 비율

[그림2] 텐서플로의 분산 학습 성능

  • GPU가 100개일 때 하나일 때보다 56배가 빨라졌다. 7일 걸리는 작업을 3시간 만에 끝낸다는 것으로 놀라운 효과를 보이고 있다.

 

연산 정밀도와 비트 줄이기

  • 딥러닝은 높은 수치 정밀도(수치를 몇 비트로 표현하느냐)를 요구하지 않는다.
    • 신경망은 입력 이미지에 노이즈가 조금 섞여 있어도 출력 결과가 잘 달라지지 않는 강건함을 보여준다.
    • 이런 견고성 대문에 신경망을 흐르는 데이터를 '퇴화'시켜도 출력에 주는 영향이 적다.
  • 컴퓨터에서 실수를 표현하는 방식으로 32비트 단정밀도(single-precision)64비트 배정밀도(double-precision) 부동소수점 등의 포맷이 있지만, 지금까지의 실험으로는 딥러닝은 16비트 반정밀도(half-precision)만 사용해도 학습에 문제가 없다고 알려져 있다.
    • 엔비디아의 2016년 GPU인 파스칼(Pascal) 아키텍처는 이 포맷을 지원하여, 이제는 반정 밀도 부동소수점이 표준적으로 이용되리라 생각한다.
    • 넘 파이는 16비트 반정 밀도 부동소수점도 지원하며, 이를 사용해도 정확도가 떨어지지 않는 것을 확인할 수 있다.
    • 가중치와 중간 데이터를 1비트로 표현하는 <Binarized Neural Networks)라는 방법도 등장
    • 딥러닝 고속화하기 위해 비트를 줄이는 기술은 앞으로 주시해야 할 분야다. (딥러닝을 임베디드용으로 이용 시 중요한 주제)

 

출처 : 밑바닥부터 시작하는 딥러닝

https://www.hanbit.co.kr/store/books/look.php?p_code=B8475831198

 

밑바닥부터 시작하는 딥러닝

직접 구현하고 움직여보며 익히는 가장 쉬운 딥러닝 입문서

www.hanbit.co.kr

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기