AI, Deep Learning Basics/Basic

Training on GPU, CPU

이 사이트를 꼭 읽자.

Training을 할 때 눈 여겨보아야 할 점은 bottleneck이 있는지이다. 즉, GPU와 CPU가 balance있게 잘 퍼졌는지 확인해야 한다는 점이다. CPU와 GPU 모두 RAM이 존재한다.

  • CPU (RAM): 주로 serial 계산을 처리
  • GPU (DRAM, VRAM): matrix multiplication을 하는 역할을 한다.

GPU Bottleneck

  1. (Hardward 문제) Hardward의 thread가 모자르다. -core가 모자르다. Thread를 사용할 Tensorcore 부족
  2. Memory transfer
    • 하드웨어 -> RAM, RAM -> GPU memory, GPU memory -> shared memory: 크게 3단계로 나뉘는데, 상위 단계로 보낼수록 속도는 훨씬 빨라진다. 해결 방법은 다음과 같다.
    1. fetching: system-Parallelization
    2. Cashing (최선)
  3. Overhead: 모델 자체가 computation이 많다.

Profiler로 현황 체크

Nvidia profiler, PyTorch profiler가 존재한다. Cuda는 C언어로 이루어진 nvcc 컴파일러이다. Thread를 얼마나 할당할 것인가만의 정보만 주면 알아서 GPU를 generał purpose로 처리. 이 때 function 단위로 kernel을 연결하게 되는데 이를 연결하는 주체가 tensorflow와 pytorch이다.

  • Nvidia profiler: nsys-ui로 확인
  • PyTorch profiler