16개의 LLM 에이전트, C 컴파일러를 만들다! 2주, 2만 달러의 실험
앤트로픽(Anthropic) 연구팀은 16개의 Claude 인스턴스(Claude Instances)를 활용하여 Rust 기반의 C 컴파일러를 개발함
2,000번의 세션과 2만 달러의 비용으로 리눅스 커널(Linux Kernel) 6.9 버전을 컴파일하는 10만 라인 규모의 컴파일러를 제작
자율 에이전트 팀(Autonomous Agent Teams)의 한계와 가능성을 시험하기 위한 실험으로, 테스트, 병렬 처리, 역할 분담에 초점
커뮤니티에서는 비용 대비 효율성(Cost-Effectiveness)에 대한 의문과 함께 LLM 기술 발전의 긍정적 평가가 공존함
자율 에이전트 팀(Autonomous Agent Teams)의 아키텍처
연구진은 여러 Claude 인스턴스(Claude Instances)를 병렬적으로 실행하여 C 컴파일러를 개발하는 실험을 진행했다. 각 에이전트는 독립적인 Docker 컨테이너에서 실행되며, Git을 사용하여 코드 동기화를 수행했다. 특히, 데이터 격리 아키텍처(Data Isolation Architecture)를 통해 각 에이전트가 독립적으로 작업을 수행하도록 설계했다. 에이전트 간의 통신은 제한적이며, 각 에이전트는 자체적으로 다음 작업을 결정한다. 이 방식은 장기적인 프로젝트에서 자율적인 진척(Autonomous Progress)을 가능하게 한다.
테스트 주도 개발(TDD) 환경 구축
성공적인 컴파일러 개발을 위해, 연구진은 고품질의 테스트 환경을 구축하는 데 많은 노력을 기울였다. 테스트 자동화(Test Automation)를 위해, 다양한 컴파일러 테스트 스위트(Test Suites)를 활용하고, 오류 발생 시 새로운 테스트를 추가하는 방식으로 진행했다. 특히, 지속적인 통합 파이프라인(Continuous Integration Pipeline)을 구축하여, 새로운 기능 추가 시 기존 기능의 회귀(Regression)를 방지했다. 이는 LLM 에이전트가 스스로 문제를 해결하도록 돕는 핵심 요소로 작용했다.
병렬 처리(Parallelism)와 역할 분담
병렬 처리를 통해 여러 에이전트가 동시에 작업을 수행하도록 설계했다. 초기에는 각 에이전트가 독립적인 테스트를 해결하도록 했으며, 99%의 테스트 통과 이후에는 리눅스 커널(Linux Kernel) 컴파일에 도전했다. 컴파일 과정에서 발생하는 문제를 해결하기 위해, GCC를 활용한 오라클(Oracle)을 구축하여, 각 에이전트가 서로 다른 파일의 버그를 수정하도록 유도했다. 또한, 코드 중복 제거, 성능 개선, 문서화 등 다양한 역할을 분담하여 효율성을 높였다.
LLM 기반 컴파일러의 한계와 미래
연구 결과, LLM 기반 컴파일러는 10만 라인 규모의 코드를 생성하고, 리눅스 커널 6.9 버전을 컴파일하는 데 성공했다. 하지만, 16비트 x86 코드 생성, 어셈블러 및 링커 부재 등 몇 가지 한계점을 보였다. AI 환각(Hallucination)으로 인해 기존 기능이 손상되는 경우도 발생했다. 연구진은 이러한 한계를 극복하기 위해 지속적인 개선을 시도하고 있으며, LLM 기술의 발전에 따라 자율적인 소프트웨어 개발의 가능성을 제시했다.