본문 바로가기

AI Compiler framework

기술 분석 보고서 : AI 컴파일러와 메모리 트래픽의 간극

1. 역사적 배경 : CPU 의  Memory Wall 재림

폰 노이만 구조의 병목 현상 Von Neumann Bottleneck 이 현재 GPU 와 AI 프레임 워크 사이에서 더 거대한 규모로 재현되고 있음

  • 과거의 CPU : 연산 속도는 무어의 법칙에 따라 기하급수적으로 늘어났으나, DRAM 의 속도는 물리적 한계로 완만하게 성장, 이를 극복하기 위해 캐시 계층과 파이프라이닝이 도입되었음
  • 현재의 GPU : 수천 개의 코어가 동시에 연산하는 GPU 시대가 되면서, 연산 능력 대비 메모리에서 데이터를 퍼 올리는 속도 Bandwidth 의 격차는 과거 CPU 시절보다 훨씬 심각해졌다.

 

2. 문제의 핵심 : 소프트웨어와 하드웨어의 미스매치

구분 과거의 AI 프레임워크 (Legacy) 현대의 GPU 하드웨어 (Modern)
설계 철학 연산 하나하나의 효율성 (Operator-wise) 대규모 병렬 처리 및 대역폭 활용
데이터 처리 매 연산 후 메모리(VRAM) 쓰기/읽기 칩 내부(SRAM)에서의 데이터 재사용 필요
최적화 대상 산술 연산 횟수 감소 (Flops) 메모리 접근 횟수 감소 (I/O)

 

3. 주요 현상 : 연산보다 비싼 데이터 이동

현재의 AI  모델 실행 시 발생하는 Memory Traffic 현상은 다음과 같은 비효율을 초래한다.

  • Memory-Bound State : GPU 코어는 연산을 빠르게 끝낼 수 있지만, 데이터를 가져오는데 더 9배 가까이 시간이 더 걸린다.
  • Intermediate Storage Overhead : 딥러닝 프레임워크가 그래프의 유연성을 위해 중간 결과값을 매번 VRAM 에 저장하면서 불필요한 트래픽이 발생 ( Register Spill 현상이 거대한 VRAM 단위로 일어나는 것과 유사 )

 

4. AICF (AI Compiler) 의 해결 방향 : IR 설계의 전환

과거 컴파일러가 어떤 명령어를 실행할 것이간에 집중했다면, 현대의 AI 컴파일러는 데이터를 어떻게 메모리에 머물게 할 것인가를 IR 단계에서 결정해야 한다.

  • Kernel Fusion ( 커널 퓨전 ) : 연산들을 하나로 묶어 중간 데이터를 VRAM 으로 내보내지 ㅇ낳고 레지스터나 Shared Memory 수준에서 소모하게 만든다.
  • Tiling & Blocking : 데이터를 작은 조각으로 나누어 캐시 적중률을 극대화한다.
  • Memory Planning : IR 수준에서 텐서의 생존주기를 분석하여 메모리를 정적으로 할당하고 재사용한다.