레거시 코드 현대화 벤치마크
요약
본 글은 레거시 COBOL, Fortran, PHP 코드를 Python이나 Rust로 변환할 때 모델의 동작 보존 능력을 측정하는 벤치마크 결과를 공유합니다. 테스트 결과, 최고 수준의 LLM들도 복잡한 레거시 패러다임을 정확히 구현하고 일관된 출력을 유지하는 데 어려움을 겪었습니다. 특히, 엄격한 실행 환경은 포맷팅 이탈이나 컴파일 실패에 대해 높은 페널티를 부과하며, 이는 모델 성능 평가 시 고려해야 할 중요한 요소로 지적됩니다.
핵심 포인트
- 레거시 코드 변환 시 동작 보존 능력이 핵심 측정 기준입니다.
- 엄격한 실행 환경은 포맷팅 이탈이나 컴파일 실패에 민감하게 반응합니다.
- 최고 수준의 모델도 레거시 패러다임 구현에서 일관성 유지에 어려움을 겪었습니다.
_이 글은 Kaggle Benchmarking Challenge에 제출하는 내용입니다.
제가 벤치마킹한 내용
제 Kaggle Benchmarks 과제는 모델이 레거시 COBOL, Fortran, PHP 프로그램을 Python이나 Rust로 변환할 때 관찰 가능한 동작(observable behavior)을 얼마나 잘 보존하는지 측정합니다. 각 과제 점수는 전체 테스트 케이스 수 대비 통과한 테스트 케이스의 개수입니다. 케이스가 통과하려면 생성된 프로그램이 성공적으로 종료되고 정확히 예상되는 표준 출력(standard output)을 작성해야 합니다.
데이터셋은 20개의 프로그램을 포함하고 있습니다. 공개 분할(public split)과 전체 분할(full split) 모두 프로그램당 20개의 케이스를 가지고 있습니다.
예시 데이터
{
"task_id": "fortran_real_mean_rust",
"family_id": "fortran_real_semantics",
...
테스트한 모델들
저는 다음 모델들을 사용하여 벤치마크를 진행했습니다:
- Gemini 3.1 Pro Preview
- Grok 4.20 Reasoning
- Gemini 3.7 Flash
- Claude Haiku 4.5
- GPT-5.4 mini
- Claude Sonnet 4.5
- Claude Opus 4.6
- Grok 4.5
- GPT-6 Astra
그런데 어떤 이유에서인지 Grok 4.5와 GPT-6 Astra는 실행되지 않았고 다음과 같은 오류가 발생했습니다:
openai.NotFoundError: Error code: 404 - {'code': '', 'message': 'The requested model "xai/grok-4.5-0708" was not found.', 'param': '', 'type': 'not_found_error'}
요청된 모델을 찾을 수 없다는 내용입니다. 하지만 지원되는 모델 목록을 추출했을 때,
import kaggle_benchmarks as kbench
print(list(kbench.llms.keys()))
출력에는 다음 모델들이 있었습니다:
[... , 'openai/gpt-6-astra', 'xai/grok-4.5-0708']
발견한 점들
제 벤치마크 실행 결과, 점수는 이산적인 버킷(discrete buckets)에 엄격하게 몰려 있었습니다. 즉, 모델들은 10점 만점에 7점, 3점, 또는 0점을 받았으며 완벽한 점수를 받은 경우는 없었습니다.
-
이봉형 분포(Bimodal Distribution): 평가 스위트가 컴파일된 바이너리 및 Python 스크립트를 정확한 stdin/stdout 단언에 따라 실행하기 때문에, 모델들은 포맷팅 이탈(formatting drift)에 대해 크게 페널티를 받습니다.
-
제로 점수 함정(Zero-Score Trap): 0점을 받은 모델들이 반드시 완전히 잘못된 코드를 작성했다는 의미는 아닙니다. 많은 경우 엄격한 타입 안전성 때문에 rustc 컴파일이 실패했거나, LLM이 실행을 방해하는 대화형 서론 텍스트를 포함했기 때문입니다.
-
레거시 번역 격차(Legacy Translation Gap): 레거시 패러다임(COBOL 고정 폭 출력과 같은)을 Rust나 Python으로 번역하려면, 최고 수준의 모델들조차 모든 테스트 케이스에서 일관되게 실행하기 어려워하는 정밀한 상태 관리(state management)가 필요했습니다.
그리고 특정 제공업체 엔드포인트(예: xai/grok-4.5-0708)를 쿼리할 때 404 Not Found error가 발생하는 것은 해당 엔드포인트가 사용 중단되었거나 이름이 변경되었음을 나타냅니다.
나의 벤치마크 (My Benchmark)
벤치마크는 여기에서 확인하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기