행렬 연산에서 Roofline 분석까지

이 경로는 AI 시스템 성능 분석의 가장 작은 출발점인 행렬 곱셈에서 시작합니다.

먼저 행렬 곱셈의 연산량과 메모리 이동량을 차원으로 계산합니다. 그다음 GPU/TPU의 연산 유닛과 HBM을 구분하고, FLOPs와 bytes를 시간 모델로 바꿉니다.

블록 행렬 연산이 왜 메모리 읽기량을 줄이는지 확인한 뒤, T_computeT_memory의 비교에서 산술 강도를 도출합니다. 마지막으로 이 관계를 Roofline 분석으로 시각화해 compute-bound와 memory-bound를 구분합니다.

  1. 행렬 곱셈 — 행과 열의 내적으로 새 행렬을 만들고, 연산량과 메모리 이동량을 차원으로 계산한다.
  2. GPU/TPU의 두 병목 — 딥러닝 연산은 연산 유닛의 처리량과 HBM의 메모리 대역폭 사이에서 병목이 결정된다.
  3. FLOPs와 Bytes 계산하기 — 성능 분석을 위해 연산량은 FLOPs로, 데이터 이동량은 bytes로 세는 법을 정리한다.
  4. 블록 행렬 연산 — 큰 행렬곱을 작은 타일로 나누어 같은 입력 원소를 여러 출력 원소 계산에 재사용한다.
  5. T_compute와 T_memory — 계산 시간과 메모리 이동 시간을 나누어 연산의 실행 시간 하한을 모델링한다.
  6. Arithmetic Intensity — FLOPs per byte — 계산 시간과 메모리 시간을 비교하는 하나의 비율.
  7. Roofline 분석 — 산술 강도와 하드웨어 한계로 달성 가능한 FLOP/s의 상한을 그리는 모델.