본문 바로가기

AI Compiler framework

AI Compiler framework 설계 철학 재정리

의미적 동일성 (Semantic Equivalence) 과 실행 안정성

1. 문제의 출발점

기존 AI 프레임워크에서 dynamic graph 는 주로 모델 코드의 조건 분기로 설명되어 왔음, 그러나 실제 학습 및 실행 시스템을 관찰하면, 모델 구조가 고정되어 있음에도 실행 그래프는 지속적으로 변한다.

  • Optimizer 내부 상태 변화
  • AMP / autocast 에 따른 dtype 경로 분기
  • Memory allocator 상태에 따른 layout 변화
  • Kernel dispatch 및 fusion 선택 차이
  • Shape edge case

이러한변화는 대부분 의미적으로 동일한 연산 / 학습 과정으로 간주, 결과 값이나 수렴 특성에도 큰 차이를 보이지 않음, 그럼에도 실행 그래프 관점에서는 서로 다른 실행 경로를 가진다.

 

2. 기존 프레임워크가 이 문제를 다루지 않아도 되었던 이유

기존 프레임워크는 다음과 같은 설계 전제를 가졌음

  • 프로그램은 곧 실행
  • 프레임워크의 책임은 forward 호출을 올바르게 실행하는 것
  • 의미적 동일성은 사용자와 알고리즘 수준의 암묵적 계약

이러한 구조에서는, 의미적으로 동일한 실행 변이는 사전에 정의된 허용 범위로 묶여 문제로 인식되지 않음, AMP, kernel 선택, 수치적 근사 등은 모두 의미가 아닌 구현 세부사항으로 취급, 실행 그래프의 차이는 시스템 외부의 가정으로 처리되었음

즉, 기존 프레임워크는 의미적 동일성을 강하게 제한함으로써, execution-level dynamic 을 문제 영역 밖으로 밀어냄

 

3. 이 방식의 한계

  • Graph capture / compile 시스템에서의 Guard 폭증
  • 실행 상태 변화에 따른 재컴파일 및 재캡처
  • 최적화 비용 증가
  • 분산 학습 환경에서의 비결정론적 실행 디버깅 난이도 상승 

의미를 알 수 없는 런타임은 안전을 위해 항상 보수적인 선택을 하게 됨, 이는 성능과 안정성에서의 한계

 

4. AICF 의 핵심 관점 전환

다음의 dynamic 관점 전환

  • 문제는 dynamic 자체가 아님
  • 의미적 동일성이 시스템에 표현되지 않는 것

이에 따라 AICF 는 프레임워크를 세 개의 독립적인 축으로 분리

4.1 Execution System

  • 동일한 입력과 동일한 실행 상태에서 동일한 execution graph 가 캡처 및 replay 가능하도록 보장
  • bit-wise 동일성이 아닌 의미 - 실행 매칭의 안정성을 결정성의 핵심으로 정의

 

4.2 Kernel System

  • 연산의 실제 구현 계층
  • kernel 선택, layout, fusion 차이는 의미가 아닌 구현 문제로 취급
  • 의미 시스템과 독립적으로 확장 가능

 

4.3 IR / Meaning System

  • 의미를 해석, 최적화가 아닌 의미적으로 동일한 실행을 분류하고 기록하는 계층