자연어 명세를 로컬에서 도는 작은 신경망 함수로 컴파일하는 논문
명세를 교사 모델로 예제화한 뒤 LoRA 어댑터로 굳혀, 0.6B 인터프리터가 대형 모델 호출 없이 실행하는 Compile by Training 논문을 정리했습니다.
왜 지금 이 주제인가
로그에서 중요한 줄만 골라내거나, 망가진 JSON을 고치거나, 검색 결과를 의도에 맞게 재정렬하는 일은 규칙으로 짜기 어렵습니다. 지금은 대개 대형 모델 API를 부르는 방식으로 해결하는데, 입력이 들어올 때마다 비용과 지연이 붙고 특정 공급자에 묶입니다. 9월 3일 arXiv에 올라온 논문 Compile by Training은 이 문제를 다르게 잡습니다. 자연어로 쓴 함수 명세를 한 번 컴파일해 로컬에서 실행되는 작은 신경망 함수로 바꾸고, 그 뒤로는 대형 모델을 부르지 않습니다.
명세를 어댑터로 굳히는 두 단계
이 논문은 같은 저자 그룹이 7월에 낸 Program-as-Weights(PAW)를 잇습니다. PAW는 함수 하나를 고정된 경량 인터프리터에 얹는 어댑터로 표현하자는 제안이었습니다. 4B 규모 컴파일러를 1000만 예제 규모의 FuzzyBench로 학습시켜 어댑터를 한 번의 순전파로 뽑아내는 방식이었고, 0.6B Qwen3 인터프리터가 그 어댑터로 Qwen3-32B를 직접 프롬프팅한 것과 비슷한 성능을 냈다고 보고했습니다. 추론 메모리는 약 50분의 1, MacBook M3에서 초당 30토큰이었습니다.
이번 논문은 순전파 한 번 대신 실제로 학습을 돌립니다. 절차는 두 단계입니다. 먼저 사용자가 쓴 명세를 교사 모델에 넘겨 그 함수에 맞는 학습 예제를 JSON 형태로 합성하고 검증합니다. 교사는 GPT-5.4-mini와 GPT-5.5를 2 대 1로 섞어 씁니다. 다음으로 그 예제로 LoRA 어댑터를 학습시키는데, 기존 fast compiler가 뽑은 어댑터를 초기값으로 놓고 경사하강으로 다듬습니다. 결과물은 어댑터, 런타임 스캐폴드, 명세, 인터프리터 메타데이터를 하나로 묶은 아티팩트입니다. 파일이므로 저장하고 버전을 매기고 서로 조합할 수 있습니다.
설정은 이렇습니다. 인터프리터는 양자화한 Qwen3-0.6B로 고정된 채 모든 함수가 공유하고, 어댑터는 rank 64, alpha 16의 LoRA입니다. 학습에는 2400개의 고유 쌍을 6400개로 확장해 배치 48, 100스텝 코사인 스케줄로 돌립니다.
평가는 FuzzyBench-Hard에서 이뤄졌습니다. 기존 fast compiler가 정확히 일치하는 출력을 하나도 내지 못한 명세만 모은 부분집합입니다. 지표는 LEM으로, LLM 심사자가 의미상 맞다고 판정한 비율입니다. 이 지표에서 새 방식은 평균 0.836, fast compiler는 0.224였습니다. 심사자로 쓴 GPT-5.5는 저자가 손으로 라벨링한 128건과 비교해 정확도 0.977, 카파 0.946을 기록했습니다.
대가는 컴파일 시간입니다. fast compiler가 3.5초인 데 비해 이 방식은 B300에서 50.9초, H200에서 68.2초, RTX에서 99.2초가 걸립니다. 예제 합성과 학습을 겹쳐 실행해 임계 경로를 줄였다고 밝혔습니다.
논문은 배포 사례도 함께 실었습니다. 웹사이트 네 곳을 담당하는 도우미가 컴파일된 프로그램 30개를 라우팅 파이프라인으로 씁니다. 자연어로 3D 캐릭터를 조종하는 Avatar Director는 손으로 만든 검증 지시문 44개 중 43개를 맞혔습니다. 영어와 Claudish를 오가는 번역기는 8월 22일 공개 후 9월 2일까지 요청 10만 747건을 처리했습니다.
의미와 한계
방향 자체가 흥미롭습니다. 대형 모델을 매 입력을 푸는 해결사가 아니라, 한 번 써서 재사용 가능한 부품을 찍어내는 도구로 놓습니다. 그렇게 나온 함수는 작고 로컬에서 돌기 때문에 호출당 단가가 붙지 않고 데이터가 밖으로 나가지도 않습니다.
다만 저자들이 스스로 밝힌 한계가 분명합니다. 합성한 감독 데이터는 교사 모델의 오류를 그대로 물려받습니다. 정확성이 보장돼야 하는 곳에서는 출력을 검증하거나 결정론적 경로를 남겨 두라고 논문이 직접 권합니다. 평가 범위도 좁습니다. 성적은 기존 방식이 특히 못하던 부분집합에서 나온 것이고, 지표 자체가 LLM 심사에 기대고 있습니다. 논문은 응용 사례의 근거가 조합과 구조적 실행에 치우쳐 있으며 체계적인 사용자 연구는 향후 과제라고 적었습니다.
컴파일에 1분 가까이 걸린다는 점도 실무에서는 무게가 다릅니다. 명세를 한 줄 고칠 때마다 그만큼 기다려야 한다는 뜻이라, 코드를 고치고 바로 돌려 보는 개발 흐름과는 감각이 다를 것으로 보입니다. 이 부분은 추측이며, 논문은 반복 개발 경험을 따로 측정하지 않았습니다.
한 줄 정리
대형 모델을 매번 부르는 대신 명세를 한 번 학습시켜 작은 로컬 함수로 굳히자는 제안이고, 정확도는 올랐지만 컴파일에 1분을 내주었습니다.