AI 평가: 무엇을 어떻게 측정할 것인가
벤치마크의 역할과 한계, GSM8K와 SWE-bench의 평가 사례를 살펴보고 점수를 비교할 때 확인해야 할 조건을 정리한다.
개정 2판 · 최근 고침: 독자에게 보이는 문장과 용어를 다듬고 기존 근거 연결을 유지했다. · 고침 기록 보기
점수 인용은 각 출처의 실험 설정 안으로 한정한다. 이후 갱신 점수는 이 글에서 다루는 출처 범위에 없다.
평가는 왜 어려운가
언어모델은 다양한 일을 할 수 있어 하나의 기준으로 평가하기 어렵다. 수학 문제를 잘 푼다고 해서 고객 응대를 잘한다는 보장이 없고, 영어 시험 점수가 한국어 실무 능력을 대신하지 못한다. 그럼에도 평가는 필요하다. 무엇을 시도할지, 무엇을 버릴지 정하려면 잴 수 있는 기준이 있어야 하기 때문이다. 평가 결과를 읽을 때는 확인하고 싶은 능력과 실제로 측정한 능력이 얼마나 일치하는지 살펴야 한다.
SWE-bench 논문의 첫 문장은 이 사정을 단적으로 드러낸다. 언어모델의 발전 속도가 이를 효과적으로 평가하는 우리의 능력을 앞질렀다는 문제의식이다. 이 글은 이런 문제에 대응하기 위해 제안된 평가 방법들을 정리한다.
벤치마크의 역할과 한계
벤치마크는 정해진 문제 모음으로 능력을 평가하는 방식이다. 다만 이 문제들로 모든 능력을 측정할 수는 없다. 문제의 분포가 실무의 분포와 다를 수 있고, 정답의 형식이 실제 쓰임과 동떨어질 수 있으며, 모델이 문제를 통째로 외웠을 가능성도 있다. 그럼에도 벤치마크는 비교의 공통 언어가 된다. 같은 문제를 같은 조건으로 풀게 하면 적어도 상대적 위치는 잴 수 있기 때문이다.
벤치마크를 읽을 때는 무엇을 어떤 조건에서 측정했는지, 무엇은 측정하지 못했는지 함께 본다. 모델 규모와 프롬프트 방식, 허용된 도구와 시도 횟수가 주요 조건이다. 같은 점수도 조건이 다르면 의미가 달라진다. 이 원칙은 아래의 모든 사례에 적용된다.
추론 평가의 사례: GSM8K와 chain-of-thought
수학 문장제 벤치마크 GSM8K는 추론 평가의 대표 사례로 자주 인용된다. Chain-of-thought 논문은 540B 파라미터 모델에 8개의 예시를 주는 것만으로 이 벤치마크에서 당시 최고 정확도를 달성했다고 보고했다. 풀이의 정확성을 평가하는 검증 모델인 verifier를 붙인 파인튜닝 GPT-3보다도 높은 점수였다. 산술과 상식, 기호 추론 과제에서도 개선을 확인했다고 한다. 같은 모델이라도 푸는 방식을 바꾸자 점수가 달라졌으므로, 평가를 통해 풀이 방식의 효과를 확인한 사례다.
다만 이 사례가 말해주지 않는 것도 있다. GSM8K 점수가 일상적 추론 전반을 대신하지는 못하며, 중간 단계를 잘 적는 것과 진짜 이유를 밝히는 것은 다르다. 평가로 특정 방법의 효과를 확인할 수 있어도, 그것만으로 모델의 추론 능력 전반을 입증할 수는 없다. 이 구분은 추론 주제 글의 faithfulness, 즉 제시한 풀이가 실제 답을 도출한 과정을 반영하는지에 관한 논의와 연결된다.
실제 과제로 재기: SWE-bench의 발상
SWE-bench는 실제 개발 과제를 평가에 사용한 사례다. 12개 인기 Python 저장소의 실제 GitHub 이슈와 그에 대응하는 pull request에서 뽑은 2,294개의 문제로 이루어진다. 모델은 코드베이스와 이슈 설명을 받아 이슈를 해결하도록 코드를 수정해야 한다. 여러 함수와 클래스, 파일에 걸친 변경과 실행 환경과의 상호작용, 매우 긴 컨텍스트의 처리, 복잡한 추론을 요구한다고 논문은 설명한다.
2023년 평가에서는 가장 성능이 좋았던 Claude 2도 1.96%의 이슈만 해결했다. 당시 최신 비공개 모델과 파인튜닝 모델 모두 가장 쉬운 이슈만 풀 수 있었다고 논문은 보고했다. 이 수치는 2023년 당시의 결과이며 이후 점수는 이 글에서 다루는 출처 범위에 없다. 이 글에서는 점수 자체보다 평가용으로 만든 문제 대신 실제 개발 작업의 기록을 사용했다는 점에 주목한다.
점수 읽는 법
점수를 비교하기 전에 모델 규모와 프롬프트, 도구, 시도 횟수를 확인한다. 하나의 벤치마크가 모든 능력을 대표한다고 보기는 어렵다. 평가 시점도 중요하다. 2023년의 1.96%는 그 당시의 결과다. 무엇을 측정하지 못했는지, 실제 업무와 어떤 차이가 있는지도 살펴야 한다. 이는 특정 출처의 직접 주장이 아닌 여러 출처를 검토해 정리한 편집자의 의견이다.
마지막으로, 평가의 한계를 안다고 평가를 버려서는 안 된다. 잴 수 없는 것을 잴 수 있는 것으로 착각하는 일과, 잴 수 있는 것마저 버리는 일은 둘 다 해롭다. 평가의 한계를 밝히면서도 확인할 수 있는 능력은 측정해야 한다.
남은 과제
평가에는 여전히 해결할 문제가 많다. 학습 데이터에 평가 문제가 섞이는 오염, 벤치마크에 맞춘 과적합, 실제 쓰임과의 괴리, 여러 단계에 걸친 작업의 평가, 평가 자체의 비용이다. 특히 에이전트처럼 여러 구성 요소를 결합한 시스템에서는 각 요소의 점수가 높아도 전체 작업에 성공한다고 보장할 수 없다. 이 글은 이런 과제를 정리하며 특정 평가 체계의 우열을 판단하지 않는다.
평가를 설계하는 입장
직접 평가를 설계할 때도 같은 원칙을 적용한다. 측정할 능력을 먼저 정하고, 그 능력을 확인할 과제를 고른다. 점수를 비교할 수 있도록 모델 규모, 프롬프트, 허용된 도구와 시도 횟수를 같은 조건으로 맞춘다. 이 평가에서 측정하지 못한 능력도 함께 적어둔다.
설계의 어려움은 대표성에 있다. 고른 과제가 실제 쓰임을 얼마나 닮았는가. 평가용 문제는 조건을 통제하기 쉽지만 실무와 차이가 날 수 있다. 실제 이슈를 쓰는 SWE-bench도 선택한 과제의 분포가 치우칠 수 있고 채점이 복잡하다. 어떤 방식을 택하든 이런 한계를 함께 밝혀야 한다.
평가 결과에 함께 적을 정보
평가 결과는 실제로 측정한 범위 안에서 해석해야 한다. 실험 조건과 평가 시점을 밝히고, 측정하지 못한 능력도 함께 적는다. 그래야 결과를 어떤 판단에 사용할 수 있는지 알 수 있다.
근거 출처 2건
- [1] 12개 저장소의 2,294개 문제로 구성한 평가와 Claude 2의 1.96% 해결률 보고
SWE-bench: Can Language Models Resolve Real-World GitHub Issues? (외부)
arXiv:2310.06770 · 2023-10-10 - [2] GSM8K에서의 CoT 최고 정확도 보고
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models (외부)
arXiv:2201.11903 · 2022-01-28
함께 읽기
- AI 평가의 발전: 벤치마크에서 실제 개발 과제까지 (발전 과정 · 관련 연구의 발전 과정)
- Chain-of-Thought 논문 공개 (2022) (사건 기록 · 연구 소개: Chain-of-Thought)
- SWE-bench 공개 (2023) (사건 기록 · 연구 소개: SWE-bench)
- 언어모델의 추론 (개념 뼈대 · 함께 읽기: 언어모델의 추론)
- AI 평가의 발전: 벤치마크에서 실제 개발 과제까지 (발전 과정 · 이 글을 가리킴)
- 검토 게이트와 병합: 기록에서 머지 큐까지 (개념 뼈대 · 이 글을 가리킴)
- 도메인 경계와 영향 범위 CI: 작은 변경을 작게 검증하기 (개념 뼈대 · 이 글을 가리킴)
- 언어모델의 추론 (개념 뼈대 · 이 글을 가리킴)
- 역할별 혼합 모델: 에이전트 팀의 비용과 품질 설계 (개념 뼈대 · 이 글을 가리킴)
- 예약 실행 코딩 에이전트: 스모크 테스트와 머지 큐를 통한 병합 (개념 뼈대 · 이 글을 가리킴)
- Anthropic OSS Scanner: 무료 AI 보안 보고서를 받는 유지관리자의 실무 안내 (사건 기록 · 이 글을 가리킴)
- Chain-of-Thought 논문 공개 (2022) (사건 기록 · 이 글을 가리킴)
- ChatGPT 오디오 업로드로 한국어 회의록과 후속 업무 정리하기 (사건 기록 · 이 글을 가리킴)
- Claude Haiku 5.5, 한국어 반복 업무의 비용과 분류 품질 확인하기 (사건 기록 · 이 글을 가리킴)
- Claude로 Google Docs·Sheets·Slides 작업하기: 회의록부터 보고 자료까지 (사건 기록 · 이 글을 가리킴)
- Eleven v4 출시: 한국어 음성 AI 도입 전에 확인할 것들 (사건 기록 · 이 글을 가리킴)
- ElevenAgents Architect로 고객 응대 AI를 점검하고 개선하는 방법 (사건 기록 · 이 글을 가리킴)
- GPT-6 Intelligent UI로 한국어 정산 도구 만들기: Chat 탭과 검수 절차 (사건 기록 · 이 글을 가리킴)
- Google Gemini agent로 반복 업무 맡기기: 주간보고·미팅 준비와 승인 경계 (사건 기록 · 이 글을 가리킴)
- Mistral Large 4 프리뷰의 가격과 성능을 확인하는 방법 (사건 기록 · 이 글을 가리킴)
- Nano Banana 2.1로 한국어 상품 배너를 만들고 검수하는 방법 (사건 기록 · 이 글을 가리킴)
- Rasp 영업 자동화 사례 읽기: 리드 분류부터 CRM 기록과 실패 복구까지 (사건 기록 · 이 글을 가리킴)
- SWE-bench 공개 (2023) (사건 기록 · 이 글을 가리킴)