Paper2Code: Automating Code Generation from Scientific Papers in Machine Learning

https://arxiv.org/abs/2504.17192?utm_source=pytorchkr&ref=pytorchkr

 

Paper2Code: Automating Code Generation from Scientific Papers in Machine Learning

Despite the rapid growth of machine learning research, corresponding code implementations are often unavailable, making it slow and labor-intensive for researchers to reproduce results and build upon prior work. In the meantime, recent Large Language Model

arxiv.org

 

머신러닝 연구는 빠르게 성장하고 있지만, 그에 상응하는 코드 구현은 종종 공개되지 않아 연구자들이 결과를 재현하고 선행 연구를 발전시키는 과정이 느리고 많은 노력이 필요합니다.

 

한편, 최근 대규모 언어 모델(LLM)은 과학 문서를 이해하고 고품질 코드를 생성하는 데 뛰어난 성능을 보이고 있습니다.

 

이에 영감을 받아, 우리는 머신러닝 논문을 기능적인 코드 저장소로 변환하는 멀티 에이전트 LLM 프레임워크 PaperCoder를 소개합니다.

 

PaperCoder는 세 단계로 작동합니다. 계획 단계에서는 고수준 로드맵을 구성하고, 시스템 아키텍처를 다이어그램으로 설계하며, 파일 간 의존성을 파악하고, 설정 파일을 생성합니다.

 

분석 단계에서는 구현과 관련된 세부 사항을 해석하는 데 집중합니다.

 

마지막으로 생성 단계에서는 모듈화되고 의존성을 고려한 코드를 생산합니다. 또한 각 단계는 파이프라인 전반에서 효과적으로 협업할 수 있도록 설계된 전문화된 에이전트 집합을 통해 구체화됩니다.

 

우리는 PaperCoder를 머신러닝 논문으로부터 코드 구현을 생성하는 작업에 대해 평가했습니다.

 

이 평가는 모델 기반 평가와 사람(특히 해당 논문의 저자들)의 평가를 기반으로 하였으며, 가능할 경우 저자가 공개한 저장소를 기준으로 삼았습니다. 그 결과, PaperCoder가 고품질이면서 충실한 구현을 생성하는 데 효과적임을 확인했습니다.

 

더 나아가, 최근 공개된 PaperBench 벤치마크에서도 강력한 기존 방식들을 큰 폭으로 능가하는 성능을 보였습니다.

 

 

 

 

 

 

최근 인공지능 및 기계학습 분야의 연구는 놀라운 속도로 발전하고 있지만, 연구자들이 논문에서 제안한 방법을 실제로 재현하고 활용하려면 상당한 시간과 노력이 요구됩니다.

 

많은 논문이 이론이나 실험 결과는 잘 기술하고 있지만, 구현 코드가 함께 제공되지 않는 경우가 많습니다.

 

2024년 주요 학회(ICLR, ICML, NeurIPS) 수록 논문 중 단 19.5%만이 공식 코드 구현을 포함하고 있다는 통계는 이러한 문제의 심각성을 잘 보여줍니다.

 

이로 인해 연구자들은 논문을 기반으로 직접 코드를 구현해야 하는 상황에 자주 처하게 되고, 이는 연구 속도를 크게 저해하는 원인이 됩니다.

 

한편, 최근의 대규모 언어 모델(LLM)은 자연어와 프로그래밍 코드를 모두 이해하고 생성하는 데 뛰어난 능력을 보여주고 있으며 [10, 28, 35], 일부 상황에서는 그 성능이 점점 전문가 수준에 근접하거나 심지어 능가하기도 합니다.

 

이와 같은 발전은 특히 새로운 타당한 연구 가설을 구상하는 초기 단계에서 과학적 워크플로우를 가속화하기 위해 LLM을 활용하려는 관심을 불러일으켰습니다 [24, 47, 36, 2, 18, 48, 37].

 

또한 이러한 연구 중 일부와, 실험적 검증 및 개선 과정을 자동화하는 후속 단계에 초점을 맞춘 연구들 [14, 51, 4, 41]은 LLM이 코드를 생성하고 나아가 실험을 처음부터 끝까지 수행할 수 있는 잠재력을 보여줍니다.

 

그러나 이러한 시도들은 대체로 기존 구현, 부분적인 코드 조각, 혹은 잘 정의된 API에 접근할 수 있다는 가정을 전제로 하며 이에 크게 의존합니다.

 

따라서 기존 코드, API, 추가 보조 자료에 접근하지 않고 오직 연구 논문만을 기반으로 완전하고 충실한 구현을 생성할 수 있는지는 여전히 의문으로 남아 있습니다.

 

이 질문에 답하기 위해, 우리는 PaperCoder를 소개합니다. PaperCoder는 머신러닝 연구 논문을 기반으로, 해당 논문의 맥락을 반영한 충실한 코드 저장소를 자동으로 생성하도록 설계된 멀티 에이전트 LLM 기반 프레임워크입니다.

 

이는 부분적인 구현을 인간이 제공해야 했던 기존 연구와는 차별화됩니다.

 

구체적으로, PaperCoder는 저장소 단위의 코드를 작성할 때 인간 개발자와 연구자의 전형적인 작업 흐름을 모방하는 것을 목표로 하며, 이 과정을 계획(Planning), 분석(Analysis), 생성(Generation)의 세 가지 구조화된 단계로 분해합니다.

 

먼저 계획 단계에서는 구현해야 할 핵심 구성 요소를 식별하기 위해 고수준 로드맵을 작성하고, 모듈 간의 구조적 관계를 모델링하기 위해 클래스 및 시퀀스 다이어그램을 활용해 전체 시스템 아키텍처를 설계합니다.

 

또한 파일 간의 의존성과 실행 순서를 파악하여 올바른 빌드 및 실행 흐름을 보장하며, 연구자들이 실험 워크플로우를 유연하게 커스터마이징할 수 있도록 설정 파일을 생성합니다.

 

이후 분석 단계에서는 각 파일과 함수의 의도된 기능을 세밀하게 해석합니다. 여기에는 필요한 입력과 출력, 다른 모듈과의 상호작용, 원 논문으로부터 도출되는 알고리즘적 또는 아키텍처적 제약 사항 등이 포함됩니다.

 

마지막으로 생성 단계에서는 이전 단계에서 산출된 결과물과 앞서 결정된 실행 순서를 기반으로 전체 코드 베이스를 종합적으로 생성합니다.

 

PaperCoder의 효과성을 검증하기 위해, 우리는 ICLR, ICML, NeurIPS 등 2024년 최상위 학회에 채택된 최신 머신러닝 논문 일부를 대상으로 광범위한 평가를 수행했습니다.

 

이를 우리는 Paper2Code 벤치마크(약칭 Paper2CodeBench)라 명명했습니다. 또한 평가 체계에는 최신 PaperBench 벤치마크 [38]도 포함시켜, ICML 2024 논문의 일부를 대상으로 코드 구현에 대한 정밀한 평가를 가능하게 했습니다.

 

이후 저자가 공개한 실제 저장소(ground-truth repository)의 유무에 따라 참조 기반(reference-based)비참조(reference-free) 환경을 모두 아우르는 자동화된 모델 기반 평가뿐 아니라, 원 논문의 저자들을 포함한 전문가 평가를 통해 PaperCoder를 검증했습니다.

 

그 결과, PaperCoder는 기존 방식 대비 유의미하게 더 타당하고 충실한 코드 저장소를 생성하여 연구자들이 선행 연구를 이해하고 재현하는 데 실질적인 도움을 줄 수 있음을 입증했습니다.

 

구체적으로, PaperCoder가 생성한 저장소의 88%는 기존 방식 대비 최고 성능으로 평가되었으며, 92%의 인간 평가자들이 해당 저장소가 실제로 도움이 된다고 응답했습니다.

 

추가 분석에 따르면, PaperCoder의 각 구성 요소(계획, 분석, 생성)는 성능 향상에 기여했으며, 생성된 코드베이스는 실제 실행도 가능했습니다.

 

실행 오류가 발생한 경우에도 전체 코드 라인의 평균 0.81% 정도의 소규모 수정만으로 실행이 가능함을 확인했습니다.

 

 

 

 

 

1) 머신러닝 논문으로부터 저장소 단위 코드 생성

저장소 단위 코드 생성 작업의 목표는, 특히 저자가 코드를 공개하지 않은 경우에도 머신러닝 논문에 기술된 방법론과 실험을 충실히 구현하는 코드 저장소를 자동으로 생성하여 **재현 가능성(reproducibility)**을 지원하고 과학적 발전을 가속화하는 것입니다 [26, 30].

 

형식적으로, 우리는 이 작업을 연구 논문 R을 대응하는 코드 저장소 C로 매핑하는 함수(혹은 모델) M으로 정의합니다

 

$$M(R) = C$$

 

여기서 C는 여러 상호 의존적인 파일 로 구성되며, 각 파일은 논문 R에서 설명된 방법과 실험의 서로 다른 구성 요소를 구현합니다.

 

