Unverified Commit 80b6cb3b authored by liuzhe-lz's avatar liuzhe-lz Committed by GitHub
Browse files

Merge pull request #3030 from microsoft/v2.0

Merge v2.0 into master
parents 77dac12b ff1af7f2
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT license.
import os
import site
import sys
from collections import defaultdict
from pathlib import Path
import importlib
import os
from pathlib import Path
import sys
import ruamel.yaml as yaml
import nni
from .constants import BuiltinAlgorithms
ALGO_TYPES = ['tuners', 'assessors', 'advisors']
......@@ -286,50 +287,9 @@ def create_customized_class_instance(class_params):
return instance
def get_nni_installation_parent_dir():
''' Find nni installation parent directory
'''
if os.getenv('VIRTUAL_ENV'):
# if 'virtualenv' package is used, `site` has not attr getsitepackages, so we will instead use VIRTUAL_ENV
# Note that conda venv will not have VIRTUAL_ENV
python_dir = os.getenv('VIRTUAL_ENV')
else:
python_sitepackage = site.getsitepackages()[0]
# If system-wide python is used, we will give priority to using `local sitepackage`--"usersitepackages()" given
# that nni exists there
if python_sitepackage.startswith('/usr') or python_sitepackage.startswith('/Library'):
python_dir = _try_installation_path_sequentially(site.getusersitepackages(), *site.getsitepackages())
else:
python_dir = _try_installation_path_sequentially(*site.getsitepackages(), site.getusersitepackages())
return python_dir
def _try_installation_path_sequentially(*sitepackages):
'''Try different installation path sequentially util nni is found.
Return None if nothing is found
'''
for sitepackage in sitepackages:
path = Path(sitepackage)
if len(path.parents) > 2 and (path.parents[2] / 'nni' / 'main.js').is_file():
return str(path.parents[2])
if (path / 'nni' / 'main.js').is_file():
return str(path)
return None
def get_nni_installation_path():
''' Find nni installation directory
'''
parent_dir = get_nni_installation_parent_dir()
if parent_dir:
entry_file = os.path.join(parent_dir, 'nni', 'main.js')
if os.path.isfile(entry_file):
return os.path.join(parent_dir, 'nni')
return None
def get_nni_config_dir():
return os.path.join(get_nni_installation_path(), 'config')
def get_package_config_path():
config_dir = get_nni_config_dir()
# FIXME: this might not be the desired location
config_dir = Path(nni.__path__[0]).parent / 'nni_config'
if not os.path.exists(config_dir):
os.makedirs(config_dir, exist_ok=True)
return os.path.join(config_dir, 'installed_packages.yml')
......
......@@ -5,87 +5,87 @@ BuiltinAlgorithms = {
'tuners': [
{
'name': 'TPE',
'class_name': 'nni.hyperopt_tuner.hyperopt_tuner.HyperoptTuner',
'class_name': 'nni.algorithms.hpo.hyperopt_tuner.hyperopt_tuner.HyperoptTuner',
'class_args': {
'algorithm_name': 'tpe'
},
'class_args_validator': 'nni.hyperopt_tuner.hyperopt_tuner.HyperoptClassArgsValidator'
'class_args_validator': 'nni.algorithms.hpo.hyperopt_tuner.hyperopt_tuner.HyperoptClassArgsValidator'
},
{
'name': 'Random',
'class_name': 'nni.hyperopt_tuner.hyperopt_tuner.HyperoptTuner',
'class_name': 'nni.algorithms.hpo.hyperopt_tuner.hyperopt_tuner.HyperoptTuner',
'class_args': {
'algorithm_name': 'random_search'
},
'accept_class_args': False,
'class_args_validator': 'nni.hyperopt_tuner.hyperopt_tuner.HyperoptClassArgsValidator'
'class_args_validator': 'nni.algorithms.hpo.hyperopt_tuner.hyperopt_tuner.HyperoptClassArgsValidator'
},
{
'name': 'Anneal',
'class_name': 'nni.hyperopt_tuner.hyperopt_tuner.HyperoptTuner',
'class_name': 'nni.algorithms.hpo.hyperopt_tuner.hyperopt_tuner.HyperoptTuner',
'class_args': {
'algorithm_name': 'anneal'
},
'class_args_validator': 'nni.hyperopt_tuner.hyperopt_tuner.HyperoptClassArgsValidator'
'class_args_validator': 'nni.algorithms.hpo.hyperopt_tuner.hyperopt_tuner.HyperoptClassArgsValidator'
},
{
'name': 'Evolution',
'class_name': 'nni.evolution_tuner.evolution_tuner.EvolutionTuner',
'class_args_validator': 'nni.evolution_tuner.evolution_tuner.EvolutionClassArgsValidator'
'class_name': 'nni.algorithms.hpo.evolution_tuner.evolution_tuner.EvolutionTuner',
'class_args_validator': 'nni.algorithms.hpo.evolution_tuner.evolution_tuner.EvolutionClassArgsValidator'
},
{
'name': 'BatchTuner',
'class_name': 'nni.batch_tuner.batch_tuner.BatchTuner',
'class_name': 'nni.algorithms.hpo.batch_tuner.batch_tuner.BatchTuner',
'accept_class_args': False,
},
{
'name': 'GridSearch',
'class_name': 'nni.gridsearch_tuner.gridsearch_tuner.GridSearchTuner',
'class_name': 'nni.algorithms.hpo.gridsearch_tuner.gridsearch_tuner.GridSearchTuner',
'accept_class_args': False,
},
{
'name': 'NetworkMorphism',
'class_name': 'nni.networkmorphism_tuner.networkmorphism_tuner.NetworkMorphismTuner',
'class_args_validator': 'nni.networkmorphism_tuner.networkmorphism_tuner.NetworkMorphismClassArgsValidator'
'class_name': 'nni.algorithms.hpo.networkmorphism_tuner.networkmorphism_tuner.NetworkMorphismTuner',
'class_args_validator': 'nni.algorithms.hpo.networkmorphism_tuner.networkmorphism_tuner.NetworkMorphismClassArgsValidator'
},
{
'name': 'MetisTuner',
'class_name': 'nni.metis_tuner.metis_tuner.MetisTuner',
'class_args_validator': 'nni.metis_tuner.metis_tuner.MetisClassArgsValidator'
'class_name': 'nni.algorithms.hpo.metis_tuner.metis_tuner.MetisTuner',
'class_args_validator': 'nni.algorithms.hpo.metis_tuner.metis_tuner.MetisClassArgsValidator'
},
{
'name': 'GPTuner',
'class_name': 'nni.gp_tuner.gp_tuner.GPTuner',
'class_args_validator': 'nni.gp_tuner.gp_tuner.GPClassArgsValidator'
'class_name': 'nni.algorithms.hpo.gp_tuner.gp_tuner.GPTuner',
'class_args_validator': 'nni.algorithms.hpo.gp_tuner.gp_tuner.GPClassArgsValidator'
},
{
'name': 'PBTTuner',
'class_name': 'nni.pbt_tuner.pbt_tuner.PBTTuner',
'class_args_validator': 'nni.pbt_tuner.pbt_tuner.PBTClassArgsValidator'
'class_name': 'nni.algorithms.hpo.pbt_tuner.pbt_tuner.PBTTuner',
'class_args_validator': 'nni.algorithms.hpo.pbt_tuner.pbt_tuner.PBTClassArgsValidator'
},
{
'name': 'RegularizedEvolutionTuner',
'class_name': 'nni.regularized_evolution_tuner.regularized_evolution_tuner.RegularizedEvolutionTuner',
'class_args_validator': 'nni.regularized_evolution_tuner.regularized_evolution_tuner.EvolutionClassArgsValidator'
'class_name': 'nni.algorithms.hpo.regularized_evolution_tuner.regularized_evolution_tuner.RegularizedEvolutionTuner',
'class_args_validator': 'nni.algorithms.hpo.regularized_evolution_tuner.regularized_evolution_tuner.EvolutionClassArgsValidator'
}
],
'assessors': [
{
'name': 'Medianstop',
'class_name': 'nni.medianstop_assessor.medianstop_assessor.MedianstopAssessor',
'class_args_validator': 'nni.medianstop_assessor.medianstop_assessor.MedianstopClassArgsValidator'
'class_name': 'nni.algorithms.hpo.medianstop_assessor.medianstop_assessor.MedianstopAssessor',
'class_args_validator': 'nni.algorithms.hpo.medianstop_assessor.medianstop_assessor.MedianstopClassArgsValidator'
},
{
'name': 'Curvefitting',
'class_name': 'nni.curvefitting_assessor.curvefitting_assessor.CurvefittingAssessor',
'class_args_validator': 'nni.curvefitting_assessor.curvefitting_assessor.CurvefittingClassArgsValidator'
'class_name': 'nni.algorithms.hpo.curvefitting_assessor.curvefitting_assessor.CurvefittingAssessor',
'class_args_validator': 'nni.algorithms.hpo.curvefitting_assessor.curvefitting_assessor.CurvefittingClassArgsValidator'
},
],
'advisors': [
{
'name': 'Hyperband',
'class_name': 'nni.hyperband_advisor.hyperband_advisor.Hyperband',
'class_args_validator': 'nni.hyperband_advisor.hyperband_advisor.HyperbandClassArgsValidator'
'class_name': 'nni.algorithms.hpo.hyperband_advisor.hyperband_advisor.Hyperband',
'class_args_validator': 'nni.algorithms.hpo.hyperband_advisor.hyperband_advisor.HyperbandClassArgsValidator'
}
]
}
......@@ -2,8 +2,8 @@
# Licensed under the MIT license.
from .utils import to_json
from .env_vars import trial_env_vars
from . import platform
from .runtime.env_vars import trial_env_vars
from .runtime import platform
__all__ = [
......
......@@ -57,14 +57,14 @@ class Tuner(Recoverable):
See Also
--------
Builtin tuners:
:class:`~nni.hyperopt_tuner.hyperopt_tuner.HyperoptTuner`
:class:`~nni.evolution_tuner.evolution_tuner.EvolutionTuner`
:class:`~nni.smac_tuner.SMACTuner`
:class:`~nni.gridsearch_tuner.GridSearchTuner`
:class:`~nni.networkmorphism_tuner.networkmorphism_tuner.NetworkMorphismTuner`
:class:`~nni.metis_tuner.mets_tuner.MetisTuner`
:class:`~nni.ppo_tuner.PPOTuner`
:class:`~nni.gp_tuner.gp_tuner.GPTuner`
:class:`~nni.algorithms.hpo.hyperopt_tuner.hyperopt_tuner.HyperoptTuner`
:class:`~nni.algorithms.hpo.evolution_tuner.evolution_tuner.EvolutionTuner`
:class:`~nni.algorithms.hpo.smac_tuner.SMACTuner`
:class:`~nni.algorithms.hpo.gridsearch_tuner.GridSearchTuner`
:class:`~nni.algorithms.hpo.networkmorphism_tuner.networkmorphism_tuner.NetworkMorphismTuner`
:class:`~nni.algorithms.hpo.metis_tuner.mets_tuner.MetisTuner`
:class:`~nni.algorithms.hpo.ppo_tuner.PPOTuner`
:class:`~nni.algorithms.hpo.gp_tuner.gp_tuner.GPTuner`
"""
def generate_parameters(self, parameter_id, **kwargs):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment