Skip to content

Commit cc3525c

Browse files
committed
refactor: Simplify leaderboard output by removing MathDemon columns and adjusting evaluation logic
1 parent 245b51b commit cc3525c

File tree

2 files changed

+88
-184
lines changed

2 files changed

+88
-184
lines changed

runner.py

Lines changed: 53 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from pathlib import Path
66
import sys
77
import os
8+
import shutil
89

910
def main():
1011
# Установка кодировки вывода в UTF-8
@@ -16,9 +17,8 @@ def main():
1617
formatter_class=argparse.RawDescriptionHelpFormatter,
1718
epilog="""
1819
Примеры использования:
19-
python runner.py # Запустить оценку на всех датасетах (по умолчанию)
20+
python runner.py # Запустить оценку (по умолчанию)
2021
python runner.py --dataset russianmath # Запустить только на датасете RussianMath
21-
python runner.py --dataset mathdemon # Запустить только на датасете MathDemon_Demidovich
2222
python runner.py --no-cache # Игнорировать кэш и переоценить все модели
2323
python runner.py --max-workers 8 # Использовать 8 параллельных потоков
2424
"""
@@ -29,8 +29,8 @@ def main():
2929
help='Путь к файлу конфигурации (по умолчанию: configs/run.yaml)')
3030
parser.add_argument('--no-cache', action='store_true',
3131
help='Игнорировать кэш и переоценить все модели')
32-
parser.add_argument('--dataset', choices=['all', 'russianmath', 'mathdemon'], default='all',
33-
help='Выбор датасета для оценки: all (все), russianmath, mathdemon (по умолчанию: all)')
32+
parser.add_argument('--dataset', choices=['all', 'russianmath'], default='all',
33+
help='Выбор датасета для оценки: all (все), russianmath (по умолчанию: all)')
3434
args = parser.parse_args()
3535

3636
# Загружаем конфиг
@@ -58,39 +58,63 @@ def main():
5858
}
5959

6060
# Запуск оценки в зависимости от выбранного датасета
61-
if args.dataset == 'all':
62-
print("\nЗапуск оценки на всех датасетах (RussianMath и MathDemon_Demidovich)")
61+
if args.dataset == 'all' or args.dataset == 'russianmath':
62+
print("\nЗапуск оценки на датасете RussianMath")
6363
leaderboard.evaluate_all_models(system_prompts)
64-
leaderboard.evaluate_math_demon_subsets()
65-
elif args.dataset == 'russianmath':
66-
print("\nЗапуск оценки только на датасете RussianMath")
67-
leaderboard.evaluate_all_models(system_prompts)
68-
elif args.dataset == 'mathdemon':
69-
print("\nЗапуск оценки только на датасете MathDemon_Dемидович")
70-
leaderboard.evaluate_math_demon_subsets()
7164

72-
# Вычисляем комбинированные оценки для моделей
73-
if args.dataset == 'all':
74-
print("\nВычисление комбинированной оценки по всем датасетам")
75-
leaderboard.calculate_combined_scores()
65+
# Получаем ширину терминала
66+
terminal_width = shutil.get_terminal_size().columns
7667

77-
# Генерируем и выводим лидерборд
78-
TERMINAL_WIDTH = 100 # Примерная ширина терминала
68+
# Генерируем и выводим лидерборд с корректным форматированием
7969
header = " LEADERBOARD "
80-
padding = "=" * ((TERMINAL_WIDTH - len(header)) // 2)
81-
print(f"\n{padding}{header}{padding}\n")
70+
padding = "=" * ((terminal_width - len(header)) // 2)
71+
print(f"\n{padding}{header}{padding}")
8272

73+
# Генерируем markdown таблицу
8374
md = leaderboard.generate_markdown()
8475

85-
# Выводим упрощенную версию лидерборда в консоль
76+
# Выводим красиво форматированную таблицу
8677
lines = md.split('\n')
87-
for line in lines:
88-
if line.startswith('|'):
89-
# Убираем ссылки [Details](path) из вывода в консоль
90-
cleaned_line = line.split('|')
91-
if len(cleaned_line) > 5: # Проверяем, что это строка с данными
92-
cleaned_line = cleaned_line[:-1] # Убираем последнюю колонку с ссылками
93-
print('|'.join(cleaned_line))
78+
table_lines = [line for line in lines if line.startswith('|')]
79+
80+
if len(table_lines) >= 2: # Есть заголовок и разделитель
81+
header_line = table_lines[0]
82+
separator_line = table_lines[1]
83+
data_lines = table_lines[2:] if len(table_lines) > 2 else []
84+
85+
# Анализируем ширину каждого столбца из заголовка
86+
columns = header_line.split('|')
87+
columns = [col.strip() for col in columns if col] # Убираем пустые элементы
88+
89+
# Находим максимальную ширину для каждого столбца
90+
column_widths = [len(col) for col in columns]
91+
92+
# Учитываем ширину данных в каждой строке
93+
for line in data_lines:
94+
cells = line.split('|')
95+
cells = [cell.strip() for cell in cells if cell]
96+
for i, cell in enumerate(cells):
97+
if i < len(column_widths):
98+
column_widths[i] = max(column_widths[i], len(cell))
99+
100+
# Форматируем и выводим заголовок
101+
formatted_header = '| ' + ' | '.join(f"{col:<{column_widths[i]}}" for i, col in enumerate(columns)) + ' |'
102+
print(f"\n{formatted_header}")
103+
104+
# Форматируем и выводим разделитель
105+
formatted_separator = '|-' + '-|-'.join('-' * width for width in column_widths) + '-|'
106+
print(formatted_separator)
107+
108+
# Форматируем и выводим данные
109+
for line in data_lines:
110+
cells = line.split('|')
111+
cells = [cell.strip() for cell in cells if cell]
112+
formatted_line = '| ' + ' | '.join(f"{cell:<{column_widths[i]}}" for i, cell in enumerate(cells)) + ' |'
113+
print(formatted_line)
114+
else:
115+
# Если не смогли обработать таблицу, просто выводим как есть
116+
for line in table_lines:
117+
print(line)
94118

95119
print(f"\nДетальные результаты сохранены в: {leaderboard.output_dir}")
96120

0 commit comments

Comments
 (0)