생성적 컴파일 (Generative Compilation): AI가 코드를 생성하는 동안 실시간으로 이루어지는 컴파일러 피드백에 대하여
요약
AI가 코드를 생성하는 도중 실시간으로 컴파일러 피드백을 제공하는 '생성적 컴파일(Generative Compilation)' 기술을 소개합니다. Sealor라는 변환 도구를 통해 부분 프로그램을 완전한 형태로 변환하여, 생성 과정에서 오류를 조기에 탐지하고 코드의 정확성을 높입니다.
핵심 포인트
- 생성 과정 중 실시간 컴파일러 피드백을 통한 오류 조기 탐지
- Sealor를 활용해 부분 프로그램을 표준 컴파일러가 인식 가능한 형태로 변환
- Rust 언어 환경에서 블랙박스 및 오픈 웨이트 모델 성능 검증
- 컴파일러를 생성 후 검증 도구가 아닌 생성 중 가이드로 활용
Rust와 같이 풍부한 정적 의미론 (static semantics)을 가진 언어들은 AI가 생성한 코드에 대해 더 강력한 보장을 제공하지만, 이러한 엄격함은 코드 생성을 더 어렵게 만듭니다. 기성 컴파일러 (Off-the-shelf compilers)는 생성 후 유용한 피드백을 제공할 수 있지만, 자기회귀적 (autoregressive) LLM 디코딩 과정과 같은 중간 생성 단계에서는 가이드를 제공하지 못합니다. 제약 조건이 있는 디코딩 (Constrained decoding)은 샘플링 중에 유효하지 않은 토큰을 거부함으로써 더 일찍 개입하지만, 화이트박스 (white-box) 모델 접근 권한이 필요하며 의미론적 제약 조건을 위해 비용이 많이 드는 재구현이 필요합니다.
우리는 생성 과정 중에 부분 프로그램 (partial programs)에 대한 컴파일러 피드백을 얻는 첫 번째 접근 방식인 생성적 컴파일 (generative compilation)을 소개합니다. 핵심 기술 장치는 실러 (sealor)입니다. 이는 표준 컴파일러가 진단할 수 있도록 부분 프로그램을 완전한 프로그램으로 변환하는, 주로 구문 유도 방식 (syntax-guided)의 가벼운 변환 도구입니다. 이는 완성이 가능한 부분 프로그램은 절대 거부하지 않으면서도, 실제 막다른 길 (dead ends)을 조기에 포착할 수 있을 만큼 충분한 코드 문맥 (code context)을 보존하도록 설계되었습니다. 우리는 핵심 Rust 유사 계산법 (core Rust-like calculus) 위에서 이러한 실러 (sealor)를 구축하고, 이것이 이러한 속성들을 만족함을 증명하였으며, 이 모든 과정은 Lean에서 기계화되었습니다. 우리는 이를 실제 Rust를 위한 최초의 부분 프로그램 검사기 (partial-program checker)로 확장했습니다.
우리는 최첨단 블랙박스 (black-box) 모델과 오픈 웨이트 (open-weight) 모델 모두에 대해 도전적인 저장소 수준 (repository-level)의 Rust 코딩 작업에서 우리의 방법을 평가합니다. 우리는 생성적 컴파일이 표준적인 생성 후 피드백 (post-generation feedback)과 비교하여 컴파일되지 않는 출력을 줄이고 기능적 정확성 (functional correctness)을 향상시킨다는 것을 보여줍니다. 이는 오류가 발생한 근원과 가까운 시점, 즉 생성 초기 단계에서 광범위한 오류를 탐지함으로써 오류 연쇄 (errors cascades)를 줄이고 집중적인 진단을 가능하게 함으로써 수행됩니다. 더 넓게 보면, 생성적 컴파일은 컴파일러를 생성 후의 별도 확인 단계가 아니라, 생성 중에 활성화되는 AI 지원 프로그래밍의 일등 시민 (first-class citizen)으로 만드는 단계입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기