GPU에서 잘 동작하고 적합한 알고리즘 중 하나인 Matrix Multiplication이다. 각각의 원소가 전부 독립적이기 때문에 병렬 연산이 적용된다.
따라서 deep learning model을 학습할 때 GPU를 주로 사용한다.
CPU와 GPU의 속도 차이를 비교한 그래프이다.
2017년 강의이기 때문에 TensorFlow와 PyTorch를 막 생겨나기 시작한 Framework로 언급한다. 어쨌든 최근에는 PyTorch와 TensorFlow, 이 두 가지가 가장 많이 사용된다.
같은 코드를 짤 때 Numpy와 TensorFlow, PyTorch를 비교한 사진이다.
Numpy로 모든 것을 구현하려면 backward pass를 스스로 계산해야 하고, 무엇보다 GPU에서 작동하지 않는다.
TensorFlow에서 GPU를 사용하려면 단지 코드의 cpu를 gpu로 바꿔주기만 하면 된다.
마찬가지로 PyTorch에서는 코드 뒤에 .cuda()
를 붙이면 된다.
TensorFlow는 코드가 크게 두 스테이지로 나뉜다.
빨간색 박스 부분은 Computational Graph를 정의하는 부분이고 파란색 박스 부분은 이 그래프를 반복해서 실행시키는 부분이다.
처음에 그래프를 최적화하는 데 오래 걸릴 수 있지만 한번 최적화된 그래프를 만들고 나면 그것을 반복하여 사용할 수 있다는 것이 장점이다.
다양한 패키지 중 Keras는 아주 유명한 APUI로 TensorFlow를 Backend로 해서 Computational Graph를 알아서 만들어 준다.
PyTorch는 총 세 개의 추상화 레벨로 구현되어져 있다.
TensorFlow의 Keras의 역할은 nn pakage가 담당한다.