EN KO
← 전체 논문 목록

Revisiting the Impact of Pursuing Modularity for Code Generation

EMNLP 2024 Findings
Deokyeong Kang, Ki Jung Seo, Taeuk Kim

한줄 요약

순환 복잡도에 기반한 새로운 모듈성 점수(MoS) 지표를 도입하고, 변환 부수 효과를 엄밀하게 통제한 실험을 5개 LLM(Code Llama 7B/34B, DeepSeekCoder 6.7B/33B, GPT-4o-mini)과 2개 경쟁 프로그래밍 벤치마크(APPS, CodeContests)에서 수행한 결과, 모듈형 코드가 LLM 기반 코드 생성 성능의 핵심 요인이 아니며, 기존 연구에서 보고된 이점은 모듈화 자체가 아닌 코드 변환 과정의 부수 효과일 가능성이 높음을 밝힌 연구입니다.

논문 개요
Figure 1. 모듈형 vs 비모듈형 코드 생성 접근법 비교. 모듈화 추구가 실제로 LLM 기반 코드 생성 성능을 향상시키는지 검토합니다.

배경 및 동기

모듈형 프로그래밍 -- 최종 프로그램을 작고 독립적인 구성 요소를 통합하여 구성하는 방식 -- 은 소프트웨어 개발에서 오랫동안 바람직한 관행으로 여겨져 왔습니다. 복잡성을 줄이고, 유지보수성을 높이며, 코드 재사용을 가능하게 합니다. 최근 LLM 기반 코드 생성 에이전트의 부상과 함께, 인간의 인지와 협업을 위해 설계된 이 전통적 원칙이 근본적으로 다른 이러한 새로운 도구에도 동일하게 효과적인지에 대한 의문이 제기됩니다.

기존 통념: 모듈형 코드가 인간 프로그래머에게 도움이 되는 것처럼 LLM에도 도움이 될 것이라는 가정이 있었습니다. 복잡성 감소, 재사용성 향상, 추론 용이성 등의 이점이 기대되었으며, 다수의 선행 연구(예: CodeT, Parsel, 모듈형 프롬프팅 전략)가 LLM에 모듈형 코드 생성을 유도했을 때의 성능 향상을 보고했습니다. 이들 연구는 인간에게 유효한 모듈성의 이점이 언어 모델에도 자연스럽게 전이될 것이라고 전제했습니다.

문제점: 기존 연구들은 모듈성을 정량적으로 측정할 원칙적인 방법이 부재했습니다. 적절한 지표 없이는, 관찰된 성능 향상이 실제로 모듈성 자체에서 비롯된 것인지 확인할 수 없습니다. 선행 연구들은 보통 "모듈형 프롬프팅" vs. "표준 프롬프팅"을 비교했지만, 모듈형 변환 과정에서 코드 간소화, 재포맷팅, 변수명 변경, 심지어 미묘한 알고리즘 변경 등 성능에 독립적으로 영향을 미칠 수 있는 교란 요인이 도입됩니다.

핵심 질문: 정형적 모듈성 지표와 신중하게 설계된 코드 범주를 통해 교란 요인을 엄밀하게 통제했을 때, 모듈성이 실제로 LLM 기반 코드 생성을 향상시키는가? 아니면 성능 향상을 잘못된 원인에 귀속시켜 온 것인가?

제안 방법

저자들은 코드 모듈성이 LLM 성능에 미치는 영향을 측정하고 평가하기 위한 정량적 프레임워크를 제안합니다. 이 프레임워크는 정형적 모듈성 지표, 4가지 코드 범주를 활용한 통제된 실험 설계, 포괄적 평가 프로토콜의 세 가지 구성 요소로 이루어집니다.

