|
from typing import List, Optional |
|
|
|
from mmengine import ConfigDict |
|
|
|
from opencompass.utils import dataset_abbr_from_cfg |
|
from opencompass.utils.prompt import get_prompt_hash |
|
|
|
from .default import DefaultSummarizer |
|
|
|
|
|
class CircularSummarizer(DefaultSummarizer): |
|
|
|
def __init__(self, |
|
config: ConfigDict, |
|
dataset_abbrs: Optional[List[str]] = None, |
|
summary_groups: List = [], |
|
prompt_db=None, |
|
metric_types=None) -> None: |
|
super().__init__(config, dataset_abbrs, summary_groups, prompt_db) |
|
self.metric_types = metric_types |
|
|
|
def _format_table(self, parsed_results, dataset_metrics, |
|
dataset_eval_mode): |
|
prompt_version = { |
|
dataset_abbr_from_cfg(d): get_prompt_hash(d)[:6] |
|
for d in self.dataset_cfgs |
|
} |
|
|
|
table = [] |
|
header1 = ['dataset', 'version', 'mode'] + sum( |
|
[[model_abbr] + ['-' for _ in range(len(self.metric_types) - 1)] |
|
for model_abbr in self.model_abbrs], []) |
|
table.append(header1) |
|
header2 = ['-', '-', '-'] + sum( |
|
[self.metric_types for _ in self.model_abbrs], []) |
|
table.append(header2) |
|
for dataset_abbr in self.dataset_abbrs: |
|
if dataset_abbr not in dataset_metrics: |
|
table.append([dataset_abbr, '-', '-'] + ['-'] * |
|
len(self.model_abbrs) * len(self.metric_types)) |
|
continue |
|
row = [ |
|
dataset_abbr, |
|
prompt_version.get(dataset_abbr, '-'), |
|
dataset_eval_mode.get(dataset_abbr, '-') |
|
] |
|
for model_abbr in self.model_abbrs: |
|
for metric in self.metric_types: |
|
if dataset_abbr in parsed_results[ |
|
model_abbr] and metric in parsed_results[ |
|
model_abbr][dataset_abbr]: |
|
row.append('{:.02f}'.format( |
|
parsed_results[model_abbr][dataset_abbr][metric])) |
|
else: |
|
row.append('-') |
|
table.append(row) |
|
return table |
|
|