하지만 이 파일들은 함께 하나의 일관된 파이프라인을 형성해야 합니다.

 

가장 직관적인 M의 구현 방식은, LLM에 논문을 조건으로 전체 코드 저장소를 생성하도록 지시하는 것입니다

 

$$M(R) = LLM(T(R))$$

 

여기서 T는 대상 작업에 대한 LLM의 동작을 명시하는 프롬프트 템플릿으로, 작업 설명, 세부 지침, 기타 관련 맥락을 포함합니다.

 

그러나 논문의 고유한 복잡성과 해당 구현의 난이도, 현재 모델의 긴 컨텍스트 제한, 전역적 구조 및 파일 간 의존성을 일관되게 유지하는 어려움 때문에, 단 한 번의 과정으로 완전하고 모듈화된 충실한 저장소(여러 파일에 걸친)를 생성하는 것은 강력한 LLM에게도 극도로 어렵습니다.

 

따라서 우리는 전체 작업을 더 작고 관리 가능한 **하위 작업(subtask)**으로 분해하고, 각 작업을 논문-코드 변환의 특정 측면에 맞춰 설계된 전문화된 에이전트가 담당하는 멀티 단계·멀티 에이전트 프레임워크를 제안합니다.

 

PaperCoder는 기존의 산출물이나 구현물(예: 스켈레톤 코드)에 의존하지 않고, 머신러닝 논문으로부터 직접 코드 저장소를 생성하는 구조화된 멀티 에이전트 프레임워크입니다.

 

구체적으로, 일반적인 소프트웨어 개발 워크플로우에서 영감을 받아, PaperCoder는 전체 작업을 계획(Planning), 분석(Analysis), **코딩(Coding)**의 세 가지 단계로 분해하며, 각 단계는 전문화된 LLM 에이전트들에 의해 조율됩니다.

 

  1. 계획 에이전트(Planner): 논문 내용을 바탕으로 구현이 필요한 구성요소 및 순서를 계획합니다.
  2. 분석 에이전트(Analyzer): 논문 내 수식, 하이퍼파라미터, 모델 구조 등의 상세 정보를 추출합니다.
  3. 코드 생성 에이전트(Coder): 계획 및 분석 결과를 바탕으로 실제 코드 파일을 작성합니다.

 

소프트웨어 개발을 위해 명시적으로 설계된 구현 사양과 달리, 과학 논문은 인간에게 아이디어와 연구 결과를 전달하는 목적으로 작성됩니다.

 

그 결과, 논문에는 고수준의 동기, 설득력 있는 서술, 보조적인 세부사항들이 포함되는데, 이는 인간의 이해에는 중요하지만 소프트웨어 공학적 관점에서는 노이즈가 많거나, 구체성이 떨어지거나, 모호한 경우가 많습니다.

 

이러한 문제를 완화하기 위해, 우리는 비구조적 텍스트 내용을 **구현 수준의 추상화(implementation-level abstractions)**로 변환하는 구조화된 계획 단계를 도입합니다.

 

또한 계획 과정을 네 가지 연속적인 하위 구성 요소로 분해하여, 각 단계에서 LLM 기반 에이전트의 인지적·계산적 부담을 줄이고 작업을 단순화합니다

 

  • 전체 계획(Overall Plan): 논문에서 구현해야 할 주요 구성요소, 목적, 데이터 흐름을 요약합니다.
  • 아키텍처 설계(Architecture Design): 파일 구성, 클래스 다이어그램, 시퀀스 다이어그램을 생성해 모듈 간 구조를 정립합니다.
  • 로직 설계(Logic Design): 실제 구현 순서를 결정하고, 각 파일 간 의존성을 분석합니다.
  • 설정 파일 생성(Configuration): 실험 설정과 하이퍼파라미터 등을 포함한 config.yaml 파일을 생성합니다.

 

계획 단계에서 저장소의 전체 구조와 실행 흐름이 정의되었다면, **분석 단계(analysis phase)**는 각 파일 내 모듈에 대한 구현 수준의 세부 사항을 해석하고 명세화하는 데 초점을 둡니다.

 

즉, 계획 단계가 무엇을 구현할 것인지와 구성 요소들이 어떻게 연결되는지를 다루었다면, 분석 단계는 각 구성 요소가 파일 수준에서 어떻게 동작하고 구체적으로 구현되어야 하는지를 규정합니다.

 

여기에는 함수적 목표의 정의, 입력-출력 동작, 파일 내부 및 파일 간 의존성, 그리고 원 논문으로부터 도출된 알고리즘적 사양이 포함됩니다.

 

