| 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() |
|
|