lm-sys / lm-sys/FastChat

Evidence of bias in the "fun" evaluation method using GPT-4 scores?

Open
#826 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
39.5k
Forks
4.8k
PR merge metrics
No merged PRs in 30d

Description

As described in the main post, the evaluation method is presented as a cool but informal idea and not a rigorous approach. The method is used to create some pretty compelling plots showing the performance of vicuna relative to other models.

I wanted to present some simple evidence that I've found of bias in the evaluation method. Please don't take this as a criticism -- more just some interesting observations!

First is an "ordering" bias, and second is a "close-to-home" bias. Both of these are based on very little data, so they may themselves be subject to criticism.

### Method
First, I wrapped the evaluation in the codebase to aggregate all the scores in the following form (see [aggregate_scores_from_table.py](https://github.com/thandal/FastChat/blob/main/fastchat/eval/aggregate_scores_from_table.py)):
```
{
"COMPARISON MODEL": {
"total_score1": 576.0, <-- for comparison model
"total_score2": 696.5, <-- for base model (vicuna)
"failed_eval_count": 0, <-- didn't get a score
"better1": 4, <-- comparison model had higher score
"better2": 76, <-- base model had higher score
"tie": 0 <-- tied scores
},
```
Second, I used gpt-3.5-turbo to re-run the evaluations already present in the repository. And I ran one more evaluation: vicuna-13b against *itself* (meaning the same answers for model1 and model2). Note that in my re-runs, I went through and manually assigned cleaned up the scores when they were present somewhere in the text.

### "Close-to-home" bias
The full aggregated results:

**Evaluator: gpt-4 (original evaluator used by the vicuna team)**
```
{
"alpaca-13b": {
"total_score1": 576.0,
"total_score2": 696.5,
"failed_eval_count": 0,
"better1": 4,
"better2": 76,
"tie": 0
},
"gpt35": {
"total_score1": 684.0,
"total_score2": 633.5,
"failed_eval_count": 0,
"better1": 42,
"better2": 22,
"tie": 16
},
"llama": {
"total_score1": 523.0,
"total_score2": 695.0,
"failed_eval_count": 0,
"better1": 5,
"better2": 75,
"tie": 0
},
"bard": {
"total_score1": 661.5,
"total_score2": 662.0,
"failed_eval_count": 0,
"better1": 28,
"better2": 39,
"tie": 13
}
}
```

**Evaluator: gpt-3.5-turbo**
```
{
"alpaca-13b": {
"total_score1": 583.0,
"total_score2": 700.0,
"failed_eval_count": 0,
"better1": 3,
"better2": 77,
"tie": 0
},
"gpt35": {
"total_score1": 627.0,
"total_score2": 665.0,
"failed_eval_count": 0,
"better1": 14,
"better2": 65,
"tie": 1
},
"llama-13b": {
"total_score1": 588.0,
"total_score2": 708.0,
"failed_eval_count": 0,
"better1": 0,
"better2": 79,
"tie": 1
},
"bard": {
"total_score1": 609.0,
"total_score2": 669.0,
"failed_eval_count": 1,
"better1": 8,
"better2": 71,
"tie": 0
}
}
```
A few observations:
* The score for vicuna changes by ~10% depending on its pairing!? (true for both gpt-4 and gpt-3.5-turbo evaluations)
* Generally the vicuna score seems higher when it's paired against a weaker model (695 vs llama), and lower when paired with stronger models (633.5 vs gpt3.5).
* Other than gpt-3.5's own score, evaluator gpt-3.5-turbo is actually pretty similar to evaluator gpt-4.
* GPT-3.5 seems to be hard on itself -- gpt-4 gives it a higher score (648) than it gives itself (627)!

It is this last point that I call the "close-to-home" bias. I don't know why, but while you might expect gpt-3.5-turbo to bias its own responses higher... it does the opposite.

### "Ordering" bias
Running vicuna-13 against itself using evaluator gpt-3.5-turbo yielded a surprising result! The second model (responses identical to the first) scored significantly higher.
```
"vicuna-13b-20230322-new-hp-fp16": {
"total_score1": 606.0,
"total_score2": 620.0,
"failed_eval_count": 1,
"better1": 1,
"better2": 11,
"tie": 67
},
```
While its tricky to compare the results between different pairwise comparisons, the 14 point bias is on the order of differences between the Bard and gpt-3.5 scores. Since vicuna was always set as the second model in the original evaluation, the results (as presented in the blog post) may have a systematic upward bias.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with fastchat/eval/aggregate_scores_from_table.py and the existing evaluation outputs described in the issue. Re-run the cited GPT-4 and GPT-3.5 comparisons, including the identical vicuna-13b pairing, and check whether model ordering or pairing changes scores. Done means the bias is reproduced or ruled out with a documented analysis and a clearly agreed follow-up.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
machine-learning
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.