PaperCoder 프레임워크의 마지막 단계는 **코딩 단계(coding phase)**로, 이 단계에서 전체 코드 저장소가 생성됩니다.

 

구체적으로, 각 파일은 이전 단계들에서 축적된 모든 맥락 정보를 바탕으로 생성됩니다.

 

여기에는 **전체 계획(overall plan), 아키텍처 설계(architecture design), 로직 설계(logic design), 설정 파일(configuration file), 파일별 분석 결과(file-specific analyses)**뿐만 아니라 원 논문까지 포함됩니다.

 

또한, 서로 다른 파일들 간의 일관성을 보장하기 위해, 로직 설계 단계에서 결정된 실행 순서(ordered file list)에 따라 파일들을 순차적으로 생성합니다.

 

머신러닝 논문을 대응하는 저장소 단위 코드로 변환하는 PaperCoder 프레임워크의 효과성을 검증하기 위해, 우리는 새로운 벤치마크 데이터셋 Paper2CodeBench를 구축했습니다.

 

구체적으로, 우리는 OpenReview API를 사용하여 최근 머신러닝 학회(ICLR, ICML, NeurIPS 2024)에 채택된 논문들을 수집하고, 코드가 제공되며 전체 토큰 수가 70,000 미만인 논문만 필터링했습니다.

 

이는 전체 저장소가 현대 LLM의 코드 생성 및 평가에서 합리적인 처리 한계 내에 있도록 보장하기 위함입니다.

 

또한 벤치마크 품질을 유지하기 위해, 수집된 모든 저장소에 대해 GPT-4o를 사용한 **모델 기반 평가(model-based evaluation)**를 수행하고, 각 학회별 상위 30편을 선택하여 총 90편의 논문을 Tables 11, 12, 13에 정리했습니다. 추가로, 인간 평가를 위해 21편의 논문도 고려했습니다(See Table 15).

 

Paper2CodeBench 외에도, 최근 공개된 PaperBench Code-Dev [38]를 활용했는데, 이 데이터셋은 ICML 2024 논문 20편으로 구성되며, 사람에 의해 주석 처리된 논문별 평가 루브릭(rubrics)이 포함되어 있습니다.

 

특히 이 루브릭은 LLM 기반 평가를 통해 구현의 정확성을 판단하는 데 사용됩니다.

 

많은 논문들의 공식 코드 구현은 제공되지 않습니다. 그러나 자동으로 생성된 코드 저장소의 품질을 평가하기 위해 대응하는 코드를 수작업으로 주석 처리(manual annotation) 하는 것은 매우 노동 집약적이며 어렵습니다.

 

이를 해결하고 대규모 평가를 수행하기 위해, 우리는 두 가지 모델 기반 평가(model-based evaluation) 프로토콜을 설계했습니다:

  • 참조 기반(reference-based): 실제 코드(ground-truth)가 있을 때 사용
  • 비참조(reference-free): 실제 코드가 없을 때 사용

이는 특히 길이가 긴 모델 출력물의 품질을 LLM으로 판단하는 최근 추세 [52, 11, 22]를 따릅니다.

 

추가로, 우리는 **원 논문의 저자와 함께하는 인간 평가(human evaluation)**도 수행하여, 평가의 신뢰성을 확보하고 모델 기반 평가 점수와 인간 평가 점수 간의 상관관계를 통해 모델 기반 평가의 품질을 검증합니다.

 

1) 참조 기반 평가(Reference-Based Evaluation)

이 평가 설정에서는, 공식 저자 공개 저장소가 존재하면 이를 **골드 표준(gold standard)**으로 사용합니다.

 

이는 논문에서 제시한 주요 결과를 재현하는 데 필수적인 구성 요소를 포함하여, 저자가 의도한 구현을 가장 정확히 반영하기 때문입니다.

 

구체적으로, 우리는 평가 모델(e.g., o3-mini-high3)을 프롬프트하여, 생성된 저장소가 골드 저장소와 비교해 얼마나 충실하게 구현되었는지 평가하도록 합니다.

 

입력 논문은 평가의 맥락(context)으로 함께 제공합니다(자세한 프롬프트는 Appendix E 참조).

 

평가 과정에서 모델은:

  1. 구현해야 할 **핵심 구성 요소(key components)**를 식별
  2. 각 구성 요소를 **높음(high), 중간(medium), 낮음(low)**의 세 가지 중요도 수준으로 분류
  3. 각 구성 요소가 얼마나 잘 구현되었는지 비평(critique)

