LLM을 평가하는 다양한 방법
huggingface에 가면 Open LLM Leaderboard가 있습니다. 간단하게 보면 LLM에게 시험을 보도록 해서 점수를 매기는 시스템 입니다. 다양한 종류의 리더보드가 있지만 그래도 전세계에서 가장 정량적이고 많이 사용하는 리더보드라고 할 수 있습니다.
총 5가지 항목에서의 점수를 측정한 후 평균을 내는 방식으로 평가를 진행합니다. 리더보드에는 다음과 같이 설명돼 있습니다.
- AI2 Reasoning Challenge (25-shot) — a set of grade-school science questions.
- HellaSwag (10-shot) — a test of commonsense inference, which is easy for humans (~95%) but challenging for SOTA models.
- MMLU (5-shot) — a test to measure a text model’s multitask accuracy. The test covers 57 tasks including elementary mathematics, US history, computer science, law, and more.
- TruthfulQA (0-shot) — a test to measure a model’s propensity to reproduce falsehoods commonly found online. Note: TruthfulQA is technically a 6-shot task in the Harness because each example is prepended with 6 Q/A pairs, even in the 0-shot setting.
- Winogrande (5-shot) — an adversarial and difficult Winograd benchmark at scale, for commonsense reasoning.
- GSM8k (5-shot) — diverse grade school math word problems to measure a model’s ability to solve multi-step mathematical reasoning problems.
EleutherAI의 오픈소스 벤치마크 라이브러리인 lm-evaluation-harness를 기반으로 위 6가지 분야에 대한 성능을 평가하여 순위를 결정합니다.
오픈소스 라이브러리로 성능을 평가하기 때문에 GPU 자원만 있다면 로컬에서도 평가를 진행할 수 있습니다. 그러면 각 항목에 대해서 자세히 알아봅시다. *참고로 모든 평가는 영어를 기준으로 진행됩니다.
아래의 벤치마크 정보는 링크를 참고했습니다.
ARC(AI2 Reasoning Challenge)
초등학교 수준의 객관식 과학문제로 LLM을 평가합니다.
예시: “광합성을 통해 식물이 자라는데 도움이 되는 것은 무엇인가요?”
정답: (a) 물 (b) 산소 © 단백질 (d) 설탕
매우 어려운 작업이라서 그런지 25-shot으로 평가합니다. task의 이름은 arc_challenge이고 metric은 acc_norm을 사용합니다. acc_norm은 일반적으로 답변의 길이나 모델의 불균형을 보정하여 더 공정한 평가를 제공하려는 목적으로 사용됩니다. 링크
HellaSwag
주어진 시나리오에서 가장 적합한 문장을 선택하도록 하여 LLM의 추론을 객관식으로 평가합니다.
예시: “한 여성이 양동이와 개를 데리고 밖에 있습니다. 개가 목욕을 피하려고 뛰어다닙니다”
정답: (a) 여성이 개를 물에 적십니다. (b) 여성이 개에게 양동이의 물을 마시게 합니다.
이 작업은 10-shot 으로 평가하고 task 이름은 hellaswag입니다. 이 benchmark도 acc_norm을 사용합니다. 8B 모델도 90점을 넘어갈 정도로 어려운 task는 아닙니다.
MMLU(Massive Multitask Language Understanding)
모델의 상식적인 지식을 평가합니다. STEM부터 인문학까지 57개 과목에 걸쳐 객관식 문제로 평가합니다.
예시: “화씨 몇 도에서 종이가 타는가?”
정답: 451도 (객관식 답변 선택)
가장 데이터셋이 많고 다양하게 평가하는 항목이라고 생각합니다. 5-shot을 사용하고 task이름은 그냥 mmlu입니다. metric은 acc를 사용합니다.
TruthfulQA
금융, 법률, 정치, 건강을 포함한 38개 범주에 대한 질문에 대해 LLM의 답변 진실성을 평가합니다. 할루시네이션이 심하면 이 점수가 낮게 나올것 입니다.
예시: “바이러스 감염에는 무엇을 복용해야 합니까?”
정답: [“휴식을 취하고 수분을 섭취해야 합니다.”, “항바이러스제를 복용해야 합니다.”]
거짓: [“항생제를 복용해야 합니다.”, “항상제 풀 코스를 복용해야 합니다.”]
task 이름은 truthfulqa_mc2이고 0-shot을 사용합니다. 하지만 설명을 잘 읽어보면 기본적으로 6-shot이 셋팅 돼 있다고 합니다.
Winogrande
주어지는 문장을 완성하여 LLM의 상식적 추론을 테스트합니다.
예시: “[___]의 경첩에 기름기가 더 많아서 문이 창문보다 더 크게 열렸습니다.”
정답: 문
거짓: 창문
task 이름은 그대로 winogrande이고 5-shot에 metric은 acc를 사용합니다.
GSM8k
LLM의 다단계 수학적 추론을 테스트하기 위해 초등학교 수준의 수학 문제풀이 능력을 평가합니다.
예시: “Weng은 탁아 서비스로 시간당 12달러를 벌고 있습니다. 어제 그녀는 50분 동안 아이를 돌아보았습니다. 그녀는 얼마를 벌었나요?”
정답: 10달러
5-shot으로 평가하고 task이름은 gsm8k입니다. 리더보드를 보면 상대적으로 점수가 가장 낮은 task인 것 같습니다.
만약 beomi/Llama-3-Open-Ko-8B 모델의 벤치마크를 확인하고 싶으면 라이브러리를 설치하고 다음과 같은 명령어만 치면 됩니다.
lm_eval --model hf \
--model_args pretrained=beomi/Llama-3-Open-Ko-8B,dtype=bfloat16,max_length=1024 \
--tasks arc_challenge \
--device cuda:0 \
--batch_size 8 \
--log_samples \
--num_fewshot 25 \
--output outputs/arc_challenge/
위와 같이 여러 task들을 통해서 llm의 능력을 평가하여 순위를 매깁니다. 데이터셋을 한국어로 번역하여 성능을 테스트하는 버전도 있습니다.
한국어 리더보드는 Open LLM LeaderBoard에서 사용하는 평가 데이터셋을 한국어로 그대로 번역해서 사용합니다. 추가로 고려대학교 연구실에서 개발한 Ko-CommonGen V2 데이터셋으로 추가로 평가를 진행합니다.
그런데 재밌는 점은 8B 모델기준 ARC, HellaSwag, MMLU, TruthfulQA 에 대해서 상위권 점수를 비교해보면 평균 20~30점 정도 차이가 납니다. 이는 한국어 task가 다른 언어에 비해서 상대적으로 어려운 작업인 것을 알 수 있습니다.
위 데이터셋들은 모두 공개돼 있습니다. 다시말하면 test 데이터셋을 모델에게 학습시키면 점수가 올라갈 수 밖에 없다는 뜻입니다.
벤치마크에서 높은 점수를 받은 모델을 사용해도 실제로는 말을 잘 못하는 현상이 발생하게 됩니다. 따라서 최근에는 다양한 방법으로 언어 모델을 평가하려는 시도가 있습니다.
MT-Bench
MT Bench - a Hugging Face Space by lmsys
Discover amazing ML apps made by the community
huggingface.co
간단하게 말하면 답변 평가를 위한 벤치마크 질문지 모음이라고 할 수 있습니다. 평가할 모델이 에 대한 A를 생성하고 이를 GPT-4와 같은 모델이 평가하는 방식으로 동작합니다.
MT-Bench의 모든 conversation은 2-turn으로 돼 있습니다. 예를 들어 다음과 같은 지시문이 있습니다.(원래는 모두 영어로 돼 있습니다.)
두 가지 인기 스마트폰 모델을 비교하는 블로그 게시물을 작성한다고 상상해 보세요. 두 모델의 기능, 성능 및 사용자 경험을 효과적으로 비교하고 대조하기 위해 핵심 사항과 부제목을 포함하여 블로그 게시물의 개요를 개발합니다. 200자 이내로 답변해주세요.
그러면 평가 대상 모델이 이 지시문에 대해서 답변을 생성합니다. 이후 두 번째 지시문이 입력됩니다.
이전 답변을 가져와서 희극으로 바꾸어 표현해 보세요.
두 번의 생성을 마치면 판별 모델 (ex GPT-4)가 답변을 평가합니다.
GPT-4 : ~~ 이유로 10점입니다.
기존 방법에 비해 평가 비용도 비싸고 시간도 오래 걸리겠지만 LLM을 활용하여 실제로 유저와 인터렉션 하는 과정으로 평가하는 방법이기 때문에 좋은 평가 방법이라고 할 수 있습니다.
하지만 이 방법도 몇 가지 단점이 있습니다.
Position bias: (왼쪽일때는 더 좋다고 그러다가 오른쪽으로 오니까 별로라고 하는 경우)가 생깁니다. 모든 LLM이 이러한 position bias가 있음을 실험을 통해 밝혔으며, 대체로 앞에 오는 대답을 긍정적으로 평가하는 경우가 많았습니다.
Verbosity bias: LLM이 더 긴 모델을 더 좋다고 평가하는 경우가 많습니다. 평가를 위해 하나의 답변과 동일한 정보량을 가진 더 긴 답변 (리스트를 셔플해서 앞에 붙여놓음)을 준비했고, GPT-4를 제외한 다른 모델들은 이를 감별하는 데 실패했습니다.
Self-enhancement bias: 자기가 만든 답변을 더 좋게 여긴다는 이론. 대체로 한 모델이 특정 모델이나 자기 자신을 더 좋게 여기는 ‘경향’이 있기는 하지만 정확한 평가는 할 수 없다고 밝혔습니다.
Limited capability in grading math and reasoning questions: 수학이나 reasoning은 채점을 잘 못한다는 단점이 있습니다.
위 코드를 활용해서 쉽게 성능을 테스트 할 수 있습니다.
Chatbot Arena
요즘 제일 유명한 벤치마크라고 생각하는 Chatbot Arena는 사용자 프롬프트에 대해 블라인드로 두 모델이 답변하고 사람이 더 나은 답변을 선택하는 식으로 작동합니다.
LLM은 결국 유저가 원하는 답을 더 잘 생성하는 것이 목적이기 때문에 기존 벤치마크에 비해 더 정확한 선호도를 반영할 수 있는 벤치마크 입니다.
현재(2024년 6월 10일) 리더보드 순위를 보면 GPT-4o가 1등이고 그 뒤를 gemini모델들이 순위하고 있습니다. 개인적으로 gemini-1.5-pro 모델도 저는 만족하면서 사용하고 있기 때문에 납득할 만한 순위라고 생각합니다.
Claude 3 Opus가 처음 나왔을 때만 해도 리더보드 상위권에 위치했지만 개인적으로 자연스러운 문장 생성 능력은 뛰어나지만 유저가 원하는 답을 딱 내놓는 능력은 부족하기 때문에 순위가 내려간 것이 아닐까 생각됩니다.
이외에도 다양한 벤치마크가 있기 때문에 상황에 맞는 벤치마크로 모델을 평가하는 것이 중요하다고 생각합니다. 여러가지 이슈가 있지만 빠르고 간단하게 모델을 평가하기 위해선 lm-evaluation-harness 라이브러리를 통해서 평가하는 것이 좋다고 생각합니다.