52 lines
1.3 KiB
Python
52 lines
1.3 KiB
Python
"""
|
|
Convert a leaderboard csv file to html table used in the blog.
|
|
|
|
Usage:
|
|
python3 leaderboard_csv_to_html.py --in leaderboard_table_20230619.csv
|
|
"""
|
|
import argparse
|
|
|
|
import numpy as np
|
|
|
|
from fastchat.serve.monitor.monitor import load_leaderboard_table_csv
|
|
|
|
|
|
def model_hyperlink(model_name, link):
|
|
return f'<a target="_blank" href="{link}"> {model_name} </a>'
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--input", type=str, required=True)
|
|
args = parser.parse_args()
|
|
|
|
data = load_leaderboard_table_csv(args.input, add_hyperlink=False)
|
|
headers = [
|
|
"Model",
|
|
"MT-bench (score)",
|
|
"Arena Elo rating",
|
|
"MMLU",
|
|
"License",
|
|
]
|
|
values = []
|
|
for item in data:
|
|
row = []
|
|
for key in headers:
|
|
value = item[key]
|
|
row.append(value)
|
|
row[0] = model_hyperlink(item["Model"], item["Link"])
|
|
values.append(row)
|
|
values.sort(key=lambda x: -x[1] if not np.isnan(x[1]) else 1e9)
|
|
|
|
for value in values:
|
|
row = "<tr>"
|
|
for x in value:
|
|
try:
|
|
if np.isnan(x):
|
|
x = "-"
|
|
except TypeError:
|
|
pass
|
|
row += f" <td>{x}</td> "
|
|
row += "</tr>"
|
|
print(row)
|