생성형 컴파일(Generative Compilation): 코드 생성 중 실시간 컴파일러 피드백
요약
본 글은 코드 생성 과정 자체에 컴파일러 피드백을 통합한 '생성형 컴파일(generative compilation)'이라는 새로운 접근 방식을 제안합니다. 핵심 기술인 sealor는 부분 프로그램을 표준 컴파일러가 진단할 수 있는 완전한 프로그램으로 변환하며, 이를 통해 LLM 디코딩 중에도 실시간으로 코드의 유효성을 검사할 수 있습니다.
핵심 포인트
- 생성형 컴파일은 생성 과정 중 실시간 컴파일 피드백을 제공합니다.
- sealor는 부분 프로그램을 진단 가능한 완전한 프로그램으로 변환하는 핵심 기술입니다.
- 이 방법은 오류를 근원지 가까이에서, 그리고 생성 초기에 감지하여 정확도를 높입니다.
- AI 지원 프로그래밍의 새로운 패러다임을 제시합니다.
Rust와 같이 풍부한 정적 의미론을 가진 언어는 AI가 생성한 코드에 더 강력한 보장을 제공하지만, 그 엄격함 때문에 생성이 더 어렵습니다. 기존의 컴파일러는 생성 후 유용한 피드백을 제공할 수 있지만, 자기회귀(autoregressive) LLM 디코딩 중 발생하는 것과 같은 중간 생성 단계를 안내하지는 못합니다. 제약적 디코딩(Constrained decoding)은 샘플링 중에 유효하지 않은 토큰을 거부함으로써 더 일찍 개입하지만, 화이트박스 모델 접근 방식과 의미론적 제약을 위한 비용이 많이 드는 재구현을 필요로 합니다.
우리는 생성형 컴파일(generative compilation)을 소개합니다. 이는 생성 과정 중 부분 프로그램에 대해 컴파일러 피드백을 얻는 최초의 접근 방식입니다. 핵심 기술 장치는 sealor라는 것입니다. 이는 부분 프로그램을 표준 컴파일러가 진단할 수 있는 완전한 프로그램으로 변환하는 가볍고 주로 구문(syntax)-유도적인 변환입니다. 이 sealor는 가능한-완성(possible-to-complete) 부분 프로그램은 절대 거부하지 않으면서, 실제 막다른 길을 조기에 포착하기에 충분한 코드 컨텍스트를 보존하도록 설계되었습니다. 우리는 핵심 Rust 유사 계산(Rust-like calculus) 위에서 그러한 sealor를 구성하고, 이를 Lean으로 기계화하여 이 속성들을 만족함을 증명합니다. 우리는 이를 실제 Rust의 최초 부분 프로그램 검사기(partial-program checker)로 확장합니다.
우리는 최첨단 블랙박스 모델과 오픈 가중치 모델 모두에서 까다로운 저장소 수준의 Rust 코딩 작업에 대해 우리의 방법을 평가합니다. 표준 생성 후 피드백과 비교하여, 생성형 컴파일은 컴파일되지 않는 출력을 줄이고 기능적 정확성(functional correctness)을 향상시킨다는 것을 보여줍니다. 이는 광범위한 오류를 근원지 가까이에서 그리고 생성 과정 초기에 감지함으로써, 오류 캐스케이드(error cascades)를 줄이고 집중적인 진단을 가능하게 하기 때문입니다. 더 넓은 관점에서 볼 때, 생성형 컴파일은 컴파일러가 별도의 생성 후 검사가 아니라, 생성 중에 활동하는 AI 지원 프로그래밍의 일급 시민(first-class citizen)이 되기 위한 단계입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기