이 사이트를 꼭 읽자.
Training을 할 때 눈 여겨보아야 할 점은 bottleneck이 있는지이다. 즉, GPU와 CPU가 balance있게 잘 퍼졌는지 확인해야 한다는 점이다. CPU와 GPU 모두 RAM이 존재한다.
- CPU (RAM): 주로 serial 계산을 처리
- GPU (DRAM, VRAM): matrix multiplication을 하는 역할을 한다.
GPU Bottleneck
- (Hardward 문제) Hardward의 thread가 모자르다. -core가 모자르다. Thread를 사용할 Tensorcore 부족
- Memory transfer
- 하드웨어 -> RAM, RAM -> GPU memory, GPU memory -> shared memory: 크게 3단계로 나뉘는데, 상위 단계로 보낼수록 속도는 훨씬 빨라진다. 해결 방법은 다음과 같다.
- fetching: system-Parallelization
- Cashing (최선)
- Overhead: 모델 자체가 computation이 많다.
Profiler로 현황 체크
Nvidia profiler, PyTorch profiler가 존재한다. Cuda는 C언어로 이루어진 nvcc 컴파일러이다. Thread를 얼마나 할당할 것인가만의 정보만 주면 알아서 GPU를 generał purpose로 처리. 이 때 function 단위로 kernel을 연결하게 되는데 이를 연결하는 주체가 tensorflow와 pytorch이다.
- Nvidia profiler: nsys-ui로 확인
- PyTorch profiler
'AI, Deep Learning Basics > Basic' 카테고리의 다른 글
[기초] Server/Docker/CPU,GPU,TPU,NPU/CUDA/RAM 개념 (1) | 2024.12.10 |
---|---|
Training Tips for the Transformer Model (0) | 2022.11.05 |
(작성중) [AI602] 3. Bayesian Deep Learning (0) | 2022.10.01 |
[AI602] 2. Self-supervised Learning (0) | 2022.10.01 |
[AI602] 1. Vision Transformer (0) | 2022.09.11 |