그 후, 모델은 **5점 리커트 척도(Likert scale)**로 전체 점수를 반환합니다.

 

모델 기반 평가의 신뢰성을 확보하기 위해, 출력물을 여러 번 샘플링(예: 평가당 8회 생성)하고 평균 점수를 보고합니다.

 

2) 비참조 평가(Reference-Free Evaluation)

공식 저자 공개 코드가 없는 경우에는, 논문만을 활용하여 생성된 코드 저장소의 품질을 평가하는 비참조(reference-free) 평가 프로토콜을 도입합니다.

 

즉, 참조 기반 평가와 유사하게, 평가 모델은 핵심 구성 요소(key components)를 식별, 중요도(severity)별로 분류, **생성된 코드 구현을 비평(critique)**하도록 프롬프트되지만, 이번에는 실제 코드 저장소에 접근하지 않고 논문에 제공된 정보만을 기반으로 수행됩니다.

 

나머지 평가 과정(샘플링 및 점수 평균 등)은 참조 기반 평가와 동일한 설정을 따릅니다.

 

 

 

 

3) 인간 평가(Human Evaluation)

모델 기반 평가가 대규모 자동 평가를 가능하게 하지만, PaperCoder의 신뢰성을 검증하기 위해 전문가 기반 인간 평가도 수행했습니다.

 

구체적으로, 정확하고 신뢰할 수 있는 판단을 위해, 각 참가자에게 자신이 제1저자인 논문이 할당됩니다.

 

참가자는 서로 다른 접근 방식으로 생성된 여러 구현물을 제공받고, 이를 순위를 매기도록(ranking) 요청받습니다. 자세한 내용은 Appendix A.2를 참조하십시오.

 

 

 

 

PaperCoder는 ICLR, ICML, NeurIPS의 최근 논문 90편을 기반으로 한 Paper2CodeBench에서 실험을 수행하였으며, 그 결과는 다음과 같습니다:

  • Reference-Based 평가: PaperCoder가 생성한 저장소는 평균 3.8점 수준으로, ChatDev(2.9점), MetaGPT(2.7점) 등을 크게 상회.
  • Reference-Free 평가: 평균 4.7점 이상으로, 실제 코드가 없는 논문에서도 높은 신뢰도를 확보.
  • Human Evaluation: 논문 저자 평가 결과, 88%의 경우 PaperCoder가 가장 우수한 구현을 생성했다고 평가.
  • 수정률: 실행 불가능한 코드의 경우, 평균 0.81% 코드라인만 수정하면 실행이 가능할 정도로 높은 완성도.

 

이번 연구에서는 PaperCoder를 소개했습니다. PaperCoder는 구조화된 세 단계 파이프라인을 통해 머신러닝 논문으로부터 코드 저장소를 자동으로 생성하는 프레임워크입니다.

 

구체적으로, 계획(Planning) 단계에서 고수준 로드맵, 시스템 아키텍처, 실행 로직, 설정(configuration)을 정의하고, 이후 각 파일별 상세 분석(per-file analysis)을 통해 이를 보완하며, 마지막으로 이전 단계에서 생성된 산출물을 기반으로 **순차적 코드 생성(sequential code generation)**을 수행합니다.

 

PaperCoder의 유효성을 검증하기 위해, 두 가지 벤치마크에서 평가를 수행했습니다.

  1. Paper2CodeBench: 최근 상위권 머신러닝 학회 논문을 포함
  2. PaperBench Code-Dev: 세밀한 평가 프로토콜 제공

평가 결과, PaperCoder는 모델 기반 평가와 인간 평가 모두에서 기존 기준(baseline)을 지속적으로 능가했습니다.

 

추가 분석을 통해, PaperCoder의 **강인성(robustness)과 실용성(practicality)**도 입증되었습니다.

  • 다양한 LLM 백본(backbone)에서도 효과적
  • 실행 가능성이 높으며, 코드 라인의 평균 0.81%만 소규모 수정 필요
  • 파이프라인의 각 단계(stage)로부터 성능 향상 효과를 확인

우리는 PaperCoder가 연구 논문의 재현을 지원함으로써 과학적 진보를 가속화하는 중요한 단계가 될 것으로 기대합니다.

 

 

going-doer/Paper2Code: Paper2Code: Automating Code Generation from Scientific Papers in Machine Learning

 

GitHub - going-doer/Paper2Code: Paper2Code: Automating Code Generation from Scientific Papers in Machine Learning

Paper2Code: Automating Code Generation from Scientific Papers in Machine Learning - going-doer/Paper2Code

github.com

 

 

 

 

 

728x90