How Deep Learning Computes
행렬 연산에서 모델 성능까지, 딥러닝 계산을 개념 단위 카드와 학습 경로로 따라갑니다. 카드는 여러 경로에서 재사용됩니다.
학습 경로
- CUDA Attention과 FlashAttention — naive attention에서 시작해 online softmax, tiling, IO 분석을 거쳐 FlashAttention forward의 핵심 아이디어를 이해한다.
- CUDA 좌표계와 첫 커널 — CPU loop에서 출발해 vectorAdd, grid/block/thread, host/device memory, 2D/3D indexing, warp와 block shape까지 익힌다.
- CUDA Kernel Optimization Basics — CUDA event timing, memory coalescing, shared memory, tiled matmul, reduction, warp primitive, occupancy를 통해 naive kernel을 최적화하는 기본기를 익힌다.
- Transformer를 위한 CUDA Naive Kernels — CPU reference와 비교하며 transpose, GEMM, GEMV, softmax, RMSNorm forward/backward를 naive CUDA kernel로 구현하고 PyTorch JIT extension으로 연결한다.
- Distributed Matmul: Sharded Matrices and Collective Operations — 행렬을 여러 accelerator에 나눠 계산할 때 mesh, sharding, collective communication이 어떻게 연결되는지 이해한다.
- Forward Pass에서 학습 메모리까지 — 모델을 행렬 연산의 반복으로 보고, forward/backward/update 동안 activation, gradient, optimizer state가 어떻게 생기는지 따라간다.
- 행렬 연산에서 Roofline 분석까지 — 행렬 곱셈의 연산량과 메모리 이동량에서 출발해 산술 강도와 Roofline 분석으로 이어지는 첫 번째 경로.