Source code for orion.core.cli.hunt

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
:mod:`orion.core.cli.hunt` -- Module running the optimization command
=====================================================================

.. module:: hunt
   :platform: Unix
   :synopsis: Gets an experiment and iterates over it until one of the exit conditions is met

"""

import logging

from orion.core.cli import base as cli
from orion.core.cli import evc as evc_cli
from orion.core.io import resolve_config
from orion.core.io.evc_builder import EVCBuilder
from orion.core.io.experiment_builder import ExperimentBuilder
from orion.core.worker import workon

log = logging.getLogger(__name__)


[docs]def add_subparser(parser): """Add the subparser that needs to be used for this command""" hunt_parser = parser.add_parser('hunt', help='hunt help') orion_group = cli.get_basic_args_group(hunt_parser) orion_group.add_argument( '--max-trials', type=int, metavar='#', help="number of trials to be completed for the experiment. This value " "will be saved within the experiment configuration and reused " "across all workers to determine experiment's completion. " "(default: %s)" % resolve_config.DEF_CMD_MAX_TRIALS[1]) orion_group.add_argument( '--worker-trials', type=int, metavar='#', help="number of trials to be completed for this worker. " "If the experiment is completed, the worker will die even if it " "did not reach its maximum number of trials " "(default: %s)" % resolve_config.DEF_CMD_WORKER_TRIALS[1]) orion_group.add_argument('--working-dir', type=str, help="Set working directory for running experiment.") orion_group.add_argument( "--pool-size", type=int, metavar='#', help="number of simultaneous trials the algorithm should suggest. " "This is useful if many workers are executed in parallel and the algorithm has a " "strategy to sample non-independant trials simultaneously. Otherwise, it is better " "to leave `pool_size` to 1 and set a Strategy for Oríon's producer. " "Note that this option is not usefull useless you " "know the algorithm have a strategy to produce multiple trials " "simultaneously. If you have any doubt, leave it to 1. " "(default: %s)" % resolve_config.DEF_CMD_POOL_SIZE[1]) evc_cli.get_branching_args_group(hunt_parser) cli.get_user_args_group(hunt_parser) hunt_parser.set_defaults(func=main) return hunt_parser
[docs]def main(args): """Build experiment and execute hunt command""" args['root'] = None args['leafs'] = [] # TODO: simplify when parameter parsing is refactored worker_trials = ExperimentBuilder().fetch_full_config(args)['worker_trials'] experiment = EVCBuilder().build_from(args) workon(experiment, worker_trials)