Qwen3.8-27B 5개가 Fable 5를 넘었다? Memdoor 다중 에이전트의 LiveCodeBench Hard 재현 실험 살펴보기

작은 모델 여러 개를 팀으로 묶으면 최상위 단일 모델을 이길 수 있을까요? 다중 에이전트 워크플로 Memdoor의 team-solve가 이 질문에 흥미로운 데이터를 내놓았습니다. 다만 평가 범위가 제한적이어서, 숫자와 함께 조건을 꼼꼼히 살펴볼 필요가 있습니다.
핵심 요약
- 성과: LiveCodeBench Hard의 첫 10문제를 5회씩 풀어 50회 중 49회 성공, 평균 9.8점을 기록했습니다.
- 구성: 계획자, 아이디어 제안자 2명, 해결자, 관리자가 각자 새 컨텍스트에서 시작하고 디스크의 파일로만 소통합니다.
- 판정: 모델의 성공 선언이 아니라 샘플을 실행하는 셸 스크립트가 통과 여부를 결정합니다.
- 비용: 50회 실행에 35.79달러, 출력 토큰 1,530만 개가 들었습니다.
- 주의점: 전체 100문제가 아닌 10문제 평가이며, 학습 데이터 오염 가능성을 배제할 수 없습니다.
점수 비교
| 구성 | 회차별 점수 (10점 만점) | 평균 | |---|---|---| | Memdoor 워크플로 | 10, 10, 10, 10, 9 | 9.8 | | 원 연구진의 27B 하네스 | 9, 10, 10, 9, 10 | 9.6 | | Fable 5 단독 실행 | 7, 8, 10, 8, 7 | 8.0 |
채점은 원 연구진의 수정된 채점기로 공개 테스트와 숨겨진 테스트 전체를 대상으로 진행했습니다. 비교 대상 점수는 원 연구진 저장소의 재채점 결과 파일에서 가져온 것으로, 논문 수치와 같습니다.
team-solve는 어떻게 동작하나요?
team-solve는 GVS5H의 방법을 Memdoor 워크플로로 구현한 것으로, 다섯 역할에 별도의 수정 작업자가 더해진 구조입니다. 워크플로 파일은 사람이 아니라 코딩 에이전트가 방법 설명을 바탕으로 직접 생성했습니다.
기본 예제의 실행 순서는 다음과 같습니다.
- plan:
task.md를 읽고plan.md와notes.md를 작성합니다. - ideate-a / ideate-b: A는 가장 직접적이고 증명 가능한 알고리듬을, B는 다른 계열의 기법을 탐색합니다.
- solve: 두 제안을 읽고 선택을 기록한 뒤
solution.py를 작성합니다. - test: 샘플을 실행해 결과를 남기며, 실패해도 전체 실행을 멈추지 않습니다.
- review: 모델의 주장 대신 실제 테스트 출력을 읽고 수정 지침을 작성합니다.
- repair: 지침에 따라 코드를 고치며, 샘플을 이미 통과했다면 아무것도 하지 않습니다.
- verify: 샘플을 다시 실행하고, 종료 코드가 0이 아니면 전체 실행을 실패 처리합니다.
기본 예제의 수정 라운드는 1회이며, 비교 실험에서 재현한 최대 10라운드 절차와는 구분됩니다. 원 논문은 채팅 기록 대신 파일로 기록을 관리하는 규율을 성능 향상의 요인으로 꼽습니다.
비용과 시간
- 실행당 비용 중앙값은 0.39달러입니다.
- 실행당 모델 사용 시간 중앙값은 40분, 최장은 4시간입니다.
- 시간 제한, 수정 작업, 일시 정지로 중단한 16번의 시도까지 포함하면 총비용은 38.77달러입니다.
결과를 해석할 때 주의할 점
- 표본이 작습니다. 원 연구진의 100문제 전체가 아니라 10문제의 5회 반복입니다.
- 데이터 오염 가능성이 있습니다. 문제의 원 대회가 2025년 3월 29일부터 4월 6일 사이에 열려, 모델이 학습 중 접했을 수 있습니다.
- 조건이 동일하지 않습니다. Fable 5 점수는 문제당 단일 호출 결과이며, 이번 Memdoor 하네스에서 실행한 것이 아닙니다.
- 로컬 실행이 아닙니다. 모든 호출은 OpenRouter를 거쳤습니다. 원 연구진은 자체 vLLM에서 FP8로 실행했고, Memdoor는 Modal(203회), CoreWeave(27회), Wafer(115회)가 처리했습니다. Modal은 사용 정밀도를 공개하지 않습니다.
재현 충실도
lib/test_parity.py는 원 구현과 Memdoor 워크플로를 동일한 스크립트 기반 모델에 연결해 요청을 비교합니다. 네 가지 사례에서 모든 메시지가 바이트 단위로 일치했고, 문자 하나만 바꿔도 차이를 검출합니다.
흥미로운 발견도 있었습니다. 초기 버전은 문제마다 자체 작업 파일을 만들었는데, Qwen3.8-27B는 원 연구진의 정확한 문제 텍스트에서 더 나은 계획을 생성했습니다. arc196_c의 경우 두 번 중 성공 0회에서 2회로 달라졌습니다. 문제 문구의 차이가 결과를 좌우할 수 있다는 뜻입니다.
또한 전체 50회 실행 기록이 공개되어 있습니다. 모든 요청과 응답, 생성 프로그램, 채점기 출력, 호출별 비용, 집계에서 제외한 시도까지 포함됩니다.
정답이 덮어써지는 실패 사례
이번 실험에서 가장 배울 점이 많은 대목입니다.
- 잘못된 반례: 5회차
abc399_e에서 관리자가 오답인 기대값을 가진 반례를 만들어 정답 코드를 바꾸게 했습니다. 수정된 프로그램은 공개 샘플만 통과했고, 숨겨진 테스트는 44개 중 32개만 통과했습니다. - 종료 판단 실패: 4회차
arc196_c와arc196_d에서는 관리자가 완료를 선언하지 않아 정답 코드가 후속 라운드에서 덮어써졌습니다. 두 실행 모두 종료 전에 정답을 복구했지만, 비용이 각각 4.24달러와 3.44달러로 전체에서 가장 비쌌습니다.
개선책으로는 작은 입력의 완전 탐색으로 관리자 반례를 검증하고, 마지막으로 샘플을 통과한 프로그램을 보존하는 방법이 제시되었습니다. 단, 두 개선책 모두 이번 점수에는 반영되지 않았습니다.
직접 실행해 보려면
자체 문제는 task.md와 tests/N.in, tests/N.out 쌍으로 준비합니다. Python 3와 bash가 필요합니다.
memdoor workflow run team-solve --wait
모든 샘플이 통과하면 종료 코드 0을 반환하며, memdoor tui의 /workflow에서 진행 상황을 실시간으로 볼 수 있습니다. OpenRouter, Anthropic, OpenAI, Gemini, ChatGPT 연결은 물론 Ollama, llama.cpp, vLLM, LM Studio, janis 같은 로컬 런타임도 사용할 수 있습니다.
마무리
이번 결과는 '작은 모델 팀이 최상위 모델을 이겼다'는 결론보다, 파일 기반 소통과 스크립트 검증이라는 설계가 얼마나 효과적인지 보여 주는 사례로 읽는 편이 적절합니다. 표본의 한계는 분명하지만, 실행 기록을 모두 공개했다는 점에서 직접 검증해 볼 가치가 있는 실험입니다.
원문: https://news.hada.io/topic?id=36373&utm_source=geeknews&utm_medium=rss&utm_campaign=news