본문 바로가기

AI Compiler framework

AICFv2: 연산자 일반화 및 시스템 통합 아키텍처 보고서

1. 연산자 추상화 설계 ( Operator Abstraction )

Layer ( 선언 ) - Emitter ( 기록 ) - IR Node ( 구조화 ) - Backend ( 실행 ) 의 4 단계로 분리하여 일반화

1.1 일반화된 인터페이스 : emit 및 emit_bwd

모든 연산자는 emitters / cuda / 패키지 내에 독립된 모듈로 존재, 다음 두 함수를 표준으로 구현

  • emit 
    • Forward IR 생성 : 연산의 종류, 속성 스키마, 데이터 패킷을 Builder 에 기록
    • 기록 중심 : 실제 연산을 수행하는 것이 아니라 연산의 의도를 IR Node 로 남기는 과정
  • emit_bwd
    • Autograd 메커니즘 : 순전파 노드를 참조하여 역전파 연산을 자동으로 구성
    • Gradient Flow : 입력 Vid 들에 대해 계산된 미분값을 반환, 시스템은 이를 통해 연쇄 법칙을 수행

 

2. IR 누적 및 최적화 파이프라인 ( IR Accumulation & Optimization )

사용자가 모델을 정의하고 실행하는 것은 연산의 지연 실행 모델을 따른다

  • IR Accumulation : modul.build 호출 시, Builder 는 모든 연산 노드를 리스트 형태로 선형 누적한다.
  • Identity Optimization : 현재는 기록된 순서대로 실행하는 Identity 상태, 전체 그래프가 확보되어 있음
  • Static Role Binding : compile 단계에서 입력, 출력, 파라미터, 상태 변수들의 역할을 확정하고 메모리 주소를 고정한다.

 

3. CUDA Graph 기반 고성능 실행

오버헤드가 낮아진 Static Graph 로 변환

  • Capture Mode : 첫 번째 실행 시 CPU 명령어를 GPU 스트림에 녹화 모든 텐서는 고정된 메모리 주소를 가져야 한다.
  • Replay Mode : GPU 가 스스로 기록된 연산 시퀀스 실행

 

4. 결론 : AICFv2 의 확장성

새로운 연산자 추가 시 백엔트 커널 구현, Emitter 규격에 맞춰 등록하면 됌

  • 98 % 이상의 정확도로 MNIST 학습 성공
  • 연산자 추가 시 발생하는 통신 규격 및 데이터 흐름 문제 해결 가이드 정립
  • CPU 오버헤들르 최소화한 CUDA Graph 실행 환경 구축