mirror of
https://github.com/open-compass/opencompass.git
synced 2025-05-30 16:03:24 +08:00
51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
![]() |
from pathlib import Path
|
||
|
from typing import List
|
||
|
|
||
|
import typer
|
||
|
from mmengine.config import Config
|
||
|
from typer import Option
|
||
|
|
||
|
from opencompass.registry import build_from_cfg
|
||
|
from opencompass.summarizers.multi_model import MultiModelSummarizer
|
||
|
|
||
|
app = typer.Typer(add_completion=False, pretty_exceptions_show_locals=False)
|
||
|
|
||
|
|
||
|
@app.command(help='Visualize the results of multiple models')
|
||
|
def main(
|
||
|
cfg_paths: List[Path] = Option(
|
||
|
...,
|
||
|
help='The path to the config file of the task',
|
||
|
exists=True,
|
||
|
),
|
||
|
work_dirs: List[Path] = Option(
|
||
|
...,
|
||
|
help='The work dirs for the task(named by timestamp), '
|
||
|
'need to ensure the order is the same as cfg_paths.',
|
||
|
exists=True,
|
||
|
),
|
||
|
group: str = Option(None,
|
||
|
help='If not None, show the accuracy in the group.'),
|
||
|
):
|
||
|
assert len(cfg_paths) == len(work_dirs)
|
||
|
cfgs = [Config.fromfile(it, format_python_code=False) for it in cfg_paths]
|
||
|
|
||
|
multi_models_summarizer = None
|
||
|
for cfg, work_dir in zip(cfgs, work_dirs):
|
||
|
cfg['work_dir'] = work_dir
|
||
|
summarizer_cfg = cfg.get('summarizer', {})
|
||
|
summarizer_cfg['type'] = MultiModelSummarizer
|
||
|
summarizer_cfg['config'] = cfg
|
||
|
summarizer = build_from_cfg(summarizer_cfg)
|
||
|
if multi_models_summarizer is None:
|
||
|
multi_models_summarizer = summarizer
|
||
|
else:
|
||
|
multi_models_summarizer.merge(summarizer)
|
||
|
multi_models_summarizer.summarize()
|
||
|
if group:
|
||
|
multi_models_summarizer.show_group(group)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
app()
|