프로그램 최적화는 동작을 보존하면서 성능을 개선하는 것을 목표로 합니다. 코딩 에이전트는 이미 알고리즘, 데이터 구조 및 실행 전략을 변경하여 프로그램을 더 빠르게 만들 수 있습니다. 그러나 기존의 동등성 검사(equivalence checks)는 대부분 테스트에 의존하며, 에이전트가 이를 악용하여 의도된 동작을 보존하지 않은 채 테스트를 통과하는 것으로 나타났습니다.
우리는 에이전트 기반 검증 최적화(agentic verified optimization)를 제안합니다. 이 방식에서는 에이전트가 기존 구현체와 동등하다는 기계 검증된 증명(machine-checked proof of equivalence)을 함께 더 빠른 구현체를 생성합니다. 기존 구현체가 명세(specification) 역할을 하므로, 이 작업은 검증 코드 생성의 명세 작성 병목 현상을 피할 수 있으며, 최근의 정리 증명(theorem proving) 발전 덕분에 이러한 증명이 가능해졌습니다.
우리는 프로그램을 실행하고 추론할 수 있는 Lean 4에서 함수 및 저장소 수준으로 이 작업을 공식화했습니다. 실제 애플리케이션 중 Lean으로 작성된 것은 거의 없기 때문에, 우리는 C, C++, Go, Rust 프로그램을 네이티브 Lean으로 마이그레이션하고 각 포트를 원본과 비교하는 차분 테스트(differential testing)를 통해 검증하는 에이전트 기반 프레임워크인 Aqueduct를 개발했습니다.
Verina의 189개 참조 구현체에서, 에이전트는 지수 재귀(exponential recursion)를 동적 계획법(dynamic programming)으로 대체하는 것과 같은 알고리즘 변경을 포함하여 156개의 더 빠른 증명된 리라이트(proved rewrites)를 생성했습니다. 마이그레이션된 17개 애플리케이션의 경우, 이들의 92개 증명된 리라이트는 51개 시나리오 중 47개에서 속도를 높였습니다. 이러한 애플리케이션 수준의 이득은 함수 수준의 이득보다 작기 때문에, 최적화할 함수를 선택하는 것이 중요한 문제입니다.
따라서 현재 에이전트는 독립적인 함수와 실제 프로그램에서 마이그레이션된 애플리케이션 모두에 대해 검증 최적화를 수행할 수 있습니다. 우리는 남아 있는 과제들과 프로덕션 환경에서의 검증 최적화 방향을 논의합니다.