|
|
|
|
|
|
|
|
|
|
| import logging
|
| import os
|
| import sys
|
|
|
| from dinov2.eval.linear import get_args_parser as get_linear_args_parser
|
| from dinov2.logging import setup_logging
|
| from dinov2.run.submit import get_args_parser, submit_jobs
|
|
|
|
|
| logger = logging.getLogger("dinov2")
|
|
|
|
|
| class Evaluator:
|
| def __init__(self, args):
|
| self.args = args
|
|
|
| def __call__(self):
|
| from dinov2.eval.linear import main as linear_main
|
|
|
| self._setup_args()
|
| linear_main(self.args)
|
|
|
| def checkpoint(self):
|
| import submitit
|
|
|
| logger.info(f"Requeuing {self.args}")
|
| empty = type(self)(self.args)
|
| return submitit.helpers.DelayedSubmission(empty)
|
|
|
| def _setup_args(self):
|
| import submitit
|
|
|
| job_env = submitit.JobEnvironment()
|
| self.args.output_dir = self.args.output_dir.replace("%j", str(job_env.job_id))
|
| logger.info(f"Process group: {job_env.num_tasks} tasks, rank: {job_env.global_rank}")
|
| logger.info(f"Args: {self.args}")
|
|
|
|
|
| def main():
|
| description = "Submitit launcher for DINOv2 linear evaluation"
|
| linear_args_parser = get_linear_args_parser(add_help=False)
|
| parents = [linear_args_parser]
|
| args_parser = get_args_parser(description=description, parents=parents)
|
| args = args_parser.parse_args()
|
|
|
| setup_logging()
|
|
|
| assert os.path.exists(args.config_file), "Configuration file does not exist!"
|
| submit_jobs(Evaluator, args, name="dinov2:linear")
|
| return 0
|
|
|
|
|
| if __name__ == "__main__":
|
| sys.exit(main())
|
|
|