[Cs231n] Lecture 8 | Deep Learning Software

YeoJin, Song·2023년 1월 13일
0

Cs231n

목록 보기
1/7

1. CPU vs GPU

  • CPU는 Central Processing Unit의 약자이다. GPU에 비해 훨씬 적은 수의 core를 가지며 연속적인 작업에 유리하다. 또한 Memory를 system과 공유한다.
  • GPU는 graphics card 혹은 Graphics Processing Unit 이라고 부른다. 원래는 Computer Graphics를 렌더링하기 위해 만들어진 것이다.
  • GPU에는 AMD와 NVIDIA 등 여러 종류가 있지만 딥러닝 분야에서는 NVIDIA가 압도적으로 많이 사용된다.
  • GPU는 훨씬 많은 수의 core를 가지며 병렬 계산에 유리하다. 또한 별도의 그래픽 Memory를 가지고 있다.

GPU에서 잘 동작하고 적합한 알고리즘 중 하나인 Matrix Multiplication이다. 각각의 원소가 전부 독립적이기 때문에 병렬 연산이 적용된다.
따라서 deep learning model을 학습할 때 GPU를 주로 사용한다.

CPU와 GPU의 속도 차이를 비교한 그래프이다.

2. Deep Learning Frameworks

2017년 강의이기 때문에 TensorFlow와 PyTorch를 막 생겨나기 시작한 Framework로 언급한다. 어쨌든 최근에는 PyTorch와 TensorFlow, 이 두 가지가 가장 많이 사용된다.

같은 코드를 짤 때 Numpy와 TensorFlow, PyTorch를 비교한 사진이다.
Numpy로 모든 것을 구현하려면 backward pass를 스스로 계산해야 하고, 무엇보다 GPU에서 작동하지 않는다.
TensorFlow에서 GPU를 사용하려면 단지 코드의 cpu를 gpu로 바꿔주기만 하면 된다.
마찬가지로 PyTorch에서는 코드 뒤에 .cuda()를 붙이면 된다.

TensorFlow

TensorFlow는 코드가 크게 두 스테이지로 나뉜다.
빨간색 박스 부분은 Computational Graph를 정의하는 부분이고 파란색 박스 부분은 이 그래프를 반복해서 실행시키는 부분이다.
처음에 그래프를 최적화하는 데 오래 걸릴 수 있지만 한번 최적화된 그래프를 만들고 나면 그것을 반복하여 사용할 수 있다는 것이 장점이다.

다양한 패키지 중 Keras는 아주 유명한 APUI로 TensorFlow를 Backend로 해서 Computational Graph를 알아서 만들어 준다.

PyTorch

PyTorch는 총 세 개의 추상화 레벨로 구현되어져 있다.

  • Tensor : GPU에서 돌아가는 ndarray
  • Variable : Computational Graph를 구성하는 Node, data와 gradient를 저장
  • Module : Neural Network의 layer

TensorFlow의 Keras의 역할은 nn pakage가 담당한다.

profile
fake traveler

0개의 댓글