주간 LLM 은 매주 LLM 관련 최신 연구, 논문을 다루는 시리즈 입니다.
2025.01 - 4주차는 LLM을 활용하여 LLM 성능을 평가 할 수 있는 model-based evaluation 기법에 대해 다룹니다.
Overview
최근 점점 더 다양한 영역에서 높은 성능을 내고 있는 LLM을 평가하는 것은 굉장히 어려운 과제 중 하나입니다. 이를 위해 다양한 벤치마크, 휴먼 평가를 수행하고 있으나, 모델의 광범위한 능력(broad capabilities)을 기존의 방법만으로 평가하기는 적합하지 않습니다.
이를 해결하기 위해, 역으로 LLM의 능력을 활용하여 LLM을 평가하는 방법론들이 최근 많이 연구되고 있습니다. 이 중 NeurIPS 2023에 소개된 "Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena" 논문을 소개하고자 합니다. 줄여서, LLM-as-a-Judge로 많이들 알고계신 해당 논문은 2025년 1월 현재 2319회의 인용수를 보이며 후속 논문들도 많이 발표된 연구입니다.
Abstract
본 논문에서는, strong LLM을 judge로 사용하여 opend-ended questions에 대해 평가하는 방법을 연구하였으며 LLM judge의 사용과 한계(position, verbodity, self-enhancement)및 제한된 추론 능력을 검토하고, 이를 완화하기 위한 해결책을 제안했습니다.
실험을 통해 GPT-4를 이용한 LLM Judge 모델이 인간 선호도와 80% 이상의 높은 일치도를 보이며 LLM을 Judge로 사용하는 것이 인간 선호도를 추정하는 확장 가능(scalable)하고 설명 가능한 방법임을 보였습니다.
추가로 본 논문에서는, LLM judge와 인간 선호도의 일치(agreement)를 확인하기 위해 다음의 벤치마크도 함께 소개합니다.
1. MT-bench(multi-turn question set)
- 총 8개의 카테고리(수학, 글쓰기 등)에서 multi-turn 질문을 통해 LLM의 대화 능력을 평가할 수 있는 벤치마크
- 데이터: https://huggingface.co/datasets/lmsys/mt_bench_human_judgments
2. Chatbot Arena(crowdsourced battle platform)
- 두 개의 LLM(chatbot)과 대화하며 실제 사용자가 개인 선호도에 따라 더 나은 답변을 고른 데이터 (크라우드 소싱 방식으로 수집)
- 데이터: https://huggingface.co/datasets/lmsys/chatbot_arena_conversations
1. Types of LLM-as-a-Judge
Llm-as-a-judge(이하 llm-judge) 에는 평가하고자 하는 답변 유형에 따라 다음과 같이 나눌 수 있습니다.
1. pairwise comparison
- LLM judge에 입력으로 하나의 질문과 두 개의 정답을 주고, 어느 답변이 나은지 (무승부 포함) 판별하게 함.
2. single answer grading
- 하나의 답변에 대해 직접 점수(1~10)를 매기도록 함.
3. reference-guided grading
- 채점 시, reference를 함께 제공하는 경우. 특정 경우(수학 문제, 계산 과정 참고)에서는 reference를 제공하는 것이 적절한 채점을 하는데 도움을 줄 수 있음.
2. Advantages & Limitations of LLM-as-a-Judge
Advantages
LLM Judge는 확장성(scalability)과 설명가능성(expainability)이라는 두 가지 주요 이점을 제공합니다. 또한, 평가시 사람의 개입이 필요하지 않아 빠른 평가가 가능하며, 평가 시 점수뿐만 아니라 설명도 제공해주기 때문에 결과물을 해석할 수 있다는 장점이 있습니다.
Limitations → Adressing Limitations
하지만, 단점 역시 존재합니다. 다음의 단점 네 가지와 함게 이를 극복할 수 있는 방안에 대해서 함께 얘기해보겠습니다.
1. Position Bias → Swapping Positions
LLM Judge는 특정 위치에 있는 답변을 선호하는 경향이 있습니다. 실제로, 유사한 답변 여러개를 순서대로 나열하고 가장 적절한 답변을 고르라고 할 때, 대부분의 LLM이 첫번째 위치를 선호합니다. (유사한 답변들이 입력으로 들어왔으므로, 순서에 편향되게 결과가 나타나면 안됨) →이는, 답변의 위치 변경을 통해 해결할 수 있습니다. 예로, 두 개의 답변을 위치를 바꾸어가며 2번 질문하였을 때, llm-judge가 똑같은 선호도를 보이는지 확인하면 됩니다.
2. Verbosity Bias → few-shot judge, Fine-tuning a judge model
LLM Judge는 더 정확하고, high-quality의 짧은 답변보다 더 길고, 장황한 답변을 선호하는 경향이 있습니다. 실제로, 답변1과 답변1을 열번 반복한 문장을 입력으로 넣었을 때, 동일한 문장이 반복되는 더 긴 답변을 선호하는 경향을 보입니다. →이는, few-shot으로 올바를 예시를 judge-message로 함께 넣어주거나, high-quality의 짧은 답변을 선호하도록 judge model을 fine-tuning하여 사용하는 것으로 해결할 수 있습니다.
3. Self-enhancement Bias → few-shot judge, Fine-tuning a judge model
LLM Judge는 자신이 생성한 응답을 더 선호하는 경향이 있습니다. 실제로, GPT-4를 llm-judge로 사용하고, 다른 모델이 생성한 답변과 함께 GPT-4의 답변을 입력으로 주었을 때, 10%정도 본인이 생성한 답변을 더 선호하는 경향을 보였습니다. (실제 답변 퀄리티는 확인해봐야 함) →이는, 마찬가지로 few-shot 및 judge model을 fine-tuning 하여 사용하는 것으로 개선할 수 있습니다.
4. Limited capability in grading math and reasoning questions → few-shot judge, cot & reference-guided judge, Fine-tuning a judge model
마지막으로, 기존 LLM이 다른 태스크보다 특히 추론 문제와 수학 문제에 약하기 때문에, 마찬가지로 llm-judge 시에도 해당 도메인에 약하다는 점입니다. 특히, LLM이 문제를 개별적으로 풀었을 때는 정답을 맞출 수 있어도, 제공된 답변에 의해 잘못된 판단을 내릴 수 있습니다.
→이는, few-shot 및 fine-tunining judge model 외에도, 기존 LLM의 수학 & 추론 능력을 향상시키키 위해 사용했던 CoT(chain-of-thought) 기법을 사용해 단계별 평가 방식, 혹은 수학 공식등을 함께 입력으로 주는 reference-guided judge 방식으로 개선할 수 있습니다.
Practice (by FastChat)
지금까지 "Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena" 논문에서 소개한 LLM-judge의 등장 배경과, 사용 방법, 장단점에 대해 알아봤습니다. 이제 실습을 통해 실제로 어떤 과정으로 LLM을 활용하여 llm이 생성한 답변들을 평가할 수 있는지 간단한 실습을 통해 알아보겠습니다.
먼저 코드는 다음의 깃 레포를 참고하시면 됩니다.
https://github.com/lm-sys/FastChat/tree/main/fastchat/llm_judge
1. 환경설정 및 평가 셋 다운로드
먼저, 평가를 위한 환경설정과 평가 셋을 다운로드해줘야 합니다.
git clone https://github.com/lm-sys/FastChat.git
cd FastChat/
pip install -e ".[model_worker,llm_judge]"
cd fastchat/llm_judge
python download_mt_bench_pregenerated.py
2. LLM 모델 답변 생성
다음으로, 원하는 모델의 답변을 생성해주면 됩니다. 위에서, mt-bench를 평가셋으로 다운받아주었으므로, mt-bench의 Question을 입력으로 넣어주고, LLM의 답변을 얻게 됩니다. llama-3.2 1B 모델의 답변을 한번 얻어보겠습니다.
# python gen_model_answer.py --model-path [MODEL-PATH] --model-id [MODEL-ID]
python gen_model_answer.py --model-path meta-llama/Llama-3.2-1B --model-id llama3.2-1b
모델의 답변은 다음의 경로에 저장됩니다. ./data/mt_bench/model_answer/[MODEL-ID].jsonl
3. LLM-Judge 모델 답변 평가
마지막으로, 생성된 모델을 LLM-judge로 평가해주면 됩니다. 여기서 설정할 주요 옵션은 다음과 같습니다.
1) LLM-judge 모델로 어떤 모델을 사용할지?
- 기본값으로 gpt-4가 설정되어 있습니다.
- 다른 모델을 사용하고 싶다면, --judge-model [JUDGE-MODEL] 옵션을 추가해주면 됩니다.
2) Judge message는 어떻게 할지?
- 기본옵션으로 "pairwise-baseline", "pairwise-all", "single" 있습니다.
- custom-message를 사용하고 싶다면, 아래 경로에 custom-prompt를 추가해주면 됩니다. ./data/judge_prompts.jsonl
export OPENAI_API_KEY=XXXXXX # set the OpenAI API key
python gen_judgment.py --model-list [LIST-OF-MODEL-ID] --parallel [num-concurrent-api-call]
Judge 결과는 다음의 경로에 저장됩니다. ./data/mt_bench/model_judgement/[JUDGE-MODEL]_[JUDGE-TYPE].jsonl
(** 논문에서 소개한 MT-bench나 chatbot arena를 평가하고 싶다면, 위에 코드를 사용하는 것이 좋습니다. 하지만, 개별 모델의 개별 벤치마크를 llm-judge로 평가하고 싶다면, 사실상, 1. answer-generate, 2. judge 하는 두 코드만 생성하면 되는 것이라, 커스텀 코드를 스크래치부터 짜는 것도 추천합니다. )
References
- paper: https://arxiv.org/pdf/2306.05685
- code: https://github.com/lm-sys/FastChat/tree/main/fastchat/llm_judge
'인공지능(AI) > LLMs' 카테고리의 다른 글
[주간 LLM] LLM Evaluation (1) - Ifeval (2) | 2025.01.13 |
---|