1
모듈성 점수(MoS) 지표
순환 복잡도(Cyclomatic Complexity, CC)에 기반한 새로운 지표입니다. CC는 제어 흐름 그래프에서 CC = E - N + 2 (E: 간선 수, N: 노드 수)로 계산하여 독립 실행 경로 수를 측정합니다. 이상적인 모듈 수를 m* = ⌊CCtotal / τ⌋ (τ = 5, 소프트웨어 공학에서 널리 사용되는 복잡도 임계값으로 각 모듈이 최대 5개의 독립 경로를 처리해야 함을 의미)로 산출합니다. MoS는 m* > 0일 때 min(1, n/m*) (n: 실제 모듈 수), m*과 n이 모두 0일 때 0, m* = 0이고 n > 0일 때 1로 정의됩니다. 이 지표의 유효성은 함수 호출 빈도와의 강한 상관관계(Pearson = 0.41, Spearman = 0.61)로 확인되어, 의미 있는 모듈 상호작용을 포착함을 검증했습니다.
2
통제된 비교를 위한 4가지 코드 유형
모듈성의 효과를 변환 부수 효과와 분리하기 위해 4가지 코드 유형을 정의합니다: MC (모듈형 코드 -- 기존 데이터셋 솔루션에서 추출한 자연적으로 높은 MoS를 가진 솔루션), SC (단일 코드 -- 동일 문제의 MoS=0 솔루션으로 단일체 구현), TMC (변환된 모듈형 코드 -- 기능적 등가성을 유지하면서 GPT-3.5-Turbo로 SC를 모듈형으로 변환), TSC (변환된 단일 코드 -- TMC의 헬퍼 함수를 수동으로 인라인하여 단일 형태로 복원). 핵심 비교는 TMC vs. TSC입니다: 두 유형 모두 동일한 변환 파이프라인을 거쳤으므로 변환 부수 효과를 공유하되, 코드가 모듈형인지 단일형인지 다릅니다. 이를 통해 순수한 모듈성의 효과를 분리합니다.
3
평가 프로토콜
두 가지 패러다임에서 실험합니다: 각 코드 유형에서 추출한 2-shot 시연을 사용한 In-Context Learning (ICL), 그리고 MC 전용 또는 SC 전용 데이터셋(CodeContests ~5K 문제, 61K 학습 예제)으로 학습하는 파인튜닝. 다양한 규모의 5개 LLM을 평가합니다: Code Llama (7B, 34B), DeepSeekCoder (6.7B, 33B), GPT-4o-mini. 두 가지 난이도 높은 벤치마크를 사용합니다: APPS (Introductory, Interview, Competition 난이도 분할; ~2K 학습 / ~3.7K 테스트 문제)와 CodeContests (~7.3K 학습 문제, 문제당 평균 182개 솔루션, 165개 테스트 문제). 성능은 pass@1, pass@5, pass@10으로 측정합니다.
4
퍼플렉시티 및 상관관계 분석
생성 성능 외에도, LLM이 모듈형 코드와 단일 코드 중 어느 쪽을 본질적으로 선호하는지 측정하기 위한 퍼플렉시티 분석을 수행합니다. 또한 100개의 CodeContests 샘플에 대해 Pearson 및 Spearman 상관 검정을 실시하여, in-context 시연의 MoS 값과 pass@1 점수 간의 직접적 통계적 관계를 정량화합니다. 이러한 다면적 분석을 통해 발견이 단일 평가 렌즈의 부수물이 아님을 보장합니다.

실험 결과

CodeContests ICL 결과 (pass@1 / pass@10)

모델MCSCTMCTSC
Code Llama 7B1.98 / 8.022.58 / 8.812.57 / 10.184.35 / 10.67
Code Llama 34B4.11 / 12.785.83 / 14.103.39 / 13.555.61 / 15.32
DeepSeekCoder 6.7B5.30 / 12.787.15 / 16.278.02 / 17.888.19 / 17.79
DeepSeekCoder 33B6.79 / 16.148.87 / 20.509.38 / 22.748.78 / 22.09
GPT-4o-mini14.0715.3514.2914.40

APPS ICL 결과 (pass@1 / pass@5)

모델MCSCTMCTSC
Code Llama 7B7.98 / 12.7511.12 / 15.7814.67 / 19.6313.84 / 17.15
DeepSeekCoder 6.7B24.76 / 32.5928.93 / 36.2634.26 / 40.7433.24 / 39.73

CodeContests 파인튜닝 결과 (pass@1 / pass@10)

모델MC (파인튜닝)SC (파인튜닝)
Code Llama 7B3.88 / 12.204.42 / 12.56
DeepSeekCoder 6.7B6.06 / 13.828.73 / 16.16

퍼플렉시티 분석: LLM의 코드 스타일 선호도

모델PPL(MC)PPL(SC)
Code Llama 7B2.20 ± 0.572.40 ± 1.00
Code Llama 34B2.02 ± 0.452.00 ± 0.44
DeepSeekCoder 6.7B1.93 ± 0.412.05 ± 0.63
DeepSeekCoder 33B1.89 ± 0.421.89 ± 0.42

MoS와 성능의 상관관계 (CodeContests, 100개 샘플)

모델PearsonSpearman
Code Llama 7B-0.34 (p=0)-0.31 (p=0)
DeepSeekCoder 6.7B-0.21 (p=0.04)-0.25 (p=0.01)

왜 중요한가

이 연구는 LLM 기반 코드 생성에서 "모듈화가 항상 좋다"는 기존 가정을 뒤집으며, 연구자와 실무자 모두에게 중요한 통찰을 제공합니다:

링크

Reasoning Benchmark