CPU vs GPU
CPU : Central processing unit
GPU : Graphics processing unit
- GPU와 CPU 모두 임의의 명령어를 수행할 수 있는 범용 컴퓨팅 머신
- CPU는 core의 수가 적음(4~10), Hyperthreading 기술과 더불어 8~20 개의 thread 동시 실행 가능, 대부분의 메모리를 RAM에서 끌어다 사용
- GPU는 수천개의 core를 가짐, 하지만 각각의 core 가 더 느린 clock speed에서 동작, 많은 코어들이 하나의 task를 병렬적으로 수행, GPU는 칩 안에 RAM이 내장

- GPU 학습을 할 때 Model 과 Model 의 가중치는 전부 GPU RAM에 상주하고 있는 반면, 실제 Train data는 하드 드라이브에 있다는 문제 존재
- 데이터셋이 작은 경우에는 전체를 GPU RAM에 올림
- HDD 대신에 SSD를 사용하면 데이터 읽는 속도 개선 가능
- CPU의 multi threads를 이용해서 데이터를 미리 RAM에 올려 놓아서 해결
Deep Learning Frameworks
Deep Learning Frameworks를 사용하는 이유
- 엄청 복잡한 computational graph를 직접 만들지 않아도 된다
- forward pass만 잘 구현해 놓으면 back propagation은 알아서 구성되기 때문
- GPU를 효율적으로 사용 가능


⇒ Numpy를 사용하면 GPU에서 실행 불가, 그때 그때 gradient를 직접 구해야 한다는 단점 존재
⇒ Deep Learning Framework의 목표는 forward pass를 numpy 처럼 작성을 해 놓으면 GPU에서 동작하고, Gradient도 알아서 계산해주는 것