yuchenlin commited on
Commit
f777be0
1 Parent(s): 5506732

gradio space

Browse files
README.md CHANGED
@@ -1,12 +1,15 @@
1
  ---
2
- title: WildBench Leaderboard
3
  emoji: 🦁
4
  colorFrom: blue
5
  colorTo: yellow
6
- sdk: static
 
 
7
  pinned: true
8
- fullWidth: false
9
- tags: ["leaderboard"]
 
10
  ---
11
 
12
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: AI2 WildBench Leaderboard
3
  emoji: 🦁
4
  colorFrom: blue
5
  colorTo: yellow
6
+ sdk: gradio
7
+ sdk_version: 4.19.2
8
+ app_file: app.py
9
  pinned: true
10
+ fullWidth: true
11
+ hf_oauth: true
12
+ api: false
13
  ---
14
 
15
  Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
__pycache__/utils_display.cpython-311.pyc ADDED
Binary file (2.06 kB). View file
 
_about_us.md ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## About Us
2
+
3
+ ### Team
4
+
5
+ We are from [AllenAI](https://allenai.org/) (AI2), a non-profit research organization. Team members include:
6
+
7
+ [Bill Yuchen Lin](https://yuchenlin.xyz/), [Khyathi Chandu](https://khyathiraghavi.github.io/), [Faeze Brahman](https://fabrahman.github.io/), [Yuntian Deng](https://yuntiandeng.com/), [Abhilasha Ravichander](https://www.cs.cmu.edu/~aravicha/), [Valentina Pyatkin](https://valentinapy.github.io/), [Ronan Le Bras](https://rlebras.github.io/), and [Yejin Choi](https://homes.cs.washington.edu/~yejin/).
8
+
9
+ (Each of us contributed significantly and nearly equally. Ronan & Yejin are advisors. Bill is the main project lead.)
10
+
11
+ ### Contact
12
+
13
+ Please contact us in the following ways:
14
+ - Github Issues/PRs for adding a new model: [https://github.com/allenai/WildBench](https://github.com/allenai/WildBench)
15
+ - HF Discussions for general questions about the leaderboard: [https://huggingface.co/spaces/allenai/WildBench/discussions](https://huggingface.co/spaces/allenai/WildBench/discussions)
16
+ - Other questions: Please contact Yuchen with email: yuchenl[at]allenai[dot]org
17
+
_header.md ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ <br/>
2
+
3
+ # 🦁 WildBench: Benchmarking LLMs with Challenging Tasks from Real Users in the Wild
4
+ [⚙️ GitHub](https://github.com/allenai/WildBench) | [🤗 HuggingFace](https://huggingface.co/collections/allenai/wildbench-65e8f2fa9c1260a85a933627) | [💬 Discussions](https://huggingface.co/spaces/allenai/WildBench/discussions)
_intro.md ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ <details open><summary style="font-size: 1.8em; font-weight: bold;">1. What is WildBench? Why should I use it?</summary>
3
+ <div style="font-size: 1.4em; margin-top: 30px;">
4
+ 🦁 <b>WildBench</b> is a benchmark for evaluating large language models (LLMs) on challenging tasks that are more representative of real-world applications. The examples are collected from real users by the <a href="https://wildchat.allen.ai/"><b>AI2 WildChat</b></a> project.</li>
5
+ <br>
6
+ <b>🆕 Motivation</b>: We aim to provide a more <strong>realistic</strong> and <strong>challenging</strong> benchmark for evaluating LLMs, as opposed to existing benchmarks that do not capture the <em>diversity</em> and <em>complexity</em> of <em>real-world</em> tasks.
7
+ <h2 style="color: purple">🌠 Key Features:</h2>
8
+ <ul>
9
+ <!-- <li><b style="color: purple">🌟 Fine-grained:</b>
10
+ We provide a fine-grained annotation for each example, including task types and <b>checklists</b> for evaluating the quality of responses. In addition, we use <b>length-penalized</b> Elo ratings to ensure that the quality of responses is not biased towards longer outputs.</li>
11
+ <li><b style="color: purple">🌟 Transparent & Fair: </b> We test all LLMs on the SAME set of examples, ensuring a fair evaluation. You can explore the data and see the difference between two models to analyze the concrete gap between any pair of LLMs. </li>
12
+ <li><b style="color: purple">🌟 Easy & Fast:</b> WildBench (v1.0) contains 1024 examples, and it is extremely easy to add your own LLMs to our leaderboard! 1️⃣ Let us know your model ID and suggested inference configs; 2️⃣ We'll run inference and evaluation for you; 3️⃣ Voilà! We'll notify you when your results are ready on the leaderboard.</li>
13
+ <li><b style="color: purple">🌟 Dynamic:</b> WildBench will not be a static dataset. We will continue adding new examples and updating evaluation methods. Our goal is to include new challenging examples from real users over time and provide fast yet reliable evaluations.</li>
14
+ <li><b style="color: purple">🌟 Human Verification (ongoing):</b> Although we currently use GPT-4 as the automatic evaluator, we are also collecting human preferences here (see the 🔍 🆚 Tab). We plan to update the leaderboard by incorporating human evaluations in the near future.</li>
15
+ <li><b style="color: purple">🌟 Community-driven:</b> In addition to collecting human preferences for improving our evaluation, we also welcome community users to contribute new examples they find challenging to top LLMs like GPT-4/Claude3. Any feedback and suggestions are welcome, and we'll do our best to upgrade our data and evaluation methods accordingly. </li> -->
16
+ <li><b style="color: purple">🌟 Challenging & Real:</b> We carefully curate a collection of 1024 hard tasks from real users, which cover common use cases such as code debugging, creative writing, and data analysis.</li>
17
+ <li><b style="color: purple">🌟 Reliable AutoEval w/ Checklists:</b> Instead of merely asking GPT-4 to choose between A and B, we provide an instance-specific Checklist (i.e., a list of evaluation questions) for it to reason before making a judgment. It’s similar to CoT. Thus, our eval is highly interpretable and easy-to-verify.</li>
18
+ <li><b style="color: purple">🌟 Length Penalty:</b> GPT-4 judges tend to prefer longer outputs (although humans do too); to avoid this, we devise a simple method to add length penalty on Elo. You can even slide it on our leaderboard UI!</li>
19
+ <li><b style="color: purple">🌟 Task Categorization:</b> We tag each example with 12 task types, so we can analyze task-specific performance of LLMs, in addition to their overall ranking.</li>
20
+ <li><b style="color: purple">🌟 Fair Comparisons:</b> WildBench tests all examples on all LLMs. This is different from arena-style evaluation, where one example is only tested on a single pair of models and never seen again.</li>
21
+ <li><b style="color: purple">🌟 Easy & Fast:</b> WildBench (v1.0) contains 1024 examples now, and it is extremely easy to add your own LLMs to our leaderboard! We will do the work for you!</li>
22
+ <li><b style="color: purple">🌟 Dynamic:</b> WildBench will not be a static dataset. We will continue adding new examples and updating evaluation methods based on community feedback.</li>
23
+ <li><b style="color: purple">🌟 Human Evaluation (ongoing):</b> We are collecting human preferences via our Leaderboard UI (check the 🔍 🆚 tab). Please help us vote! (We’re planning to recruit domain experts too.)</li>
24
+ <li><b style="color: purple">🌟 Community driven:</b> We welcome everyone to contribute to human evaluation and create challenging examples. We also value your feedback and suggestions, and will continue enhancing our benchmark leaderboard accordingly.</li>
25
+ </ul>
26
+ </div>
27
+ </details>
28
+
29
+
30
+ ---
31
+
32
+ <details>
33
+ <summary style="font-size: 1.8em; font-weight: bold;">2. Where are the examples of WildBench from? </summary>
34
+ <div style="font-size: 1.4em; margin-top: 30px;">
35
+ <p>
36
+ <b>WildBench</b> was designed with a focus on capturing the real-world complexity and diversity of tasks that large language models (LLMs) encounter. The design process involved several key steps:
37
+ </p>
38
+ <h2>2.1. Task Collection from WildChat</h2>
39
+ <p>
40
+ <b>WildChat</b>, a dataset akin to ShareGPT but larger and with user consent, was utilized to gather human-GPT conversations. We filtered the data for English, non-toxic responses and used various popular LLMs to generate responses, which were then scored using reward models such as StarlingRM and PairRM. The examples with the highest score variance were shortlisted, from which 1024 were chosen for curating the <b>WildBench v1.0</b>, ensuring a mix of diversity and quality.
41
+ </p>
42
+ <h2>2.2. Task Categories</h2>
43
+ <img src="https://huggingface.co/spaces/WildEval/WildBench-Leaderboard/resolve/main/task_dist.png" width="80%" />
44
+ <p>
45
+ The tasks are classified into 12 categories to cover a broad spectrum of real-user scenarios. This categorization helps in maintaining a balanced task distribution, mirroring the task variety in WildChat and differing significantly from traditional benchmarks.
46
+ </p>
47
+ <h2>2.3. Additional Annotations</h2>
48
+ <p>
49
+ WildBench includes further annotations like secondary task types, conversation turn counts, user intents, moderation tags, and evaluation checklists, providing deeper insights into the tasks and enhancing response assessments. These annotations are generated by GPT-4.
50
+ </p>
51
+ </div>
52
+ </details>
53
+
54
+ <!-- ---
55
+
56
+ <details>
57
+ <summary style="font-size: 1.8em; font-weight: bold;">3. How is WildBench different from other benchmarks?</summary>
58
+ <div style="font-size: 1.4em; margin-top: 30px;">
59
+ <h2>3.1. WildBench vs AlpacaEval</h2>
60
+ <p>
61
+ Unlike AlpacaEval's simpler, single-turn prompts, WildBench employs over 1024 multi-turn prompts from genuine user interactions, focusing on challenging and varied tasks. This represents a significant shift towards realism and complexity, aiming to reflect authentic LLM usage.
62
+ </p>
63
+ <h2>3.2. WildBench vs MT-Bench</h2>
64
+ <p>
65
+ MT-Bench offers two-turn instruction-following tasks, while WildBench provides a broader and more challenging array of multi-turn scenarios, ensuring a comprehensive evaluation across different dimensions.
66
+ </p>
67
+ <h2>3.3. WildBench vs Chatbot Arena</h2>
68
+ <p>
69
+ Though both benchmarks use real-user data, WildBench is distinct in its focus on challenging content, task diversity, and a structured, transparent evaluation methodology that offers more detailed insights into LLM performance.
70
+ </p>
71
+ </div>
72
+ </details>
73
+
74
+ -->
75
+
76
+ ---
77
+
78
+ <details>
79
+ <summary style="font-size: 1.8em; font-weight: bold;">3. How do you evaluate the performance of LLMs on WildBench?</summary>
80
+ <div style="font-size: 1.4em; margin-top: 30px;">
81
+ <h2>3.1. Elo Rating</h2>
82
+ <p>We show two Elo rating for each model in our Main table. The "Overall" Elo rating is the standard method of using bootstrap method to compute the Elo scores for each model. The "Task-Avg" Elo is computed by first computing standard Elo on subsets of our data for each task type and then perform the average of them. </p>
83
+ <h2>3.2. Length Penalty</h2>
84
+ <p>We know that GPT-based evaluation tends to prefer longer responses, which is also the case for human evaluation. To mitigate this, we use a length penalty to normalize the Elo rating of the responses. Specifically, we compute two versions of Elo ratings for each model: one is based on win rates, and the other is based on "longer rates". The <code>WinElo</code> is the standard Elo rating, and the LongElo is the Elo rating considering longer outputs are always better than shorter outputs.
85
+ Then, we present the final adjusted Elo by taking the difference between <code>WinElo</code> and <code>LongElo</code>, i.e.,
86
+ <code>AdjustedElo = WinElo - LengthPenalty * LongElo</code>.
87
+ </p>
88
+ <h2>3.3. Checklist-based Evaluation</h2>
89
+ <p>In our automatic evaluation, we use a checklist (a list of 5~10 questions) for prompting GPT-4 to judge which model output is better. This checklist is example-specific. You can find real examples in "🔍 Explore | 🆚 Evaluate". The checklists help us ensure that GPT-4 uses a rather fixed standard to compare different model pairs on the same examples. Also, they facilitate us to better explain how GPT-4 make the decisions. </p>
90
+ <h2>3.4. Estimated Win Rates</h2>
91
+ <p>We estimate the win rates of each model winning GPT-4 by the differences of their Elo Rating versus GPT-4's. The formula can be found in <a href="https://www.hexwiki.net/index.php/Elo_rating#Definition"> this page</a>. </p>
92
+ <h2>3.5. Human-Verified Auto Evaluation</h2>
93
+ <p>Although the current version of our WildBench is purely based on automatic evaluators, we aim to collect human preferences from our demo here ("🔍 Explore | 🆚 Evaluate") and then incorporate these human evaluation for mitigating the bias of GPT-4 based evaluation. We also plan to recruit domain experts for further improving the fairness of our evaluation. Please stay tuned! </p>
94
+ </div>
95
+ </details>
96
+
97
+ ---
98
+
99
+ <details>
100
+ <summary style="font-size: 1.8em; font-weight: bold;">4. How can I test my model on WildBench?</summary>
101
+ <div style="font-size: 1.4em; margin-top: 30px;">
102
+ <p>Please refer to our Github <a href="https://github.com/allenai/WildBench">here</a> and create a PR or issue to tell us the information about your model. </p>
103
+ </div>
104
+ </details>
105
+
106
+ ---
107
+
108
+ <details>
109
+ <summary style="font-size: 1.8em; font-weight: bold;">5. How do I know why a particular model is weaker than others?</summary>
110
+ <div style="font-size: 1.4em; margin-top: 30px;">
111
+ <p>Please click the tab for "🔍 Explore | 🆚 Evaluate" and select the models and task types that you're interested in. We'll sample an example with two model outputs for you to compare and you can see the model ids after you submit your feedback. </p>
112
+ </div>
113
+ </details>
114
+
115
+ ---
116
+
117
+ <details>
118
+ <summary style="font-size: 1.8em; font-weight: bold;">6. Any future plans for WildBench?</summary>
119
+ <div style="font-size: 1.4em; margin-top: 30px;">
120
+ <p>We have many todo items! The most important one is to collect human preferences for improving our evaluation. We are also going to recruit domain experts for further improving the fairness of our evaluation. As for auto-evaluation, we will add multiple auto evaluators for mitigating the bias of GPT-4 based evaluation. For example, we aim to use Claude 3 as evaluator to check if the ranking would be different. We're also developing our open-source evaluation models for supporting faster local evaluation. </p>
121
+ </div>
122
+ </details>
123
+
124
+ ---
125
+
126
+ <details>
127
+ <summary style="font-size: 1.8em; font-weight: bold;">7. How do I contact you?</summary>
128
+ <div style="font-size: 1.4em; margin-top: 30px;">
129
+ <p>Please use the community discussion board <a href="https://huggingface.co/spaces/WildEval/WildBench-Leaderboard/discussions">here</a> or the Github issues. Also, please feel free to email us at yuchenl@allenai.org and mention "WildBench" in the title. </p>
130
+ </div>
131
+ </details>
ai_icon.png ADDED
app.py ADDED
@@ -0,0 +1,461 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """A gradio app that renders a static leaderboard. This is used for Hugging Face Space."""
2
+ import ast
3
+ import argparse
4
+ import glob
5
+ import pickle
6
+ import plotly
7
+ import gradio as gr
8
+ import numpy as np
9
+ import pandas as pd
10
+ import gradio as gr
11
+ import pandas as pd
12
+ from pathlib import Path
13
+ import json
14
+ from constants import BANNER, CITATION_TEXT, WINRATE_HEATMAP, css, js_code, all_task_types, DEFAULT_LP, TASK_TYPE_STR
15
+ from datetime import datetime, timezone
16
+ from data_utils import load_eval_results, sample_an_eval_result, apply_length_penalty, post_processing, add_winrates, add_winrates_tasks
17
+ # from gradio.themes.utils import colors, fonts, sizes
18
+ from themes import Seafoam
19
+ from huggingface_hub import HfApi
20
+ # from datasets import Dataset, load_dataset, concatenate_datasets
21
+ import os, uuid
22
+ from utils_display import model_info
23
+
24
+ # get the last updated time from the elo_ranks.all.jsonl file
25
+ LAST_UPDATED = None
26
+ with open("_intro.md", "r") as f:
27
+ INTRO_MD = f.read()
28
+
29
+ with open("_about_us.md", "r") as f:
30
+ ABOUT_MD = f.read()
31
+
32
+ with open("_header.md", "r") as f:
33
+ HEADER_MD = f.read()
34
+
35
+ original_df, ablation_df = None, None
36
+ eval_results = load_eval_results()
37
+
38
+ available_models = [] # to be filled in later
39
+
40
+
41
+ def display_chat_history(model_selections, task_selections):
42
+ eval_item = sample_an_eval_result(eval_results, model_selections, task_selections)
43
+ session_id = eval_item["session_id"]
44
+ chats = [x["content"] for x in eval_item['conversation_input']]
45
+ # form a list of tuples of two adjacent messages in chats
46
+ chats_common = chats[:] + [None]
47
+ # chats_modelA = ["Model A Output"] + [eval_item["model_A_output"]]
48
+ # chats_modelB = ["Model B Output"] + [eval_item["model_B_output"]]
49
+ chats_modelA = [None] + [eval_item["model_A_output"]]
50
+ chats_modelB = [None] + [eval_item["model_B_output"]]
51
+ message_history_common = [(chats_common[i], chats_common[i+1]) for i in range(0, len(chats_common) -1, 2)]
52
+ message_history_model_A = [(chats_modelA[i], chats_modelA[i+1]) for i in range(0, len(chats_modelA) -1, 2)]
53
+ message_history_model_B = [(chats_modelB[i], chats_modelB[i+1]) for i in range(0, len(chats_modelB) -1, 2)]
54
+ checklist_string = ""
55
+ for item in eval_item["checklist"]:
56
+ checklist_string += f"1. {item}\n"
57
+ list_reasons = eval_item["reason"].strip().split(". ")
58
+ # remove the last one if it is empty
59
+ if list_reasons[-1] == "":
60
+ list_reasons = list_reasons[:-1]
61
+ list_reasons = "\n".join([f"- {item}." for item in list_reasons])
62
+ gpt4_reason = f"### Choice: {eval_item['choice']}. Reason: ⬇️\n" + list_reasons
63
+ assignment_string = f"Model A: {eval_item['model_A']} | Model B: {eval_item['model_B']}"
64
+ user_intent = f"- 🆔: `{session_id}` \n- 💬 **User Intent:** {eval_item['intent']} \n- ⚙️ **Task category**: {', '.join(eval_item['all_tags'])}"
65
+ return session_id, user_intent, message_history_common, message_history_model_A, message_history_model_B, gpt4_reason, checklist_string, assignment_string
66
+
67
+
68
+
69
+
70
+ def slider_change_main(length_penalty):
71
+ global original_df, ablation_df
72
+ adjusted_df = apply_length_penalty(original_df, ablation_df, length_penalty)
73
+ adjusted_df = adjusted_df[["Model", "Overall Elo", "Task-Avg Elo", "# battles", "Length"]]
74
+ adjusted_df = adjusted_df.sort_values(by="Overall Elo", ascending=False)
75
+ adjusted_df = add_winrates(adjusted_df)
76
+ adjusted_df = adjusted_df.drop(columns=["Length"])
77
+ return adjusted_df
78
+
79
+ def slider_change_full(length_penalty, show_winrate):
80
+ global original_df, ablation_df
81
+ adjusted_df = apply_length_penalty(original_df, ablation_df, length_penalty)
82
+ # sort the model by the "Task-Avg Elo" column
83
+ adjusted_df = adjusted_df.sort_values(by="Task-Avg Elo", ascending=False)
84
+ adjusted_df.drop(columns=["Overall Elo", "Task-Avg Elo", "# battles", "Length"], inplace=True)
85
+ if show_winrate == "none":
86
+ return adjusted_df
87
+ elif show_winrate == "gpt-3.5":
88
+ adjusted_df = add_winrates_tasks(adjusted_df, ref="gpt-3.5")
89
+ elif show_winrate == "gpt-4":
90
+ adjusted_df = add_winrates_tasks(adjusted_df, ref="gpt-4")
91
+ return adjusted_df
92
+
93
+ seafoam = Seafoam()
94
+ def build_demo(TYPES):
95
+ global original_df, ablation_df, skip_empty_original_df, skip_empty_ablation_df, available_models
96
+ with gr.Blocks(theme=gr.themes.Soft(), css=css) as demo:
97
+ # with gr.Blocks(theme=seafoam, css=css) as demo:
98
+ gr.HTML(BANNER, elem_id="banner")
99
+ # gr.Markdown("### Work in progress. Please do not share.", elem_classes="markdown-text") # TODO: remove this later.
100
+ gr.Markdown(HEADER_MD, elem_classes="markdown-text")
101
+
102
+
103
+ with gr.Tabs(elem_classes="tab-buttons") as tabs:
104
+ with gr.TabItem("🏅 Leaderboard", elem_id="od-benchmark-tab-table", id=0):
105
+ gr.Markdown(f"**Version**: WildBench (v1.0; 2024.03.07) | **# Examples**: 1024 | **# Models**: {len(available_models)} | **# Comparisons**: 26k", elem_classes="markdown-text")
106
+
107
+ with gr.TabItem("Main Table", elem_id="od-benchmark-tab-table-ablation", id=0, elem_classes="subtab"):
108
+ # original_df, ablation_df = skip_empty_original_df, skip_empty_ablation_df
109
+ default_main_df = apply_length_penalty(original_df, ablation_df, length_penalty=DEFAULT_LP)
110
+ default_main_df = default_main_df[["Model", "Overall Elo", "Task-Avg Elo", "# battles", "Length"]]
111
+ default_main_df = add_winrates(default_main_df)
112
+ default_main_df = default_main_df.drop(columns=["Length"])
113
+ # TODO: add the win rate for GPT-4 and GPT-3.5T
114
+ with gr.Row():
115
+ with gr.Column(scale=4):
116
+ gr.Markdown("**Overall Elo**: [Standard Elo rating with boostrap.](https://en.wikipedia.org/wiki/Elo_rating_system). | **Task-Avg Elo**: Compute Elo on subsets of each task type and then take avg. | **Win Rates**: [Estimated by Elo differences](https://www.hexwiki.net/index.php/Elo_rating#Definition). | **Length penalty**: Models w/ longer outputs are penalized. (Plz check 📖 **Details**.)", elem_classes="markdown-text-small top-left-LP")
117
+ with gr.Column(scale=0.8):
118
+ length_penlty_slider = gr.Slider(minimum=0.1, maximum=1, step=0.1, value=DEFAULT_LP, label="Length Penalty", elem_id="length-penalty-slider")
119
+ # checkbox_skip_empty = gr.Checkbox(label="Skip empty results", value=False, elem_id="skip-empty-checkbox", scale=2)
120
+ leaderboard_table = gr.components.Dataframe(
121
+ value=default_main_df,
122
+ datatype=TYPES,
123
+ # max_rows=None,
124
+ height=1000,
125
+ elem_id="leaderboard-table",
126
+ interactive=False,
127
+ visible=True,
128
+ min_width=60,
129
+ )
130
+ length_penlty_slider.change(fn=slider_change_main, inputs=[length_penlty_slider], outputs=[leaderboard_table])
131
+
132
+
133
+ with gr.TabItem("All Tasks (Win% vs GPT-3.5T)", elem_id="od-benchmark-tab-table-ablation", id=1):
134
+ with gr.Row():
135
+ with gr.Column(scale=4):
136
+ gr.Markdown(TASK_TYPE_STR, elem_classes="markdown-text-small top-left-LP")
137
+ with gr.Column(scale=0.8):
138
+ length_penlty_slider_full = gr.Slider(minimum=0.1, maximum=1, step=0.1, value=DEFAULT_LP, label="Length Penalty", elem_id="length-penalty-slider")
139
+ default_full_df = apply_length_penalty(original_df, ablation_df, length_penalty=DEFAULT_LP)
140
+ # do not show the "# battles" column here
141
+ default_full_df = default_full_df.drop(columns=["Overall Elo", "Task-Avg Elo", "# battles", "Length"])
142
+ default_full_df = add_winrates_tasks(default_full_df, ref="gpt-3.5")
143
+
144
+ leaderboard_table_full = gr.components.Dataframe(
145
+ value=default_full_df,
146
+ datatype=TYPES,
147
+ # max_rows=None,
148
+ height=1000,
149
+ elem_id="leaderboard-table-full_table",
150
+ interactive=False,
151
+ visible=True,
152
+ min_width=60,
153
+ )
154
+ show_winrate = gr.Checkbox(value="gpt-3.5", visible=False)
155
+ length_penlty_slider_full.change(fn=slider_change_full, inputs=[length_penlty_slider_full, show_winrate], outputs=[leaderboard_table_full])
156
+
157
+
158
+ with gr.TabItem("All Tasks (Win% vs GPT-4)", elem_id="od-benchmark-tab-table-ablation", id=2):
159
+ with gr.Row():
160
+ with gr.Column(scale=4):
161
+ gr.Markdown(TASK_TYPE_STR, elem_classes="markdown-text-small top-left-LP")
162
+ with gr.Column(scale=0.8):
163
+ length_penlty_slider_full = gr.Slider(minimum=0.1, maximum=1, step=0.1, value=DEFAULT_LP, label="Length Penalty", elem_id="length-penalty-slider")
164
+ default_full_df = apply_length_penalty(original_df, ablation_df, length_penalty=DEFAULT_LP)
165
+ # do not show the "# battles" column here
166
+ default_full_df = default_full_df.drop(columns=["Overall Elo", "Task-Avg Elo", "# battles", "Length"])
167
+ default_full_df = add_winrates_tasks(default_full_df, ref="gpt-4")
168
+ leaderboard_table_full = gr.components.Dataframe(
169
+ value=default_full_df,
170
+ datatype=TYPES,
171
+ # max_rows=None,
172
+ height=1000,
173
+ elem_id="leaderboard-table-full_table",
174
+ interactive=False,
175
+ visible=True,
176
+ min_width=60,
177
+ )
178
+ show_winrate = gr.Checkbox(value="gpt-4", visible=False)
179
+ length_penlty_slider_full.change(fn=slider_change_full, inputs=[length_penlty_slider_full, show_winrate], outputs=[leaderboard_table_full])
180
+
181
+
182
+ with gr.TabItem("All Tasks (Elo)", elem_id="od-benchmark-tab-table-ablation", id=3):
183
+ with gr.Row():
184
+ with gr.Column(scale=4):
185
+ gr.Markdown(TASK_TYPE_STR, elem_classes="markdown-text-small top-left-LP")
186
+ with gr.Column(scale=0.8):
187
+ length_penlty_slider_full = gr.Slider(minimum=0.1, maximum=1, step=0.1, value=DEFAULT_LP, label="Length Penalty", elem_id="length-penalty-slider")
188
+ default_full_df = apply_length_penalty(original_df, ablation_df, length_penalty=DEFAULT_LP)
189
+ # do not show the "# battles" column here
190
+ default_full_df = default_full_df.drop(columns=["Overall Elo", "Task-Avg Elo", "# battles", "Length"])
191
+ leaderboard_table_full = gr.components.Dataframe(
192
+ value=default_full_df,
193
+ datatype=TYPES,
194
+ # max_rows=None,
195
+ height=1000,
196
+ elem_id="leaderboard-table-full_table",
197
+ interactive=False,
198
+ visible=True,
199
+ min_width=60,
200
+ )
201
+ show_winrate = gr.Checkbox(value="none", visible=False)
202
+ length_penlty_slider_full.change(fn=slider_change_full, inputs=[length_penlty_slider_full, show_winrate], outputs=[leaderboard_table_full])
203
+
204
+
205
+ # with gr.TabItem("Pairwise Win Rates", elem_id="od-benchmark-tab-table-ablation", id=4):
206
+ # # TODO: show all winrate
207
+ # # winrates_heatmap = pickle.load(open("data_dir/pairwise_win_fractions.pkl", "rb"))
208
+ # # gr.Plot(value=winrates_heatmap, scale=2, min_width=800, container=False, elem_classes="plotly-plot", visible=True)
209
+ # gr.HTML(WINRATE_HEATMAP, visible=True)
210
+
211
+ with gr.TabItem("📖 Details", elem_id="od-benchmark-tab-table", id=1):
212
+ gr.Markdown(INTRO_MD, elem_classes="markdown-text-details")
213
+
214
+ with gr.TabItem("🔍 Explore | 🆚 Evaluate", elem_id="od-benchmark-tab-table", id=2):
215
+
216
+ with gr.Row():
217
+ btn_show_history = gr.Button("🎲 Click here to sample an example + a pair of LLM outputs! ", elem_classes="sample_button")
218
+
219
+ with gr.Row():
220
+ with gr.Column(scale=1.5):
221
+ with gr.Accordion("Choose models to sample from", open=False, elem_classes="accordion-label"):
222
+ model_options = available_models
223
+ selected_models = gr.CheckboxGroup(model_options, info="", value=model_options, show_label=False, elem_id="select-models")
224
+ clear_button = gr.Button("Clear", elem_classes="btn_boderline_gray", scale=1)
225
+ # clear the selected_models
226
+ clear_button.click(lambda: {selected_models: {"value": [], "__type__": "update"}}, inputs=[], outputs=[selected_models])
227
+ with gr.Column(scale=1):
228
+ with gr.Accordion("Choose task types to sample from", open=False, elem_classes="accordion-label"):
229
+ select_tasks = gr.CheckboxGroup(all_task_types, info="", value=all_task_types, show_label=False, elem_id="select-tasks")
230
+ clear_task_button = gr.Button("Clear", elem_classes="btn_boderline_gray", scale=1)
231
+ # clear the select_tasks
232
+ clear_task_button.click(lambda: {select_tasks: {"value": [], "__type__": "update"}}, inputs=[], outputs=[select_tasks])
233
+
234
+ with gr.Row():
235
+ with gr.Column():
236
+ gr.Markdown("## 📢 Chat History", elem_classes="markdown-text")
237
+ Chatbot_Common = gr.Chatbot(avatar_images=["human_icon.jpeg", "ai_icon.png"], height="auto", container=False, label="Common Chat History", likeable=False, show_share_button=False, show_label=True, elem_classes="chat-common", layout="bubble")
238
+ Chatbot_Common.change(lambda x: x, inputs=[], outputs=[], scroll_to_output=False, js=js_code)
239
+ with gr.Accordion("✍️ Task Annotation", elem_classes="accordion-label", open=False):
240
+ user_intent = gr.Markdown("", elem_classes="markdown-text-small")
241
+ # two columns for the two models
242
+ with gr.Row():
243
+ # https://www.gradio.app/docs/chatbot
244
+ with gr.Column():
245
+ gr.Markdown("## ⬅️ Model A Output", elem_classes="markdown-text")
246
+ Chatbot_A = gr.Chatbot(height="auto", container=False, label="Model A Output", likeable=False, show_share_button=False, show_label=True, elem_classes="chat-specific", layout="bubble")
247
+ Chatbot_A.change(lambda x: x, inputs=[], outputs=[], scroll_to_output=False, js=js_code)
248
+ with gr.Column():
249
+ # add a Markdown to show this is for Model B
250
+ gr.Markdown("## ➡️ Model B Output", elem_classes="markdown-text")
251
+ Chatbot_B = gr.Chatbot(height="auto", container=False, label="Model B Output", likeable=False, show_share_button=False, show_label=True, elem_classes="chat-specific", layout="bubble")
252
+ Chatbot_B.change(lambda x: x, inputs=[], outputs=[], scroll_to_output=False, js=js_code)
253
+ with gr.Row():
254
+ # Here we can show the GPT-4 judgement for the model outputs
255
+ # show a textarea
256
+ with gr.Column():
257
+ with gr.Accordion("⏱️ Checklist", open=False, elem_classes="accordion-label"):
258
+ checklist = gr.Markdown("### Checklist: \n Will be shown later.", elem_classes="markdown-text-tiny")
259
+ with gr.Accordion("⚖️ GPT-4 Judgement", open=False, elem_classes="accordion-label") as gpt4_accordion:
260
+ # gpt4_reason = gr.TextArea(label="GPT-4 Judgement", placeholder="Will be shown later.", type="text", elem_classes="", max_lines=10, show_copy_button=True)
261
+ gpt4_reason = gr.Markdown("Will be shown later.", elem_classes="markdown-text-tiny")
262
+
263
+ with gr.Row():
264
+ # show buttons for user to choose which model output is better or Tie
265
+ btn_model_A = gr.Button("⬅️ Model A is better! ", elem_classes="btn_boderline_gray", scale=2, interactive=False)
266
+ btn_tie = gr.Button("🟰 Tie", elem_classes="btn_boderline_gray", scale=2, interactive=False)
267
+ btn_model_B = gr.Button("➡️ Model B is better!", elem_classes="btn_boderline_gray", scale=2, interactive=False)
268
+ # TODO: if click btn_model_A, btn_model_B, or btn_tie, then show a text box and a submit button for the user to input the reason
269
+ with gr.Row():
270
+ with gr.Column(scale=2):
271
+ reason_textbox = gr.Textbox(label="Reason", placeholder="Please input your reason here.", type="text", elem_classes="", max_lines=10, lines=8, show_copy_button=False, visible=True, scale=4, interactive=True)
272
+ with gr.Column():
273
+ with gr.Row():
274
+ user_choice = gr.Markdown("Your choice: N/A", elem_classes="markdown-text", visible=True)
275
+ btn_pass = gr.Button("🔁 Next", elem_classes="btn_boderline_next", scale=1)
276
+ user_name = gr.Textbox(label="Your HF Username", placeholder="Your HuggingFace username", type="text", elem_classes="", max_lines=1, show_copy_button=False, visible=True, interactive=True, show_label=False)
277
+ # login_btn = gr.LoginButton(visible=False, interactive=True, elem_classes="btn_boderline")
278
+ submit_button = gr.Button("Submit your feedback! 🚀", elem_classes="btn_boderline", visible=True, interactive=False)
279
+ assignment = gr.Markdown("Model A: | Model B: ", elem_classes="markdown-text-tiny-red", visible=False)
280
+
281
+
282
+ session_id = gr.Textbox(label="Session ID", placeholder="N/A.", type="text", elem_classes="", max_lines=10, show_copy_button=False, visible=False)
283
+ def show_reason_and_submit(session_id, user_name_text, btn, request: gr.Request):
284
+
285
+ if request.username is not None:
286
+ user_name_text = request.username
287
+ result_dict = {
288
+ reason_textbox: {"visible": True, "__type__": "update"},
289
+ submit_button: {"visible": True, "__type__": "update", "interactive": True},
290
+ user_name: {"visible": True, "__type__": "update", "value": user_name_text},
291
+ }
292
+ if "Model A" in btn:
293
+ choice = "Model A"
294
+ result_dict.update({
295
+ user_choice: {"value": f"Your choice: **{choice}**", "__type__": "update", "visible": True},
296
+ btn_model_A: {"elem_classes": "btn_boderline_selected", "__type__": "update"},
297
+ btn_model_B: {"elem_classes": "btn_boderline", "__type__": "update"},
298
+ btn_tie: {"elem_classes": "btn_boderline", "__type__": "update"},
299
+ })
300
+ elif "Model B" in btn:
301
+ choice = "Model B"
302
+ result_dict.update({
303
+ user_choice: {"value": f"Your choice: **{choice}**", "__type__": "update", "visible": True},
304
+ btn_model_B: {"elem_classes": "btn_boderline_selected", "__type__": "update"},
305
+ btn_model_A: {"elem_classes": "btn_boderline", "__type__": "update"},
306
+ btn_tie: {"elem_classes": "btn_boderline", "__type__": "update"},
307
+ })
308
+ elif "Tie" in btn:
309
+ choice = "Tie"
310
+ result_dict.update({
311
+ user_choice: {"value": f"Your choice: **{choice}**", "__type__": "update", "visible": True},
312
+ btn_tie: {"elem_classes": "btn_boderline_selected", "__type__": "update"},
313
+ btn_model_A: {"elem_classes": "btn_boderline", "__type__": "update"},
314
+ btn_model_B: {"elem_classes": "btn_boderline", "__type__": "update"},
315
+ })
316
+ else:
317
+ choice = "N/A"
318
+ result_dict.update({
319
+ user_choice: {"value": f"Your choice: **{choice}**", "__type__": "update", "visible": True},
320
+ })
321
+ return result_dict
322
+
323
+ btn_model_A.click(show_reason_and_submit, inputs=[session_id, user_name, btn_model_A], outputs=[user_choice, reason_textbox, submit_button, user_name, btn_model_A, btn_tie, btn_model_B])
324
+ btn_tie.click(show_reason_and_submit, inputs=[session_id, user_name, btn_tie], outputs=[user_choice, reason_textbox, submit_button, user_name, btn_model_A, btn_tie, btn_model_B])
325
+ btn_model_B.click(show_reason_and_submit, inputs=[session_id, user_name, btn_model_B], outputs=[user_choice, reason_textbox, submit_button, user_name, btn_model_A, btn_tie, btn_model_B])
326
+
327
+ def submit_feedback(session_id, user_reason, user_choice, user_name_text, request: gr.Request):
328
+ if "N/A" in session_id or "N/A" in user_choice:
329
+ # send a message to the user to sample an example and select a choice first
330
+ return {
331
+ submit_button: {"interactive": True, "__type__": "update", "value": "Submit your feedback! 🚀 Please sample an example and select a choice!"},
332
+ }
333
+ # create a jsonl file and upload it to hf
334
+ choice_str = ""
335
+ if "Model A" in user_choice:
336
+ choice_str = "Model A"
337
+ elif "Model B" in user_choice:
338
+ choice_str = "Model B"
339
+ elif "Tie" in user_choice:
340
+ choice_str = "Tie"
341
+ else:
342
+ choice_str = "N/A"
343
+ if user_name_text == "" and request.username is None:
344
+ user_name_text = "Anonymous"
345
+ if request.username is not None:
346
+ user_name_text = request.username
347
+ feedback_item = {
348
+ "session_id": session_id,
349
+ "user_name": user_name_text,
350
+ "user_reason": user_reason,
351
+ "user_choice": choice_str,
352
+ "ip": request.client.host
353
+ }
354
+ jsonl_str = json.dumps(feedback_item)
355
+ api = HfApi()
356
+ token = os.getenv("HF_TOKEN")
357
+ if token is None:
358
+ raise ValueError("Hugging Face token not found. Ensure the HF_TOKEN environment variable is set.")
359
+
360
+ # Generate a random filename using UUID
361
+ filename = f"{uuid.uuid4()}.json"
362
+
363
+ # Define the repository
364
+ repo_id = "WildEval/WildBench-HumanFeedback"
365
+
366
+ # Upload the json_str as a file directly to the specified path in your dataset repository
367
+ api.upload_file(
368
+ token=token,
369
+ repo_id=repo_id,
370
+ repo_type="dataset",
371
+ path_or_fileobj=jsonl_str.encode("utf-8"), # Convert string to bytes
372
+ path_in_repo=filename,
373
+ commit_message=f"Add user feedback for session_id: {session_id}",
374
+ )
375
+ return {
376
+ submit_button: {"interactive": False, "__type__": "update", "value": "Submitted! ✅ \n Please click 🔁 Next."},
377
+ reason_textbox: {"interactive": False, "__type__": "update"},
378
+ btn_model_A: {"interactive": False, "__type__": "update"},
379
+ btn_tie: {"interactive": False, "__type__": "update"},
380
+ btn_model_B: {"interactive": False, "__type__": "update"},
381
+ user_name: {"interactive": False, "__type__": "update"},
382
+ assignment: {"visible": True, "__type__": "update"}
383
+ }
384
+ def reset_submission(session_id):
385
+ return {
386
+ submit_button: {"interactive": False, "__type__": "update", "value": "Submit your feedback! 🚀"},
387
+ reason_textbox: {"interactive": True, "__type__": "update", "value": ""},
388
+ btn_model_A: {"interactive": True, "__type__": "update", "elem_classes": "btn_boderline_gray"},
389
+ btn_tie: {"interactive": True, "__type__": "update", "elem_classes": "btn_boderline_gray"},
390
+ btn_model_B: {"interactive": True, "__type__": "update", "elem_classes": "btn_boderline_gray"},
391
+ user_name: {"interactive": True, "__type__": "update"},
392
+ user_choice: {"value": "Your choice: N/A", "__type__": "update"},
393
+ assignment: {"__type__": "update", "visible": False},
394
+ gpt4_accordion: {"__type__": "update", "open": False},
395
+ }
396
+ # reset the reason_textbox, submit_button, and btn_model_A
397
+ session_id.change(reset_submission, inputs=[session_id], outputs=[submit_button, reason_textbox, btn_model_A, btn_tie, btn_model_B, user_name, user_choice, assignment, gpt4_accordion])
398
+ submit_button.click(submit_feedback, inputs=[session_id, reason_textbox, user_choice, user_name], outputs=[submit_button, reason_textbox, btn_model_A, btn_tie, btn_model_B, user_name, assignment])
399
+
400
+ # Display chat history when button is clicked
401
+ # TODO: add the model list and tag list
402
+ btn_show_history.click(fn=display_chat_history, inputs=[selected_models, select_tasks], outputs=[session_id, user_intent, Chatbot_Common, Chatbot_A, Chatbot_B, gpt4_reason, checklist, assignment])
403
+ btn_pass.click(fn=display_chat_history, inputs=[selected_models, select_tasks], outputs=[session_id, user_intent, Chatbot_Common, Chatbot_A, Chatbot_B, gpt4_reason, checklist, assignment]) # the pass button will be the same function of resampling
404
+
405
+ with gr.TabItem("📮 About Us", elem_id="od-benchmark-tab-table", id=3):
406
+ gr.Markdown(ABOUT_MD, elem_classes="markdown-text")
407
+ gr.Markdown(f"Last updated on **{LAST_UPDATED}**", elem_classes="markdown-text-small")
408
+
409
+ with gr.Row():
410
+ with gr.Accordion("📙 Citation", open=False, elem_classes="accordion-label"):
411
+ gr.Textbox(
412
+ value=CITATION_TEXT,
413
+ lines=7,
414
+ label="Copy the BibTeX snippet to cite this source",
415
+ elem_id="citation-button",
416
+ show_copy_button=True)
417
+ # ).style(show_copy_button=True)
418
+
419
+ return demo
420
+
421
+
422
+
423
+ if __name__ == "__main__":
424
+ parser = argparse.ArgumentParser()
425
+ parser.add_argument("--share", action="store_true")
426
+ parser.add_argument("--result_file", help="Path to results table", default="data_dir/elo_ranks.all.jsonl")
427
+ parser.add_argument("--length_balation_file", help="Path to results table", default="data_dir/elo_ranks.length_ablation.all.jsonl")
428
+ parser.add_argument("--skip_empty_result_file", help="Path to results table", default="data_dir/elo_ranks.skip_empty.all.jsonl")
429
+ parser.add_argument("--skip_empty_length_balation_file", help="Path to results table", default="data_dir/elo_ranks.skip_empty.length_ablation.all.jsonl")
430
+ args = parser.parse_args()
431
+
432
+ LAST_UPDATED = datetime.fromtimestamp(Path(args.result_file).stat().st_mtime, tz=timezone.utc).strftime("%Y-%m-%d %H:%M:%S")
433
+
434
+ original_df = pd.read_json(args.result_file , lines=True)
435
+ ablation_df = pd.read_json(args.length_balation_file, lines=True)
436
+ skip_empty_original_df = pd.read_json(args.skip_empty_result_file , lines=True)
437
+ skip_empty_ablation_df = pd.read_json(args.skip_empty_length_balation_file, lines=True)
438
+
439
+
440
+ # available_models = sorted(list(set(list(original_df["model name "]))))
441
+ available_models = list(model_info.keys())
442
+ # remove the rows where the model name is not in the available_models
443
+ original_df = original_df[original_df["model name "].isin(available_models)]
444
+ ablation_df = ablation_df[ablation_df["model name "].isin(available_models)]
445
+ skip_empty_ablation_df = skip_empty_ablation_df[skip_empty_ablation_df["model name "].isin(available_models)]
446
+ skip_empty_original_df = skip_empty_original_df[skip_empty_original_df["model name "].isin(available_models)]
447
+
448
+ model_len_info = json.load(open("model_len_info.json", "r"))
449
+
450
+ original_df = post_processing(original_df, model_len_info)
451
+ ablation_df = post_processing(ablation_df, model_len_info)
452
+ skip_empty_original_df = post_processing(skip_empty_original_df, model_len_info)
453
+ skip_empty_ablation_df = post_processing(skip_empty_ablation_df, model_len_info)
454
+
455
+
456
+
457
+
458
+ TYPES = ["markdown", "number"]
459
+
460
+ demo = build_demo(TYPES)
461
+ demo.launch(share=args.share, height=1000)
assets/.DS_Store ADDED
Binary file (6.15 kB). View file
 
compute_model_output_len.py ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from utils_display import model_info
2
+ from data_utils import load_infer_results
3
+ from tqdm import tqdm
4
+ import json
5
+
6
+ length_info = {}
7
+
8
+ for model_name in tqdm(list(model_info.keys())):
9
+ result = load_infer_results(model_name)
10
+ lens = []
11
+ for item in result:
12
+ o = item["output"]
13
+ if type(o) == list:
14
+ L = len(o[0].strip())
15
+ else:
16
+ L = len(o.strip())
17
+ if L > 0:
18
+ lens.append(L)
19
+ avg_len = sum(lens) / len(lens)
20
+ print(f"{model_name}: {avg_len}")
21
+ length_info[model_name] = avg_len
22
+
23
+ with open("model_len_info.json", "w") as f:
24
+ json.dump(length_info, f, indent=2)
constants.py ADDED
@@ -0,0 +1,194 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pathlib import Path
2
+
3
+ DEFAULT_LP = 0.3
4
+
5
+ banner_url = "https://allenai.github.io/WildBench/gray_banner.png" # the same repo here.
6
+ BANNER = f'<div style="display: flex; justify-content: flex-start;"><img src="{banner_url}" alt="Banner" style="width: 40vw; min-width: 300px; max-width: 800px;"> </div>'
7
+
8
+ TITLE = "<html> <head> <style> h1 {text-align: center;} </style> </head> <body> <h1> 🦁 AI2 WildBench Leaderboard </b> </body> </html>"
9
+
10
+ WINRATE_HEATMAP = "<div><img src='https://github.com/WildEval/WildBench-Leaderboard/blob/main/gradio/pairwise_win_fractions.png?raw=true' style='width:100%;'></div>"
11
+
12
+ CITATION_TEXT = """@misc{wildbench2024,
13
+ title = {WildBench: Benchmarking LLMs with Challenging Tasks from Real Users in the Wild},
14
+ author = {Bill Yuchen Lin and Khyathi Chandu and Faeze Brahman and Yuntian Deng and Abhilasha Ravichander and Valentina Pyatkin and Ronan Le Bras and Yejin Choi},
15
+ year = 2024,
16
+ url = {https://huggingface.co/spaces/allenai/WildBench},
17
+ }
18
+ """
19
+
20
+
21
+ column_names = {
22
+ "model name ": "Model",
23
+ "elo overall": "Overall Elo",
24
+ 'Information seeking': 'InfoSek',
25
+ 'Creative Writing': 'CrtWrt',
26
+ 'Coding & Debugging': 'Code',
27
+ 'Reasoning': 'Reason',
28
+ 'Editing': 'Edit',
29
+ 'Math': 'Math',
30
+ 'Planning': 'Plan',
31
+ 'Brainstorming': 'Brnstrm',
32
+ 'Role playing': 'RolPly',
33
+ 'Advice seeking': 'AdvSek',
34
+ 'Data Analysis': 'DataAna',
35
+ 'Others': 'Misc',
36
+ "average": "Task-Avg Elo",
37
+ }
38
+
39
+ all_task_types = [
40
+ 'Information seeking',
41
+ 'Creative Writing',
42
+ 'Coding & Debugging',
43
+ 'Reasoning',
44
+ 'Editing',
45
+ 'Math',
46
+ 'Planning',
47
+ 'Brainstorming',
48
+ 'Role playing',
49
+ 'Advice seeking',
50
+ 'Data Analysis',
51
+ 'Others'
52
+ ]
53
+
54
+
55
+
56
+ js_code = """
57
+ function scroll_top() {
58
+ console.log("Hello from Gradio!");
59
+ const bubbles = document.querySelectorAll('.bubble-wrap');
60
+ bubbles.forEach((bubble, index) => {
61
+ setTimeout(() => {
62
+ bubble.scrollTop = 0;
63
+ }, index * 100); // Delay of 100ms between each iteration
64
+ });
65
+ }
66
+ """
67
+
68
+
69
+ TASK_TYPE_STR = "**Tasks**: Info seeking (**InfoSek**), Creative Writing (**CrtWrt**), Coding&Debugging (**Code**), Reasoning (**Reason**), Editing (**Edit**), **Math**, Planning (**Plan**), Brainstorming (**Brnstrm**), Role playing (**RolPly**), Advice seeking (**AdvSek**), Data Analysis (**DataAna**)"
70
+
71
+ css = """
72
+ code {
73
+ font-size: large;
74
+ }
75
+ footer {visibility: hidden}
76
+ .top-left-LP{
77
+ margin-top: 6px;
78
+ margin-left: 5px;
79
+ }
80
+ .markdown-text{font-size: 14pt}
81
+ .markdown-text-small{font-size: 13pt}
82
+ .markdown-text-tiny{font-size: 12pt}
83
+ .markdown-text-tiny-red{
84
+ font-size: 12pt;
85
+ color: red;
86
+ background-color: yellow;
87
+ font-color: red;
88
+ font-weight: bold;
89
+ }
90
+ th {
91
+ text-align: center;
92
+ font-size: 17px; /* Adjust the font size as needed */
93
+ }
94
+ td {
95
+ font-size: 15px; /* Adjust the font size as needed */
96
+ text-align: center;
97
+ }
98
+
99
+ .sample_button{
100
+ border: 1px solid #000000;
101
+ border-radius: 5px;
102
+ padding: 5px;
103
+ font-size: 15pt;
104
+ font-weight: bold;
105
+ margin: 5px;
106
+ }
107
+
108
+ .chat-common{
109
+ height: auto;
110
+ max-height: 400px;
111
+ min-height: 100px;
112
+ }
113
+ .chat-specific{
114
+ height: auto;
115
+ max-height: 600px;
116
+ min-height: 200px;
117
+ }
118
+ #od-benchmark-tab-table-button{
119
+ font-size: 15pt;
120
+ font-weight: bold;
121
+ }
122
+
123
+ .btn_boderline{
124
+ border: 1px solid #000000;
125
+ border-radius: 5px;
126
+ padding: 5px;
127
+ margin: 5px;
128
+ font-size: 15pt;
129
+ font-weight: bold;
130
+ }
131
+
132
+ .btn_boderline_next{
133
+ border: 0.1px solid #000000;
134
+ border-radius: 5px;
135
+ padding: 5px;
136
+ margin: 5px;
137
+ font-size: 15pt;
138
+ font-weight: bold;
139
+ }
140
+
141
+ .btn_boderline_gray{
142
+ border: 0.5px solid gray;
143
+ border-radius: 5px;
144
+ padding: 5px;
145
+ margin: 5px;
146
+ font-size: 15pt;
147
+ font-weight: italic;
148
+ }
149
+ .btn_boderline_selected{
150
+ border: 2px solid purple;
151
+ background-color: #f2f2f2;
152
+ border-radius: 5px;
153
+ padding: 5px;
154
+ margin: 5px;
155
+ font-size: 15pt;
156
+ font-weight: bold;
157
+ }
158
+ .accordion-label button span{
159
+ font-size: 14pt;
160
+ font-weight: bold;
161
+ }
162
+
163
+ #select-models span{
164
+ font-size: 10pt;
165
+ }
166
+
167
+ #select-tasks span{
168
+ font-size: 10pt;
169
+ }
170
+
171
+
172
+ .markdown-text-details{
173
+ margin: 10px;
174
+ padding: 10px;
175
+ }
176
+
177
+
178
+ button.selected[role="tab"][aria-selected="true"] {
179
+ font-size: 18px; /* or any other size you prefer */
180
+ font-weight: bold;
181
+ }
182
+
183
+ #od-benchmark-tab-table-ablation-button {
184
+ font-size: larger; /* Adjust the font size as needed */
185
+ }
186
+
187
+
188
+ .plotly-plot{
189
+ height: auto;
190
+ max-height: 600px;
191
+ min-height: 600px;
192
+ }
193
+ """
194
+
data_dir/battle_outcome.png ADDED
data_dir/battle_outcome_2d.png ADDED
data_dir/bootstrap_elo_estimates.png ADDED
data_dir/elo_ranks.all.jsonl ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"model name ": "gpt-4-0125-preview", "elo overall": 1309, "Information seeking": 1282, "Creative Writing": 1267, "Coding & Debugging": 1376, "Reasoning": 1366, "Editing": 1211, "Math": 1276, "Planning": 1299, "Brainstorming": 1322, "Role playing": 1240, "Advice seeking": 1295, "Data Analysis": 1286, "Others": 1068, "average": 1274.0, "# battles": 5429}
2
+ {"model name ": "claude-3-opus-20240229", "elo overall": 1155, "Information seeking": 1131, "Creative Writing": 1066, "Coding & Debugging": 1282, "Reasoning": 1204, "Editing": 1146, "Math": 1160, "Planning": 1159, "Brainstorming": 1111, "Role playing": 964, "Advice seeking": 1114, "Data Analysis": 1151, "Others": 1031, "average": 1126.5833333333333, "# battles": 2366}
3
+ {"model name ": "claude-3-sonnet-20240229", "elo overall": 1140, "Information seeking": 1115, "Creative Writing": 1081, "Coding & Debugging": 1247, "Reasoning": 1170, "Editing": 1152, "Math": 1142, "Planning": 1163, "Brainstorming": 1092, "Role playing": 1005, "Advice seeking": 1081, "Data Analysis": 1170, "Others": 1014, "average": 1119.3333333333333, "# battles": 2608}
4
+ {"model name ": "mistral-large-2402", "elo overall": 1120, "Information seeking": 1090, "Creative Writing": 1107, "Coding & Debugging": 1155, "Reasoning": 1136, "Editing": 1097, "Math": 1092, "Planning": 1081, "Brainstorming": 1078, "Role playing": 1067, "Advice seeking": 1060, "Data Analysis": 1097, "Others": 1021, "average": 1090.0833333333333, "# battles": 1881}
5
+ {"model name ": "Mistral-7B-Instruct-v0.2", "elo overall": 1102, "Information seeking": 1084, "Creative Writing": 1138, "Coding & Debugging": 1140, "Reasoning": 1047, "Editing": 1105, "Math": 1021, "Planning": 1090, "Brainstorming": 1076, "Role playing": 1118, "Advice seeking": 1067, "Data Analysis": 1058, "Others": 1002, "average": 1078.8333333333333, "# battles": 2371}
6
+ {"model name ": "gemini-1.0-pro", "elo overall": 1073, "Information seeking": 1089, "Creative Writing": 1040, "Coding & Debugging": 1083, "Reasoning": 1067, "Editing": 1021, "Math": 1063, "Planning": 1067, "Brainstorming": 1023, "Role playing": 1032, "Advice seeking": 1072, "Data Analysis": 1090, "Others": 1007, "average": 1054.5, "# battles": 1815}
7
+ {"model name ": "Mixtral-8x7B-Instruct-v0.1", "elo overall": 1069, "Information seeking": 1079, "Creative Writing": 1050, "Coding & Debugging": 1125, "Reasoning": 1063, "Editing": 1018, "Math": 1061, "Planning": 1004, "Brainstorming": 1026, "Role playing": 1080, "Advice seeking": 1005, "Data Analysis": 1060, "Others": 993, "average": 1047.0, "# battles": 3417}
8
+ {"model name ": "Yi-34B-Chat", "elo overall": 1058, "Information seeking": 1072, "Creative Writing": 1105, "Coding & Debugging": 939, "Reasoning": 1073, "Editing": 1042, "Math": 1011, "Planning": 1094, "Brainstorming": 1140, "Role playing": 1071, "Advice seeking": 1087, "Data Analysis": 943, "Others": 997, "average": 1047.8333333333333, "# battles": 2428}
9
+ {"model name ": "Llama-2-70b-chat-hf.nosp", "elo overall": 1031, "Information seeking": 1092, "Creative Writing": 1065, "Coding & Debugging": 883, "Reasoning": 1022, "Editing": 987, "Math": 975, "Planning": 1003, "Brainstorming": 1049, "Role playing": 1070, "Advice seeking": 1036, "Data Analysis": 959, "Others": 1020, "average": 1013.4166666666666, "# battles": 1942}
10
+ {"model name ": "Llama-2-13b-chat-hf.nosp", "elo overall": 1007, "Information seeking": 1056, "Creative Writing": 1058, "Coding & Debugging": 850, "Reasoning": 975, "Editing": 986, "Math": 947, "Planning": 984, "Brainstorming": 1041, "Role playing": 1053, "Advice seeking": 1008, "Data Analysis": 912, "Others": 1014, "average": 990.3333333333334, "# battles": 1888}
11
+ {"model name ": "tulu-2-dpo-70b", "elo overall": 997, "Information seeking": 1003, "Creative Writing": 1024, "Coding & Debugging": 939, "Reasoning": 993, "Editing": 980, "Math": 975, "Planning": 965, "Brainstorming": 941, "Role playing": 1065, "Advice seeking": 976, "Data Analysis": 932, "Others": 991, "average": 982.0, "# battles": 3435}
12
+ {"model name ": "zephyr-7b-beta", "elo overall": 986, "Information seeking": 1002, "Creative Writing": 991, "Coding & Debugging": 991, "Reasoning": 962, "Editing": 981, "Math": 941, "Planning": 967, "Brainstorming": 936, "Role playing": 1022, "Advice seeking": 938, "Data Analysis": 1003, "Others": 962, "average": 974.6666666666666, "# battles": 3367}
13
+ {"model name ": "Llama-2-7b-chat-hf.nosp", "elo overall": 984, "Information seeking": 1033, "Creative Writing": 1026, "Coding & Debugging": 843, "Reasoning": 962, "Editing": 963, "Math": 908, "Planning": 987, "Brainstorming": 1003, "Role playing": 1048, "Advice seeking": 1020, "Data Analysis": 934, "Others": 1011, "average": 978.1666666666666, "# battles": 1898}
14
+ {"model name ": "gpt-3.5-turbo-0125", "elo overall": 983, "Information seeking": 935, "Creative Writing": 934, "Coding & Debugging": 1155, "Reasoning": 1018, "Editing": 994, "Math": 1148, "Planning": 986, "Brainstorming": 929, "Role playing": 924, "Advice seeking": 961, "Data Analysis": 1071, "Others": 977, "average": 1002.6666666666666, "# battles": 14003}
15
+ {"model name ": "gemma-7b-it", "elo overall": 951, "Information seeking": 931, "Creative Writing": 938, "Coding & Debugging": 993, "Reasoning": 957, "Editing": 928, "Math": 985, "Planning": 981, "Brainstorming": 984, "Role playing": 954, "Advice seeking": 973, "Data Analysis": 979, "Others": 992, "average": 966.25, "# battles": 2518}
16
+ {"model name ": "command", "elo overall": 948, "Information seeking": 939, "Creative Writing": 942, "Coding & Debugging": 969, "Reasoning": 925, "Editing": 943, "Math": 940, "Planning": 979, "Brainstorming": 988, "Role playing": 948, "Advice seeking": 964, "Data Analysis": 966, "Others": 979, "average": 956.8333333333334, "# battles": 1733}
17
+ {"model name ": "Llama-2-70b-chat-hf", "elo overall": 890, "Information seeking": 902, "Creative Writing": 902, "Coding & Debugging": 824, "Reasoning": 903, "Editing": 949, "Math": 896, "Planning": 907, "Brainstorming": 946, "Role playing": 905, "Advice seeking": 946, "Data Analysis": 927, "Others": 999, "average": 917.1666666666666, "# battles": 2391}
18
+ {"model name ": "gemma-2b-it", "elo overall": 874, "Information seeking": 843, "Creative Writing": 898, "Coding & Debugging": 894, "Reasoning": 829, "Editing": 888, "Math": 896, "Planning": 906, "Brainstorming": 919, "Role playing": 906, "Advice seeking": 891, "Data Analysis": 914, "Others": 977, "average": 896.75, "# battles": 2484}
19
+ {"model name ": "Llama-2-13b-chat-hf", "elo overall": 860, "Information seeking": 878, "Creative Writing": 866, "Coding & Debugging": 802, "Reasoning": 883, "Editing": 955, "Math": 915, "Planning": 897, "Brainstorming": 891, "Role playing": 865, "Advice seeking": 938, "Data Analysis": 885, "Others": 1007, "average": 898.5, "# battles": 2350}
20
+ {"model name ": "vicuna-13b-v1.5", "elo overall": 847, "Information seeking": 849, "Creative Writing": 862, "Coding & Debugging": 817, "Reasoning": 847, "Editing": 870, "Math": 897, "Planning": 830, "Brainstorming": 873, "Role playing": 911, "Advice seeking": 852, "Data Analysis": 879, "Others": 973, "average": 871.6666666666666, "# battles": 2478}
21
+ {"model name ": "Mistral-7B-Instruct-v0.1", "elo overall": 821, "Information seeking": 790, "Creative Writing": 800, "Coding & Debugging": 947, "Reasoning": 798, "Editing": 871, "Math": 892, "Planning": 806, "Brainstorming": 783, "Role playing": 892, "Advice seeking": 823, "Data Analysis": 922, "Others": 968, "average": 857.6666666666666, "# battles": 2479}
22
+ {"model name ": "Llama-2-7b-chat-hf", "elo overall": 806, "Information seeking": 805, "Creative Writing": 834, "Coding & Debugging": 754, "Reasoning": 806, "Editing": 917, "Math": 856, "Planning": 836, "Brainstorming": 856, "Role playing": 853, "Advice seeking": 883, "Data Analysis": 861, "Others": 997, "average": 854.8333333333334, "# battles": 2297}
data_dir/elo_ranks.jsonl ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"model name ": "gpt-4-0125-preview", "elo overall": 1309, "# battles": 5429}
2
+ {"model name ": "claude-3-opus-20240229", "elo overall": 1155, "# battles": 2366}
3
+ {"model name ": "claude-3-sonnet-20240229", "elo overall": 1140, "# battles": 2608}
4
+ {"model name ": "mistral-large-2402", "elo overall": 1120, "# battles": 1881}
5
+ {"model name ": "Mistral-7B-Instruct-v0.2", "elo overall": 1102, "# battles": 2371}
6
+ {"model name ": "gemini-1.0-pro", "elo overall": 1073, "# battles": 1815}
7
+ {"model name ": "Mixtral-8x7B-Instruct-v0.1", "elo overall": 1069, "# battles": 3417}
8
+ {"model name ": "Yi-34B-Chat", "elo overall": 1058, "# battles": 2428}
9
+ {"model name ": "Llama-2-70b-chat-hf.nosp", "elo overall": 1031, "# battles": 1942}
10
+ {"model name ": "Llama-2-13b-chat-hf.nosp", "elo overall": 1007, "# battles": 1888}
11
+ {"model name ": "tulu-2-dpo-70b", "elo overall": 997, "# battles": 3435}
12
+ {"model name ": "zephyr-7b-beta", "elo overall": 986, "# battles": 3367}
13
+ {"model name ": "Llama-2-7b-chat-hf.nosp", "elo overall": 984, "# battles": 1898}
14
+ {"model name ": "gpt-3.5-turbo-0125", "elo overall": 983, "# battles": 14003}
15
+ {"model name ": "gemma-7b-it", "elo overall": 951, "# battles": 2518}
16
+ {"model name ": "command", "elo overall": 948, "# battles": 1733}
17
+ {"model name ": "Llama-2-70b-chat-hf", "elo overall": 890, "# battles": 2391}
18
+ {"model name ": "gemma-2b-it", "elo overall": 874, "# battles": 2484}
19
+ {"model name ": "Llama-2-13b-chat-hf", "elo overall": 860, "# battles": 2350}
20
+ {"model name ": "vicuna-13b-v1.5", "elo overall": 847, "# battles": 2478}
21
+ {"model name ": "Mistral-7B-Instruct-v0.1", "elo overall": 821, "# battles": 2479}
22
+ {"model name ": "Llama-2-7b-chat-hf", "elo overall": 806, "# battles": 2297}
data_dir/elo_ranks.length_ablation.all.jsonl ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"model name ": "gpt-4-0125-preview", "elo overall": 1228, "Information seeking": 1274, "Creative Writing": 1202, "Coding & Debugging": 1224, "Reasoning": 1285, "Editing": 1132, "Math": 1202, "Planning": 1198, "Brainstorming": 1181, "Role playing": 1225, "Advice seeking": 1274, "Data Analysis": 1198, "Others": 1033, "average": 1202.3333333333333, "# battles": 5430}
2
+ {"model name ": "Mistral-7B-Instruct-v0.2", "elo overall": 1112, "Information seeking": 1102, "Creative Writing": 1136, "Coding & Debugging": 1119, "Reasoning": 1071, "Editing": 1080, "Math": 1094, "Planning": 1057, "Brainstorming": 1038, "Role playing": 1126, "Advice seeking": 1050, "Data Analysis": 1083, "Others": 1010, "average": 1080.5, "# battles": 2371}
3
+ {"model name ": "Llama-2-70b-chat-hf.nosp", "elo overall": 1112, "Information seeking": 1206, "Creative Writing": 1171, "Coding & Debugging": 938, "Reasoning": 1091, "Editing": 1057, "Math": 993, "Planning": 1105, "Brainstorming": 1136, "Role playing": 1128, "Advice seeking": 1110, "Data Analysis": 965, "Others": 1017, "average": 1076.4166666666667, "# battles": 1942}
4
+ {"model name ": "Llama-2-7b-chat-hf.nosp", "elo overall": 1107, "Information seeking": 1184, "Creative Writing": 1146, "Coding & Debugging": 937, "Reasoning": 1095, "Editing": 1017, "Math": 993, "Planning": 1113, "Brainstorming": 1140, "Role playing": 1141, "Advice seeking": 1136, "Data Analysis": 996, "Others": 1008, "average": 1075.5, "# battles": 1898}
5
+ {"model name ": "Llama-2-13b-chat-hf.nosp", "elo overall": 1096, "Information seeking": 1182, "Creative Writing": 1135, "Coding & Debugging": 924, "Reasoning": 1075, "Editing": 1038, "Math": 1004, "Planning": 1093, "Brainstorming": 1141, "Role playing": 1103, "Advice seeking": 1116, "Data Analysis": 969, "Others": 1032, "average": 1067.6666666666667, "# battles": 1888}
6
+ {"model name ": "zephyr-7b-beta", "elo overall": 1079, "Information seeking": 1027, "Creative Writing": 1094, "Coding & Debugging": 1134, "Reasoning": 1047, "Editing": 1091, "Math": 1051, "Planning": 1064, "Brainstorming": 1075, "Role playing": 1038, "Advice seeking": 985, "Data Analysis": 1092, "Others": 1017, "average": 1059.5833333333333, "# battles": 3367}
7
+ {"model name ": "Yi-34B-Chat", "elo overall": 1047, "Information seeking": 1082, "Creative Writing": 1068, "Coding & Debugging": 952, "Reasoning": 1086, "Editing": 987, "Math": 1064, "Planning": 1090, "Brainstorming": 1119, "Role playing": 1055, "Advice seeking": 1117, "Data Analysis": 970, "Others": 1004, "average": 1049.5, "# battles": 2428}
8
+ {"model name ": "tulu-2-dpo-70b", "elo overall": 1037, "Information seeking": 1012, "Creative Writing": 1068, "Coding & Debugging": 1040, "Reasoning": 1023, "Editing": 1066, "Math": 1044, "Planning": 1027, "Brainstorming": 1007, "Role playing": 1060, "Advice seeking": 1016, "Data Analysis": 1030, "Others": 1026, "average": 1034.9166666666667, "# battles": 3435}
9
+ {"model name ": "claude-3-sonnet-20240229", "elo overall": 1014, "Information seeking": 979, "Creative Writing": 944, "Coding & Debugging": 1162, "Reasoning": 1056, "Editing": 1056, "Math": 1076, "Planning": 1037, "Brainstorming": 953, "Role playing": 899, "Advice seeking": 985, "Data Analysis": 1080, "Others": 988, "average": 1017.9166666666666, "# battles": 2608}
10
+ {"model name ": "Mixtral-8x7B-Instruct-v0.1", "elo overall": 1011, "Information seeking": 1002, "Creative Writing": 1001, "Coding & Debugging": 1055, "Reasoning": 1004, "Editing": 1001, "Math": 1008, "Planning": 975, "Brainstorming": 967, "Role playing": 1029, "Advice seeking": 965, "Data Analysis": 1028, "Others": 1021, "average": 1004.6666666666666, "# battles": 3418}
11
+ {"model name ": "claude-3-opus-20240229", "elo overall": 1008, "Information seeking": 965, "Creative Writing": 941, "Coding & Debugging": 1191, "Reasoning": 1044, "Editing": 1082, "Math": 1045, "Planning": 1028, "Brainstorming": 945, "Role playing": 886, "Advice seeking": 1014, "Data Analysis": 1089, "Others": 999, "average": 1019.0833333333334, "# battles": 2367}
12
+ {"model name ": "command", "elo overall": 1000, "Information seeking": 969, "Creative Writing": 982, "Coding & Debugging": 1071, "Reasoning": 996, "Editing": 1024, "Math": 1000, "Planning": 1059, "Brainstorming": 1033, "Role playing": 951, "Advice seeking": 978, "Data Analysis": 1018, "Others": 994, "average": 1006.25, "# battles": 1733}
13
+ {"model name ": "mistral-large-2402", "elo overall": 986, "Information seeking": 944, "Creative Writing": 993, "Coding & Debugging": 1011, "Reasoning": 978, "Editing": 993, "Math": 996, "Planning": 930, "Brainstorming": 987, "Role playing": 985, "Advice seeking": 951, "Data Analysis": 1015, "Others": 1004, "average": 982.25, "# battles": 1881}
14
+ {"model name ": "Llama-2-70b-chat-hf", "elo overall": 955, "Information seeking": 978, "Creative Writing": 968, "Coding & Debugging": 861, "Reasoning": 988, "Editing": 987, "Math": 950, "Planning": 994, "Brainstorming": 1017, "Role playing": 974, "Advice seeking": 1034, "Data Analysis": 923, "Others": 1025, "average": 974.9166666666666, "# battles": 2391}
15
+ {"model name ": "gemini-1.0-pro", "elo overall": 950, "Information seeking": 940, "Creative Writing": 942, "Coding & Debugging": 998, "Reasoning": 964, "Editing": 958, "Math": 972, "Planning": 912, "Brainstorming": 946, "Role playing": 983, "Advice seeking": 923, "Data Analysis": 1004, "Others": 998, "average": 961.6666666666666, "# battles": 1816}
16
+ {"model name ": "Llama-2-13b-chat-hf", "elo overall": 934, "Information seeking": 956, "Creative Writing": 959, "Coding & Debugging": 838, "Reasoning": 940, "Editing": 983, "Math": 991, "Planning": 967, "Brainstorming": 1001, "Role playing": 978, "Advice seeking": 1013, "Data Analysis": 926, "Others": 1001, "average": 962.75, "# battles": 2350}
17
+ {"model name ": "Llama-2-7b-chat-hf", "elo overall": 924, "Information seeking": 943, "Creative Writing": 951, "Coding & Debugging": 817, "Reasoning": 943, "Editing": 961, "Math": 938, "Planning": 979, "Brainstorming": 982, "Role playing": 953, "Advice seeking": 985, "Data Analysis": 913, "Others": 1007, "average": 947.6666666666666, "# battles": 2297}
18
+ {"model name ": "Mistral-7B-Instruct-v0.1", "elo overall": 917, "Information seeking": 867, "Creative Writing": 917, "Coding & Debugging": 1006, "Reasoning": 894, "Editing": 963, "Math": 969, "Planning": 883, "Brainstorming": 870, "Role playing": 958, "Advice seeking": 857, "Data Analysis": 1011, "Others": 988, "average": 931.9166666666666, "# battles": 2480}
19
+ {"model name ": "gemma-7b-it", "elo overall": 915, "Information seeking": 914, "Creative Writing": 864, "Coding & Debugging": 1028, "Reasoning": 894, "Editing": 880, "Math": 939, "Planning": 887, "Brainstorming": 875, "Role playing": 954, "Advice seeking": 906, "Data Analysis": 988, "Others": 1002, "average": 927.5833333333334, "# battles": 2519}
20
+ {"model name ": "gemma-2b-it", "elo overall": 884, "Information seeking": 885, "Creative Writing": 890, "Coding & Debugging": 925, "Reasoning": 837, "Editing": 895, "Math": 836, "Planning": 923, "Brainstorming": 902, "Role playing": 910, "Advice seeking": 897, "Data Analysis": 911, "Others": 987, "average": 899.8333333333334, "# battles": 2484}
21
+ {"model name ": "vicuna-13b-v1.5", "elo overall": 846, "Information seeking": 837, "Creative Writing": 837, "Coding & Debugging": 830, "Reasoning": 851, "Editing": 874, "Math": 931, "Planning": 852, "Brainstorming": 879, "Role playing": 891, "Advice seeking": 883, "Data Analysis": 882, "Others": 993, "average": 878.3333333333334, "# battles": 2478}
22
+ {"model name ": "gpt-3.5-turbo-0125", "elo overall": 822, "Information seeking": 754, "Creative Writing": 789, "Coding & Debugging": 955, "Reasoning": 844, "Editing": 880, "Math": 902, "Planning": 826, "Brainstorming": 815, "Role playing": 777, "Advice seeking": 803, "Data Analysis": 918, "Others": 844, "average": 842.25, "# battles": 14003}
data_dir/elo_ranks.length_ablation.jsonl ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"model name ": "gpt-4-0125-preview", "elo overall": 1228, "# battles": 5430}
2
+ {"model name ": "Mistral-7B-Instruct-v0.2", "elo overall": 1112, "# battles": 2371}
3
+ {"model name ": "Llama-2-70b-chat-hf.nosp", "elo overall": 1112, "# battles": 1942}
4
+ {"model name ": "Llama-2-7b-chat-hf.nosp", "elo overall": 1107, "# battles": 1898}
5
+ {"model name ": "Llama-2-13b-chat-hf.nosp", "elo overall": 1096, "# battles": 1888}
6
+ {"model name ": "zephyr-7b-beta", "elo overall": 1079, "# battles": 3367}
7
+ {"model name ": "Yi-34B-Chat", "elo overall": 1047, "# battles": 2428}
8
+ {"model name ": "tulu-2-dpo-70b", "elo overall": 1037, "# battles": 3435}
9
+ {"model name ": "claude-3-sonnet-20240229", "elo overall": 1014, "# battles": 2608}
10
+ {"model name ": "Mixtral-8x7B-Instruct-v0.1", "elo overall": 1011, "# battles": 3418}
11
+ {"model name ": "claude-3-opus-20240229", "elo overall": 1008, "# battles": 2367}
12
+ {"model name ": "command", "elo overall": 1000, "# battles": 1733}
13
+ {"model name ": "mistral-large-2402", "elo overall": 986, "# battles": 1881}
14
+ {"model name ": "Llama-2-70b-chat-hf", "elo overall": 955, "# battles": 2391}
15
+ {"model name ": "gemini-1.0-pro", "elo overall": 950, "# battles": 1816}
16
+ {"model name ": "Llama-2-13b-chat-hf", "elo overall": 934, "# battles": 2350}
17
+ {"model name ": "Llama-2-7b-chat-hf", "elo overall": 924, "# battles": 2297}
18
+ {"model name ": "Mistral-7B-Instruct-v0.1", "elo overall": 917, "# battles": 2480}
19
+ {"model name ": "gemma-7b-it", "elo overall": 915, "# battles": 2519}
20
+ {"model name ": "gemma-2b-it", "elo overall": 884, "# battles": 2484}
21
+ {"model name ": "vicuna-13b-v1.5", "elo overall": 846, "# battles": 2478}
22
+ {"model name ": "gpt-3.5-turbo-0125", "elo overall": 822, "# battles": 14003}
data_dir/elo_ranks.skip_empty.all.jsonl ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"model name ": "gpt-4-0125-preview", "elo overall": 1296, "Information seeking": 1276, "Creative Writing": 1265, "Coding & Debugging": 1327, "Reasoning": 1359, "Editing": 1200, "Math": 1269, "Planning": 1286, "Brainstorming": 1320, "Role playing": 1237, "Advice seeking": 1298, "Data Analysis": 1250, "Others": 1068, "average": 1262.9166666666667, "# battles": 5362}
2
+ {"model name ": "claude-3-opus-20240229", "elo overall": 1139, "Information seeking": 1124, "Creative Writing": 1065, "Coding & Debugging": 1236, "Reasoning": 1191, "Editing": 1132, "Math": 1148, "Planning": 1149, "Brainstorming": 1109, "Role playing": 965, "Advice seeking": 1110, "Data Analysis": 1117, "Others": 1030, "average": 1114.6666666666667, "# battles": 2258}
3
+ {"model name ": "claude-3-sonnet-20240229", "elo overall": 1127, "Information seeking": 1112, "Creative Writing": 1081, "Coding & Debugging": 1197, "Reasoning": 1168, "Editing": 1140, "Math": 1134, "Planning": 1157, "Brainstorming": 1091, "Role playing": 1003, "Advice seeking": 1079, "Data Analysis": 1137, "Others": 1014, "average": 1109.4166666666667, "# battles": 2483}
4
+ {"model name ": "mistral-large-2402", "elo overall": 1109, "Information seeking": 1087, "Creative Writing": 1111, "Coding & Debugging": 1105, "Reasoning": 1126, "Editing": 1088, "Math": 1085, "Planning": 1076, "Brainstorming": 1078, "Role playing": 1069, "Advice seeking": 1060, "Data Analysis": 1061, "Others": 1021, "average": 1080.5833333333333, "# battles": 1794}
5
+ {"model name ": "Yi-34B-Chat", "elo overall": 1094, "Information seeking": 1078, "Creative Writing": 1100, "Coding & Debugging": 1059, "Reasoning": 1091, "Editing": 1067, "Math": 1032, "Planning": 1127, "Brainstorming": 1138, "Role playing": 1070, "Advice seeking": 1099, "Data Analysis": 1019, "Others": 997, "average": 1073.0833333333333, "# battles": 2134}
6
+ {"model name ": "Mistral-7B-Instruct-v0.2", "elo overall": 1089, "Information seeking": 1076, "Creative Writing": 1136, "Coding & Debugging": 1089, "Reasoning": 1041, "Editing": 1094, "Math": 1011, "Planning": 1077, "Brainstorming": 1078, "Role playing": 1115, "Advice seeking": 1062, "Data Analysis": 1029, "Others": 1003, "average": 1067.5833333333333, "# battles": 2313}
7
+ {"model name ": "gemini-1.0-pro", "elo overall": 1082, "Information seeking": 1113, "Creative Writing": 1061, "Coding & Debugging": 1056, "Reasoning": 1062, "Editing": 1016, "Math": 1062, "Planning": 1071, "Brainstorming": 1039, "Role playing": 1053, "Advice seeking": 1078, "Data Analysis": 1064, "Others": 1008, "average": 1056.9166666666667, "# battles": 1643}
8
+ {"model name ": "Llama-2-70b-chat-hf.nosp", "elo overall": 1069, "Information seeking": 1109, "Creative Writing": 1068, "Coding & Debugging": 996, "Reasoning": 1056, "Editing": 1011, "Math": 994, "Planning": 1025, "Brainstorming": 1050, "Role playing": 1074, "Advice seeking": 1042, "Data Analysis": 1029, "Others": 1018, "average": 1039.3333333333333, "# battles": 1715}
9
+ {"model name ": "Mixtral-8x7B-Instruct-v0.1", "elo overall": 1057, "Information seeking": 1076, "Creative Writing": 1046, "Coding & Debugging": 1073, "Reasoning": 1050, "Editing": 1003, "Math": 1048, "Planning": 996, "Brainstorming": 1025, "Role playing": 1080, "Advice seeking": 1003, "Data Analysis": 1023, "Others": 993, "average": 1034.6666666666667, "# battles": 3349}
10
+ {"model name ": "Llama-2-13b-chat-hf.nosp", "elo overall": 1035, "Information seeking": 1061, "Creative Writing": 1061, "Coding & Debugging": 943, "Reasoning": 997, "Editing": 1008, "Math": 967, "Planning": 1006, "Brainstorming": 1037, "Role playing": 1048, "Advice seeking": 1014, "Data Analysis": 977, "Others": 1016, "average": 1011.25, "# battles": 1657}
11
+ {"model name ": "Llama-2-7b-chat-hf.nosp", "elo overall": 1015, "Information seeking": 1043, "Creative Writing": 1025, "Coding & Debugging": 927, "Reasoning": 980, "Editing": 986, "Math": 918, "Planning": 1006, "Brainstorming": 1004, "Role playing": 1046, "Advice seeking": 1026, "Data Analysis": 983, "Others": 1011, "average": 996.25, "# battles": 1667}
12
+ {"model name ": "tulu-2-dpo-70b", "elo overall": 983, "Information seeking": 996, "Creative Writing": 1022, "Coding & Debugging": 884, "Reasoning": 971, "Editing": 966, "Math": 965, "Planning": 949, "Brainstorming": 940, "Role playing": 1059, "Advice seeking": 973, "Data Analysis": 902, "Others": 992, "average": 968.25, "# battles": 3342}
13
+ {"model name ": "gpt-3.5-turbo-0125", "elo overall": 968, "Information seeking": 930, "Creative Writing": 934, "Coding & Debugging": 1101, "Reasoning": 1009, "Editing": 976, "Math": 1142, "Planning": 970, "Brainstorming": 929, "Role playing": 923, "Advice seeking": 954, "Data Analysis": 1021, "Others": 978, "average": 988.9166666666666, "# battles": 13333}
14
+ {"model name ": "zephyr-7b-beta", "elo overall": 968, "Information seeking": 993, "Creative Writing": 999, "Coding & Debugging": 927, "Reasoning": 949, "Editing": 966, "Math": 924, "Planning": 954, "Brainstorming": 939, "Role playing": 1021, "Advice seeking": 931, "Data Analysis": 965, "Others": 960, "average": 960.6666666666666, "# battles": 3310}
15
+ {"model name ": "gemma-7b-it", "elo overall": 928, "Information seeking": 928, "Creative Writing": 935, "Coding & Debugging": 938, "Reasoning": 951, "Editing": 905, "Math": 982, "Planning": 966, "Brainstorming": 979, "Role playing": 953, "Advice seeking": 968, "Data Analysis": 950, "Others": 994, "average": 954.0833333333334, "# battles": 2429}
16
+ {"model name ": "command", "elo overall": 926, "Information seeking": 937, "Creative Writing": 941, "Coding & Debugging": 906, "Reasoning": 914, "Editing": 930, "Math": 927, "Planning": 974, "Brainstorming": 984, "Role playing": 942, "Advice seeking": 961, "Data Analysis": 915, "Others": 980, "average": 942.5833333333334, "# battles": 1655}
17
+ {"model name ": "Llama-2-70b-chat-hf", "elo overall": 912, "Information seeking": 904, "Creative Writing": 901, "Coding & Debugging": 923, "Reasoning": 922, "Editing": 974, "Math": 911, "Planning": 927, "Brainstorming": 943, "Role playing": 904, "Advice seeking": 954, "Data Analysis": 1005, "Others": 999, "average": 938.9166666666666, "# battles": 2090}
18
+ {"model name ": "Llama-2-13b-chat-hf", "elo overall": 877, "Information seeking": 877, "Creative Writing": 865, "Coding & Debugging": 893, "Reasoning": 900, "Editing": 985, "Math": 929, "Planning": 917, "Brainstorming": 891, "Role playing": 865, "Advice seeking": 954, "Data Analysis": 944, "Others": 1006, "average": 918.8333333333334, "# battles": 2045}
19
+ {"model name ": "vicuna-13b-v1.5", "elo overall": 856, "Information seeking": 849, "Creative Writing": 862, "Coding & Debugging": 902, "Reasoning": 861, "Editing": 881, "Math": 916, "Planning": 841, "Brainstorming": 867, "Role playing": 911, "Advice seeking": 857, "Data Analysis": 938, "Others": 969, "average": 887.8333333333334, "# battles": 2170}
20
+ {"model name ": "gemma-2b-it", "elo overall": 849, "Information seeking": 836, "Creative Writing": 893, "Coding & Debugging": 822, "Reasoning": 807, "Editing": 875, "Math": 886, "Planning": 895, "Brainstorming": 919, "Role playing": 909, "Advice seeking": 877, "Data Analysis": 870, "Others": 979, "average": 880.6666666666666, "# battles": 2410}
21
+ {"model name ": "Llama-2-7b-chat-hf", "elo overall": 821, "Information seeking": 807, "Creative Writing": 834, "Coding & Debugging": 820, "Reasoning": 819, "Editing": 938, "Math": 868, "Planning": 848, "Brainstorming": 854, "Role playing": 856, "Advice seeking": 890, "Data Analysis": 912, "Others": 996, "average": 870.1666666666666, "# battles": 2036}
22
+ {"model name ": "Mistral-7B-Instruct-v0.1", "elo overall": 798, "Information seeking": 786, "Creative Writing": 797, "Coding & Debugging": 881, "Reasoning": 782, "Editing": 857, "Math": 880, "Planning": 789, "Brainstorming": 782, "Role playing": 891, "Advice seeking": 812, "Data Analysis": 883, "Others": 970, "average": 842.5, "# battles": 2415}
data_dir/elo_ranks.skip_empty.jsonl ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"model name ": "gpt-4-0125-preview", "elo overall": 1296, "# battles": 5362}
2
+ {"model name ": "claude-3-opus-20240229", "elo overall": 1139, "# battles": 2258}
3
+ {"model name ": "claude-3-sonnet-20240229", "elo overall": 1127, "# battles": 2483}
4
+ {"model name ": "mistral-large-2402", "elo overall": 1109, "# battles": 1794}
5
+ {"model name ": "Yi-34B-Chat", "elo overall": 1094, "# battles": 2134}
6
+ {"model name ": "Mistral-7B-Instruct-v0.2", "elo overall": 1089, "# battles": 2313}
7
+ {"model name ": "gemini-1.0-pro", "elo overall": 1082, "# battles": 1643}
8
+ {"model name ": "Llama-2-70b-chat-hf.nosp", "elo overall": 1069, "# battles": 1715}
9
+ {"model name ": "Mixtral-8x7B-Instruct-v0.1", "elo overall": 1057, "# battles": 3349}
10
+ {"model name ": "Llama-2-13b-chat-hf.nosp", "elo overall": 1035, "# battles": 1657}
11
+ {"model name ": "Llama-2-7b-chat-hf.nosp", "elo overall": 1015, "# battles": 1667}
12
+ {"model name ": "tulu-2-dpo-70b", "elo overall": 983, "# battles": 3342}
13
+ {"model name ": "gpt-3.5-turbo-0125", "elo overall": 968, "# battles": 13333}
14
+ {"model name ": "zephyr-7b-beta", "elo overall": 968, "# battles": 3310}
15
+ {"model name ": "gemma-7b-it", "elo overall": 928, "# battles": 2429}
16
+ {"model name ": "command", "elo overall": 926, "# battles": 1655}
17
+ {"model name ": "Llama-2-70b-chat-hf", "elo overall": 912, "# battles": 2090}
18
+ {"model name ": "Llama-2-13b-chat-hf", "elo overall": 877, "# battles": 2045}
19
+ {"model name ": "vicuna-13b-v1.5", "elo overall": 856, "# battles": 2170}
20
+ {"model name ": "gemma-2b-it", "elo overall": 849, "# battles": 2410}
21
+ {"model name ": "Llama-2-7b-chat-hf", "elo overall": 821, "# battles": 2036}
22
+ {"model name ": "Mistral-7B-Instruct-v0.1", "elo overall": 798, "# battles": 2415}
data_dir/elo_ranks.skip_empty.length_ablation.all.jsonl ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"model name ": "gpt-4-0125-preview", "elo overall": 1219, "Information seeking": 1266, "Creative Writing": 1199, "Coding & Debugging": 1154, "Reasoning": 1275, "Editing": 1120, "Math": 1192, "Planning": 1188, "Brainstorming": 1179, "Role playing": 1218, "Advice seeking": 1277, "Data Analysis": 1161, "Others": 1033, "average": 1188.5, "# battles": 5363}
2
+ {"model name ": "Llama-2-70b-chat-hf.nosp", "elo overall": 1166, "Information seeking": 1225, "Creative Writing": 1172, "Coding & Debugging": 1063, "Reasoning": 1130, "Editing": 1078, "Math": 1008, "Planning": 1135, "Brainstorming": 1139, "Role playing": 1130, "Advice seeking": 1115, "Data Analysis": 1043, "Others": 1016, "average": 1104.5, "# battles": 1715}
3
+ {"model name ": "Llama-2-7b-chat-hf.nosp", "elo overall": 1151, "Information seeking": 1195, "Creative Writing": 1149, "Coding & Debugging": 1051, "Reasoning": 1120, "Editing": 1042, "Math": 1009, "Planning": 1141, "Brainstorming": 1142, "Role playing": 1139, "Advice seeking": 1149, "Data Analysis": 1059, "Others": 1008, "average": 1100.3333333333333, "# battles": 1667}
4
+ {"model name ": "Llama-2-13b-chat-hf.nosp", "elo overall": 1148, "Information seeking": 1192, "Creative Writing": 1137, "Coding & Debugging": 1032, "Reasoning": 1102, "Editing": 1064, "Math": 1021, "Planning": 1121, "Brainstorming": 1140, "Role playing": 1102, "Advice seeking": 1126, "Data Analysis": 1040, "Others": 1032, "average": 1092.4166666666667, "# battles": 1657}
5
+ {"model name ": "Yi-34B-Chat", "elo overall": 1106, "Information seeking": 1096, "Creative Writing": 1066, "Coding & Debugging": 1126, "Reasoning": 1118, "Editing": 1013, "Math": 1095, "Planning": 1137, "Brainstorming": 1118, "Role playing": 1052, "Advice seeking": 1133, "Data Analysis": 1072, "Others": 1003, "average": 1085.75, "# battles": 2134}
6
+ {"model name ": "Mistral-7B-Instruct-v0.2", "elo overall": 1088, "Information seeking": 1092, "Creative Writing": 1132, "Coding & Debugging": 1053, "Reasoning": 1057, "Editing": 1068, "Math": 1086, "Planning": 1042, "Brainstorming": 1037, "Role playing": 1123, "Advice seeking": 1041, "Data Analysis": 1048, "Others": 1010, "average": 1065.75, "# battles": 2313}
7
+ {"model name ": "zephyr-7b-beta", "elo overall": 1060, "Information seeking": 1022, "Creative Writing": 1093, "Coding & Debugging": 1065, "Reasoning": 1036, "Editing": 1074, "Math": 1040, "Planning": 1051, "Brainstorming": 1072, "Role playing": 1035, "Advice seeking": 976, "Data Analysis": 1047, "Others": 1014, "average": 1043.75, "# battles": 3310}
8
+ {"model name ": "tulu-2-dpo-70b", "elo overall": 1020, "Information seeking": 1004, "Creative Writing": 1065, "Coding & Debugging": 970, "Reasoning": 998, "Editing": 1052, "Math": 1030, "Planning": 1005, "Brainstorming": 1008, "Role playing": 1061, "Advice seeking": 1007, "Data Analysis": 998, "Others": 1026, "average": 1018.6666666666666, "# battles": 3342}
9
+ {"model name ": "claude-3-sonnet-20240229", "elo overall": 994, "Information seeking": 975, "Creative Writing": 944, "Coding & Debugging": 1099, "Reasoning": 1039, "Editing": 1045, "Math": 1069, "Planning": 1017, "Brainstorming": 953, "Role playing": 896, "Advice seeking": 976, "Data Analysis": 1041, "Others": 988, "average": 1003.5, "# battles": 2483}
10
+ {"model name ": "Mixtral-8x7B-Instruct-v0.1", "elo overall": 991, "Information seeking": 993, "Creative Writing": 1003, "Coding & Debugging": 980, "Reasoning": 987, "Editing": 991, "Math": 994, "Planning": 960, "Brainstorming": 965, "Role playing": 1024, "Advice seeking": 959, "Data Analysis": 983, "Others": 1020, "average": 988.25, "# battles": 3350}
11
+ {"model name ": "claude-3-opus-20240229", "elo overall": 986, "Information seeking": 951, "Creative Writing": 940, "Coding & Debugging": 1137, "Reasoning": 1034, "Editing": 1067, "Math": 1028, "Planning": 1010, "Brainstorming": 945, "Role playing": 885, "Advice seeking": 1009, "Data Analysis": 1055, "Others": 1000, "average": 1005.0833333333334, "# battles": 2259}
12
+ {"model name ": "Llama-2-70b-chat-hf", "elo overall": 985, "Information seeking": 988, "Creative Writing": 969, "Coding & Debugging": 998, "Reasoning": 1017, "Editing": 1021, "Math": 960, "Planning": 1026, "Brainstorming": 1018, "Role playing": 972, "Advice seeking": 1049, "Data Analysis": 1014, "Others": 1025, "average": 1004.75, "# battles": 2090}
13
+ {"model name ": "command", "elo overall": 982, "Information seeking": 965, "Creative Writing": 983, "Coding & Debugging": 1004, "Reasoning": 980, "Editing": 1005, "Math": 992, "Planning": 1052, "Brainstorming": 1030, "Role playing": 954, "Advice seeking": 974, "Data Analysis": 967, "Others": 995, "average": 991.75, "# battles": 1655}
14
+ {"model name ": "Llama-2-13b-chat-hf", "elo overall": 966, "Information seeking": 968, "Creative Writing": 956, "Coding & Debugging": 956, "Reasoning": 965, "Editing": 1019, "Math": 1011, "Planning": 999, "Brainstorming": 999, "Role playing": 976, "Advice seeking": 1027, "Data Analysis": 1012, "Others": 1000, "average": 990.6666666666666, "# battles": 2045}
15
+ {"model name ": "mistral-large-2402", "elo overall": 958, "Information seeking": 939, "Creative Writing": 995, "Coding & Debugging": 941, "Reasoning": 969, "Editing": 985, "Math": 985, "Planning": 919, "Brainstorming": 986, "Role playing": 988, "Advice seeking": 952, "Data Analysis": 968, "Others": 1005, "average": 969.3333333333334, "# battles": 1794}
16
+ {"model name ": "gemini-1.0-pro", "elo overall": 951, "Information seeking": 957, "Creative Writing": 960, "Coding & Debugging": 942, "Reasoning": 955, "Editing": 947, "Math": 969, "Planning": 904, "Brainstorming": 953, "Role playing": 1000, "Advice seeking": 926, "Data Analysis": 964, "Others": 998, "average": 956.25, "# battles": 1644}
17
+ {"model name ": "Llama-2-7b-chat-hf", "elo overall": 948, "Information seeking": 952, "Creative Writing": 957, "Coding & Debugging": 918, "Reasoning": 962, "Editing": 990, "Math": 962, "Planning": 995, "Brainstorming": 982, "Role playing": 958, "Advice seeking": 998, "Data Analysis": 993, "Others": 1006, "average": 972.75, "# battles": 2036}
18
+ {"model name ": "gemma-7b-it", "elo overall": 889, "Information seeking": 907, "Creative Writing": 858, "Coding & Debugging": 953, "Reasoning": 881, "Editing": 854, "Math": 929, "Planning": 870, "Brainstorming": 872, "Role playing": 949, "Advice seeking": 899, "Data Analysis": 943, "Others": 1003, "average": 909.8333333333334, "# battles": 2430}
19
+ {"model name ": "Mistral-7B-Instruct-v0.1", "elo overall": 887, "Information seeking": 862, "Creative Writing": 913, "Coding & Debugging": 930, "Reasoning": 875, "Editing": 948, "Math": 964, "Planning": 862, "Brainstorming": 870, "Role playing": 956, "Advice seeking": 845, "Data Analysis": 964, "Others": 987, "average": 914.6666666666666, "# battles": 2416}
20
+ {"model name ": "gemma-2b-it", "elo overall": 854, "Information seeking": 876, "Creative Writing": 883, "Coding & Debugging": 838, "Reasoning": 813, "Editing": 878, "Math": 820, "Planning": 904, "Brainstorming": 902, "Role playing": 909, "Advice seeking": 881, "Data Analysis": 861, "Others": 985, "average": 879.1666666666666, "# battles": 2410}
21
+ {"model name ": "vicuna-13b-v1.5", "elo overall": 854, "Information seeking": 830, "Creative Writing": 837, "Coding & Debugging": 929, "Reasoning": 864, "Editing": 889, "Math": 953, "Planning": 863, "Brainstorming": 874, "Role playing": 894, "Advice seeking": 883, "Data Analysis": 954, "Others": 993, "average": 896.9166666666666, "# battles": 2170}
22
+ {"model name ": "gpt-3.5-turbo-0125", "elo overall": 789, "Information seeking": 744, "Creative Writing": 788, "Coding & Debugging": 860, "Reasoning": 822, "Editing": 857, "Math": 874, "Planning": 797, "Brainstorming": 815, "Role playing": 775, "Advice seeking": 788, "Data Analysis": 832, "Others": 845, "average": 816.4166666666666, "# battles": 13333}
data_dir/elo_ranks.skip_empty.length_ablation.jsonl ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"model name ": "gpt-4-0125-preview", "elo overall": 1219, "# battles": 5363}
2
+ {"model name ": "Llama-2-70b-chat-hf.nosp", "elo overall": 1166, "# battles": 1715}
3
+ {"model name ": "Llama-2-7b-chat-hf.nosp", "elo overall": 1151, "# battles": 1667}
4
+ {"model name ": "Llama-2-13b-chat-hf.nosp", "elo overall": 1148, "# battles": 1657}
5
+ {"model name ": "Yi-34B-Chat", "elo overall": 1106, "# battles": 2134}
6
+ {"model name ": "Mistral-7B-Instruct-v0.2", "elo overall": 1088, "# battles": 2313}
7
+ {"model name ": "zephyr-7b-beta", "elo overall": 1060, "# battles": 3310}
8
+ {"model name ": "tulu-2-dpo-70b", "elo overall": 1020, "# battles": 3342}
9
+ {"model name ": "claude-3-sonnet-20240229", "elo overall": 994, "# battles": 2483}
10
+ {"model name ": "Mixtral-8x7B-Instruct-v0.1", "elo overall": 991, "# battles": 3350}
11
+ {"model name ": "claude-3-opus-20240229", "elo overall": 986, "# battles": 2259}
12
+ {"model name ": "Llama-2-70b-chat-hf", "elo overall": 985, "# battles": 2090}
13
+ {"model name ": "command", "elo overall": 982, "# battles": 1655}
14
+ {"model name ": "Llama-2-13b-chat-hf", "elo overall": 966, "# battles": 2045}
15
+ {"model name ": "mistral-large-2402", "elo overall": 958, "# battles": 1794}
16
+ {"model name ": "gemini-1.0-pro", "elo overall": 951, "# battles": 1644}
17
+ {"model name ": "Llama-2-7b-chat-hf", "elo overall": 948, "# battles": 2036}
18
+ {"model name ": "gemma-7b-it", "elo overall": 889, "# battles": 2430}
19
+ {"model name ": "Mistral-7B-Instruct-v0.1", "elo overall": 887, "# battles": 2416}
20
+ {"model name ": "gemma-2b-it", "elo overall": 854, "# battles": 2410}
21
+ {"model name ": "vicuna-13b-v1.5", "elo overall": 854, "# battles": 2170}
22
+ {"model name ": "gpt-3.5-turbo-0125", "elo overall": 789, "# battles": 13333}
data_dir/leaderboard_data.jsonl ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"model name": "gpt-4-0125-preview", "win rate": 0.833984375, "win+tie rate": 0.9423828125, "num votes": 1024, "longer rate": 0.9296875, "charlen": 3190.716796875, "elo": 0}
2
+ {"model name": "Mixtral-8x7B-Instruct-v0.1", "win rate": 0.568359375, "win+tie rate": 0.6767578125, "num votes": 1024, "longer rate": 0.7724609375, "charlen": 2483.9638671875, "elo": 0}
3
+ {"model name": "Yi-34B-Chat", "win rate": 0.5322265625, "win+tie rate": 0.658203125, "num votes": 1024, "longer rate": 0.7412109375, "charlen": 2567.92578125, "elo": 0}
4
+ {"model name": "gpt-3.5-turbo-0125", "win rate": 0.5, "win+tie rate": 0.5, "num votes": 12288, "longer rate": 0.3017578125, "charlen": 1725.7216796875, "elo": 0}
5
+ {"model name": "tulu-2-dpo-70b", "win rate": 0.44921875, "win+tie rate": 0.5771484375, "num votes": 1024, "longer rate": 0.7919921875, "charlen": 2614.822265625, "elo": 0}
6
+ {"model name": "zephyr-7b-beta", "win rate": 0.4404296875, "win+tie rate": 0.5478515625, "num votes": 1024, "longer rate": 0.822265625, "charlen": 3011.2529296875, "elo": 0}
7
+ {"model name": "gemma-7b-it", "win rate": 0.4150390625, "win+tie rate": 0.49609375, "num votes": 1024, "longer rate": 0.6064453125, "charlen": 1951.2548828125, "elo": 0}
8
+ {"model name": "Llama-2-70b-chat-hf", "win rate": 0.3125, "win+tie rate": 0.4462890625, "num votes": 1024, "longer rate": 0.6845703125, "charlen": 2007.029296875, "elo": 0}
9
+ {"model name": "gemma-2b-it", "win rate": 0.296875, "win+tie rate": 0.375, "num votes": 1024, "longer rate": 0.560546875, "charlen": 1862.732421875, "elo": 0}
10
+ {"model name": "Llama-2-13b-chat-hf", "win rate": 0.2666015625, "win+tie rate": 0.4130859375, "num votes": 1024, "longer rate": 0.6826171875, "charlen": 1945.42578125, "elo": 0}
11
+ {"model name": "vicuna-13b-v1.5", "win rate": 0.2548828125, "win+tie rate": 0.3759765625, "num votes": 1024, "longer rate": 0.509765625, "charlen": 1642.1640625, "elo": 0}
12
+ {"model name": "Mistral-7B-Instruct-v0.1", "win rate": 0.23046875, "win+tie rate": 0.3232421875, "num votes": 1024, "longer rate": 0.6171875, "charlen": 2208.8115234375, "elo": 0}
13
+ {"model name": "Llama-2-7b-chat-hf", "win rate": 0.2216796875, "win+tie rate": 0.345703125, "num votes": 1024, "longer rate": 0.65234375, "charlen": 1878.521484375, "elo": 0}
data_dir/pairwise_win_fractions.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:53b8c101b7473e39e483771317b1bd34c9feda733d4b5cdc67b3508b2ca968b1
3
+ size 11827
data_dir/pairwise_win_fractions.png ADDED
data_dir/winrate_data.jsonl ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {"model name": "gpt-4-0125-preview", "win rate": 0.5, "win+tie rate": 0.5, "num votes": 4611, "longer rate": 0.7931034482758621, "charlen": 3195.4654088050315, "elo": 0}
2
+ {"model name": "Mistral-7B-Instruct-v0.2", "win rate": 0.23167252145204986, "win+tie rate": 0.2624417522212806, "num votes": 65, "longer rate": 0.2153846153846154, "charlen": 2808.230769230769, "elo": 0}
3
+ {"model name": "Yi-34B-Chat", "win rate": 0.19769275417519458, "win+tie rate": 0.27965996728994863, "num votes": 61, "longer rate": 0.36065573770491804, "charlen": 2712.4590163934427, "elo": 0}
4
+ {"model name": "Mixtral-8x7B-Instruct-v0.1", "win rate": 0.16477418902065052, "win+tie rate": 0.23508668902065052, "num votes": 1024, "longer rate": 0.203125, "charlen": 2483.9638671875, "elo": 0}
5
+ {"model name": "zephyr-7b-beta", "win rate": 0.12713105860443502, "win+tie rate": 0.17791230860443502, "num votes": 1024, "longer rate": 0.341796875, "charlen": 3011.2529296875, "elo": 0}
6
+ {"model name": "gemma-7b-it", "win rate": 0.12270420594225764, "win+tie rate": 0.1611657444037961, "num votes": 52, "longer rate": 0.1346153846153846, "charlen": 1973.8076923076924, "elo": 0}
7
+ {"model name": "tulu-2-dpo-70b", "win rate": 0.11486627676908645, "win+tie rate": 0.17736627676908645, "num votes": 1024, "longer rate": 0.240234375, "charlen": 2614.822265625, "elo": 0}
8
+ {"model name": "Llama-2-13b-chat-hf", "win rate": 0.09671362313232809, "win+tie rate": 0.1493452020796965, "num votes": 57, "longer rate": 0.17543859649122806, "charlen": 1949.6666666666667, "elo": 0}
9
+ {"model name": "Mistral-7B-Instruct-v0.1", "win rate": 0.09374492823671128, "win+tie rate": 0.13010856460034764, "num votes": 55, "longer rate": 0.12727272727272726, "charlen": 2199.8, "elo": 0}
10
+ {"model name": "gemma-2b-it", "win rate": 0.08728338828088478, "win+tie rate": 0.1550799984503763, "num votes": 59, "longer rate": 0.0847457627118644, "charlen": 1707.084745762712, "elo": 0}
11
+ {"model name": "vicuna-13b-v1.5", "win rate": 0.05894420249306174, "win+tie rate": 0.05894420249306174, "num votes": 45, "longer rate": 0.1111111111111111, "charlen": 1800.911111111111, "elo": 0}
12
+ {"model name": "Llama-2-70b-chat-hf", "win rate": 0.03594723537048477, "win+tie rate": 0.1073758067990562, "num votes": 56, "longer rate": 0.10714285714285714, "charlen": 2110.4285714285716, "elo": 0}
13
+ {"model name": "Llama-2-7b-chat-hf", "win rate": 0.01868885019984797, "win+tie rate": 0.09561192712292489, "num votes": 65, "longer rate": 0.03076923076923077, "charlen": 1663.7076923076922, "elo": 0}
data_dir//342/200/216leaderboard_logo_v2.png ADDED
data_utils.py ADDED
@@ -0,0 +1,191 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from datasets import load_dataset, Dataset
2
+ import os
3
+ from datasets import load_dataset
4
+ from datasets.utils.logging import disable_progress_bar
5
+ from constants import column_names, all_task_types
6
+ from utils_display import make_clickable_model
7
+ import random
8
+ disable_progress_bar()
9
+
10
+ id_to_data = None
11
+ model_len_info = None
12
+
13
+ def estimated_win_rate(elo_a, elo_b):
14
+ """
15
+ Calculate the estimated win rate for player A against player B using their Elo ratings.
16
+
17
+ :param elo_a: Elo rating of player A
18
+ :param elo_b: Elo rating of player B
19
+ :return: Estimated win rate for player A
20
+ """
21
+ exponent = (elo_b - elo_a) / 400
22
+ probability_a_wins = 1 / (1 + 10 ** exponent)
23
+ return (1-probability_a_wins)*100
24
+
25
+
26
+
27
+ # Formats the columns
28
+ def formatter(x):
29
+ if type(x) is str:
30
+ x = x
31
+ else:
32
+ x = round(x, 2)
33
+ return x
34
+
35
+
36
+ def add_winrates(current_df):
37
+ df = current_df.copy()
38
+ elo_column = "Overall Elo"
39
+
40
+ # Correct way to filter the DataFrame and get the Elo rating for "gpt-4-0125-preview"
41
+ model_a_elo = df[df["Model"].str.contains("gpt-4")][elo_column].iloc[0]
42
+
43
+ # Correct way to filter the DataFrame and get the Elo rating for "gpt-3.5-turbo-0125"
44
+ model_b_elo = df[df["Model"].str.contains("gpt-3.5")][elo_column].iloc[0]
45
+
46
+
47
+ # Calculate the win rate of "gpt-4-0125-preview" against all models
48
+ df['Win% vs GPT-4'] = df[elo_column].apply(lambda x: estimated_win_rate(model_a_elo, x)).apply(formatter)
49
+ df['Win% vs GPT-3.5T'] = df[elo_column].apply(lambda x: estimated_win_rate(model_b_elo, x)).apply(formatter)
50
+ # apply the formatter for the two new columns
51
+ cols = list(df.columns)
52
+ cols.remove("# battles"); cols.append("# battles")
53
+ cols.remove("Length"); cols.append("Length")
54
+ df = df[cols]
55
+ return df
56
+
57
+ def add_winrates_tasks(current_df, ref="gpt-4"):
58
+ new_df = current_df.copy()
59
+ for t in all_task_types:
60
+ column = column_names[t]
61
+ model_a_elo = current_df[current_df["Model"].str.contains(ref)][column].iloc[0]
62
+ new_df[column] = current_df[column].apply(lambda x: estimated_win_rate(model_a_elo, x)).apply(formatter)
63
+ return new_df
64
+
65
+
66
+ def post_processing(df, model_len_info):
67
+ if model_len_info:
68
+ df["Length"] = df["model name "].apply(lambda x: model_len_info[x])
69
+
70
+ for col in df.columns:
71
+ if col == "model name ":
72
+ df[col] = df[col].apply(lambda x: x.replace(x, make_clickable_model(x)))
73
+ else:
74
+ df[col] = df[col].apply(formatter) # For numerical values
75
+ df.rename(columns=column_names, inplace=True)
76
+ df.sort_values(by="Overall Elo", inplace=True, ascending=False)
77
+ # put the "Overall Elo" and "Task-Avg Elo" column to the front
78
+ # add the length info
79
+ df = df[["Model", "Overall Elo", "Task-Avg Elo"] + [col for col in df.columns if col not in ["Model", "Overall Elo", "Task-Avg Elo"]]]
80
+ return df
81
+
82
+ def apply_length_penalty(original_df, ablation_df, length_penalty=0.2):
83
+ original_df = original_df.copy()
84
+ ablation_df = ablation_df.copy()
85
+ # replace all values in original_df with the values as z = x - y * length_penalty where y is from ablation_df at the same row and column
86
+ # except for the "Model" column and the "# battles" column
87
+ # do not assume the order of the rows are the same in both dataframes
88
+ for i, row in original_df.iterrows():
89
+ for col in original_df.columns:
90
+ if col == "Model" or col == "# battles" or col == "Length":
91
+ continue
92
+ # assert that the model names are the same in both dataframes
93
+ assert original_df.at[i, "Model"] == ablation_df[ablation_df["Model"] == row["Model"]]["Model"].values[0]
94
+ original_df[col] = original_df[col].astype(float)
95
+ original_df.at[i, col] = original_df.at[i, col] - ablation_df[ablation_df["Model"] == row["Model"]][col].values[0] * length_penalty
96
+ # post_processing
97
+ original_df = post_processing(original_df, model_len_info=None)
98
+ return original_df
99
+
100
+
101
+ def load_benchdata():
102
+ print("Loading WildBench data...")
103
+ bench_data = load_dataset("WildEval/WildBench", split="test")
104
+ return bench_data
105
+
106
+ def load_benchdata_dict():
107
+ print("Loading WildBench data....")
108
+ bench_data = load_dataset("WildEval/WildBench", split="test")
109
+ id_to_data = {}
110
+ for item in bench_data:
111
+ id_to_data[item["session_id"]] = item
112
+ return id_to_data
113
+
114
+ def load_eval_results():
115
+ print("Loading WildBench Evaluation data...")
116
+ eval_results = load_dataset("WildEval/WildBench-Evaluation", "all", split="train")
117
+ return eval_results
118
+
119
+ def load_infer_results(model_name):
120
+ print(f"Loading WildBench Results for {model_name}...")
121
+ infer_results = load_dataset("WildEval/WildBench-Results", model_name, split="train")
122
+ return infer_results
123
+
124
+
125
+
126
+ def sample_an_eval_result(eval_results, model_list=[], tag_list=[]):
127
+ global id_to_data
128
+ eval_results = list(eval_results)
129
+ random.shuffle(eval_results)
130
+ for eval_item in eval_results:
131
+ # print(json.dumps(eval_item, indent=2))
132
+ # print(f"## Session ID: {eval_item['session_id']}")
133
+ # eval_item["eval_id"]
134
+ assignment = eval_item['assignment']
135
+ model_1, model_2 = eval_item['model_1'], eval_item['model_2']
136
+ model_A = model_1 if assignment['A'] == model_1 else model_2
137
+ model_B = model_2 if assignment['B'] == model_2 else model_1
138
+ if len(model_list) >= 2:
139
+ if model_A not in model_list or model_B not in model_list:
140
+ continue
141
+ elif len(model_list) == 1:
142
+ if model_A != model_list[0] and model_B != model_list[0]:
143
+ continue
144
+ else:
145
+ pass
146
+ if tag_list:
147
+ if set(tag_list).isdisjoint(set(eval_item['tags'])):
148
+ continue
149
+ winner = eval_item['winner']
150
+ # print(f"## Model A: {model_A} | Model B: {model_B} | Winner: {winner}")
151
+ task_type = eval_item['tags'][0] # primary task type
152
+ chat_history = eval_item['history']
153
+ last_query = eval_item['last_query']
154
+ # print(f"## Task Type: {task_type}")
155
+ # print(f"## Chat History: {chat_history}")
156
+ # print(f"## Last Query --> USER: {last_query}")
157
+
158
+ model_A_output = eval_item['model_1_output'] if model_1 == model_A else eval_item['model_2_output']
159
+ model_B_output = eval_item['model_2_output'] if model_2 == model_B else eval_item['model_1_output']
160
+
161
+ if len(model_A_output.strip()) == 0 or len(model_B_output.strip()) == 0:
162
+ continue
163
+
164
+ conversation_input = id_to_data[eval_item['session_id']]["conversation_input"]
165
+ # print(f"\n\n\n## Model A ({model_A}) Output ##\n{model_A_output}")
166
+ # print(f"\n\n\n## Model B ({model_B}) Output ##\n{model_B_output}")
167
+
168
+ # print(f"\n\n\n## Winner ##\n{winner}")
169
+ # print(f"\n\n\n## GPT-4 Judgement ##\n{eval_item['parsed_result']}")
170
+
171
+ result_dict = {
172
+ "session_id": eval_item['session_id'],
173
+ "model_A": model_A,
174
+ "model_B": model_B,
175
+ "winner": winner,
176
+ "intent": id_to_data[eval_item['session_id']]["intent"],
177
+ "task_type": task_type,
178
+ "all_tags": eval_item['tags'],
179
+ "chat_history": chat_history,
180
+ "last_query": last_query,
181
+ "conversation_input": conversation_input,
182
+ "model_A_output": model_A_output,
183
+ "model_B_output": model_B_output,
184
+ "reason": eval_item['parsed_result']["reason"],
185
+ "choice": eval_item['parsed_result']["choice"],
186
+ "checklist": id_to_data[eval_item['session_id']]["checklist"],
187
+ }
188
+ break
189
+ return result_dict
190
+
191
+ id_to_data = load_benchdata_dict()
human_icon.jpeg ADDED
init.py ADDED
File without changes
legacy.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ // "Llama-2-70b-chat-hf": {"pretty_name": "Llama-2-70B (+sys_prmpt)", "hf_model_id": "meta-llama/Llama-2-70b-hf"},
2
+ // "Llama-2-7b-chat-hf": {"pretty_name": "Llama-2-7B (+sys_prmpt)", "hf_model_id": "meta-llama/Llama-2-7b-hf"},
3
+ // "Llama-2-13b-chat-hf": {"pretty_name": "Llama-2-13B (+sys_prmpt)", "hf_model_id": "meta-llama/Llama-2-13b-hf"},
4
+ // "Mistral-7B-Instruct-v0.2": {"pretty_name": "Mistral-7B (v0.2)", "hf_model_id": "mistralai/Mistral-7B-v0.2"},
5
+ // "command": {"pretty_name": "Cohere Command", "hf_model_id": "https://cohere.com/models/command"},
6
+ // "gemma-2b-it": {"pretty_name": "Gemma-2B-it", "hf_model_id": "google/gemma-2b"},
7
+ // "claude-3-sonnet-20240229": {"pretty_name": "Claude 3 Sonnet", "hf_model_id": "https://www.anthropic.com/claude"}
model_info.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Llama-2-13b-chat-hf.nosp": {"pretty_name": "Llama-2-13B-chat", "hf_model_id": "meta-llama/Llama-2-13b-chat-hf"},
3
+ "Llama-2-70b-chat-hf.nosp": {"pretty_name": "Llama-2-70B-chat", "hf_model_id": "meta-llama/Llama-2-70b-chat-hf"},
4
+ "Llama-2-7b-chat-hf.nosp": {"pretty_name": "Llama-2-7B-chat", "hf_model_id": "meta-llama/Llama-2-7b-chat-hf"},
5
+ "Llama-2-7b-chat-hf": {"pretty_name": "Llama-2-7B-chat (+sys prmpt)", "hf_model_id": "meta-llama/Llama-2-7b-chat-hf"},
6
+ "Mistral-7B-Instruct-v0.1": {"pretty_name": "Mistral-7B-Instruct", "hf_model_id": "mistralai/Mistral-7B-Instruct-v0.1"},
7
+ "Mixtral-8x7B-Instruct-v0.1": {"pretty_name": "Mixtral-8x7B-Instruct", "hf_model_id": "mistralai/Mixtral-8x7B-Instruct-v0.1"},
8
+ "Yi-34B-Chat": {"pretty_name": "Yi-34B-Chat", "hf_model_id": "01-ai/Yi-34B"},
9
+ "gemini-1.0-pro": {"pretty_name": "gemini-1.0-pro", "hf_model_id": "https://blog.google/technology/ai/google-gemini-ai/"},
10
+ "gemma-7b-it": {"pretty_name": "Gemma-7B-it", "hf_model_id": "google/gemma-7b"},
11
+ "gpt-3.5-turbo-0125": {"pretty_name": "gpt-3.5-turbo-0125", "hf_model_id": "https://platform.openai.com/"},
12
+ "gpt-4-0125-preview": {"pretty_name": "gpt-4-0125-preview", "hf_model_id": "https://platform.openai.com/"},
13
+ "tulu-2-dpo-70b": {"pretty_name": "Tulu-2-dpo-70b", "hf_model_id": "allenai/tulu-2-dpo-70b"},
14
+ "vicuna-13b-v1.5": {"pretty_name": "Vicuna-13b-v1.5", "hf_model_id": "lmsys/vicuna-13b-v1.5"},
15
+ "zephyr-7b-beta": {"pretty_name": "Zephyr-7b-beta", "hf_model_id": "HuggingFaceH4/zephyr-7b-beta"},
16
+ "mistral-large-2402": {"pretty_name": "Mistral-Large", "hf_model_id": "https://mistral.ai/news/mistral-large/"},
17
+ "claude-3-opus-20240229": {"pretty_name": "Claude 3 Opus", "hf_model_id": "https://www.anthropic.com/claude"},
18
+ "claude-3-sonnet-20240229": {"pretty_name": "Claude 3 Sonnet", "hf_model_id": "https://www.anthropic.com/claude"}
19
+ }
model_len_info.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Llama-2-13b-chat-hf.nosp": 2943.346238938053,
3
+ "Llama-2-70b-chat-hf.nosp": 3077.0840707964603,
4
+ "Llama-2-7b-chat-hf.nosp": 2965.4059734513276,
5
+ "Llama-2-7b-chat-hf": 2137.34,
6
+ "Mistral-7B-Instruct-v0.1": 2208.8115234375,
7
+ "Mixtral-8x7B-Instruct-v0.1": 2483.9638671875,
8
+ "Yi-34B-Chat": 2899.1797133406835,
9
+ "gemini-1.0-pro": 2407.559462254395,
10
+ "gemma-7b-it": 1960.829244357213,
11
+ "gpt-3.5-turbo-0125": 1725.7216796875,
12
+ "gpt-4-0125-preview": 3190.716796875,
13
+ "tulu-2-dpo-70b": 2630.2337917485265,
14
+ "vicuna-13b-v1.5": 1864.2749445676275,
15
+ "zephyr-7b-beta": 3011.2529296875,
16
+ "mistral-large-2402": 2352.189453125,
17
+ "claude-3-opus-20240229": 2460.330078125,
18
+ "claude-3-sonnet-20240229": 2456.21484375
19
+ }
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ gradio[oauth]==4.19.2
2
+ datasets
3
+ toolz==0.12.1
4
+ plotly
task_dist.png ADDED
themes.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+ from typing import Iterable
3
+ import gradio as gr
4
+ from gradio.themes.base import Base
5
+ from gradio.themes.utils import colors, fonts, sizes
6
+ import time
7
+
8
+ class Seafoam(Base):
9
+ def __init__(
10
+ self,
11
+ *,
12
+ primary_hue: colors.Color | str = colors.blue,
13
+ secondary_hue: colors.Color | str = colors.gray,
14
+ neutral_hue: colors.Color | str = colors.gray,
15
+ spacing_size: sizes.Size | str = sizes.spacing_md,
16
+ radius_size: sizes.Size | str = sizes.radius_md,
17
+ text_size: sizes.Size | str = sizes.text_lg,
18
+ font: fonts.Font
19
+ | str
20
+ | Iterable[fonts.Font | str] = (
21
+ fonts.GoogleFont("Quicksand"),
22
+ "ui-sans-serif",
23
+ "sans-serif",
24
+ ),
25
+ font_mono: fonts.Font
26
+ | str
27
+ | Iterable[fonts.Font | str] = (
28
+ fonts.GoogleFont("IBM Plex Mono"),
29
+ "ui-monospace",
30
+ "monospace",
31
+ ),
32
+ ):
33
+ super().__init__(
34
+ primary_hue=primary_hue,
35
+ secondary_hue=secondary_hue,
36
+ neutral_hue=neutral_hue,
37
+ spacing_size=spacing_size,
38
+ radius_size=radius_size,
39
+ text_size=text_size,
40
+ font=font,
41
+ font_mono=font_mono,
42
+ )
43
+
44
+
45
+ seafoam = Seafoam()
update_data.sh ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # download https://raw.githubusercontent.com/WildEval/WildBench-Leaderboard/main/wget -O $data_dir/ gradio/elo_ranks.all.jsonl to the data_dir
2
+
3
+ data_dir="data_dir"
4
+ rm -rf $data_dir
5
+ mkdir $data_dir
6
+ wget -P $data_dir https://raw.githubusercontent.com/WildEval/WildBench-Leaderboard/main/gradio/pairwise_win_fractions.png
7
+ wget -P $data_dir https://raw.githubusercontent.com/WildEval/WildBench-Leaderboard/main/gradio/pairwise_win_fractions.pkl
8
+ wget -P $data_dir https://raw.githubusercontent.com/WildEval/WildBench-Leaderboard/main/gradio/elo_ranks.jsonl
9
+ wget -P $data_dir https://raw.githubusercontent.com/WildEval/WildBench-Leaderboard/main/gradio/elo_ranks.length_ablation.jsonl
10
+ wget -P $data_dir https://raw.githubusercontent.com/WildEval/WildBench-Leaderboard/main/gradio/elo_ranks.skip_empty.jsonl
11
+ wget -P $data_dir https://raw.githubusercontent.com/WildEval/WildBench-Leaderboard/main/gradio/elo_ranks.skip_empty.length_ablation.jsonl
12
+ wget -P $data_dir https://raw.githubusercontent.com/WildEval/WildBench-Leaderboard/main/gradio/elo_ranks.all.jsonl
13
+ wget -P $data_dir https://raw.githubusercontent.com/WildEval/WildBench-Leaderboard/main/gradio/elo_ranks.length_ablation.all.jsonl
14
+ wget -P $data_dir https://raw.githubusercontent.com/WildEval/WildBench-Leaderboard/main/gradio/elo_ranks.skip_empty.all.jsonl
15
+ wget -P $data_dir https://raw.githubusercontent.com/WildEval/WildBench-Leaderboard/main/gradio/elo_ranks.skip_empty.length_ablation.all.jsonl
utils_display.py ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json
2
+
3
+ with open("model_info.json", "r") as f:
4
+ model_info = json.load(f)
5
+
6
+ def make_clickable_model(model_name):
7
+ global model_info
8
+ if model_name in model_info:
9
+ if model_info[model_name]["hf_model_id"].startswith("http"):
10
+ link = model_info[model_name]["hf_model_id"]
11
+ return f'🔒 <a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline;text-decoration-style: dotted;">{model_info[model_name]["pretty_name"]}</a>'
12
+ else:
13
+ link = f"https://huggingface.co/{model_info[model_name]['hf_model_id']}"
14
+ return f'🔥 <a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline;text-decoration-style: dotted;">{model_info[model_name]["pretty_name"]}</a>'
15
+ else:
16
+ return model_name
17
+
18
+
19
+ def styled_error(error):
20
+ return f"<p style='color: red; font-size: 20px; text-align: center;'>{error}</p>"
21
+
22
+ def styled_warning(warn):
23
+ return f"<p style='color: orange; font-size: 20px; text-align: center;'>{warn}</p>"
24
+
25
+ def styled_message(message):
26
+ return f"<p style='color: green; font-size: 20px; text-align: center;'>{message}</p>"