exp: add exec-run plumbing command to run exp from ExecutorInfo

This commit is contained in:
Peter Rowlands
2022-01-13 16:34:20 +09:00
committed by Peter Rowlands (변기호)
parent fb16cd06e3
commit 367e5d1429
3 changed files with 59 additions and 1 deletions
+10
View File
@@ -57,3 +57,13 @@ class CmdBaseNoRepo(CmdBase):
def do_run(self):
return self.run()
def fix_plumbing_subparsers(subparsers):
# metavar needs to be explicitly set in order to hide plumbing subcommands
# from the 'positional arguments' choices list
# see: https://bugs.python.org/issue22848
cmds = [
cmd for cmd, parser in subparsers.choices.items() if parser.add_help
]
subparsers.metavar = "{{{}}}".format(",".join(cmds))
+8 -1
View File
@@ -1,10 +1,15 @@
import argparse
from dvc.command.base import append_doc_link, fix_subparsers
from dvc.command.base import (
append_doc_link,
fix_plumbing_subparsers,
fix_subparsers,
)
from dvc.command.experiments import (
apply,
branch,
diff,
exec_run,
gc,
init,
ls,
@@ -19,6 +24,7 @@ SUB_COMMANDS = [
apply,
branch,
diff,
exec_run,
gc,
init,
ls,
@@ -51,3 +57,4 @@ def add_parser(subparsers, parent_parser):
fix_subparsers(experiments_subparsers)
for cmd in SUB_COMMANDS:
cmd.add_parser(experiments_subparsers, parent_parser)
fix_plumbing_subparsers(experiments_subparsers)
+41
View File
@@ -0,0 +1,41 @@
import logging
from dvc.command.base import CmdBaseNoRepo
logger = logging.getLogger(__name__)
class CmdExecutorRun(CmdBaseNoRepo):
"""Run an experiment executor."""
def run(self):
from dvc.repo.experiments.executor.base import (
BaseExecutor,
ExecutorInfo,
)
from dvc.utils.serialize import load_json
info = ExecutorInfo.from_dict(load_json(self.args.infofile))
BaseExecutor.reproduce(
info=info,
rev="",
queue=None,
log_level=logger.getEffectiveLevel(),
)
return 0
def add_parser(experiments_subparsers, parent_parser):
EXEC_RUN_HELP = "Run an experiment executor."
exec_run_parser = experiments_subparsers.add_parser(
"exec-run",
parents=[parent_parser],
description=EXEC_RUN_HELP,
add_help=False,
)
exec_run_parser.add_argument(
"--infofile",
help="Path to executor info file",
default=None,
)
exec_run_parser.set_defaults(func=CmdExecutorRun)