From 26bd7272bc3eb64ae7959eff5e9fed1a3d59af36 Mon Sep 17 00:00:00 2001 From: chicm-ms <38930155+chicm-ms@users.noreply.github.com> Date: Mon, 28 Jan 2019 13:28:41 +0800 Subject: [PATCH 01/22] Fix parameter file bug (#667) * Pull code (#22) * Support distributed job for frameworkcontroller (#612) support distributed job for frameworkcontroller * Multiphase doc (#519) * multiPhase doc * updates * updates * Add time parser for 'nnictl update duration' (#632) Current nnictl update duration only support seconds unit, add a parser for this command to support {s, m, h, d} * fix experiment state bug (#629) * update top README.md (#622) * Update README.md * update (#634) * Integration tests refactoring (#625) * Integration test refactoring (#21) (#616) * Integration test refactoring (#21) * Refactoring integration tests * test metrics * update azure pipeline * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * update trigger * Integration test refactoring (#618) * updates * updates * update pipeline (#619) * update pipeline * updates * updates * updates * updates * updates * test pipeline (#623) * test pipeline * updates * updates * updates * Update integration test (#624) * Update integration test * updates * updates * updates * updates * updates * updates * Revert "Pull code (#22)" This reverts commit 62fc165ad7b2ba724eead3b99f010aa34491e2c7. * Fix parameter.cfg bug --- src/sdk/pynni/nni/platform/local.py | 2 +- test/config_test/multi_phase/multi_phase.test.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sdk/pynni/nni/platform/local.py b/src/sdk/pynni/nni/platform/local.py index 783b0d02a0..fec0ae42c0 100644 --- a/src/sdk/pynni/nni/platform/local.py +++ b/src/sdk/pynni/nni/platform/local.py @@ -69,7 +69,7 @@ def get_next_parameter(): params_filepath = os.path.join(_sysdir, params_file_name) if not os.path.isfile(params_filepath): request_next_parameter() - while not os.path.isfile(params_filepath): + while not (os.path.isfile(params_filepath) and os.path.getsize(params_filepath) > 0): time.sleep(3) params_file = open(params_filepath, 'r') params = json.load(params_file) diff --git a/test/config_test/multi_phase/multi_phase.test.yml b/test/config_test/multi_phase/multi_phase.test.yml index b25c2a660b..ed51236fef 100644 --- a/test/config_test/multi_phase/multi_phase.test.yml +++ b/test/config_test/multi_phase/multi_phase.test.yml @@ -1,8 +1,8 @@ authorName: nni experimentName: default_test maxExecDuration: 5m -maxTrialNum: 2 -trialConcurrency: 2 +maxTrialNum: 16 +trialConcurrency: 8 searchSpacePath: ./search_space.json tuner: From a441558c7b79fa0feaf4868b4b8fa1d66b4120c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Here=C3=B1=C3=BA?= Date: Mon, 28 Jan 2019 05:27:58 -0300 Subject: [PATCH 02/22] Added punctuation signal on string #25 (#665) --- docs/SearchSpaceSpec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/SearchSpaceSpec.md b/docs/SearchSpaceSpec.md index 328794dd34..0655e4c729 100644 --- a/docs/SearchSpaceSpec.md +++ b/docs/SearchSpaceSpec.md @@ -22,7 +22,7 @@ User should define the name of variable, type and candidate value of variable. The candidate type and value for variable is here: * {"_type":"choice","_value":options} - * Which means the variable value is one of the options, which should be a list The elements of options can themselves be [nested] stochastic expressions. In this case, the stochastic choices that only appear in some of the options become conditional parameters. + * Which means the variable value is one of the options, which should be a list. The elements of options can themselves be [nested] stochastic expressions. In this case, the stochastic choices that only appear in some of the options become conditional parameters.
* {"_type":"randint","_value":[upper]} From bc9eab33642f6d059092c5f19d0a21bd11e06992 Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Mon, 28 Jan 2019 19:04:20 +0800 Subject: [PATCH 03/22] doc refactor to master (#648) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * initial commit for document refactor (#533) * enable sphinx * fix docs/readme link * update conf * use mkdocs to build homepage * Update mkdocs.yml use docs/README as main * delete sphinx file * add nav to mkdocs config * fix mkdocs bug * add requirement for online build * clean requirements.txt * add contribution * change requirements file location * delete sphinx from gitignore * mnist examples doc (#566) * mnist examples doc * update * update * update * update * update * Docs refactor of Tutorial (QuickStart, Tuners, Assessors) (#554) * Refactor of QuickStart * fix some typo * Make new changes based on suggestions * update successful INFO * update Tuners * update Tuners:overview * Update Tuners.md * Add Assessor.md * update * update * mkdocs.yml * Update QuickStart.md * update * update * update * update * update * add diff * modified QuickStart.md and add mnist without nni example * update * small change * update * update * update * update * update and refactor the mnist.py * update * update working process * refator the mnist.py * update * update * update mkdocs.md * add metis tuner * update QuickStart webUI part * update capture * update capture * update description * update picture for assessor * update * modified mkdocs.yml * update Tuners.md * test format * update Tuner.md * update Tuner.md * change display format * fix typo * update * fix typo * fix typo and rename customize_Advisor * fix typo and modified * Dev doc: Add docs for Trials, SearchSpace, Annotation and GridSearch (#569) * add Trials.md * add Trials.md * add Trials.md * add Trials.md * add docs * add docs * add docs * add docs * add docs * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * update triaL.MD * update triaL.MD * update triaL.MD * update triaL.MD * update triaL.MD * add grid search tuner doc * add grid search tuner doc * Chec dev doc (#606) * multiPhase doc * updates * updates * updates * updates * updates * updates * update dev-doc to sphinx (#630) * add trigger (#544) * NNI logging architecture improvement (#539) * Removed unused log code, refactor to rename some class name in nni sdk and trial_tools * Fix the regression bug that loca/remote mode doesnt work * [WebUI] Fix issue#517 & issue#459 (#524) * [WebUI] Fix issue#517 & issue#459 * update * [Logging architecture refactor] Remove unused metrics related code in nni trial_tools, support kubeflow mode for logging architecture refactor (#551) * Remove unused metrics related code in nni trial_tools, support kubeflow mode for logging architecture refactor * Doc typo and format fixes (#560) * fix incorrect document * fix doc format and typo * fix state transition (#504) * Add enas nni version from contributor (#557) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * update * fix path * update reference * fix bug in config file * update nni_arch_overview.png * update * update * update * add enas_nni * Code coverage report (#559) * Add UT code coverage report * updates * updates * updates * updates * updates * updates * integration test python code coverage report * Updating Readme to add the Related Projects like PAI, KubeLauncher and MMdnn (#565) * Adding related projects to Readme * Fix remote TrainingService bug, change forEach to "for of" (#564) trial job could not be stopped in remote machine when experiment is stopped, because awit/async does not work normally in forEach, refer https://codeburst.io/javascript-async-await-with-foreach-b6ba62bbf404. * To install the whole nni in an virtual environment (#538) * support venv * adapt venv * adapt venv * adapt venv * adapt venv * new test * new test * new test * support venv * support venv * support venv * support venv * support venv * support venv * support venv * colorful output for mac * colorful output for mac * permission denied in /tmp * permission denied in /tmp * permission denied in /tmp * remove unused variable * final * remove build python * Make it feasible for annotation whether to add an extra line "nni.get_next_parameter()" or not (#526) * fix bug * add docs * add ut * add ut * add to ci * update doc * update doc * update ut * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * test * test * test * test * test * test * test * test * test * test * revert * refactor * refactor * s * merge * fix annotation for extra line * add deprecation warning * fix permision deny (#567) * Add Metis Tuner (#534) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * update * fix path * update reference * fix bug in config file * update nni_arch_overview.png * update * update * update * add metis tuner code * 1. fix bug about import 2.update other sdk file * add auto-gbdt-example and remove unused code * add metis_tuner into README * update the README * update README | remove unused variable * fix typo * add sklearn into requirments * Update src/sdk/pynni/nni/metis_tuner/metis_tuner.py add default value in __init__ Co-Authored-By: xuehui1991 * Update docs/HowToChooseTuner.md Co-Authored-By: xuehui1991 * Update docs/HowToChooseTuner.md Co-Authored-By: xuehui1991 * fix typo | add more comments * Change WARNING to INFO (#574) change the warning level to info level when expand relative path add nnictl --version log update readme.md * Fix some bugs in doc and log (#561) * fix some bugs in doc and log * The learning rate focus more on validation sets accuracy than training sets accuracy. * Fix a race condidtion issue in trial_keeper for reading log from pipe (#578) * Fix a race condidtion issue in trial_keeper for reading log from pipe * [WebUI] Fix issue#458 about final result as dict (#563) * [WebUI] Fix issue#458 about final result as dict * Fix comments * fix bug * support frameworkcontroller log (#572) support frameworkcontroller log * Dev weight sharing (#568) (#576) * Dev weight sharing (#568) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * Dev weight sharing update doc (#577) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * add example section * Dev weight sharing update (#579) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * add example section * update weight sharing tutorial * Dev weight sharing (#581) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * add example section * update weight sharing tutorial * fix divide by zero risk * update tuner thread exception handling * fix bug for async test * Add frameworkcontroller document (#530) Add frameworkcontroller document. Fix other document small issues. * [WebUI] Show trial log for pai and k8s (#580) * [WebUI] Show trial log for pai and k8s * fix lint * Fix comments * [WebUI] Show trial log for pai and k8s (#580) * [WebUI] Show trial log for pai and k8s * fix lint * Fix comments * add __init__.py to metis_tuner (#588) * [Document] Update webui doc (#587) * Update webui document * update * Update Dockerfile and README (#589) * fix some bugs in doc and log * The learning rate focus more on validation sets accuracy than training sets accuracy. * update Dockerfile and README * Update README.md Merge to branch v0.5 * [WebUI] Fix bug (#591) * fix bug * fix bug of background * update * update * add frameworkcontroller platform * update README in metis and update RuntimeError info (#595) * update README in metis and update RuntimeError * fix typo * add numerical choice check * update * udpate NFS setup tutorial (#597) * Remove unused example (#600) * update README in metis and update RuntimeError * remove smart params * Update release note (#603) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md … * update doc: overview (#555) * doc overview * update overview * modification * update overview * update * update * update * update * Delete mkdocs.yml * cifar10 example doc (#573) * add cifar10 examples * add search space and result * update * update typo * update * update * Update doc: refactor ExperimentConfig.md (#602) * fix doc * add link in doc * update * add nnictl package cmd * update doc index & add api reference (#636) * add trigger (#544) * NNI logging architecture improvement (#539) * Removed unused log code, refactor to rename some class name in nni sdk and trial_tools * Fix the regression bug that loca/remote mode doesnt work * [WebUI] Fix issue#517 & issue#459 (#524) * [WebUI] Fix issue#517 & issue#459 * update * [Logging architecture refactor] Remove unused metrics related code in nni trial_tools, support kubeflow mode for logging architecture refactor (#551) * Remove unused metrics related code in nni trial_tools, support kubeflow mode for logging architecture refactor * Doc typo and format fixes (#560) * fix incorrect document * fix doc format and typo * fix state transition (#504) * Add enas nni version from contributor (#557) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * update * fix path * update reference * fix bug in config file * update nni_arch_overview.png * update * update * update * add enas_nni * Code coverage report (#559) * Add UT code coverage report * updates * updates * updates * updates * updates * updates * integration test python code coverage report * Updating Readme to add the Related Projects like PAI, KubeLauncher and MMdnn (#565) * Adding related projects to Readme * add Trials.md * add Trials.md * add Trials.md * Fix remote TrainingService bug, change forEach to "for of" (#564) trial job could not be stopped in remote machine when experiment is stopped, because awit/async does not work normally in forEach, refer https://codeburst.io/javascript-async-await-with-foreach-b6ba62bbf404. * add Trials.md * add docs * To install the whole nni in an virtual environment (#538) * support venv * adapt venv * adapt venv * adapt venv * adapt venv * new test * new test * new test * support venv * support venv * support venv * support venv * support venv * support venv * support venv * colorful output for mac * colorful output for mac * permission denied in /tmp * permission denied in /tmp * permission denied in /tmp * remove unused variable * final * remove build python * Make it feasible for annotation whether to add an extra line "nni.get_next_parameter()" or not (#526) * fix bug * add docs * add ut * add ut * add to ci * update doc * update doc * update ut * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * add ut to ci * test * test * test * test * test * test * test * test * test * test * revert * refactor * refactor * s * merge * fix annotation for extra line * add deprecation warning * fix permision deny (#567) * Add Metis Tuner (#534) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * update * fix path * update reference * fix bug in config file * update nni_arch_overview.png * update * update * update * add metis tuner code * 1. fix bug about import 2.update other sdk file * add auto-gbdt-example and remove unused code * add metis_tuner into README * update the README * update README | remove unused variable * fix typo * add sklearn into requirments * Update src/sdk/pynni/nni/metis_tuner/metis_tuner.py add default value in __init__ Co-Authored-By: xuehui1991 * Update docs/HowToChooseTuner.md Co-Authored-By: xuehui1991 * Update docs/HowToChooseTuner.md Co-Authored-By: xuehui1991 * fix typo | add more comments * Change WARNING to INFO (#574) change the warning level to info level when expand relative path add nnictl --version log update readme.md * Fix some bugs in doc and log (#561) * fix some bugs in doc and log * The learning rate focus more on validation sets accuracy than training sets accuracy. * Fix a race condidtion issue in trial_keeper for reading log from pipe (#578) * Fix a race condidtion issue in trial_keeper for reading log from pipe * [WebUI] Fix issue#458 about final result as dict (#563) * [WebUI] Fix issue#458 about final result as dict * Fix comments * fix bug * support frameworkcontroller log (#572) support frameworkcontroller log * Dev weight sharing (#568) (#576) * Dev weight sharing (#568) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * Dev weight sharing update doc (#577) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * add example section * Dev weight sharing update (#579) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * add example section * update weight sharing tutorial * Dev weight sharing (#581) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * simple weight sharing * update gitignore file * change tuner codedir to relative path * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * unversion config.yml with machine information * sync graph.py between tuners & trial of ga_squad * sync graph.py between tuners & trial of ga_squad * copy weight shared ga_squad under weight_sharing folder * mv ga_squad code back to master * simple tuner & trial ready * Fix nnictl multiThread option * weight sharing with async dispatcher simple example ready * update for ga_squad * fix bug * modify multihead attention name * add min_layer_num to Graph * fix bug * update share id calc * fix bug * add save logging * fix ga_squad tuner bug * sync bug fix for ga_squad tuner * fix same hash_id bug * add lock to simple tuner in weight sharing * Add readme to simple weight sharing * update * update * add paper link * update * reformat with autopep8 * add documentation for weight sharing * test for weight sharing * delete irrelevant files * move details of weight sharing in to code comments * add example section * update weight sharing tutorial * fix divide by zero risk * update tuner thread exception handling * fix bug for async test * Add frameworkcontroller document (#530) Add frameworkcontroller document. Fix other document small issues. * [WebUI] Show trial log for pai and k8s (#580) * [WebUI] Show trial log for pai and k8s * fix lint * Fix comments * [WebUI] Show trial log for pai and k8s (#580) * [WebUI] Show trial log for pai and k8s * fix lint * Fix comments * add __init__.py to metis_tuner (#588) * add docs * [Document] Update webui doc (#587) * Update webui document * update * Update Dockerfile and README (#589) * fix some bugs in doc and log * The learning rate focus more on validation sets accuracy than training sets accuracy. * update Dockerfile and README * Update README.md Merge to branch v0.5 * [WebUI] Fix bug (#591) * fix bug * fix bug of background * update * update * add frameworkcontroller platform * update README in metis and update RuntimeError info (#595) * update README in metis and update RuntimeError * fix typo * add numerical choice check * update * udpate NFS setup tutorial (#597) * Remove unused example (#600) * update README in metis and update RuntimeError * remove smart params * Update release note … * Add sklearn_example.md (#647) * fix doc * add link in doc * update * add nnictl package cmd * add sklearn-example.md * update * update * fix link * add desc in example.rst * revert nnictl before sphinx try * fix mnist.py example * add SQuAD_evolution_examples.md (#620) * add SQuAD_evolution_examples.md * add update * remove yml file * remove mkdoc.yml * update Example.rst * Add GBDT example doc (#654) * add SQuAD_evolution_examples.md * add update * remove yml file * remove mkdoc.yml * update Example.rst * update gbdt_example.md * update * add run command line * update Evlution_SQuAD.md * update link * add gbdt in Example.rst * Update SearchSpaceSpec (#656) * add Trials.md * add Trials.md * add Trials.md * add Trials.md * add docs * add docs * add docs * add docs * add docs * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * docs modification * update triaL.MD * update triaL.MD * update triaL.MD * update triaL.MD * update triaL.MD * add grid search tuner doc * add grid search tuner doc * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec * update SearchSpaceSpec * fix color for zejun * fix mnist before * fix image * Fix doc format (#658) * add SQuAD_evolution_examples.md * add update * remove yml file * fix format problem * update index * fix typo * fix broken-links of quickstart/tuners/assessors (#662) * update assessor.rst * fix * Dev doc fix4 (#672) * refactor index * fix title format for remote * fix nnictl doc w/ rst * fix assessor pic link * fix type for training service * adjust tutorial * fix typo * Dev doc (#669) * changed image link * deleted link of triallog.png new version do not has this function * Update AdvancedNAS.md * changed image link weight sharing image * update doc (#670) * update doc * Dev doc fix4 (#672) * refactor index * fix title format for remote * fix nnictl doc w/ rst * fix assessor pic link * fix type for training service * adjust tutorial * fix typo * Update customized assessor doc (#671) * Update customized assessor doc * updates * fix typo * update doc (#673) --- docs/.gitignore | 3 + docs/AdvancedNAS.md | 4 +- docs/AnnotationSpec.md | 80 ++- docs/Builtin_Assessors.md | 74 ++ docs/Builtin_Tuner.md | 313 +++++++++ docs/Contribution.rst | 8 + ...tomizedAdvisor.md => Customize_Advisor.md} | 0 docs/Customize_Assessor.md | 62 ++ docs/Customize_Tuner.md | 118 ++++ docs/Examples.rst | 12 + docs/ExperimentConfig.md | 16 +- docs/FAQ.md | 2 + docs/GetStarted.md | 3 +- docs/GridSearchTuner.md | 23 + docs/Installation.md | 24 +- docs/Makefile | 19 + docs/NNICTL.rst | 630 ++++++++++++++++++ docs/NNICTLDOC.md | 416 ++++++------ docs/Overview.md | 72 +- docs/QuickStart.md | 232 +++++++ docs/README.md | 133 ++++ docs/RELEASE.md | 56 +- docs/Reference.rst | 11 + docs/RemoteMachineMode.md | 12 +- docs/SQuAD_evolution_examples.md | 308 +++++++++ docs/SearchSpaceSpec.md | 39 +- docs/Trials.md | 135 ++++ docs/Tutorials.rst | 12 + docs/WebUI.md | 1 - docs/advanced.rst | 6 + docs/assessors.rst | 17 + docs/cifar10_examples.md | 84 +++ docs/conf.py | 187 ++++++ docs/gbdt_example.md | 185 +++++ docs/howto_1_WriteTrial.md | 3 +- docs/img/Assessor.png | Bin 0 -> 122219 bytes docs/img/QuickStart1.png | Bin 0 -> 166032 bytes docs/img/QuickStart2.png | Bin 0 -> 69220 bytes docs/img/QuickStart3.png | Bin 0 -> 94429 bytes docs/img/QuickStart4.png | Bin 0 -> 298514 bytes docs/img/QuickStart5.png | Bin 0 -> 73213 bytes docs/img/QuickStart6.png | Bin 0 -> 121123 bytes docs/img/QuickStart7.png | Bin 0 -> 37560 bytes docs/img/highlevelarchi.png | Bin 0 -> 33968 bytes docs/img/nni_logo_dark.png | Bin 0 -> 22693 bytes docs/index.rst | 21 + docs/mnist_examples.md | 68 ++ docs/requirements.txt | 7 + docs/sdk_reference.rst | 51 ++ docs/sklearn_examples.md | 69 ++ docs/training_services.rst | 9 + docs/tuners.rst | 19 + examples/trials/mnist/config_assessor.yml | 6 +- examples/trials/mnist/mnist_before.py | 223 +++++++ 54 files changed, 3411 insertions(+), 362 deletions(-) create mode 100644 docs/.gitignore create mode 100644 docs/Builtin_Assessors.md create mode 100644 docs/Builtin_Tuner.md create mode 100644 docs/Contribution.rst rename docs/{howto_3_CustomizedAdvisor.md => Customize_Advisor.md} (100%) create mode 100644 docs/Customize_Assessor.md create mode 100644 docs/Customize_Tuner.md create mode 100644 docs/Examples.rst create mode 100644 docs/GridSearchTuner.md create mode 100644 docs/Makefile create mode 100644 docs/NNICTL.rst create mode 100644 docs/QuickStart.md create mode 100644 docs/README.md create mode 100644 docs/Reference.rst create mode 100644 docs/SQuAD_evolution_examples.md create mode 100644 docs/Trials.md create mode 100644 docs/Tutorials.rst create mode 100644 docs/advanced.rst create mode 100644 docs/assessors.rst create mode 100644 docs/cifar10_examples.md create mode 100644 docs/conf.py create mode 100644 docs/gbdt_example.md create mode 100644 docs/img/Assessor.png create mode 100644 docs/img/QuickStart1.png create mode 100644 docs/img/QuickStart2.png create mode 100644 docs/img/QuickStart3.png create mode 100644 docs/img/QuickStart4.png create mode 100644 docs/img/QuickStart5.png create mode 100644 docs/img/QuickStart6.png create mode 100644 docs/img/QuickStart7.png create mode 100644 docs/img/highlevelarchi.png create mode 100644 docs/img/nni_logo_dark.png create mode 100644 docs/index.rst create mode 100644 docs/mnist_examples.md create mode 100644 docs/requirements.txt create mode 100644 docs/sdk_reference.rst create mode 100644 docs/sklearn_examples.md create mode 100644 docs/training_services.rst create mode 100644 docs/tuners.rst create mode 100644 examples/trials/mnist/mnist_before.py diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 0000000000..515c79da3c --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,3 @@ +_build +_static +_templates \ No newline at end of file diff --git a/docs/AdvancedNAS.md b/docs/AdvancedNAS.md index 04997f7b39..ca5e063c26 100644 --- a/docs/AdvancedNAS.md +++ b/docs/AdvancedNAS.md @@ -19,7 +19,7 @@ tuner: ``` And let tuner decide where to save & load weights and feed the paths to trials through `nni.get_next_parameters()`: -![weight_sharing_design](./img/weight_sharing.png) +drawing For example, in tensorflow: ```python @@ -86,4 +86,4 @@ For details, please refer to this [simple weight sharing example](../test/async_ [2]: https://arxiv.org/abs/1707.07012 [3]: https://arxiv.org/abs/1806.09055 [4]: https://arxiv.org/abs/1806.10282 -[5]: https://arxiv.org/abs/1703.01041 \ No newline at end of file +[5]: https://arxiv.org/abs/1703.01041 diff --git a/docs/AnnotationSpec.md b/docs/AnnotationSpec.md index 3f665c94de..a566fefb2e 100644 --- a/docs/AnnotationSpec.md +++ b/docs/AnnotationSpec.md @@ -1,58 +1,70 @@ # NNI Annotation -For good user experience and reduce user effort, we need to design a good annotation grammar. -If users use NNI system, they only need to: +## Overview - 1. Use nni.get_next_parameter() to retrieve hyper parameters from Tuner, before using other annotation, use following annotation at the begining of trial code: - '''@nni.get_next_parameter()''' +To improve user experience and reduce user effort, we design an annotation grammar. Using NNI annotation, users can adapt their code to NNI just by adding some standalone annotating strings, which does not affect the execution of the original code. - 2. Annotation variable in code as: +Below is an example: - '''@nni.variable(nni.choice(2,3,5,7),name=self.conv_size)''' +```python +'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)''' +learning_rate = 0.1 +``` +The meaning of this example is that NNI will choose one of several values (0.1, 0.01, 0.001) to assign to the learning_rate variable. Specifically, this first line is an NNI annotation, which is a single string. Following is an assignment statement. What nni does here is to replace the right value of this assignment statement according to the information provided by the annotation line. - 3. Annotation intermediate in code as: - '''@nni.report_intermediate_result(test_acc)''' +In this way, users could either run the python code directly or launch NNI to tune hyper-parameter in this code, without changing any codes. - 4. Annotation output in code as: +## Types of Annotation: - '''@nni.report_final_result(test_acc)''' +In NNI, there are mainly four types of annotation: - 5. Annotation `function_choice` in code as: - '''@nni.function_choice(max_pool(h_conv1, self.pool_size),avg_pool(h_conv1, self.pool_size),name=max_pool)''' +### 1. Annotate variables -In this way, they can easily implement automatic tuning on NNI. + `'''@nni.variable(sampling_algo, name)'''` -For `@nni.variable`, `nni.choice` is the type of search space and there are 10 types to express your search space as follows: +`@nni.variable` is used in NNI to annotate a variable. - 1. `@nni.variable(nni.choice(option1,option2,...,optionN),name=variable)` - Which means the variable value is one of the options, which should be a list The elements of options can themselves be stochastic expressions +**Arguments** - 2. `@nni.variable(nni.randint(upper),name=variable)` - Which means the variable value is a random integer in the range [0, upper). +- **sampling_algo**: Sampling algorithm that specifies a search space. User should replace it with a built-in NNI sampling function whose name consists of an `nni.` identification and a search space type specified in [SearchSpaceSpec](SearchSpaceSpec.md) such as `choice` or `uniform`. +- **name**: The name of the variable that the selected value will be assigned to. Note that this argument should be the same as the left value of the following assignment statement. - 3. `@nni.variable(nni.uniform(low, high),name=variable)` - Which means the variable value is a value uniformly between low and high. +An example here is: - 4. `@nni.variable(nni.quniform(low, high, q),name=variable)` - Which means the variable value is a value like round(uniform(low, high) / q) * q +```python +'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)''' +learning_rate = 0.1 +``` - 5. `@nni.variable(nni.loguniform(low, high),name=variable)` - Which means the variable value is a value drawn according to exp(uniform(low, high)) so that the logarithm of the return value is uniformly distributed. +### 2. Annotate functions - 6. `@nni.variable(nni.qloguniform(low, high, q),name=variable)` - Which means the variable value is a value like round(exp(uniform(low, high)) / q) * q + `'''@nni.function_choice(*functions, name)'''` - 7. `@nni.variable(nni.normal(label, mu, sigma),name=variable)` - Which means the variable value is a real value that's normally-distributed with mean mu and standard deviation sigma. +`@nni.function_choice` is used to choose one from several functions. - 8. `@nni.variable(nni.qnormal(label, mu, sigma, q),name=variable)` - Which means the variable value is a value like round(normal(mu, sigma) / q) * q +**Arguments** - 9. `@nni.variable(nni.lognormal(label, mu, sigma),name=variable)` - Which means the variable value is a value drawn according to exp(normal(mu, sigma)) +- **\*functions**: Several functions that are waiting to be selected from. Note that it should be a complete function call with arguments. Such as `max_pool(hidden_layer, pool_size)`. +- **name**: The name of the function that will be replaced in the following assignment statement. -10. `@nni.variable(nni.qlognormal(label, mu, sigma, q),name=variable)` - Which means the variable value is a value like round(exp(normal(mu, sigma)) / q) * q +An example here is: + +```python +"""@nni.function_choice(max_pool(hidden_layer, pool_size), avg_pool(hidden_layer, pool_size), name=max_pool)""" +h_pooling = max_pool(hidden_layer, pool_size) +``` + +### 3. Annotate intermediate result + + `'''@nni.report_intermediate_result(metrics)'''` + +`@nni.report_intermediate_result` is used to report intermediate result, whose usage is the same as `nni.report_intermediate_result` in [Trials.md](Trials.md) + +### 4. Annotate final result + + `'''@nni.report_final_result(metrics)'''` + +`@nni.report_final_result` is used to report the final result of the current trial, whose usage is the same as `nni.report_final_result` in [Trials.md](Trials.md) diff --git a/docs/Builtin_Assessors.md b/docs/Builtin_Assessors.md new file mode 100644 index 0000000000..46fd4f89d5 --- /dev/null +++ b/docs/Builtin_Assessors.md @@ -0,0 +1,74 @@ +# Built-in Assessors + +NNI provides state-of-the-art tuning algorithm in our builtin-assessors and makes them easy to use. Below is the brief overview of NNI current builtin Assessors: + +|Assessor|Brief Introduction of Algorithm| +|---|---| +|**Medianstop**
[(Usage)](#MedianStop)|Medianstop is a simple early stopping rule mentioned in the [paper](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf). It stops a pending trial X at step S if the trial’s best objective value by step S is strictly worse than the median value of the running averages of all completed trials’ objectives reported up to step S.| +|[Curvefitting](https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/curvefitting_assessor/README.md)
[(Usage)](#Curvefitting)|Curve Fitting Assessor is a LPA(learning, predicting, assessing) algorithm. It stops a pending trial X at step S if the prediction of final epoch's performance worse than the best final performance in the trial history. In this algorithm, we use 12 curves to fit the accuracy curve| + +
+ +## Usage of Builtin Assessors + +Use builtin assessors provided by NNI SDK requires to declare the **builtinAssessorName** and **classArgs** in `config.yml` file. In this part, we will introduce the detailed usage about the suggested scenarios, classArg requirements, and example for each assessor. + +Note: Please follow the format when you write your `config.yml` file. + + + +![](https://placehold.it/15/1589F0/000000?text=+) `Median Stop Assessor` + +> Builtin Assessor Name: **Medianstop** + +**Suggested scenario** + +It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', assessor will **stop** the trial with smaller expectation. If 'minimize', assessor will **stop** the trial with larger expectation. +* **start_step** (*int, optional, default = 0*) - A trial is determined to be stopped or not, only after receiving start_step number of reported intermediate results. + +**Usage example:** + +```yaml +# config.yml +assessor: + builtinAssessorName: Medianstop + classArgs: + optimize_mode: maximize + start_step: 5 +``` + +
+ + + +![](https://placehold.it/15/1589F0/000000?text=+) `Curve Fitting Assessor` + +> Builtin Assessor Name: **Curvefitting** + +**Suggested scenario** + +It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress. Even better, it's able to handle and assess curves with similar performance. + +**Requirement of classArg** + +* **epoch_num** (*int, **required***) - The total number of epoch. We need to know the number of epoch to determine which point we need to predict. +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', assessor will **stop** the trial with smaller expectation. If 'minimize', assessor will **stop** the trial with larger expectation. +* **start_step** (*int, optional, default = 6*) - A trial is determined to be stopped or not, we start to predict only after receiving start_step number of reported intermediate results. +* **threshold** (*float, optional, default = 0.95*) - The threshold that we decide to early stop the worse performance curve. For example: if threshold = 0.95, optimize_mode = maximize, best performance in the history is 0.9, then we will stop the trial which predict value is lower than 0.95 * 0.9 = 0.855. + +**Usage example:** + +```yaml +# config.yml +assessor: + builtinAssessorName: Curvefitting + classArgs: + epoch_num: 20 + optimize_mode: maximize + start_step: 6 + threshold: 0.95 +``` \ No newline at end of file diff --git a/docs/Builtin_Tuner.md b/docs/Builtin_Tuner.md new file mode 100644 index 0000000000..e9dde6bf1d --- /dev/null +++ b/docs/Builtin_Tuner.md @@ -0,0 +1,313 @@ +# Built-in Tuners + +NNI provides state-of-the-art tuning algorithm as our builtin-tuners and makes them easy to use. Below is the brief summary of NNI currently built-in Tuners: + +|Tuner|Brief Introduction of Algorithm| +|---|---| +|**TPE**
[(Usage)](#TPE)|The Tree-structured Parzen Estimator (TPE) is a sequential model-based optimization (SMBO) approach. SMBO methods sequentially construct models to approximate the performance of hyperparameters based on historical measurements, and then subsequently choose new hyperparameters to test based on this model.| +|**Random Search**
[(Usage)](#Random)|In Random Search for Hyper-Parameter Optimization show that Random Search might be surprisingly simple and effective. We suggest that we could use Random Search as the baseline when we have no knowledge about the prior distribution of hyper-parameters.| +|**Anneal**
[(Usage)](#Anneal)|This simple annealing algorithm begins by sampling from the prior, but tends over time to sample from points closer and closer to the best ones observed. This algorithm is a simple variation on the random search that leverages smoothness in the response surface. The annealing rate is not adaptive.| +|**Naive Evolution**
[(Usage)](#Evolution)|Naive Evolution comes from Large-Scale Evolution of Image Classifiers. It randomly initializes a population-based on search space. For each generation, it chooses better ones and does some mutation (e.g., change a hyperparameter, add/remove one layer) on them to get the next generation. Naive Evolution requires many trials to works, but it's very simple and easy to expand new features.| +|**SMAC**
[(Usage)](#SMAC)|SMAC is based on Sequential Model-Based Optimization (SMBO). It adapts the most prominent previously used model class (Gaussian stochastic process models) and introduces the model class of random forests to SMBO, in order to handle categorical parameters. The SMAC supported by nni is a wrapper on the SMAC3 Github repo.| +|**Batch tuner**
[(Usage)](#Batch)|Batch tuner allows users to simply provide several configurations (i.e., choices of hyper-parameters) for their trial code. After finishing all the configurations, the experiment is done. Batch tuner only supports the type choice in search space spec.| +|**Grid Search**
[(Usage)](#GridSearch)|Grid Search performs an exhaustive searching through a manually specified subset of the hyperparameter space defined in the searchspace file. Note that the only acceptable types of search space are choice, quniform, qloguniform. The number q in quniform and qloguniform has special meaning (different from the spec in search space spec). It means the number of values that will be sampled evenly from the range low and high.| +|[Hyperband](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperband_advisor)
[(Usage)](#Hyperband)|Hyperband tries to use the limited resource to explore as many configurations as possible, and finds out the promising ones to get the final result. The basic idea is generating many configurations and to run them for the small number of STEPs to find out promising one, then further training those promising ones to select several more promising one.| +|[Network Morphism](https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/networkmorphism_tuner/README.md)
[(Usage)](#NetworkMorphism)|Network Morphism provides functions to automatically search for architecture of deep learning models. Every child network inherits the knowledge from its parent network and morphs into diverse types of networks, including changes of depth, width, and skip-connection. Next, it estimates the value of a child network using the historic architecture and metric pairs. Then it selects the most promising one to train.| +|**Metis Tuner**
[(Usage)](#MetisTuner)|Metis offers the following benefits when it comes to tuning parameters: While most tools only predict the optimal configuration, Metis gives you two outputs: (a) current prediction of optimal configuration, and (b) suggestion for the next trial. No more guesswork. While most tools assume training datasets do not have noisy data, Metis actually tells you if you need to re-sample a particular hyper-parameter.| + +
+ +## Usage of Builtin Tuners + +Use builtin tuner provided by NNI SDK requires to declare the **builtinTunerName** and **classArgs** in `config.yml` file. In this part, we will introduce the detailed usage about the suggested scenarios, classArg requirements and example for each tuner. + +Note: Please follow the format when you write your `config.yml` file. + + + +![](https://placehold.it/15/1589F0/000000?text=+) `TPE` + +> Builtin Tuner Name: **TPE** + +**Suggested scenario** + +TPE, as a black-box optimization, can be used in various scenarios and shows good performance in general. Especially when you have limited computation resource and can only try a small number of trials. From a large amount of experiments, we could found that TPE is far better than Random Search. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. + +**Usage example:** + +```yaml +# config.yml +tuner: + builtinTunerName: TPE + classArgs: + optimize_mode: maximize +``` + +
+ + + +![](https://placehold.it/15/1589F0/000000?text=+) `Random Search` + +> Builtin Tuner Name: **Random** + +**Suggested scenario** + +Random search is suggested when each trial does not take too long (e.g., each trial can be completed very soon, or early stopped by assessor quickly), and you have enough computation resource. Or you want to uniformly explore the search space. Random Search could be considered as baseline of search algorithm. + +**Requirement of classArg:** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: Random + classArgs: + optimize_mode: maximize +``` + +
+ + + +![](https://placehold.it/15/1589F0/000000?text=+) `Anneal` + +> Builtin Tuner Name: **Anneal** + +**Suggested scenario** + +Anneal is suggested when each trial does not take too long, and you have enough computation resource(almost same with Random Search). Or the variables in search space could be sample from some prior distribution. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: Anneal + classArgs: + optimize_mode: maximize +``` + +
+ + + +![](https://placehold.it/15/1589F0/000000?text=+) `Naive Evolution` + +> Builtin Tuner Name: **Evolution** + +**Suggested scenario** + +Its requirement of computation resource is relatively high. Specifically, it requires large initial population to avoid falling into local optimum. If your trial is short or leverages assessor, this tuner is a good choice. And, it is more suggested when your trial code supports weight transfer, that is, the trial could inherit the converged weights from its parent(s). This can greatly speed up the training progress. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: Evolution + classArgs: + optimize_mode: maximize +``` + +
+ + + +![](https://placehold.it/15/1589F0/000000?text=+) `SMAC` + +> Builtin Tuner Name: **SMAC** + +**Suggested scenario** + +Similar to TPE, SMAC is also a black-box tuner which can be tried in various scenarios, and is suggested when computation resource is limited. It is optimized for discrete hyperparameters, thus, suggested when most of your hyperparameters are discrete. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: SMAC + classArgs: + optimize_mode: maximize +``` + +
+ + + +![](https://placehold.it/15/1589F0/000000?text=+) `Batch Tuner` + +> Builtin Tuner Name: BatchTuner + +**Suggested scenario** + +If the configurations you want to try have been decided, you can list them in searchspace file (using `choice`) and run them using batch tuner. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: BatchTuner +``` + +
+ +Note that the search space that BatchTuner supported like: + +```json +{ + "combine_params": + { + "_type" : "choice", + "_value" : [{"optimizer": "Adam", "learning_rate": 0.00001}, + {"optimizer": "Adam", "learning_rate": 0.0001}, + {"optimizer": "Adam", "learning_rate": 0.001}, + {"optimizer": "SGD", "learning_rate": 0.01}, + {"optimizer": "SGD", "learning_rate": 0.005}, + {"optimizer": "SGD", "learning_rate": 0.0002}] + } +} +``` + +The search space file including the high-level key `combine_params`. The type of params in search space must be `choice` and the `values` including all the combined-params value. + + + +![](https://placehold.it/15/1589F0/000000?text=+) `Grid Search` + +> Builtin Tuner Name: **Grid Search** + +**Suggested scenario** + +Note that the only acceptable types of search space are `choice`, `quniform`, `qloguniform`. **The number `q` in `quniform` and `qloguniform` has special meaning (different from the spec in [search space spec](./SearchSpaceSpec.md)). It means the number of values that will be sampled evenly from the range `low` and `high`.** + +It is suggested when search space is small, it is feasible to exhaustively sweeping the whole search space. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: GridSearch +``` + +
+ + + +![](https://placehold.it/15/1589F0/000000?text=+) `Hyperband` + +> Builtin Advisor Name: **Hyperband** + +**Suggested scenario** + +It is suggested when you have limited computation resource but have relatively large search space. It performs well in the scenario that intermediate result (e.g., accuracy) can reflect good or bad of final result (e.g., accuracy) to some extent. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. +* **R** (*int, optional, default = 60*) - the maximum STEPS (could be the number of mini-batches or epochs) can be allocated to a trial. Each trial should use STEPS to control how long it runs. +* **eta** (*int, optional, default = 3*) - `(eta-1)/eta` is the proportion of discarded trials + +**Usage example** + +```yaml +# config.yml +advisor: + builtinAdvisorName: Hyperband + classArgs: + optimize_mode: maximize + R: 60 + eta: 3 +``` + +
+ + + +![](https://placehold.it/15/1589F0/000000?text=+) `Network Morphism` + +> Builtin Tuner Name: **NetworkMorphism** + +**Installation** + +NetworkMorphism requires [pyTorch](https://pytorch.org/get-started/locally), so users should install it first. + +**Suggested scenario** + +It is suggested that you want to apply deep learning methods to your task (your own dataset) but you have no idea of how to choose or design a network. You modify the [example](../examples/trials/network_morphism/cifar10/cifar10_keras.py) to fit your own dataset and your own data augmentation method. Also you can change the batch size, learning rate or optimizer. It is feasible for different tasks to find a good network architecture. Now this tuner only supports the computer vision domain. + +**Requirement of classArg** + +* **optimize_mode** (*maximize or minimize, optional, default = maximize*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. +* **task** (*('cv'), optional, default = 'cv'*) - The domain of experiment, for now, this tuner only supports the computer vision(cv) domain. +* **input_width** (*int, optional, default = 32*) - input image width +* **input_channel** (*int, optional, default = 3*) - input image channel +* **n_output_node** (*int, optional, default = 10*) - number of classes + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: NetworkMorphism + classArgs: + optimize_mode: maximize + task: cv + input_width: 32 + input_channel: 3 + n_output_node: 10 +``` + +
+ + + +![](https://placehold.it/15/1589F0/000000?text=+) `Metis Tuner` + +> Builtin Tuner Name: **MetisTuner** + +Note that the only acceptable types of search space are `choice`, `quniform`, `uniform` and `randint`. + +**Installation** + +Metis Tuner requires [sklearn](https://scikit-learn.org/), so users should install it first. User could use `pip3 install sklearn` to install it. + +**Suggested scenario** + +Similar to TPE and SMAC, Metis is a black-box tuner. If your system takes a long time to finish each trial, Metis is more favorable than other approaches such as random search. Furthermore, Metis provides guidance on the subsequent trial. Here is an [example](../examples/trials/auto-gbdt/search_space_metis.json) about the use of Metis. User only need to send the final result like `accuracy` to tuner, by calling the nni SDK. + +**Requirement of classArg** + +* **optimize_mode** (*'maximize' or 'minimize', optional, default = 'maximize'*) - If 'maximize', tuners will return the hyperparameter set with larger expectation. If 'minimize', tuner will return the hyperparameter set with smaller expectation. + +**Usage example** + +```yaml +# config.yml +tuner: + builtinTunerName: MetisTuner + classArgs: + optimize_mode: maximize +``` diff --git a/docs/Contribution.rst b/docs/Contribution.rst new file mode 100644 index 0000000000..ced890d516 --- /dev/null +++ b/docs/Contribution.rst @@ -0,0 +1,8 @@ +############################### +Contribution to NNI +############################### + +.. toctree:: + Development Setup + Contribution Guide + Debug HowTo \ No newline at end of file diff --git a/docs/howto_3_CustomizedAdvisor.md b/docs/Customize_Advisor.md similarity index 100% rename from docs/howto_3_CustomizedAdvisor.md rename to docs/Customize_Advisor.md diff --git a/docs/Customize_Assessor.md b/docs/Customize_Assessor.md new file mode 100644 index 0000000000..fa6bfa5031 --- /dev/null +++ b/docs/Customize_Assessor.md @@ -0,0 +1,62 @@ +# Customize Assessor + +## Customize Assessor + +NNI also support building an assessor by yourself to adjust your tuning demand. + +If you want to implement a customized Assessor, there are three things for you to do: + +1) Inherit an assessor of a base Assessor class +2) Implement assess_trial function +3) Configure your customized Assessor in experiment yaml config file + +**1. Inherit an assessor of a base Assessor class** + +```python +from nni.assessor import Assessor + +class CustomizedAssessor(Assessor): + def __init__(self, ...): + ... +``` + +**2. Implement assess trial function** +```python +from nni.assessor import Assessor, AssessResult + +class CustomizedAssessor(Assessor): + def __init__(self, ...): + ... + + def assess_trial(self, trial_history): + """ + Determines whether a trial should be killed. Must override. + trial_history: a list of intermediate result objects. + Returns AssessResult.Good or AssessResult.Bad. + """ + # you code implement here. + ... +``` + +**3. Configure your customized Assessor in experiment yaml config file** + +NNI needs to locate your customized Assessor class and instantiate the class, so you need to specify the location of the customized Assessor class and pass literal values as parameters to the \_\_init__ constructor. + +```yaml + +assessor: + codeDir: /home/abc/myassessor + classFileName: my_customized_assessor.py + className: CustomizedAssessor + # Any parameter need to pass to your Assessor class __init__ constructor + # can be specified in this optional classArgs field, for example + classArgs: + arg1: value1 + +``` + +Please noted in **2**. The object `trial_history` are exact the object that Trial send to Assessor by using SDK `report_intermediate_result` function. + +More detail example you could see: +> * [medianstop-assessor](../src/sdk/pynni/nni/medianstop_assessor) +> * [curvefitting-assessor](../src/sdk/pynni/nni/curvefitting_assessor) \ No newline at end of file diff --git a/docs/Customize_Tuner.md b/docs/Customize_Tuner.md new file mode 100644 index 0000000000..8279864ba0 --- /dev/null +++ b/docs/Customize_Tuner.md @@ -0,0 +1,118 @@ +# Customize-Tuner + +## Customize Tuner + +NNI provides state-of-the-art tuning algorithm in our builtin-tuners. We also support building a tuner by yourself to adjust your tuning demand. + +If you want to implement and use your own tuning algorithm, you can implement a customized Tuner, there are three things for you to do: + +1) Inherit a tuner of a base Tuner class +2) Implement receive_trial_result and generate_parameter function +3) Configure your customized tuner in experiment yaml config file + +Here is an example: + +**1. Inherit a tuner of a base Tuner class** + +```python +from nni.tuner import Tuner + +class CustomizedTuner(Tuner): + def __init__(self, ...): + ... +``` + +**2. Implement receive_trial_result and generate_parameter function** + +```python +from nni.tuner import Tuner + +class CustomizedTuner(Tuner): + def __init__(self, ...): + ... + + def receive_trial_result(self, parameter_id, parameters, value): + ''' + Record an observation of the objective function and Train + parameter_id: int + parameters: object created by 'generate_parameters()' + value: final metrics of the trial, including default matrix + ''' + # your code implements here. + ... + + def generate_parameters(self, parameter_id): + ''' + Returns a set of trial (hyper-)parameters, as a serializable object + parameter_id: int + ''' + # your code implements here. + return your_parameters + ... +``` + +`receive_trial_result` will receive the `parameter_id, parameters, value` as parameters input. Also, Tuner will receive the `value` object are exactly same value that Trial send. + +The `your_parameters` return from `generate_parameters` function, will be package as json object by NNI SDK. NNI SDK will unpack json object so the Trial will receive the exact same `your_parameters` from Tuner. + +For example: +If the you implement the `generate_parameters` like this: + +```python + +def generate_parameters(self, parameter_id): + ''' + Returns a set of trial (hyper-)parameters, as a serializable object + parameter_id: int + ''' + # your code implements here. + return {"dropout": 0.3, "learning_rate": 0.4} + +``` + +It means your Tuner will always generate parameters `{"dropout": 0.3, "learning_rate": 0.4}`. Then Trial will receive `{"dropout": 0.3, "learning_rate": 0.4}` by calling API `nni.get_next_parameter()`. Once the trial ends with a result (normally some kind of metrics), it can send the result to Tuner by calling API `nni.report_final_result()`, for example `nni.report_final_result(0.93)`. Then your Tuner's `receive_trial_result` function will receied the result like: + +``` + +parameter_id = 82347 +parameters = {"dropout": 0.3, "learning_rate": 0.4} +value = 0.93 + +``` + +**Note that** if you want to access a file (e.g., `data.txt`) in the directory of your own tuner, you cannot use `open('data.txt', 'r')`. Instead, you should use the following: + +``` + +_pwd = os.path.dirname(__file__) +_fd = open(os.path.join(_pwd, 'data.txt'), 'r') + +``` + +This is because your tuner is not executed in the directory of your tuner (i.e., `pwd` is not the directory of your own tuner). + +**3. Configure your customized tuner in experiment yaml config file** + +NNI needs to locate your customized tuner class and instantiate the class, so you need to specify the location of the customized tuner class and pass literal values as parameters to the \_\_init__ constructor. + +```yaml + +tuner: + codeDir: /home/abc/mytuner + classFileName: my_customized_tuner.py + className: CustomizedTuner + # Any parameter need to pass to your tuner class __init__ constructor + # can be specified in this optional classArgs field, for example + classArgs: + arg1: value1 + +``` + +More detail example you could see: +> * [evolution-tuner](../src/sdk/pynni/nni/evolution_tuner) +> * [hyperopt-tuner](../src/sdk/pynni/nni/hyperopt_tuner) +> * [evolution-based-customized-tuner](../examples/tuners/ga_customer_tuner) + +### Write a more advanced automl algorithm + +The methods above are usually enough to write a general tuner. However, users may also want more methods, for example, intermediate results, trials' state (e.g., the methods in assessor), in order to have a more powerful automl algorithm. Therefore, we have another concept called `advisor` which directly inherits from `MsgDispatcherBase` in [`src/sdk/pynni/nni/msg_dispatcher_base.py`](../src/sdk/pynni/nni/msg_dispatcher_base.py). Please refer to [here](./howto_3_CustomizedAdvisor.md) for how to write a customized advisor. \ No newline at end of file diff --git a/docs/Examples.rst b/docs/Examples.rst new file mode 100644 index 0000000000..8c605f67a3 --- /dev/null +++ b/docs/Examples.rst @@ -0,0 +1,12 @@ +###################### +Examples +###################### + +.. toctree:: + :maxdepth: 2 + + MNIST + Cifar10 + Scikit-learn + EvolutionSQuAD + GBDT diff --git a/docs/ExperimentConfig.md b/docs/ExperimentConfig.md index 1b9bdc6220..01dbc4042d 100644 --- a/docs/ExperimentConfig.md +++ b/docs/ExperimentConfig.md @@ -3,6 +3,12 @@ A config file is needed when create an experiment, the path of the config file is provide to nnictl. The config file is written in yaml format, and need to be written correctly. This document describes the rule to write config file, and will provide some examples and templates. + + - [Template](#Template) (the templates of an config file) + - [Configuration spec](#Configuration) (the configuration specification of every attribute in config file) + - [Examples](#Examples) (the examples of config file) + + ## Template * __light weight(without Annotation and Assessor)__ @@ -112,8 +118,8 @@ machineList: username: passwd: ``` - -## Configuration + +## Configuration spec * __authorName__ * Description @@ -131,12 +137,14 @@ machineList: __trialConcurrency__ specifies the max num of trial jobs run simultaneously. - Note: if trialGpuNum is bigger than the free gpu numbers, and the trial jobs running simultaneously can not reach trialConcurrency number, some trial jobs will be put into a queue to wait for gpu allocation. + Note: if trialGpuNum is bigger than the free gpu numbers, and the trial jobs running simultaneously can not reach trialConcurrency number, some trial jobs will be put into a queue to wait for gpu allocation. * __maxExecDuration__ * Description __maxExecDuration__ specifies the max duration time of an experiment.The unit of the time is {__s__, __m__, __h__, __d__}, which means {_seconds_, _minutes_, _hours_, _days_}. + + Note: The maxExecDuration spec set the time of an experiment, not a trial job. If the experiment reach the max duration time, the experiment will not stop, but could not submit new trial jobs any more. * __maxTrialNum__ * Description @@ -437,7 +445,7 @@ machineList: - + ## Examples * __local mode__ diff --git a/docs/FAQ.md b/docs/FAQ.md index e9b6a857b9..88be31118b 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -1,3 +1,5 @@ +# FAQ + This page is for frequent asked questions and answers. diff --git a/docs/GetStarted.md b/docs/GetStarted.md index 85099b6817..590f878c62 100644 --- a/docs/GetStarted.md +++ b/docs/GetStarted.md @@ -1,5 +1,4 @@ -**Get Started with NNI** -=== +# Get Started with NNI ## **Installation** diff --git a/docs/GridSearchTuner.md b/docs/GridSearchTuner.md new file mode 100644 index 0000000000..96fa0d09ab --- /dev/null +++ b/docs/GridSearchTuner.md @@ -0,0 +1,23 @@ +Grid Search on nni +=== + +## 1. Introduction + +Grid Search performs an exhaustive searching through a manually specified subset of the hyperparameter space defined in the searchspace file. + +Note that the only acceptable types of search space are `choice`, `quniform`, `qloguniform` since only these three types of search space can be exhausted. + +Moreover, in GridSearch Tuner, for users' convenience, the definition of `quniform` and `qloguniform` change, where q here specifies the number of values that will be sampled. Details about them are listed as follows: + +* Type 'quniform' will receive three values [low, high, q], where [low, high] specifies a range and 'q' specifies the number of values that will be sampled evenly. Note that q should be at least 2. It will be sampled in a way that the first sampled value is 'low', and each of the following values is (high-low)/q larger that the value in front of it. +* Type 'qloguniform' behaves like 'quniform' except that it will first change the range to [log(low), log(high)] and sample and then change the sampled value back. + +## 2. Usage + +Since Grid Search Tuner will exhaust all possible hyper-parameter combination according to the search space file without any hyper-parameter for tuner itself, all you need to do is to specify tuner name in your experiment's yaml config file: + +``` +tuner: + builtinTunerName: GridSearch +``` + diff --git a/docs/Installation.md b/docs/Installation.md index 756a0e9054..dc6ec25a14 100644 --- a/docs/Installation.md +++ b/docs/Installation.md @@ -1,31 +1,23 @@ -**Installation of NNI** -=== +# Installation of NNI Currently we only support installation on Linux & Mac. ## **Installation** -* __Dependencies__ - - ```bash - python >= 3.5 - git - wget - ``` - - python pip should also be correctly installed. You could use "python3 -m pip -v" to check pip version. * __Install NNI through pip__ + Prerequisite: `python >= 3.5` ```bash - python3 -m pip install --user --upgrade nni + python3 -m pip install --upgrade nni ``` * __Install NNI through source code__ + Prerequisite: `python >=3.5, git, wget` ```bash - git clone -b v0.5 https://github.com/Microsoft/nni.git + git clone -b v0.5.1 https://github.com/Microsoft/nni.git cd nni - source install.sh + ./install.sh ``` * __Install NNI in docker image__ @@ -66,5 +58,7 @@ Below are the minimum system requirements for NNI on macOS. Due to potential pro * [Define search space](SearchSpaceSpec.md) * [Config an experiment](ExperimentConfig.md) * [How to run an experiment on local (with multiple GPUs)?](tutorial_1_CR_exp_local_api.md) -* [How to run an experiment on multiple machines?](tutorial_2_RemoteMachineMode.md) +* [How to run an experiment on multiple machines?](RemoteMachineMode.md) * [How to run an experiment on OpenPAI?](PAIMode.md) +* [How to run an experiment on Kubernetes through Kubeflow?](KubeflowMode.md) +* [How to run an experiment on Kubernetes through FrameworkController?](FrameworkControllerMode.md) \ No newline at end of file diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000000..298ea9e213 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,19 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/NNICTL.rst b/docs/NNICTL.rst new file mode 100644 index 0000000000..c53b6e4a9b --- /dev/null +++ b/docs/NNICTL.rst @@ -0,0 +1,630 @@ +.. role:: raw-html-m2r(raw) + :format: html + + +nnictl +====== + +Introduction +------------ + +**nnictl** is a command line tool, which can be used to control experiments, such as start/stop/resume an experiment, start/stop NNIBoard, etc. + +Commands +-------- + +nnictl support commands: + + +* `nnictl create <#create>`_ +* `nnictl resume <#resume>`_ +* `nnictl stop <#stop>`_ +* `nnictl update <#update>`_ +* `nnictl trial <#trial>`_ +* `nnictl top <#top>`_ +* `nnictl experiment <#experiment>`_ +* `nnictl config <#config>`_ +* `nnictl log <#log>`_ +* `nnictl webui <#webui>`_ +* `nnictl tensorboard <#tensorboard>`_ +* `nnictl package <#package>`_ + +Manage an experiment +^^^^^^^^^^^^^^^^^^^^ + +:raw-html-m2r:`` + + +* + **nnictl create** + + + * + Description + + You can use this command to create a new experiment, using the configuration specified in config file. + After this command is successfully done, the context will be set as this experiment, + which means the following command you issued is associated with this experiment, + unless you explicitly changes the context(not supported yet). + + + * + Usage + + .. code-block:: bash + + nnictl create [OPTIONS] + + + * + Options: + + +-------------------+-----------+-----------+-------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+=====================================+ + | --config, -c | True | |yaml configure file of the experiment| + +-------------------+-----------+-----------+-------------------------------------+ + | --port, -p | False | |the port of restful server | + +-------------------+-----------+-----------+-------------------------------------+ + :raw-html-m2r:`` + +* + **nnictl resume** + + + * + Description + + You can use this command to resume a stopped experiment. + + * + Usage + + .. code-block:: bash + + nnictl resume [OPTIONS] + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |The id of the experiment you want to resume | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --port, -p | False | |Rest port of the experiment you want to resume | + +-------------------+-----------+-----------+-----------------------------------------------+ + + +:raw-html-m2r:`` + + +* + **nnictl stop** + + + * + Description + + You can use this command to stop a running experiment or multiple experiments. + + * + Usage + + .. code-block:: bash + + nnictl stop [id] + + * + Detail + + 1.If there is an id specified, and the id matches the running experiment, nnictl will stop the corresponding experiment, or will print error message. + 2.If there is no id specified, and there is an experiment running, stop the running experiment, or print error message. + 3.If the id ends with *, nnictl will stop all experiments whose ids matchs the regular. + 4.If the id does not exist but match the prefix of an experiment id, nnictl will stop the matched experiment. + 5.If the id does not exist but match multiple prefix of the experiment ids, nnictl will give id information. + 6.Users could use 'nnictl stop all' to stop all experiments + + :raw-html-m2r:`` + +* + **nnictl update** + + + * + **nnictl update searchspace** + + + * + Description + + You can use this command to update an experiment's search space. + + * + Usage + + .. code-block:: bash + + nnictl update searchspace [OPTIONS] + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --filename, -f | True | |the file storing your new search space | + +-------------------+-----------+-----------+-----------------------------------------------+ + + + * + **nnictl update concurrency** + + + * + Description + + You can use this command to update an experiment's concurrency. + + * + Usage + + .. code-block:: bash + + nnictl update concurrency [OPTIONS] + + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --value, -v | True | |the number of allowed concurrent trials | + +-------------------+-----------+-----------+-----------------------------------------------+ + + * + **nnictl update duration** + + + * + Description + + You can use this command to update an experiment's concurrency. + + * + Usage + + .. code-block:: bash + + nnictl update duration [OPTIONS] + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --value, -v | True | |the experiment duration will be NUMBER seconds.| + | | | |SUFFIX may be 's' for seconds (the default), | + | | | |'m' for minutes, 'h' for hours or 'd' for days.| + +-------------------+-----------+-----------+-----------------------------------------------+ + + + * + **nnictl update trialnum** + + + * + Description + + You can use this command to update an experiment's maxtrialnum. + + * + Usage + + .. code-block:: bash + + nnictl update trialnum [OPTIONS] + + * + Options: + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --value, -v | True | |the new number of maxtrialnum you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + +:raw-html-m2r:`` + + +* + **nnictl trial** + + + * + **nnictl trial ls** + + + * + Description + + You can use this command to show trial's information. + + * + Usage + + .. code-block:: bash + + nnictl trial ls + + * + Options: + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + + * + **nnictl trial kill** + + + * + Description + + You can use this command to kill a trial job. + + + * + Usage + + .. code-block:: bash + + nnictl trial kill [OPTIONS] + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --trialid, -t | True | |ID of the trial you want to kill. | + +-------------------+-----------+-----------+-----------------------------------------------+ + :raw-html-m2r:`` + +* + **nnictl top** + + + * + Description + + Monitor all of running experiments. + + + * + Usage + + .. code-block:: bash + + nnictl top + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --time, -t | False | |The interval to update the experiment status, | + | | | |the unit of time is second, | + | | | |and the default value is 3 second. | + +-------------------+-----------+-----------+-----------------------------------------------+ + +:raw-html-m2r:`` + +Manage experiment information +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +* + **nnictl experiment show** + + + * + Description + + Show the information of experiment. + + * + Usage + + .. code-block:: bash + + nnictl experiment show + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + +* + **nnictl experiment status** + + + * + Description + + Show the status of experiment. + + * + Usage + + .. code-block:: bash + + nnictl experiment status + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to check | + +-------------------+-----------+-----------+-----------------------------------------------+ + +* + **nnictl experiment list** + + + * + Description + + Show the information of all the (running) experiments. + + * + Usage + + .. code-block:: bash + + nnictl experiment list + +:raw-html-m2r:`` + + +* + **nnictl config show** + + + * + Description + + Display the current context information. + + * + Usage + + .. code-block:: bash + + nnictl config show + +:raw-html-m2r:`` + +Manage log +^^^^^^^^^^ + + +* + **nnictl log stdout** + + + * + Description + + Show the stdout log content. + + * + Usage + + .. code-block:: bash + + nnictl log stdout [options] + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --head, -h | False | |show head lines of stdout | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --tail, -t | False | |show tail lines of stdout | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --path, -p | False | |show the path of stdout file | + +-------------------+-----------+-----------+-----------------------------------------------+ + +* + **nnictl log stderr** + + + * + Description + + Show the stderr log content. + + * + Usage + + .. code-block:: bash + + nnictl log stderr [options] + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --head, -h | False | |show head lines of stderr | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --tail, -t | False | |show tail lines of stderr | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --path, -p | False | |show the path of stderr file | + +-------------------+-----------+-----------+-----------------------------------------------+ + +* + **nnictl log trial** + + + * + Description + + Show trial log path. + + * + Usage + +:raw-html-m2r:`` + +Manage webui +^^^^^^^^^^^^ + + +* + **nnictl webui url** + +:raw-html-m2r:`` + +Manage tensorboard +^^^^^^^^^^^^^^^^^^ + + +* + **nnictl tensorboard start** + + + * + Description + + Start the tensorboard process. + + * + Usage + + .. code-block:: bash + + nnictl tensorboard start + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment you want to set | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --trialid | False | |ID of the trial | + +-------------------+-----------+-----------+-----------------------------------------------+ + | --port | False | 6006 |The port of the tensorboard process | + +-------------------+-----------+-----------+-----------------------------------------------+ + + * + Detail + + + #. NNICTL support tensorboard function in local and remote platform for the moment, other platforms will be supported later. + #. If you want to use tensorboard, you need to write your tensorboard log data to environment variable [NNI_OUTPUT_DIR] path. + #. In local mode, nnictl will set --logdir=[NNI_OUTPUT_DIR] directly and start a tensorboard process. + #. In remote mode, nnictl will create a ssh client to copy log data from remote machine to local temp directory firstly, and then start a tensorboard process in your local machine. You need to notice that nnictl only copy the log data one time when you use the command, if you want to see the later result of tensorboard, you should execute nnictl tensorboard command again. + #. If there is only one trial job, you don't need to set trialid. If there are multiple trial jobs running, you should set the trialid, or you could use [nnictl tensorboard start --trialid all] to map --logdir to all trial log paths. + +* + **nnictl tensorboard stop** + + + * + Description + + Stop all of the tensorboard process. + + * + Usage + + .. code-block:: bash + + nnictl tensorboard stop + + * + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | id | False | |ID of the experiment | + +-------------------+-----------+-----------+-----------------------------------------------+ + +:raw-html-m2r:`` + +Manage package +^^^^^^^^^^^^^^ + + +* + **nnictl package install** + + + * + Description + + Install the packages needed in nni experiments. + + * + Usage + + .. code-block:: bash + + nnictl package install [OPTIONS] + +* + Options: + + +-------------------+-----------+-----------+-----------------------------------------------+ + | Name, shorthand | Required | Default | Description | + +===================+===========+===========+===============================================+ + | --name | True | |The name of package to be installed | + +-------------------+-----------+-----------+-----------------------------------------------+ + +* + **nnictl package show** + + + * + Description + + .. code-block:: bash + + List the packages supported. + + * + Usage + + .. code-block:: bash + + nnictl package show diff --git a/docs/NNICTLDOC.md b/docs/NNICTLDOC.md index ac2495d3d8..82584ccd7c 100644 --- a/docs/NNICTLDOC.md +++ b/docs/NNICTLDOC.md @@ -8,43 +8,42 @@ __nnictl__ is a command line tool, which can be used to control experiments, suc ## Commands nnictl support commands: + - [nnictl create](#create) + - [nnictl resume](#resume) + - [nnictl stop](#stop) + - [nnictl update](#update) + - [nnictl trial](#trial) + - [nnictl top](#top) + - [nnictl experiment](#experiment) + - [nnictl config](#config) + - [nnictl log](#log) + - [nnictl webui](#webui) + - [nnictl tensorboard](#tensorboard) + - [nnictl package](#package) -```bash -nnictl create -nnictl stop -nnictl update -nnictl resume -nnictl trial -nnictl experiment -nnictl config -nnictl log -nnictl webui -nnictl tensorboard -nnictl top -nnictl --version -``` -### Manage an experiment - -* __nnictl create__ - - * Description - - You can use this command to create a new experiment, using the configuration specified in config file. After this command is successfully done, the context will be set as this experiment, which means the following command you issued is associated with this experiment, unless you explicitly changes the context(not supported yet). +### Manage an experiment + +* __nnictl create__ + * Description + + You can use this command to create a new experiment, using the configuration specified in config file. + After this command is successfully done, the context will be set as this experiment, + which means the following command you issued is associated with this experiment, + unless you explicitly changes the context(not supported yet). + * Usage - - ```bash - nnictl create [OPTIONS] - ``` - - Options: - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | --config, -c| True| |yaml configure file of the experiment| - | --port, -p | False| |the port of restful server| - | --debug, -d | False| |Set log level to debug| - + + nnictl create [OPTIONS] + + Options: + + | Name, shorthand | Required|Default | Description | + | ------ | ------ | ------ |------ | + | --config, -c| True| |yaml configure file of the experiment| + | --port, -p | False| |the port of restful server| + * __nnictl resume__ * Description @@ -63,8 +62,10 @@ nnictl --version | ------ | ------ | ------ |------ | | id| False| |The id of the experiment you want to resume| | --port, -p| False| |Rest port of the experiment you want to resume| - | --debug, -d | False| |Set log level to debug| - + + + + * __nnictl stop__ * Description @@ -77,92 +78,82 @@ nnictl --version ``` * Detail - - 1. If there is an id specified, and the id matches the running experiment, nnictl will stop the corresponding experiment, or will print error message. - - 2. If there is no id specified, and there is an experiment running, stop the running experiment, or print error message. - - 3. If the id ends with *, nnictl will stop all experiments whose ids matchs the regular. - - 4. If the id does not exist but match the prefix of an experiment id, nnictl will stop the matched experiment. - - 5. If the id does not exist but match multiple prefix of the experiment ids, nnictl will give id information. - - 6. Users could use 'nnictl stop all' to stop all experiments - + + 1.If there is an id specified, and the id matches the running experiment, nnictl will stop the corresponding experiment, or will print error message. + 2.If there is no id specified, and there is an experiment running, stop the running experiment, or print error message. + 3.If the id ends with *, nnictl will stop all experiments whose ids matchs the regular. + 4.If the id does not exist but match the prefix of an experiment id, nnictl will stop the matched experiment. + 5.If the id does not exist but match multiple prefix of the experiment ids, nnictl will give id information. + 6.Users could use 'nnictl stop all' to stop all experiments + * __nnictl update__ - - * __nnictl update searchspace__ - * Description - - You can use this command to update an experiment's search space. - - * Usage - - ```bash - nnictl update searchspace [OPTIONS] - ``` - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --filename, -f| True| |the file storing your new search space| - - * __nnictl update concurrency__ - * Description - - You can use this command to update an experiment's concurrency. - - * Usage - - ```bash - nnictl update concurrency [OPTIONS] - ``` - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --value, -v| True| |the number of allowed concurrent trials| - - * __nnictl update duration__ - * Description - - You can use this command to update an experiment's duration. - - * Usage - - ```bash - nnictl update duration [OPTIONS] - ``` - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --value, -v| True| |the experiment duration will be NUMBER seconds. SUFFIX may be 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.| - - * __nnictl update trialnum__ - * Description - - You can use this command to update an experiment's maxtrialnum. - - * Usage - - ```bash - nnictl update trialnum [OPTIONS] - ``` - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --value, -v| True| |the new number of maxtrialnum you want to set| - + + * __nnictl update searchspace__ + * Description + + You can use this command to update an experiment's search space. + + * Usage + + nnictl update searchspace [OPTIONS] + + Options: + + | Name, shorthand | Required|Default | Description | + | ------ | ------ | ------ |------ | + | id| False| |ID of the experiment you want to set| + | --filename, -f| True| |the file storing your new search space| + + * __nnictl update concurrency__ + * Description + + You can use this command to update an experiment's concurrency. + + * Usage + + nnictl update concurrency [OPTIONS] + + Options: + + | Name, shorthand | Required|Default | Description | + | ------ | ------ | ------ |------ | + | id| False| |ID of the experiment you want to set| + | --value, -v| True| |the number of allowed concurrent trials| + + * __nnictl update duration__ + * Description + + You can use this command to update an experiment's concurrency. + + * Usage + + nnictl update duration [OPTIONS] + + Options: + + | Name, shorthand | Required|Default | Description | + | ------ | ------ | ------ |------ | + | id| False| |ID of the experiment you want to set| + | --value, -v| True| |the experiment duration will be NUMBER seconds. SUFFIX may be 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.| + + * __nnictl update trialnum__ + * Description + + You can use this command to update an experiment's maxtrialnum. + + * Usage + + nnictl update trialnum [OPTIONS] + + Options: + + | Name, shorthand | Required|Default | Description | + | ------ | ------ | ------ |------ | + | id| False| |ID of the experiment you want to set| + | --value, -v| True| |the new number of maxtrialnum you want to set| + + + * __nnictl trial__ * __nnictl trial ls__ @@ -184,41 +175,39 @@ nnictl --version | id| False| |ID of the experiment you want to set| * __nnictl trial kill__ - * Description - - You can use this command to kill a trial job. - - * Usage - - ```bash - nnictl trial kill [OPTIONS] - ``` - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --trialid, -t| True| |ID of the trial you want to kill.| + * Description + + You can use this command to kill a trial job. + * Usage - * __nnictl top__ + nnictl trial kill [OPTIONS] + + Options: + + | Name, shorthand | Required|Default | Description | + | ------ | ------ | ------ |------ | + | id| False| |ID of the experiment you want to set| + | --trialid, -t| True| |ID of the trial you want to kill.| + +* __nnictl top__ * Description - - Monitor all of running experiments. - - * Usage - - ```bash - nnictl top - ``` - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --time, -t| False| |The interval to update the experiment status, the unit of time is second, and the default value is 3 second.| - + + Monitor all of running experiments. + + * Usage + + nnictl top + + Options: + + | Name, shorthand | Required|Default | Description | + | ------ | ------ | ------ |------ | + | id| False| |ID of the experiment you want to set| + | --time, -t| False| |The interval to update the experiment status, the unit of time is second, and the default value is 3 second.| + + + ### Manage experiment information * __nnictl experiment show__ @@ -268,23 +257,18 @@ nnictl --version nnictl experiment list ``` - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | all| False| False|Show all of experiments, including stopped experiments.| - + + * __nnictl config show__ - * Description - - Display the current context information. - - * Usage - - ```bash - nnictl config show - ``` - + * Description + + Display the current context information. + + * Usage + + nnictl config show + + ### Manage log * __nnictl log stdout__ @@ -335,36 +319,12 @@ nnictl --version * Usage - ```bash - nnictl log trial [options] - ``` - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |the id of trial| - + ### Manage webui * __nnictl webui url__ - * Description - - Show the urls of the experiment. - - * Usage - - ```bash - nnictl webui url - ``` - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - + ### Manage tensorboard * __nnictl tensorboard start__ @@ -396,32 +356,42 @@ nnictl --version 5. If there is only one trial job, you don't need to set trialid. If there are multiple trial jobs running, you should set the trialid, or you could use [nnictl tensorboard start --trialid all] to map --logdir to all trial log paths. * __nnictl tensorboard stop__ - * Description - - Stop all of the tensorboard process. - - * Usage - - ```bash - nnictl tensorboard stop - ``` - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - -### Check nni version - -* __nnictl --version__ - - * Description - - Describe the current version of nni installed. - - * Usage - - ```bash - nnictl --version - ``` + * Description + + Stop all of the tensorboard process. + + * Usage + + nnictl tensorboard stop + + Options: + + | Name, shorthand | Required|Default | Description | + | ------ | ------ | ------ |------ | + | id| False| |ID of the experiment you want to set| + + +### Manage package +* __nnictl package install__ + * Description + + Install the packages needed in nni experiments. + + * Usage + + nnictl package install [OPTIONS] + + Options: + + | Name, shorthand | Required|Default | Description | + | ------ | ------ | ------ |------ | + | --name| True| |The name of package to be installed| + +* __nnictl package show__ + * Description + + List the packages supported. + + * Usage + + nnictl package show diff --git a/docs/Overview.md b/docs/Overview.md index 3af39330af..dbfef6bc02 100644 --- a/docs/Overview.md +++ b/docs/Overview.md @@ -1,49 +1,61 @@ -# NNI Overview +# Overview -NNI (Neural Network Intelligence) is a toolkit to help users run automated machine learning experiments. For each experiment, user only need to define a search space and update a few lines of code, and then leverage NNI build-in algorithms and training services to search the best hyper parameters and/or neural architecture. +NNI (Neural Network Intelligence) is a toolkit to help users design and tune machine learning models (e.g., hyperparameters), neural network architectures, or complex system's parameters, in an efficient and automatic way. NNI has several appealing properties: easy-to-use, scalability, flexibility, and efficiency. ->Step 1: [Define search space](SearchSpaceSpec.md) +* **Easy-to-use**: NNI can be easily installed through python pip. Only several lines need to be added to your code in order to use NNI's power. You can use both commandline tool and WebUI to work with your experiments. +* **Scalability**: Tuning hyperparameters or neural architecture often demands large amount of computation resource, while NNI is designed to fully leverage different computation resources, such as remote machines, training platforms (e.g., PAI, Kubernetes). Thousands of trials could run in parallel by depending on the capacity of your configured training platforms. +* **Flexibility**: Besides rich built-in algorithms, NNI allows users to customize various hyperparameter tuning algorithms, neural architecture search algorithms, early stopping algorithms, etc. Users could also extend NNI with more training platforms, such as virtual machines, kubernetes service on the cloud. Moreover, NNI can connect to external environments to tune special applications/models on them. +* **Efficiency**: We are intensively working on more efficient model tuning from both system level and algorithm level. For example, leveraging early feedback to speedup tuning procedure. ->Step 2: [Update model codes](howto_1_WriteTrial.md) +The figure below shows high-level architecture of NNI. ->Step 3: [Define Experiment](ExperimentConfig.md) +

+drawing +

+ +## Key Concepts +* *Experiment*: An experiment is one task of, for example, finding out the best hyperparameters of a model, finding out the best neural network architecture. It consists of trials and AutoML algorithms. -

-drawing -

+* *Search Space*: It means the feasible region for tuning the model. For example, the value range of each hyperparameters. -After user submits the experiment through a command line tool [nnictl](../tools/README.md), a demon process (NNI manager) take care of search process. NNI manager continuously get search settings that generated by tuning algorithms, then NNI manager asks the training service component to dispatch and run trial jobs in a targeted training environment (e.g. local machine, remote servers and cloud). The results of trials jobs such as model accurate will send back to tuning algorithms for generating more meaningful search settings. NNI manager stops the search process after it find the best models. +* *Configuration*: A configuration is an instance from the search space, that is, each hyperparameter has a specific value. -## Architecture Overview -

-drawing -

+* *Trial*: Trial is an individual attempt at applying a new configuration (e.g., a set of hyperparameter values, a specific nerual architecture). Trial code should be able to run with the provided configuration. -User can use the nnictl and/or a visualized Web UI nniboard to monitor and debug a given experiment. +* *Tuner*: Tuner is an AutoML algorithm, which generates a new configuration for the next try. A new trial will run with this configuration. -NNI provides a set of examples in the package to get you familiar with the above process. +* *Assessor*: Assessor analyzes trial's intermediate results (e.g., periodically evaluated accuracy on test dataset) to tell whether this trial can be early stopped or not. -## Key Concepts +* *Training Platform*: It means where trials are executed. Depending on your experiment's configuration, it could be your local machine, or remote servers, or large-scale training platform (e.g., PAI, Kubernetes). -**Experiment** in NNI is a method for testing different assumptions (hypotheses) by Trials under conditions constructed and controlled by NNI. During the experiment, one or more conditions are allowed to change in an organized manner and effects of these changes on associated conditions. +Basically, an experiment runs as follows: Tuner receives search space and generates configurations. These configurations will be submitted to training platforms, such as local machine, remote machines, or training clusters. Their performances are reported back to Tuner. Then, new configurations are generated and submitted. -### **Trial** -**Trial** in NNI is an individual attempt at applying a set of parameters on a model. +For each experiment, user only needs to define a search space and update a few lines of code, and then leverage NNI built-in Tuner/Assessor and training platforms to search the best hyperparameters and/or neural architecture. There are basically 3 steps: -### **Tuner** -**Tuner** in NNI is an implementation of Tuner API for a special tuning algorithm. [Read more about the Tuners supported in the latest NNI release](HowToChooseTuner.md) +>Step 1: [Define search space](SearchSpaceSpec.md) + +>Step 2: [Update model codes](Trials.md) + +>Step 3: [Define Experiment](ExperimentConfig.md) -### **Assessor** -**Assessor** in NNI is an implementation of Assessor API for optimizing the execution of experiment. + +

+drawing +

+ +More details about how to run an experiment, please refer to [Get Started](QuickStart.md). ## Learn More -* [Get started](GetStarted.md) -* [Install NNI](Installation.md) -* [Use command line tool nnictl](NNICTLDOC.md) -* [Use NNIBoard](WebUI.md) -* [Use annotation](howto_1_WriteTrial.md#nni-python-annotation) -### **Tutorials** -* [How to run an experiment on local (with multiple GPUs)?](tutorial_1_CR_exp_local_api.md) +* [Get started](QuickStart.md) +* [How to adapt your trial code on NNI?](Trials.md) +* [What are tuners supported by NNI?](Builtin_Tuner.md) +* [How to customize your own tuner?](Customize_Tuner.md) +* [What are assessors supported by NNI?](Builtin_Assessors.md) +* [How to customize your own assessor?](Customize_Assessor.md) +* [How to run an experiment on local?](tutorial_1_CR_exp_local_api.md) * [How to run an experiment on multiple machines?](tutorial_2_RemoteMachineMode.md) * [How to run an experiment on OpenPAI?](PAIMode.md) +* [Examples](mnist_examples.md) + +[How to do trouble shooting when using NNI?]: <> () \ No newline at end of file diff --git a/docs/QuickStart.md b/docs/QuickStart.md new file mode 100644 index 0000000000..4167a92d5b --- /dev/null +++ b/docs/QuickStart.md @@ -0,0 +1,232 @@ +# QuickStart + +## Installation + +We support Linux and MacOS in current stage, Ubuntu 16.04 or higher and MacOS 10.14.1 are tested and supported. Simply run the following `pip install` in an environment that has `python >= 3.5`. + +```bash + python3 -m pip install --upgrade nni +``` + +Note: + +* `--user` can be added if you want to install NNI in your home directory, which does not require any special privileges. +* If there is any error like `Segmentation fault`, please refer to [FAQ](FAQ.md) +* For the `system requirements` of NNI, please refer to [Install NNI](Installation.md) + +## "Hello World" example on MNIST + +NNI is a toolkit to help users run automated machine learning experiments. It can automatically do the cyclic process of getting hyperparameters, running trials, testing results, tuning hyperparameters. Now, we show how to use NNI to help you find the optimal hyperparameters. + +Here is an example script to train a CNN on MNIST dataset **without NNI**: + +```python +def run_trial(params): + # Input data + mnist = input_data.read_data_sets(params['data_dir'], one_hot=True) + # Build MNIST network + mnist_network = MnistNetwork(channel_1_num=params['channel_1_num'], channel_2_num=params['channel_2_num'], conv_size=params['conv_size'], hidden_size=params['hidden_size'], pool_size=params['pool_size'], learning_rate=params['learning_rate']) + mnist_network.build_network() + + test_acc = 0.0 + with tf.Session() as sess: + # Train MNIST network + mnist_network.train(sess, mnist) + # Evaluate MNIST network + test_acc = mnist_network.evaluate(mnist) + +if __name__ == '__main__': + params = {'data_dir': '/tmp/tensorflow/mnist/input_data', 'dropout_rate': 0.5, 'channel_1_num': 32, 'channel_2_num': 64, 'conv_size': 5, 'pool_size': 2, 'hidden_size': 1024, 'learning_rate': 1e-4, 'batch_num': 2000, 'batch_size': 32} + run_trial(params) +``` + +Note: If you want to see the full implementation, please refer to [examples/trials/mnist/mnist_before.py](../examples/trials/mnist/mnist_before.py) + +The above code can only try one set of parameters at a time, if we want to tune learning rate, we need to manually modify the hyperparameter and start the trial again and again. + +NNI is born for helping user do the tuning jobs, the NNI working process is presented below: + +``` +input: search space, trial code, config file +output: one optimal hyperparameter configuration + +1: For t = 0, 1, 2, ..., maxTrialNum, +2: hyperparameter = chose a set of parameter from search space +3: final result = run_trial_and_evaluate(hyperparameter) +4: report final result to NNI +5: If reach the upper limit time, +6: Stop the experiment +7: return hyperparameter value with best final result +``` + +If you want to use NNI to automatically train your model and find the optimal hyper-parameters, you need to do three changes base on your code: + +**Three things required to do when using NNI** + +**Step 1**: Give a `Search Space` file in json, includes the `name` and the `distribution` (discrete valued or continuous valued) of all the hyperparameters you need to search. + +```diff +- params = {'data_dir': '/tmp/tensorflow/mnist/input_data', 'dropout_rate': 0.5, 'channel_1_num': 32, 'channel_2_num': 64, +- 'conv_size': 5, 'pool_size': 2, 'hidden_size': 1024, 'learning_rate': 1e-4, 'batch_num': 2000, 'batch_size': 32} ++ { ++ "dropout_rate":{"_type":"uniform","_value":[0.5, 0.9]}, ++ "conv_size":{"_type":"choice","_value":[2,3,5,7]}, ++ "hidden_size":{"_type":"choice","_value":[124, 512, 1024]}, ++ "batch_size": {"_type":"choice", "_value": [1, 4, 8, 16, 32]}, ++ "learning_rate":{"_type":"choice","_value":[0.0001, 0.001, 0.01, 0.1]} ++ } +``` + +*Implemented code directory: [search_space.json](../examples/trials/mnist/search_space.json)* + +**Step 2**: Modified your `Trial` file to get the hyperparameter set from NNI and report the final result to NNI. + +```diff ++ import nni + + def run_trial(params): + mnist = input_data.read_data_sets(params['data_dir'], one_hot=True) + + mnist_network = MnistNetwork(channel_1_num=params['channel_1_num'], channel_2_num=params['channel_2_num'], conv_size=params['conv_size'], hidden_size=params['hidden_size'], pool_size=params['pool_size'], learning_rate=params['learning_rate']) + mnist_network.build_network() + + with tf.Session() as sess: + mnist_network.train(sess, mnist) + test_acc = mnist_network.evaluate(mnist) ++ nni.report_final_result(acc) + + if __name__ == '__main__': +- params = {'data_dir': '/tmp/tensorflow/mnist/input_data', 'dropout_rate': 0.5, 'channel_1_num': 32, 'channel_2_num': 64, +- 'conv_size': 5, 'pool_size': 2, 'hidden_size': 1024, 'learning_rate': 1e-4, 'batch_num': 2000, 'batch_size': 32} ++ params = nni.get_next_parameter() + run_trial(params) +``` + +*Implemented code directory: [mnist.py](../examples/trials/mnist/mnist.py)* + +**Step 3**: Define a `config` file in yaml, which declare the `path` to search space and trial, also give `other information` such as tuning algorithm, max trial number and max runtime arguments. + +```yaml +authorName: default +experimentName: example_mnist +trialConcurrency: 1 +maxExecDuration: 1h +maxTrialNum: 10 +trainingServicePlatform: local +# The path to Search Space +searchSpacePath: search_space.json +useAnnotation: false +tuner: + builtinTunerName: TPE +# The path and the running command of trial +trial: + command: python3 mnist.py + codeDir: . + gpuNum: 0 +``` + +*Implemented code directory: [config.yml](../examples/trials/mnist/config.yml)* + +All the codes above are already prepared and stored in [examples/trials/mnist/](../examples/trials/mnist). + +When these things are done, **run the config.yml file from your command line to start the experiment**. + +```bash + nnictl create --config nni/examples/trials/mnist/config.yml +``` + +Note: **nnictl** is a command line tool, which can be used to control experiments, such as start/stop/resume an experiment, start/stop NNIBoard, etc. Click [here](NNICTLDOC.md) for more usage of `nnictl` + +Wait for the message `INFO: Successfully started experiment!` in the command line. This message indicates that your experiment has been successfully started. And this is what we expected to get: + +``` +INFO: Starting restful server... +INFO: Successfully started Restful server! +INFO: Setting local config... +INFO: Successfully set local config! +INFO: Starting experiment... +INFO: Successfully started experiment! +----------------------------------------------------------------------- +The experiment id is egchD4qy +The Web UI urls are: [Your IP]:8080 +----------------------------------------------------------------------- + +You can use these commands to get more information about the experiment +----------------------------------------------------------------------- + commands description +1. nnictl experiment show show the information of experiments +2. nnictl trial ls list all of trial jobs +3. nnictl top monitor the status of running experiments +4. nnictl log stderr show stderr log content +5. nnictl log stdout show stdout log content +6. nnictl stop stop an experiment +7. nnictl trial kill kill a trial job by id +8. nnictl --help get help information about nnictl +----------------------------------------------------------------------- +``` + +If you prepare `trial`, `search space` and `config` according to the above steps and successfully create a NNI job, NNI will automatically tune the optimal hyper-parameters and run different hyper-parameters sets for each trial according to the requirements you set. You can clearly sees its progress by NNI WebUI. + +## WebUI + +After you start your experiment in NNI successfully, you can find a message in the command-line interface to tell you `Web UI url` like this: + +``` +The Web UI urls are: [Your IP]:8080 +``` + +Open the `Web UI url`(In this information is: `[Your IP]:8080`) in your browser, you can view detail information of the experiment and all the submitted trial jobs as shown below. + +### View summary page + +Click the tab "Overview". + +Information about this experiment will be shown in the WebUI, including the experiment trial profile and search space message. NNI also support `download these information and parameters` through the **Download** button. You can download the experiment result anytime in the middle for the running or at the end of the execution, etc. + +![](./img/QuickStart1.png) + +Top 10 trials will be listed in the Overview page, you can browse all the trials in "Trials Detail" page. + +![](./img/QuickStart2.png) + +### View trials detail page + +Click the tab "Default Metric" to see the point graph of all trials. Hover to see its specific default metric and search space message. + +![](./img/QuickStart3.png) + +Click the tab "Hyper Parameter" to see the parallel graph. + +* You can select the percentage to see top trials. +* Choose two axis to swap its positions + +![](./img/QuickStart4.png) + +Click the tab "Trial Duration" to see the bar graph. + +![](./img/QuickStart5.png) + +Below is the status of the all trials. Specifically: + +* Trial detail: trial's id, trial's duration, start time, end time, status, accuracy and search space file. +* If you run a pai experiment, you can also see the hdfsLogPath. +* Kill: you can kill a job that status is running. +* Support to search for a specific trial. + +![](./img/QuickStart6.png) + +* Intermediate Result Grap + +![](./img/QuickStart7.png) + +## Related Topic + +* [Try different Tuners](Builtin_Tuner.md) +* [Try different Assessors](Builtin_Assessors.md) +* [How to use command line tool nnictl](NNICTLDOC.md) +* [How to write a trial](Trials.md) +* [How to run an experiment on local (with multiple GPUs)?](tutorial_1_CR_exp_local_api.md) +* [How to run an experiment on multiple machines?](RemoteMachineMode.md) +* [How to run an experiment on OpenPAI?](PAIMode.md) +* [How to run an experiment on Kubernetes through Kubeflow?](KubeflowMode.md) +* [How to run an experiment on Kubernetes through FrameworkController?](FrameworkControllerMode.md) \ No newline at end of file diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000000..a882498cd9 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,133 @@ +# Overview + +

+drawing +

+ +----------- + +[![](https://img.shields.io/badge/license-MIT-yellow.svg)](https://github.com/Microsoft/nni/blob/master/LICENSE) +[![](https://msrasrg.visualstudio.com/NNIOpenSource/_apis/build/status/Microsoft.nni)](https://msrasrg.visualstudio.com/NNIOpenSource/_build/latest?definitionId=6) +[![](https://img.shields.io/github/issues-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen) +[![](https://img.shields.io/github/issues/Microsoft/nni/bug.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen+label%3Abug) +[![](https://img.shields.io/github/issues-pr-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/pulls?q=is%3Apr+is%3Aopen) +[![](https://img.shields.io/github/release/Microsoft/nni.svg)](https://github.com/Microsoft/nni/releases) +[![](https://badges.gitter.im/Microsoft/nni.svg)](https://gitter.im/Microsoft/nni?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +NNI (Neural Network Intelligence) is a toolkit to help users run automated machine learning (AutoML) experiments. +The tool dispatches and runs trial jobs generated by tuning algorithms to search the best neural architecture and/or hyper-parameters in different environments like local machine, remote servers and cloud. + + +![](img/nni_arch_overview.png) + +## **Who should consider using NNI** +* Those who want to try different AutoML algorithms in their training code (model) at their local machine. +* Those who want to run AutoML trial jobs in different environments to speed up search (e.g. remote servers and cloud). +* Researchers and data scientists who want to implement their own AutoML algorithms and compare it with other algorithms. +* ML Platform owners who want to support AutoML in their platform. + +## **Install & Verify** + +**Install through pip** +* We support Linux and MacOS in current stage, Ubuntu 16.04 or higher, along with MacOS 10.14.1 are tested and supported. Simply run the following `pip install` in an environment that has `python >= 3.5`. +```bash + python3 -m pip install --user --upgrade nni +``` +* Note: + * If you are in docker container (as root), please remove `--user` from the installation command. + * If there is any error like `Segmentation fault`, please refer to [FAQ](FAQ.md) + +**Install through source code** +* We support Linux (Ubuntu 16.04 or higher), MacOS (10.14.1) in our current stage. +* Run the following commands in an environment that has `python >= 3.5`, `git` and `wget`. +```bash + git clone -b v0.4.1 https://github.com/Microsoft/nni.git + cd nni + source install.sh +``` + +For the system requirements of NNI, please refer to [Install NNI](Installation.md) + +**Verify install** + +The following example is an experiment built on TensorFlow. Make sure you have **TensorFlow installed** before running it. +* Download the examples via clone the source code. +```bash + git clone -b v0.4.1 https://github.com/Microsoft/nni.git +``` +* Run the mnist example. +```bash + nnictl create --config nni/examples/trials/mnist/config.yml +``` + +* Wait for the message `INFO: Successfully started experiment!` in the command line. This message indicates that your experiment has been successfully started. You can explore the experiment using the `Web UI url`. +``` +INFO: Starting restful server... +INFO: Successfully started Restful server! +INFO: Setting local config... +INFO: Successfully set local config! +INFO: Starting experiment... +INFO: Successfully started experiment! +----------------------------------------------------------------------- +The experiment id is egchD4qy +The Web UI urls are: http://223.255.255.1:8080 http://127.0.0.1:8080 +----------------------------------------------------------------------- + +You can use these commands to get more information about the experiment +----------------------------------------------------------------------- + commands description +1. nnictl experiment show show the information of experiments +2. nnictl trial ls list all of trial jobs +3. nnictl log stderr show stderr log content +4. nnictl log stdout show stdout log content +5. nnictl stop stop an experiment +6. nnictl trial kill kill a trial job by id +7. nnictl --help get help information about nnictl +----------------------------------------------------------------------- +``` + +* Open the `Web UI url` in your browser, you can view detail information of the experiment and all the submitted trial jobs as shown below. [Here](WebUI.md) are more Web UI pages. + + + + + +
drawingdrawing
+ + +## **Documentation** +* [NNI overview](Overview.md) +* [Quick start](GetStarted.md) + +## **How to** +* [Install NNI](Installation.md) +* [Use command line tool nnictl](NNICTLDOC.md) +* [Use NNIBoard](WebUI.md) +* [How to define search space](SearchSpaceSpec.md) +* [How to define a trial](howto_1_WriteTrial.md) +* [Config an experiment](ExperimentConfig.md) +* [How to use annotation](howto_1_WriteTrial.md#nni-python-annotation) +## **Tutorials** +* [Run an experiment on local (with multiple GPUs)?](tutorial_1_CR_exp_local_api.md) +* [Run an experiment on multiple machines?](tutorial_2_RemoteMachineMode.md) +* [Run an experiment on OpenPAI?](PAIMode.md) +* [Run an experiment on Kubeflow?](KubeflowMode.md) +* [Try different tuners and assessors](tutorial_3_tryTunersAndAssessors.md) +* [Implement a customized tuner](howto_2_CustomizedTuner.md) +* [Implement a customized assessor](../examples/assessors/README.md) +* [Use Genetic Algorithm to find good model architectures for Reading Comprehension task](../examples/trials/ga_squad/README.md) + +## **Contribute** +This project welcomes contributions and suggestions, we use [GitHub issues](https://github.com/Microsoft/nni/issues) for tracking requests and bugs. + +Issues with the **good first issue** label are simple and easy-to-start ones that we recommend new contributors to start with. + +To set up environment for NNI development, refer to the instruction: [Set up NNI developer environment](SetupNNIDeveloperEnvironment.md) + +Before start coding, review and get familiar with the NNI Code Contribution Guideline: [Contributing](CONTRIBUTING.md) + +We are in construction of the instruction for [How to Debug](HowToDebug.md), you are also welcome to contribute questions or suggestions on this area. + +## **License** +The entire codebase is under [MIT license](https://github.com/Microsoft/nni/blob/master/LICENSE) + diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 9e2e3e1992..3e96f38f44 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -1,39 +1,41 @@ -# Release 0.5.0 - 01/14/2019 -## Major Features -### New tuner and assessor supports +# ChangeLog + +## Release 0.5.0 - 01/14/2019 +### Major Features +#### New tuner and assessor supports * Support [Metis tuner](./HowToChooseTuner.md#MetisTuner) as a new NNI tuner. Metis algorithm has been proofed to be well performed for **online** hyper-parameter tuning. * Support [ENAS customized tuner](https://github.com/countif/enas_nni), a tuner contributed by github community user, is an algorithm for neural network search, it could learn neural network architecture via reinforcement learning and serve a better performance than NAS. * Support [Curve fitting assessor](./HowToChooseTuner.md#Curvefitting) for early stop policy using learning curve extrapolation. * Advanced Support of [Weight Sharing](./AdvancedNAS.md): Enable weight sharing for NAS tuners, currently through NFS. -### Training Service Enhancement +#### Training Service Enhancement * [FrameworkController Training service](./FrameworkControllerMode.md): Support run experiments using frameworkcontroller on kubernetes * FrameworkController is a Controller on kubernetes that is general enough to run (distributed) jobs with various machine learning frameworks, such as tensorflow, pytorch, MXNet. * NNI provides unified and simple specification for job definition. * MNIST example for how to use FrameworkController. -### User Experience improvements +#### User Experience improvements * A better trial logging support for NNI experiments in PAI, Kubeflow and FrameworkController mode: * An improved logging architecture to send stdout/stderr of trials to NNI manager via Http post. NNI manager will store trial's stdout/stderr messages in local log file. * Show the link for trial log file on WebUI. * Support to show final result's all key-value pairs. -# Release 0.4.1 - 12/14/2018 -## Major Features -### New tuner supports +## Release 0.4.1 - 12/14/2018 +### Major Features +#### New tuner supports * Support [network morphism](./HowToChooseTuner.md#NetworkMorphism) as a new tuner -### Training Service improvements +#### Training Service improvements * Migrate [Kubeflow training service](https://github.com/Microsoft/nni/blob/master/docs/KubeflowMode.md)'s dependency from kubectl CLI to [Kubernetes API](https://kubernetes.io/docs/concepts/overview/kubernetes-api/) client * [Pytorch-operator](https://github.com/kubeflow/pytorch-operator) support for Kubeflow training service * Improvement on local code files uploading to OpenPAI HDFS * Fixed OpenPAI integration WebUI bug: WebUI doesn't show latest trial job status, which is caused by OpenPAI token expiration -### NNICTL improvements +#### NNICTL improvements * Show version information both in nnictl and WebUI. You can run **nnictl -v** to show your current installed NNI version -### WebUI improvements +#### WebUI improvements * Enable modify concurrency number during experiment * Add feedback link to NNI github 'create issue' page * Enable customize top 10 trials regarding to metric numbers (largest or smallest) @@ -41,14 +43,14 @@ * Enable automatic scaling of axes for metric number * Update annotation to support displaying real choice in searchspace -## New examples +### New examples * [FashionMnist](https://github.com/Microsoft/nni/tree/master/examples/trials/network_morphism), work together with network morphism tuner * [Distributed MNIST example](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-distributed-pytorch) written in PyTorch -# Release 0.4 - 12/6/2018 +## Release 0.4 - 12/6/2018 -## Major Features +### Major Features * [Kubeflow Training service](./KubeflowMode.md) * Support tf-operator * [Distributed trial example](../examples/trials/mnist-distributed/dist_mnist.py) on Kubeflow @@ -63,7 +65,7 @@ * Support search a specific trial by trial number * Show trial's hdfsLogPath * Download experiment parameters -## Others +### Others * Asynchronous dispatcher * Docker file update, add pytorch library * Refactor 'nnictl stop' process, send SIGTERM to nni manager process, rather than calling stop Rest API. @@ -73,8 +75,8 @@ * Don’t print useless ‘metrics is empty’ log int PAI job’s stdout. Only print useful message once new metrics are recorded, to reduce confusion when user checks PAI trial’s output for debugging purpose * Add timestamp at the beginning of each log entry in trial keeper. -# Release 0.3.0 - 11/2/2018 -## NNICTL new features and updates +## Release 0.3.0 - 11/2/2018 +### NNICTL new features and updates * Support running multiple experiments simultaneously. Before v0.3, NNI only supports running single experiment once a time. After this realse, users are able to run multiple experiments simultaneously. Each experiment will require a unique port, the 1st experiment will be set to the default port as previous versions. You can specify a unique port for the rest experiments as below: @@ -83,7 +85,7 @@ * Support updating max trial number. use ```nnictl update --help``` to learn more. Or refer to [NNICTL Spec](https://github.com/Microsoft/nni/blob/master/docs/NNICTLDOC.md) for the fully usage of NNICTL. -## API new features and updates +### API new features and updates * **breaking change**: nn.get_parameters() is refactored to nni.get_next_parameter. All examples of prior releases can not run on v0.3, please clone nni repo to get new examples. If you had applied NNI to your own codes, please update the API accordingly. * New API **nni.get_sequence_id()**. @@ -96,23 +98,23 @@ * float * A python dict containing 'default' key, the value of 'default' key should be of type int or float. The dict can contain any other key value pairs. -## New tuner support +### New tuner support * **Batch Tuner** which iterates all parameter combination, can be used to submit batch trial jobs. -## New examples +### New examples * A NNI Docker image for public usage: ```docker pull msranni/nni:latest``` * New trial example: [NNI Sklearn Example](https://github.com/Microsoft/nni/tree/master/examples/trials/sklearn) * New competition example: [Kaggle Competition TGS Salt Example](https://github.com/Microsoft/nni/tree/master/examples/trials/kaggle-tgs-salt) -## Others +### Others * UI refactoring, refer to [WebUI doc](WebUI.md) for how to work with the new UI. * Continuous Integration: NNI had switched to Azure pipelines * [Known Issues in release 0.3.0](https://github.com/Microsoft/nni/labels/nni030knownissues). -# Release 0.2.0 - 9/29/2018 -## Major Features +## Release 0.2.0 - 9/29/2018 +### Major Features * Support [OpenPAI](https://github.com/Microsoft/pai) (aka pai) Training Service (See [here](./PAIMode.md) for instructions about how to submit NNI job in pai mode) * Support training services on pai mode. NNI trials will be scheduled to run on OpenPAI cluster * NNI trial's output (including logs and model file) will be copied to OpenPAI HDFS for further debugging and checking @@ -123,14 +125,14 @@ * Update ga squad example and related documentation * WebUI UX small enhancement and bug fix -## Known Issues +### Known Issues [Known Issues in release 0.2.0](https://github.com/Microsoft/nni/labels/nni020knownissues). -# Release 0.1.0 - 9/10/2018 (initial release) +## Release 0.1.0 - 9/10/2018 (initial release) Initial release of Neural Network Intelligence (NNI). -## Major Features +### Major Features * Installation and Deployment * Support pip install and source codes install * Support training services on local mode(including Multi-GPU mode) as well as multi-machines mode @@ -147,5 +149,5 @@ Initial release of Neural Network Intelligence (NNI). * Others * Support simple GPU job scheduling -## Known Issues +### Known Issues [Known Issues in release 0.1.0](https://github.com/Microsoft/nni/labels/nni010knownissues). diff --git a/docs/Reference.rst b/docs/Reference.rst new file mode 100644 index 0000000000..53d1573f04 --- /dev/null +++ b/docs/Reference.rst @@ -0,0 +1,11 @@ +References +================== + +.. toctree:: + :maxdepth: 3 + + Command Line + Python API + Annotation + Configuration + Search Space \ No newline at end of file diff --git a/docs/RemoteMachineMode.md b/docs/RemoteMachineMode.md index 613fbf2126..2099d7a0e8 100644 --- a/docs/RemoteMachineMode.md +++ b/docs/RemoteMachineMode.md @@ -1,6 +1,4 @@ -**Run an Experiment on Multiple Machines** - -=== +# Run an Experiment on Multiple Machines NNI supports running an experiment on multiple machines through SSH channel, called `remote` mode. NNI assumes that you have access to those machines, and already setup the environment for running deep learning training code. @@ -16,14 +14,6 @@ e.g. Three machines and you login in with account `bob` (Note: the account is no Install NNI on each of your machines following the install guide [here](GetStarted.md). -For remote machines that are used only to run trials but not the nnictl, you can just install python SDK: - -* __Install python SDK through pip__ - - ```bash - python3 -m pip install --user --upgrade nni-sdk - ``` - ## Run an experiment Install NNI on another machine which has network accessibility to those three machines above, or you can just use any machine above to run nnictl command line tool. diff --git a/docs/SQuAD_evolution_examples.md b/docs/SQuAD_evolution_examples.md new file mode 100644 index 0000000000..a3406f9f4a --- /dev/null +++ b/docs/SQuAD_evolution_examples.md @@ -0,0 +1,308 @@ +# Automatic Model Architecture Search for Reading Comprehension +This example shows us how to use Genetic Algorithm to find good model architectures for Reading Comprehension. + +## 1. Search Space +Since attention and recurrent neural network (RNN) have been proven effective in Reading Comprehension. +We conclude the search space as follow: + +1. IDENTITY (Effectively means keep training). +2. INSERT-RNN-LAYER (Inserts a LSTM. Comparing the performance of GRU and LSTM in our experiment, we decided to use LSTM here.) +3. REMOVE-RNN-LAYER +4. INSERT-ATTENTION-LAYER(Inserts an attention layer.) +5. REMOVE-ATTENTION-LAYER +6. ADD-SKIP (Identity between random layers). +7. REMOVE-SKIP (Removes random skip). + +![](../examples/trials/ga_squad/ga_squad.png) + +### New version +Also we have another version which time cost is less and performance is better. We will release soon. + +## 2. How to run this example in local? + +### 2.1 Use downloading script to download data + +Execute the following command to download needed files +using the downloading script: + +``` +chmod +x ./download.sh +./download.sh +``` + +Or Download manually + +1. download "dev-v1.1.json" and "train-v1.1.json" in https://rajpurkar.github.io/SQuAD-explorer/ + +``` +wget https://rajpurkar.github.io/SQuAD-explorer/dataset/train-v1.1.json +wget https://rajpurkar.github.io/SQuAD-explorer/dataset/dev-v1.1.json +``` + +2. download "glove.840B.300d.txt" in https://nlp.stanford.edu/projects/glove/ + +``` +wget http://nlp.stanford.edu/data/glove.840B.300d.zip +unzip glove.840B.300d.zip +``` + +### 2.2 Update configuration +Modify `nni/examples/trials/ga_squad/config.yml`, here is the default configuration: + +``` +authorName: default +experimentName: example_ga_squad +trialConcurrency: 1 +maxExecDuration: 1h +maxTrialNum: 1 +#choice: local, remote +trainingServicePlatform: local +#choice: true, false +useAnnotation: false +tuner: + codeDir: ~/nni/examples/tuners/ga_customer_tuner + classFileName: customer_tuner.py + className: CustomerTuner + classArgs: + optimize_mode: maximize +trial: + command: python3 trial.py + codeDir: ~/nni/examples/trials/ga_squad + gpuNum: 0 +``` + +In the "trial" part, if you want to use GPU to perform the architecture search, change `gpuNum` from `0` to `1`. You need to increase the `maxTrialNum` and `maxExecDuration`, according to how long you want to wait for the search result. + +### 2.3 submit this job + +``` +nnictl create --config ~/nni/examples/trials/ga_squad/config.yml +``` + +## 3 Run this example on OpenPAI + +Due to the memory limitation of upload, we only upload the source code and complete the data download and training on OpenPAI. This experiment requires sufficient memory that `memoryMB >= 32G`, and the training may last for several hours. + +### 3.1 Update configuration +Modify `nni/examples/trials/ga_squad/config_pai.yaml`, here is the default configuration: + +``` +authorName: default +experimentName: example_ga_squad +trialConcurrency: 1 +maxExecDuration: 1h +maxTrialNum: 10 +#choice: local, remote, pai +trainingServicePlatform: pai +#choice: true, false +useAnnotation: false +#Your nni_manager ip +nniManagerIp: 10.10.10.10 +tuner: + codeDir: ../../tuners/ga_customer_tuner + classFileName: customer_tuner.py + className: CustomerTuner + classArgs: + optimize_mode: maximize +trial: + command: chmod +x ./download.sh && ./download.sh && python3 trial.py + codeDir: . + gpuNum: 0 + cpuNum: 1 + memoryMB: 32869 + #The docker image to run nni job on pai + image: msranni/nni:latest + #The hdfs directory to store data on pai, format 'hdfs://host:port/directory' + dataDir: hdfs://10.10.10.10:9000/username/nni + #The hdfs directory to store output data generated by nni, format 'hdfs://host:port/directory' + outputDir: hdfs://10.10.10.10:9000/username/nni +paiConfig: + #The username to login pai + userName: username + #The password to login pai + passWord: password + #The host of restful server of pai + host: 10.10.10.10 +``` + +Please change the default value to your personal account and machine information. Including `nniManagerIp`, `dataDir`, `outputDir`, `userName`, `passWord` and `host`. + +In the "trial" part, if you want to use GPU to perform the architecture search, change `gpuNum` from `0` to `1`. You need to increase the `maxTrialNum` and `maxExecDuration`, according to how long you want to wait for the search result. + +`trialConcurrency` is the number of trials running concurrently, which is the number of GPUs you want to use, if you are setting `gpuNum` to 1. + +### 3.2 submit this job + +``` +nnictl create --config ~/nni/examples/trials/ga_squad/config_pai.yml +``` + +## 4. Technical details about the trial + +### 4.1 How does it works +The evolution-algorithm based architecture for question answering has two different parts just like any other examples: the trial and the tuner. + +### 4.2 The trial + +The trial has a lot of different files, functions and classes. Here we will only give most of those files a brief introduction: + +* `attention.py` contains an implementation for attention mechanism in Tensorflow. +* `data.py` contains functions for data preprocessing. +* `evaluate.py` contains the evaluation script. +* `graph.py` contains the definition of the computation graph. +* `rnn.py` contains an implementation for GRU in Tensorflow. +* `train_model.py` is a wrapper for the whole question answering model. + +Among those files, `trial.py` and `graph_to_tf.py` are special. + +`graph_to_tf.py` has a function named as `graph_to_network`, here is its skeleton code: + +``` +def graph_to_network(input1, + input2, + input1_lengths, + input2_lengths, + graph, + dropout_rate, + is_training, + num_heads=1, + rnn_units=256): + topology = graph.is_topology() + layers = dict() + layers_sequence_lengths = dict() + num_units = input1.get_shape().as_list()[-1] + layers[0] = input1*tf.sqrt(tf.cast(num_units, tf.float32)) + \ + positional_encoding(input1, scale=False, zero_pad=False) + layers[1] = input2*tf.sqrt(tf.cast(num_units, tf.float32)) + layers[0] = dropout(layers[0], dropout_rate, is_training) + layers[1] = dropout(layers[1], dropout_rate, is_training) + layers_sequence_lengths[0] = input1_lengths + layers_sequence_lengths[1] = input2_lengths + for _, topo_i in enumerate(topology): + if topo_i == '|': + continue + if graph.layers[topo_i].graph_type == LayerType.input.value: + # ...... + elif graph.layers[topo_i].graph_type == LayerType.attention.value: + # ...... + # More layers to handle +``` + +As we can see, this function is actually a compiler, that converts the internal model DAG configuration (which will be introduced in the `Model configuration format` section) `graph`, to a Tensorflow computation graph. + +``` +topology = graph.is_topology() +``` + +performs topological sorting on the internal graph representation, and the code inside the loop: + +``` +for _, topo_i in enumerate(topology): +``` + +performs actually conversion that maps each layer to a part in Tensorflow computation graph. + +### 4.3 The tuner + +The tuner is much more simple than the trial. They actually share the same `graph.py`. Besides, the tuner has a `customer_tuner.py`, the most important class in which is `CustomerTuner`: + +``` +class CustomerTuner(Tuner): + # ...... + + def generate_parameters(self, parameter_id): + """Returns a set of trial graph config, as a serializable object. + parameter_id : int + """ + if len(self.population) <= 0: + logger.debug("the len of poplution lower than zero.") + raise Exception('The population is empty') + pos = -1 + for i in range(len(self.population)): + if self.population[i].result == None: + pos = i + break + if pos != -1: + indiv = copy.deepcopy(self.population[pos]) + self.population.pop(pos) + temp = json.loads(graph_dumps(indiv.config)) + else: + random.shuffle(self.population) + if self.population[0].result > self.population[1].result: + self.population[0] = self.population[1] + indiv = copy.deepcopy(self.population[0]) + self.population.pop(1) + indiv.mutation() + graph = indiv.config + temp = json.loads(graph_dumps(graph)) + + # ...... +``` + +As we can see, the overloaded method `generate_parameters` implements a pretty naive mutation algorithm. The code lines: + +``` + if self.population[0].result > self.population[1].result: + self.population[0] = self.population[1] + indiv = copy.deepcopy(self.population[0]) +``` + +controls the mutation process. It will always take two random individuals in the population, only keeping and mutating the one with better result. + +### 4.4 Model configuration format + +Here is an example of the model configuration, which is passed from the tuner to the trial in the architecture search procedure. + +``` +{ + "max_layer_num": 50, + "layers": [ + { + "input_size": 0, + "type": 3, + "output_size": 1, + "input": [], + "size": "x", + "output": [4, 5], + "is_delete": false + }, + { + "input_size": 0, + "type": 3, + "output_size": 1, + "input": [], + "size": "y", + "output": [4, 5], + "is_delete": false + }, + { + "input_size": 1, + "type": 4, + "output_size": 0, + "input": [6], + "size": "x", + "output": [], + "is_delete": false + }, + { + "input_size": 1, + "type": 4, + "output_size": 0, + "input": [5], + "size": "y", + "output": [], + "is_delete": false + }, + {"Comment": "More layers will be here for actual graphs."} + ] +} +``` + +Every model configuration will have a "layers" section, which is a JSON list of layer definitions. The definition of each layer is also a JSON object, where: + + * `type` is the type of the layer. 0, 1, 2, 3, 4 corresponds to attention, self-attention, RNN, input and output layer respectively. + * `size` is the length of the output. "x", "y" correspond to document length / question length, respectively. + * `input_size` is the number of inputs the layer has. + * `input` is the indices of layers taken as input of this layer. + * `output` is the indices of layers use this layer's output as their input. + * `is_delete` means whether the layer is still available. diff --git a/docs/SearchSpaceSpec.md b/docs/SearchSpaceSpec.md index 0655e4c729..d5360926e7 100644 --- a/docs/SearchSpaceSpec.md +++ b/docs/SearchSpaceSpec.md @@ -1,8 +1,12 @@ -## How to define search space? +# Search Space -### Hyper-parameter Search Space +## Overview -* A search space configure example as follow: +In NNI, tuner will sample parameters/architecture according to the search space, which is defined as a json file. + +To define a search space, users should define the name of variable, the type of sampling strategy and its parameters. + +* A example of search space definition as follow: ```python { @@ -15,11 +19,12 @@ ``` -The example define `dropout_rate` as variable which priori distribution is uniform distribution, and its value from `0.1` and `0.5`. -The tuner will sample parameters/architecture by understanding the search space first. -User should define the name of variable, type and candidate value of variable. -The candidate type and value for variable is here: +Take the first line as an example. ```dropout_rate``` is defined as a variable whose priori distribution is a uniform distribution of a range from ```0.1``` and ```0.5```. + +## Types + +All types of sampling strategies and their parameter are listed here: * {"_type":"choice","_value":options} * Which means the variable value is one of the options, which should be a list. The elements of options can themselves be [nested] stochastic expressions. In this case, the stochastic choices that only appear in some of the options become conditional parameters. @@ -67,8 +72,24 @@ The candidate type and value for variable is here: * Suitable for a discrete variable with respect to which the objective is smooth and gets smoother with the size of the variable, which is bounded from one side.
-Note that SMAC only supports a subset of the types above, including `choice`, `randint`, `uniform`, `loguniform`, `quniform(q=1)`. In the current version, SMAC does not support cascaded search space (i.e., conditional variable in SMAC). -Note that GridSearch Tuner only supports a subset of the types above, including `choice`, `quniform` and `qloguniform`, where q here specifies the number of values that will be sampled. Details about the last two type as follows +## Search Space Types Supported by Each Tuner + +| | choice | randint | uniform | quniform | loguniform | qloguniform | normal | qnormal | lognormal | qlognormal | +|:------:|:------:|:------:|:------:|:------:|:------:|:------:|:------:|:------:|:------:|:------:| +| TPE Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Random Search Tuner| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Anneal Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Evolution Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| SMAC Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | | +| Batch Tuner | ✓ | | | | | | | | | | +| Grid Search Tuner | ✓ | | | ✓ | | ✓ | | | | | +| Hyperband Advisor | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Metis Tuner | ✓ | ✓ | ✓ | ✓ | | | | | | | + +Note that In GridSearch Tuner, for users' convenience, the definition of `quniform` and `qloguniform` change, where q here specifies the number of values that will be sampled. Details about them are listed as follows + * Type 'quniform' will receive three values [low, high, q], where [low, high] specifies a range and 'q' specifies the number of values that will be sampled evenly. Note that q should be at least 2. It will be sampled in a way that the first sampled value is 'low', and each of the following values is (high-low)/q larger that the value in front of it. * Type 'qloguniform' behaves like 'quniform' except that it will first change the range to [log(low), log(high)] and sample and then change the sampled value back. + +Note that Metis Tuner only support numerical `choice` now diff --git a/docs/Trials.md b/docs/Trials.md new file mode 100644 index 0000000000..c6182e6c3c --- /dev/null +++ b/docs/Trials.md @@ -0,0 +1,135 @@ +# Write a Trial Run on NNI + +A **Trial** in NNI is an individual attempt at applying a configuration (e.g., a set of hyper-parameters) on a model. + +To define an NNI trial, you need to firstly define the set of parameters (i.e., search space) and then update the model. NNI provide two approaches for you to define a trial: [NNI API](#nni-api) and [NNI Python annotation](#nni-annotation). You could also refer to [here](#more-examples) for more trial examples. + + +## NNI API + +### Step 1 - Prepare a SearchSpace parameters file. + +An example is shown below: + +```json +{ + "dropout_rate":{"_type":"uniform","_value":[0.1,0.5]}, + "conv_size":{"_type":"choice","_value":[2,3,5,7]}, + "hidden_size":{"_type":"choice","_value":[124, 512, 1024]}, + "learning_rate":{"_type":"uniform","_value":[0.0001, 0.1]} +} +``` + +Refer to [SearchSpaceSpec.md](./SearchSpaceSpec.md) to learn more about search space. Tuner will generate configurations from this search space, that is, choosing a value for each hyperparameter from the range. + +### Step 2 - Update model codes + +- Import NNI + + Include `import nni` in your trial code to use NNI APIs. + +- Get configuration from Tuner + +```json +RECEIVED_PARAMS = nni.get_next_parameter() +``` +`RECEIVED_PARAMS` is an object, for example: +`{"conv_size": 2, "hidden_size": 124, "learning_rate": 0.0307, "dropout_rate": 0.2029}`. + +- Report metric data periodically (optional) + +```json +nni.report_intermediate_result(metrics) +``` +`metrics` could be any python object. If users use NNI built-in tuner/assessor, `metrics` can only have two formats: 1) a number e.g., float, int, 2) a dict object that has a key named `default` whose value is a number. This `metrics` is reported to [assessor](Builtin_Assessors.md). Usually, `metrics` could be periodically evaluated loss or accuracy. + +- Report performance of the configuration + +```json +nni.report_final_result(metrics) +``` +`metrics` also could be any python object. If users use NNI built-in tuner/assessor, `metrics` follows the same format rule as that in `report_intermediate_result`, the number indicates the model's performance, for example, the model's accuracy, loss etc. This `metrics` is reported to [tuner](Builtin-Tuner.md). + +### Step 3 - Enable NNI API + +To enable NNI API mode, you need to set useAnnotation to *false* and provide the path of SearchSpace file (you just defined in step 1): + +```json +useAnnotation: false +searchSpacePath: /path/to/your/search_space.json +``` + +You can refer to [here](ExperimentConfig.md) for more information about how to set up experiment configurations. + +*Please refer to [here]() for more APIs (e.g., `nni.get_sequence_id()`) provided by NNI. + + + +## NNI Python Annotation + +An alternative to writing a trial is to use NNI's syntax for python. Simple as any annotation, NNI annotation is working like comments in your codes. You don't have to make structure or any other big changes to your existing codes. With a few lines of NNI annotation, you will be able to: + +* annotate the variables you want to tune +* specify in which range you want to tune the variables +* annotate which variable you want to report as intermediate result to `assessor` +* annotate which variable you want to report as the final result (e.g. model accuracy) to `tuner`. + +Again, take MNIST as an example, it only requires 2 steps to write a trial with NNI Annotation. + +### Step 1 - Update codes with annotations + +The following is a tensorflow code snippet for NNI Annotation, where the highlighted four lines are annotations that help you to: + 1. tune batch\_size and dropout\_rate + 2. report test\_acc every 100 steps + 3. at last report test\_acc as final result. + +What noteworthy is: as these newly added codes are annotations, it does not actually change your previous codes logic, you can still run your code as usual in environments without NNI installed. + +```diff +with tf.Session() as sess: + sess.run(tf.global_variables_initializer()) ++ """@nni.variable(nni.choice(50, 250, 500), name=batch_size)""" + batch_size = 128 + for i in range(10000): + batch = mnist.train.next_batch(batch_size) ++ """@nni.variable(nni.choice(1, 5), name=dropout_rate)""" + dropout_rate = 0.5 + mnist_network.train_step.run(feed_dict={mnist_network.images: batch[0], + mnist_network.labels: batch[1], + mnist_network.keep_prob: dropout_rate}) + if i % 100 == 0: + test_acc = mnist_network.accuracy.eval( + feed_dict={mnist_network.images: mnist.test.images, + mnist_network.labels: mnist.test.labels, + mnist_network.keep_prob: 1.0}) ++ """@nni.report_intermediate_result(test_acc)""" + + test_acc = mnist_network.accuracy.eval( + feed_dict={mnist_network.images: mnist.test.images, + mnist_network.labels: mnist.test.labels, + mnist_network.keep_prob: 1.0}) ++ """@nni.report_final_result(test_acc)""" +``` + +**NOTE**: +- `@nni.variable` will take effect on its following line, which is an assignment statement whose leftvalue must be specified by the keyword `name` in `@nni.variable`. +- `@nni.report_intermediate_result`/`@nni.report_final_result` will send the data to assessor/tuner at that line. + +For more information about annotation syntax and its usage, please refer to [Annotation README](../tools/nni_annotation/README.md) . + + +### Step 2 - Enable NNI Annotation + +In the yaml configure file, you need to set *useAnnotation* to true to enable NNI annotation: +``` +useAnnotation: true +``` + + +## More Trial Examples + +* [MNIST examples](mnist_examples.md) +* [Finding out best optimizer for Cifar10 classification](cifar10_examples.md) +* [How to tune Scikit-learn on NNI](sklearn_examples.md) +* [Automatic Model Architecture Search for Reading Comprehension.](SQuAD_evolution_examples.md) +* [Tuning GBDT on NNI](gbdt_example.md) diff --git a/docs/Tutorials.rst b/docs/Tutorials.rst new file mode 100644 index 0000000000..48f6a8054b --- /dev/null +++ b/docs/Tutorials.rst @@ -0,0 +1,12 @@ +###################### +Tutorials +###################### + +.. toctree:: + Installation + Write Trial + Tuners + Assessors + WebUI + Training Platform + advanced \ No newline at end of file diff --git a/docs/WebUI.md b/docs/WebUI.md index 544c22421e..baf34d0a37 100644 --- a/docs/WebUI.md +++ b/docs/WebUI.md @@ -45,7 +45,6 @@ Click the tab "Trials Detail" to see the status of the all trials. Specifically: ![](./img/webui-img/detail-pai.png) -![](./img/webui-img/trialog.png) * Kill: you can kill a job that status is running. * Support to search for a specific trial. diff --git a/docs/advanced.rst b/docs/advanced.rst new file mode 100644 index 0000000000..3362096805 --- /dev/null +++ b/docs/advanced.rst @@ -0,0 +1,6 @@ +Advanced Features +===================== + +.. toctree:: + MultiPhase + AdvancedNAS \ No newline at end of file diff --git a/docs/assessors.rst b/docs/assessors.rst new file mode 100644 index 0000000000..5a3466cdf8 --- /dev/null +++ b/docs/assessors.rst @@ -0,0 +1,17 @@ +Assessors +============== +In order to save our computing resources, NNI supports an early stop policy and creates **Assessor** to finish this job. + +Assessor receives the intermediate result from Trial and decides whether the Trial should be killed by specific algorithm. Once the Trial experiment meets the early stop conditions(which means assessor is pessimistic about the final results), the assessor will kill the trial and the status of trial will be `"EARLY_STOPPED"`. + +Here is an experimental result of MNIST after using 'Curvefitting' Assessor in 'maximize' mode, you can see that assessor successfully **early stopped** many trials with bad hyperparameters in advance. If you use assessor, we may get better hyperparameters under the same computing resources. + +*Implemented code directory: config_assessor.yml * + +.. image:: ./img/Assessor.png + +Like Tuners, users can either use built-in Assessors, or customize an Assessor on their own. Please refer to the following tutorials for detail: + +.. toctree:: + Builtin Assessors + Customized Assessors diff --git a/docs/cifar10_examples.md b/docs/cifar10_examples.md new file mode 100644 index 0000000000..e2b7911dad --- /dev/null +++ b/docs/cifar10_examples.md @@ -0,0 +1,84 @@ +# CIFAR-10 examples + +## Overview + +[CIFAR-10][3] classification is a common benchmark problem in machine learning. The CIFAR-10 dataset is the collection of images. It is one of the most widely used datasets for machine learning research which contains 60,000 32x32 color images in 10 different classes. Thus, we use CIFAR-10 classification as an example to introduce NNI usage. + +### **Goals** + +As we all know, the choice of model optimizer is directly affects the performance of the final matrix. The goal of this tutorial is to **tune a better performace optimizer** to train a relatively small convolutional neural network (CNN) for recognizing images. + +In this example, we have selected the following common deep learning optimizer: + +> "SGD", "Adadelta", "Adagrad", "Adam", "Adamax" + +### **Experimental** + +#### Preparations + +This example requires pytorch. Pytorch install package should be chosen based on python version and cuda version. + +Here is an example of the environment python==3.5 and cuda == 8.0, then using the following commands to install [pytorch][2]: + +```bash +python3 -m pip install http://download.pytorch.org/whl/cu80/torch-0.4.1-cp35-cp35m-linux_x86_64.whl +python3 -m pip install torchvision +``` + +#### CIFAR-10 with NNI + +**Search Space** + +As we stated in the target, we target to find out the best `optimizer` for training CIFAR-10 classification. When using different optimizers, we also need to adjust `learning rates` and `network structure` accordingly. so we chose these three parameters as hyperparameters and write the following search space. + +```json +{ + "lr":{"_type":"choice", "_value":[0.1, 0.01, 0.001, 0.0001]}, + "optimizer":{"_type":"choice", "_value":["SGD", "Adadelta", "Adagrad", "Adam", "Adamax"]}, + "model":{"_type":"choice", "_value":["vgg", "resnet18", "googlenet", "densenet121", "mobilenet", "dpn92", "senet18"]} +} +``` + +*Implemented code directory: [search_space.json][8]* + +**Trial** + +The code for CNN training of each hyperparameters set, paying particular attention to the following points are specific for NNI: + +* Use `nni.get_next_parameter()` to get next training hyperparameter set. +* Use `nni.report_intermediate_result(acc)` to report the intermedian result after finish each epoch. +* Use `nni.report_intermediate_result(acc)` to report the final result before the trial end. + +*Implemented code directory: [main.py][9]* + +You can also use your previous code directly, refer to [How to define a trial][5] for modify. + +**Config** + +Here is the example of running this experiment on local(with multiple GPUs): + +code directory: [examples/trials/cifar10_pytorch/config.yml][6] + +Here is the example of running this experiment on OpenPAI: + +code directory: [examples/trials/cifar10_pytorch/config_pai.yml][7] + +*The complete examples we have implemented: [examples/trials/cifar10_pytorch/][1]* + +#### Lauch the experiment + +We are ready for the experiment, let's now **run the config.yml file from your command line to start the experiment**. + + ```bash + nnictl create --config nni/examples/trials/cifar10_pytorch/config.yml +``` + +[1]: https://github.com/Microsoft/nni/tree/master/examples/trials/cifar10_pytorch +[2]: https://pytorch.org/ +[3]: https://www.cs.toronto.edu/~kriz/cifar.html +[4]: https://github.com/Microsoft/nni/tree/master/examples/trials/cifar10_pytorch +[5]: https://github.com/Microsoft/nni/blob/master/docs/howto_1_WriteTrial.md +[6]: https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/config.yml +[7]: https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/config_pai.yml +[8]: https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/search_space.json +[9]: https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/main.py \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000000..5f4b99810c --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,187 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + +import recommonmark +from recommonmark.parser import CommonMarkParser + +# -- Project information --------------------------------------------------- + +project = 'Neural Network Intelligence' +copyright = '2019, Microsoft' +author = 'Microsoft' + +# The short X.Y version +version = '' +# The full version, including alpha/beta/rc tags +release = 'v0.5' + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.mathjax', + 'sphinx_markdown_tables', + 'sphinxarg.ext', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +source_parsers = { + '.md': CommonMarkParser +} + +source_suffix = ['.rst', '.md'] + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + 'logo_only': True, +} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + +html_logo = './img/nni_logo_dark.png' + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'NeuralNetworkIntelligencedoc' + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'NeuralNetworkIntelligence.tex', 'Neural Network Intelligence Documentation', + 'Microsoft', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'neuralnetworkintelligence', 'Neural Network Intelligence Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'NeuralNetworkIntelligence', 'Neural Network Intelligence Documentation', + author, 'NeuralNetworkIntelligence', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + + +# -- Extension configuration ------------------------------------------------- diff --git a/docs/gbdt_example.md b/docs/gbdt_example.md new file mode 100644 index 0000000000..e5bb053ace --- /dev/null +++ b/docs/gbdt_example.md @@ -0,0 +1,185 @@ +# GBDT in nni +Gradient boosting is a machine learning technique for regression and classification problems, which produces a prediction model in the form of an ensemble of weak prediction models, typically decision trees. It builds the model in a stage-wise fashion as other boosting methods do, and it generalizes them by allowing optimization of an arbitrary differentiable loss function. + +Gradient boosting decision tree has many popular implementations, such as [lightgbm](https://github.com/Microsoft/LightGBM), [xgboost](https://github.com/dmlc/xgboost), and [catboost](https://github.com/catboost/catboost), etc. GBDT is a great tool for solving the problem of traditional machine learning problem. Since GBDT is a robust algorithm, it could use in many domains. The better hyper-parameters for GBDT, the better performance you could achieve. + +NNI is a great platform for tuning hyper-parameters, you could try various builtin search algorithm in nni and run multiple trials concurrently. + + +## 1. Search Space in GBDT +There are many hyper-parameters in GBDT, but what kind of parameters will affect the performance or speed? Based on some practical experience, some suggestion here(Take lightgbm as example): + +> * For better accuracy +* `learning_rate`. The range of `learning rate` could be [0.001, 0.9]. + +* `num_leaves`. `num_leaves` is related to `max_depth`, you don't have to tune both of them. + +* `bagging_freq`. `bagging_freq` could be [1, 2, 4, 8, 10] + +* `num_iterations`. May larger if underfitting. + +> * For speed up +* `bagging_fraction`. The range of `bagging_fraction` could be [0.7, 1.0]. + +* `feature_fraction`. The range of `feature_fraction` could be [0.6, 1.0]. + +* `max_bin`. + +> * To avoid overfitting +* `min_data_in_leaf`. This depends on your dataset. + +* `min_sum_hessian_in_leaf`. This depend on your dataset. + +* `lambda_l1` and `lambda_l2`. + +* `min_gain_to_split`. + +* `num_leaves`. + +Reference link: +[lightgbm](https://lightgbm.readthedocs.io/en/latest/Parameters-Tuning.html) and +[autoxgoboost](https://github.com/ja-thomas/autoxgboost/blob/master/poster_2018.pdf) + +## 2. Task description +Now we come back to our example "auto-gbdt" which run in lightgbm and nni. The data including [train data](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/data/regression.train) and [test data](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/data/regression.train). +Given the features and label in train data, we train a GBDT regression model and use it to predict. + +## 3. How to run in nni + +### 3.1 Prepare your trial code +You need to prepare a basic code as following: +``` python + +... + +def get_default_parameters(): + ... + return params + + +def load_data(train_path='./data/regression.train', test_path='./data/regression.test'): + ''' + Load or create dataset + ''' + ... + + return lgb_train, lgb_eval, X_test, y_test + +def run(lgb_train, lgb_eval, params, X_test, y_test): + # train + gbm = lgb.train(params, + lgb_train, + num_boost_round=20, + valid_sets=lgb_eval, + early_stopping_rounds=5) + # predict + y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration) + + # eval + rmse = mean_squared_error(y_test, y_pred) ** 0.5 + print('The rmse of prediction is:', rmse) + +if __name__ == '__main__': + lgb_train, lgb_eval, X_test, y_test = load_data() + + PARAMS = get_default_parameters() + # train + run(lgb_train, lgb_eval, PARAMS, X_test, y_test) +``` + +### 3.2 Prepare your search space. +If you like to tune `num_leaves`, `learning_rate`, `bagging_fraction` and `bagging_freq`, +you could write a [search_space.json](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/search_space.json) as follow: +``` +{ + "num_leaves":{"_type":"choice","_value":[31, 28, 24, 20]}, + "learning_rate":{"_type":"choice","_value":[0.01, 0.05, 0.1, 0.2]}, + "bagging_fraction":{"_type":"uniform","_value":[0.7, 1.0]}, + "bagging_freq":{"_type":"choice","_value":[1, 2, 4, 8, 10]} +} +``` + +More support variable type you could reference [here](https://github.com/Microsoft/nni/blob/master/docs/SearchSpaceSpec.md). + +### 3.3 Add SDK of nni into your code. +```diff ++import nni +... + +def get_default_parameters(): + ... + return params + + +def load_data(train_path='./data/regression.train', test_path='./data/regression.test'): + ''' + Load or create dataset + ''' + ... + + return lgb_train, lgb_eval, X_test, y_test + +def run(lgb_train, lgb_eval, params, X_test, y_test): + # train + gbm = lgb.train(params, + lgb_train, + num_boost_round=20, + valid_sets=lgb_eval, + early_stopping_rounds=5) + # predict + y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration) + + # eval + rmse = mean_squared_error(y_test, y_pred) ** 0.5 + print('The rmse of prediction is:', rmse) ++ nni.report_final_result(rmse) + +if __name__ == '__main__': + lgb_train, lgb_eval, X_test, y_test = load_data() ++ RECEIVED_PARAMS = nni.get_next_parameter() + PARAMS = get_default_parameters() ++ PARAMS.update(RECEIVED_PARAMS) + PARAMS = get_default_parameters() + PARAMS.update(RECEIVED_PARAMS) + + # train + run(lgb_train, lgb_eval, PARAMS, X_test, y_test) +``` + +### 3.4 Write a config file and run it. +In the config file, you could set some settings including: + +* Experiment setting: `trialConcurrency`, `maxExecDuration`, `maxTrialNum`, `trial gpuNum`, etc. +* Platform setting: `trainingServicePlatform`, etc. +* Path seeting: `searchSpacePath`, `trial codeDir`, etc. +* Algorithm setting: select `tuner` algorithm, `tuner optimize_mode`, etc. + +An config.yml as follow: +```yml +authorName: default +experimentName: example_auto-gbdt +trialConcurrency: 1 +maxExecDuration: 10h +maxTrialNum: 10 +#choice: local, remote, pai +trainingServicePlatform: local +searchSpacePath: search_space.json +#choice: true, false +useAnnotation: false +tuner: + #choice: TPE, Random, Anneal, Evolution, BatchTuner + #SMAC (SMAC should be installed through nnictl) + builtinTunerName: TPE + classArgs: + #choice: maximize, minimize + optimize_mode: minimize +trial: + command: python3 main.py + codeDir: . + gpuNum: 0 +``` + +Run this experiment with command as follow: +``` +nnictl create --config ./config.yml +``` \ No newline at end of file diff --git a/docs/howto_1_WriteTrial.md b/docs/howto_1_WriteTrial.md index 5ccb4df843..23d160c3ef 100644 --- a/docs/howto_1_WriteTrial.md +++ b/docs/howto_1_WriteTrial.md @@ -1,5 +1,4 @@ -**Write a Trial Run on NNI** -=== +# Write a Trial Run on NNI A **Trial** in NNI is an individual attempt at applying a set of parameters on a model. diff --git a/docs/img/Assessor.png b/docs/img/Assessor.png new file mode 100644 index 0000000000000000000000000000000000000000..23c13f9d1903487774b98118c44437841a3ea835 GIT binary patch literal 122219 zcmd422UL^I)-P^HMZpRp0TEH{IGc$Yk?Ad$&X7+wzp-rZZKyLKG_?%K82@ZbSX&CMr_51c={15EE|?<&Kco8uJrx!*LrxocNN zJok?Ceopz≤znyLR!k{QBA52Ke-7*DiMcy<0cUgB=%`Y|yFoFKjlH^=fC3{lK_~ z9ITv54WN*R^(>N#$!k}r#dqdh;ddMMHC5v+ohm%Pcs6{0_`>n-O+!h3-NPqt9eHp~ z_x!QLhbHx(zPz=cPfvT#v(KxSC$aM@A)4-PAa{3nC4KZ_>KK5m&a?3AaRUVf39HGm zMRs#&`~AG1xKH`(eb=eodP08{o?f^C-}_g=WS=-^-v4;s?8@i)>;1;@_xOMICB8>M z9~LX9bVB>!`IpE3`RnaQyjucq1Gr~KD9zu$gbZ}@=!*Or{x4j2F1aGk$5 zPH6k_#x&~hjW5M_oX+R@d*i#piIRFk|D@x0gSYCUR!OS=Lfx<05QDN-6h2+iCnGV3 zx!`VF@$mNOIu*l4XNPakeGQ&YpFsV6w3jiU|45c+mp*K+zfdh*C7^&9Mjx-9w<@!T zyJv@pUMB{ND$D%axYIEE*bumxjm_K-0F;qASZbFV#N1w=ukjox`d1*w}SRwq5*= z7HI&4VK^{1+2)>2a*)y#)~plEnZ#sw59Sp00mx$;R7s1iCI0{sl^^4J7NtjX;;1e3Mp#aqI?-(si%u1yrnfyl1Cbq_Lz@jC{e|5JGKl9RdJDd1ZCGP$kC zW2yqo8(4A;IPXkyniK!YMmmv{43+r(q(vOz2Xv^*3G-pbf~A9XO{W7T zYkuSx%F}X1=9ko#zW>Nk|1g3Hxvg&%A(9dIxBZoV@VDHYl$s|oVd37~M-xS~F!mP7 zh@X@9mS#GPulA1K=#^c{#}%;$yQmG*5ITD+n}JA`FqRo$TYl|5EMz!+DHPNL zyVJD#V`*f&zX(tGQG@qe)nLx+@Xk->81%+NVQ@UWFNf7Xu11dI5*{2Q?HFOelPcX| z;x>nw^MDl3(g2b3v~1JEA2cHCO$o%^{wZHtOBX#AxQYq=d@YU~B ziw2^Q-C_k{&R7Cb z2V0EU9M;Xzx0^bs*-%lNa0tC^$$11tn5n{7kiQ?wo)&X~SJj$Ax3%Qf5kyqMWjnZw zFMw{@NKj(YS)_(-WgUOk+;Y>#xY9Shj7^CD#v7+$e_@(<_j)MP(6Lt60vq!Ux+sB zxCsI|qQOz&J5Gqlb4ZINVMQGA9?^Lq@(K`Dg0L;K3TKuB5HPj1W$u+W!@m!U`ZcT& zxLrXIc_&T-YP8HTBSZ5qcs1|-Icj-TnJI<=ZAzFTHrSr9Z7vyFB|{fZ3xK?qrmnaL ze@Rtk(I(T{YVneJStSl-_@E6VmAvLs zc<_*xv7!3BBoqO~v?guU`!D^ZJ7FLqtIcAyKknJ zy*LVH{Q7M+>wC*K9q!nB(ssa94oa&FV4XHh&pwyqn z(Ot{muolVlxgCR69&_5DQAC;tf>#naSc*SEWw9ADOCe!9HkdxJx=hoDe90!A(h+a# z;?B#6pCC3_qMOxIxQ0wk{Z#2$YMJ4Tflh+9na%mHw~oN*Knq*+@EB{P0k@a~o;=O; zh@d|4{@bkD_Zj})OqyYhiRp6glyMNr5E(wxnH)Ns?tbF8A^e+~d3j8h_*;+n7Z?Vt zR^>1aBrQwsB3Vp2X{g^=3w8#eelm;y?@ivW{AXX0<0k!^6R0gK_8%R&e>1B8^E}P} zT>?9;|I0Cd|HS0K3jfDmdXnm2?)$FWPffZ0D!f1V|6mZXnQ=ziZDxy%Trq3Fh;hySi|FG}!P@h!Ue!+p#M@)|88fZ{v&)s^IshyIMsE zkDm7F!uN7id+>Uz&yUVuw!s zuKm2}l6k~rR2(?*z&XCR_5TvNa&Z|%akCLYLt=h&Gl!be2`96?hPJ`(x8#O&oBn~x zz9H~+G$BBlRT#~W+PA1&*0jDp3T{SPf6XF4Xmf_qrHu{9z~HtgPTc2>7A(S;JVHw} zY5r?^Fh6rjJ}#p5Fb584>Ca9ZQ8Ub8B8=88n}{I3FM|8)5EJ~;Okf7o{Z@eDM({s? z;v12CBT*MCiZbm{0Zawl-4rEgbTbj_gA*B|KHRP)O z2SKbtSV%GG(C-C!FqMn%c!b)(`%&H7-i>)?T$cgLYP#vcP9>?jM4GzC#MI-r8s%($ z29Gtny*N=5XSTMFJBxdC%Pn;4MK5Tk^Yr3qjsD`|BJu5$jZih>K(STR`If}^2>tVz zwm-$8buVXT5jK<~cQ{_B<6_Npv3T9HTneGqi@h__9Xvp_#w3WlU6>UE<2g)F+hIDn+r9d;1piX!6B$TbY)VHQ|wyX3{ z4jyi4ucL(sV&@YN@$F&hfFm5JzJD0QbUo7(u3Be3Z;qQLDdz++ezb1ff=?%(Uh#{R zzMnu(4`EfE+D~L2bvPW6teP$Y2)&ue+Tr5PB3uEUVDs|vr3-ttGov&_bo@mEYUjpq zBv~dPNS#LN6x(SyjLQtk76-N(JWEx*Z=qpd(4Ls=sXBsSC6*T1*p_YzXl9wZ51#7= z2cwHJ@+j0flktSPH%YgvpWLa;7I<9t-CWLlTcmh=E^XzkWzSIc-Sh%!58#_DmLbiY zZ$;4-{Gqr&Meu_dqeo)O`+Ig-kqdF=Nb6L@+fdfIIz0UGk)=YHm%=GWUA|?@73SyP z=HfZG99h5Mss{NKu=L|f-4On1h?9W=VrH&r^Mj5C^S(lV-s_c%kn@7u3?458;3CpaZ#m2`DyJt!TkkZvtkRiEX+M=TEez63ggx3)65<;YDh3m3a01uyBJr}b5^bU z9mR;#2aVKz0OsPz?99zKg#;;}_UuKQ3mmNw(JT$jifwbXttTMQO(dzl^B>4ZT^rNz zNQjE@9H<0$$`9Db0s7+R5mHu{9KS2m6>P9P4MPq6=_PNJW{VdJEnYXhSn%0Nl@nOx ze-6H@0KG3~4yVcaY>pyhu7g&lZj-Nh^?qV>ma|8(L7R^|<`iZY927@T?xs$QrTSvU z-j+31DfKh@KN=eG8V}0W)MPzeC1DeK9}RL zbLqfN%*?C0o9e+~1s5(!D37mwXnyCs9X=&yeXL^BvYMqPax&qEFo$f zgxenr$jSmtL$mujW7f!B>Au4OX)UD7{9oqCYjuH3Y9-zsJ6YTNbBYb(d&AHiS=N3= zh4<%na$!$}eAEWwvUkC=j^e%??T z2q@9(r`i+@vQ(1^vADv;&$|^+=Y|8sUi5;`2S?fHOL`2O6@JfB1$IjKOFN+#cD!Wb z3+x@uO0i;5DRFz9x~*(Rv;oHQbr3%%diWO&9~9j*(o}4{{G}yjF(8AV!KwsP)SdDR zevJQVfltM}^C3r5cOOUlsaZ>3QU?-zbGF<}+sh&B++O zIZH^-InPQFa0*btnNb3g8D8(-a@27xT2zXLt9$2<Rvif%Ur_6RT|h#G=tam_&9!ihV$%(1}6yc^*Y4Mn4Lt}{T2$7 z8@euPImi`KEaufRudy-YMLlv-9k@579Dk5hpWV1yGfNJ4CRH`}vN0|~ce%ngovNlx z@)bx7g?@Q1no5>H{SiQJfd#!k)zPSgTTE5OsUOIWnt-^6Ix?qS!%JGkft4D%92;u3 znIGpq5%?mdJ0r=zz9x%fmFW2ES$^GX97RD3yj0OkkN`XSet+7e`Gg2F(B08q=E+S_ zk1}e+2P|A_i1Or?e12{402fyclpX%(Y>R;RZn?%=!dq0hj6%os0wH>^vDwRTwn@z_ z`|H^37uVM`w?AEsAB0c7%Rt3IF{LbbqSplp$VEu`&x0~5{@JW!w{O&UeS5=DX6}Dw zccz|}ITMuoJbs{4J=R_?s#g+tgbHY+-zq=Vv7rp8!grXw-A7hS#kkH6edYKc-tq5D z-Mda1!lw_O+mI+U6$`(x@m8mxfs9Wt%=pTU)nMax)(5W8QRoFEwLokJVd!ZtY0C6ZJK;m6^tkK=SI?J z#r=_B${D8Gte2XZD|X;Qjj;Z#9zN zqT$Gd(AdFj$7{;l9P429u-^4Kbh^IoI_XinY1=_UeK@O~_;n`h%~O+(tz{BI4RfA0 zm2|*&<(=*KBj1{GoRd{oLe@0Un>(>?@WlF@&tVb#m(yn@^mk7gwz1FEL#<#seQKW$6&X_#@Lf=uDOJo`9k+toEue%%B2k86*^ z*jM^O?$fn0>57eoF{!q~9~}XRfWl0DxXb0}BQkXk`(C~#6(Wv3NeIzFGn9QnI?!L6 zSOhQ%X^TEB6Qug(x!cb+Rde_>IIcfiALN+WW4v7P6`=N&mLRS-Hryth1t9wyL9ykS zbftwLeIdzf0Gzz+;&Jn*94H}P%fIKa$iLu@^xi~x;I7rz{{g+|zOHLCC}?{96q5Vj z@k)B{@z7!E_q$B~J80=@S9Xol=s6t0bNJN%WT>>j{p@Y;Kdziwt%eoPYTxz9Py2rW zR{zf~$Nne5?*E^eV3tCgwxX>zl@lnn;E#_XEO?4pdis2)se*QVp^zzWOr2#CHI9Lp|e!n03 z$+A!>*gUC^o-+wyx70hQI~e$W0(KYME?YKjiawnhC|=a>CePj>a-Aaq_71yQ-W3O$ zn2u`7aywN$?Z~RDVU{TQr~R~)Vzpeb5E1G&ZDW{Rn>Js>mdom0|DpV3;wfc*9(J1E zi$^Z{&~^~lMYMD#_jaBw#_WxhY&fz)9{2_*UY%a_oR@qbd#r-5R9>=4@~m}-pbtt$ z-+m$Otd?!=?OEnDs*Sx|L@e>O=t7>&i=v-69E;4(*cQM%n0(m89P;!5s39i9JJtG` zEr)%WvnX5+z($iRKqNGxhFhZBZwmsY+=}{O2cVw)0pLOO_FdtMeJk0P!LB zmxQq~jdvwAuapCKvcBRgDHc-J=y6p4{TP3euW9F=e52hE%uzez;Pv%7i<-r>hjplT ztw#x6hY#iR=;K$(xf4~@ zEF8}S$MSJZckB#lcgu{F4w0~6mr_%-Lc7w`^j+G{ao~-QLksbzoOgwh52VmEcI1tJ z%wb~c<)w_Rg^+PnDn9~0*hB1SwUj`pY_%(_5JZqXx@_gY z1(iO*XdQLg>oSDXYucLow3PW$U3_aj$BsNu=~h8gb@Cph37(`vt9X{(X)JcjLyJ1T zpFL`u!X^p2rj#U{zmf^%$dEYtPT$Z;+iGTB-FlHt(ADig)R2HqZF+@zyP%#>Qn}yg zjT|qynZ?Y`sCRE0Y);TgEEs+=R@cmOcv>ZN?UPb#JI9}QD`E4TDZ46}Quol4IUFuv z|4|_~cIAwJik;2^^VRX`Fq>_h((ut#Nqlgx;4!y-R3)<96A4U4HyI3XXi!;0SGhiT z@ENI~=TN(jxAv;xBT#w0Y=PjMRTq?z;OhA0I@ee$MX4~mXg(CYbeuRL?=af<=-Cyv zZThq-Vc&TENzk=6z$b>0XfPqD46KJlak7IS2A0=Tk zOXA6@d7Hu=YoNKEuhJI>KLPFOgNJM|4?^B5C8>%#@3*9+@kR{$GQK@}rx-r%a9Zhy zyxtJ!#8%siGiM+rNojU@2JJ8Frw?1%RC`b#Xvmd@laxA?%K;=t_Q`dwkJCSvR-kV{lHxg+=a81>oX% zNoRg^mV@A;a~xk&)%{X_RB`EB83p)`$l+Nwwws;mJ#Y`2DXbW4cU_23qbtdWjBNQwbNC+R|J zgK7RH%T`WKxeCas{(#FVSbp1@6(K-6Bg$%hL#$L)YpLxpPK%g&GOB7tcA6M8LImj6 z(u?YR--X&yxvdBpKiJH^!8^X6ialaMpYEKLV?Nh7WpE&3)o~O9h5lq7s0tt(QTfuu zwTH}@D7x#+(ho3I*NNgjlW9Q!_SwCx?~lfi$G@fukmC!oku7CxUplm|9XK+9$?~yD z6m5{6I_J2^YvF0ACLd%FORbME{uvN3jk49c=MZJAe!!i@q&ZKI6Vr|5oHUw7&0Mqh z28_Rnq|L>5`{|H*)2L7NcStSDTa4f|@p-MKcn!HG;{>C@QH|9^%va+Q46H;Oy+rs=!w2?x99}CEOH%5e_0O%wNXI@0}@gaP(o#6FO)I zGJvl;4dJwA`qSpOwOxi+mG)xCUC}-dM^ccMwXU_vz!C4rJI0>ify^ax3RU5_TH}C* zL2eT!0^sFR+z?ALp?i(XPNxlRXA(opm~o9;Kd%oILfm<_!qpb2osr|Xy3#8%n*FmH zfAohwuPQX!37Z$7ghBJb#+{WH{djt^FoK&o@#lplThDRy?eMXDoL%y)&gZK;pb;0- z+PRMo2@zMzi}>yDVdeW|}32ka;XH0=Cpp2GE2Qv{eeIJe> z1pa{T!M?qQ)3b)id?s8465;qxEiid?7~B=(N|KZ8N^M#6+$zwouudJ-becmcO^GR> z{Vuy%o~ff4GO&{_vurm3VE2f4VmN823pGMOH@G238@ubn#0ESI$mfh&LCSjMu*P;2 z*P`B*BLi(fq-N$+3GBbz1rc4e@!-vw2)ln2^3^>Yb9BYA38*vFRo}LN*ddJ;ak{P; zRv0gLTJYbQ;*-fL3JS?dF172fyujc$eu)L@xB_J6|2Sz_5UX%+$=z#;pQ%BpX%3Gp z8>2wVMA13JiHQU{eL{ie2)Lij+$qtRwR1~be+nWhlB8?{yTXM*bsohI8=KL|_DYmZ z8F#zEk1M6oM`~503LGmWO-_NpSme@Maw~?1I#KT={ z1l)nqG^o4df)6Yt+$L;GIb?#|N-4sUN2M~@91qn>VrP#As!(m53H9iBKL*4!@ zDEd@pja(S7iCqmiE+-F7?U-#k>m<@s>zH6k`I>4)^|r*qX>McELWE>Z41`zwhzHi* zed{qx8bJW!@k6E$Gp%c9mQ1kTlJk`#MEXO32A-Y~>>eSIo#i&|i4w)_nqs ziNLOr*;!4+fSe%ShOeO6HELZ8yKDj3lQgt-fhKTDJPXpN#SQob0wf3INH(KE?x7@b z4l>$ODU_gOS5s4a8iejbI&RAqn~B-6!xtF7QHs7?1XBzB=#wO4aR22hh@rT%~&qiK4Wa~2u`y1 z2#{IY*Be%aoTLkdvsWW+i@KNx!dJMG&XKLaz9S7218n zDkiu%n@$o}@&9r6@w<~fUtVxEUBCYBqfg1b>G0ad9MY2GRqm7wdOn*;73!4O3cJ+O zc;iX>aYCM+oFi~Y{&Isa{*a@hcB+Dh>Co*)O{m-=IF^Q;2AzdD@kEuiWNztew7sHd z?Hd9>QiX`>1YklE;OUpPsU$sa^BNi20mTO&`#R$d_E0-E8^NO?L8wJ8TxcMKsTM3P z?Vh#fakRu<~ zhHc!@f@=m-#LN7{RhB6?;%SI1RPI*8VN^At!Ri2#j1Y6>i(=0HGJUk zbtHI}kvpzX<@;b(0;og%KEI4RUj*47INbWJJS1peq*{NcEAQb4`?7|9KB41Z19a|A zf_vO;*&BmRL)DG^a^bw!sO7_OOCOSXX%VQa@%GL&ZCPUE%GhU%*>q|E`dG+}GWfR?2)R@~O=2IZke zILblFZKhYa;M+((QOoydr`-g)N*ZC>)?ICH#PHvpq)z>Q1g$ZmO#-N(t#n9sDo{UU zK_a23dRSOA!i5n3hJzVgkBAnW*CHGF3`}h@`oQt3g7M7>!PKY{?%|d{(&?+k&@%J& zTE3dv(U$IDLGTGBtl!An+LHDimFz3^(*8Q7LFqG#=_g46V&O}@cycSUG%PFko@P|; zypl8azT~oXWjOC%-HxpTNU<-66%NFoJ3di1E!LBMe0wx#lSsoclv(Jz#*l_%no?Cf zs})Vgv~;H$i&(eu4>WuTefbTGemjzG*2xfir1CDQ@oIbZ&Kdu$SND@QAmsY7>OLo9 z73r!f;+^f~<)Jt1^&|q*&2g|0t=OFg&ndjPS++3dKDzVu%r#lMc5klUiGCxBH6L05ohPr4ezyoSm=Na!$64-Y@qI-A52j28l2GS%AGgz?%D z(+jV&l|#GfjRZ4=uGy!joX_@}1$u#MSeIBpgw;A=3tB2j=Aj#ltzpM{J!#=KCEfR_ zl`V{K{l_GWJh0=0akD6yfI}!5vHI*#^0L-zV01a%E{;0zot`4ceA^qs124G37CI$ShQdvCtwKQ*b0%cuD%be{rQuybdImU69FFEuC|Y6uPQRZZv%MZ zwE#w^M0u#GYp>~$GHm2qs#dyYn^{Cjzj9P$NPmfBeN@~^j*HlO!^+^~NwW9BR<)=X z#~Z^>HWDB16OLx6M?iU7hBL3tYZ1?9oAOGXKBkpr`cQ}j_K6bmYsNS(mWW*H0US5z z+yXqOo&*R~`2#4ldGDNM3`P!>ljYIch8))bZVJBzdGvtdu!fS%^`vQ8wfV4*yu8rT zO)Wcrq?5aiNa(A{3DE3k^4vkRB$6(mMYnHLY*9e>Hr3RXc=9h6Qn+>n;i ziZt4`u22;{lLp$W2h-Muzc``TXWGVmaL^Z}>;cW6a(a+ICTfs!v~nf3Lei?h;9~g0 zsp@h2X%RjmVnpxDkP}oW^k72pD1p#)JxXTt{Lhl44BpQvpFz*OjGXyc84|$h70~A= zu6B`WGPi>A*MYQcBUE5&QlsU&brFgs8i)1`vxJ9Mgzhc{^bt)u$ARELqfbj}yogCutq!`apu`G1Px?ZyxVWi#D4h2R zk@wl+u@#**h8DYJP(KF0z7G^~I<#Jy`suP@)9rMcBN=>yn6E)nkya}G)25ct-)XAv z)Ff<=Bw(4MIO^G*73a}^u5FHtz{Yp(Oe^D`jL!_geHak$I@)-Wq$WnD9!S@Nz12SG z6320syg%m0fs~(Wq2QFg4sX_B=JP41L)X`D=T#TRNwQq80B?F&P8BWajb++al^Qx! zq~UTr2L>&ItR7cA2`btK(k?$X^J97{{`}dSmn*rzpi}9sXVR;AzeI!0J+uNz zMV8Y_vjD+)QvzACCb)u0h{U*wKCfVLKsw5`9h^BpId^ABBV}n&A$jTE06*fs{sX)B z$OKQzPQ@C^BPRm~AG?}9G@3tOI+`O7Az}v|tNoF2BZTlO2QNOE!3$L-_XLI*>*F5= zq}&7s^2>x7nT2aJzFj4#QTjlpS8Z{r+N`wxBBQ%3aJv;-ZO`NI8g?VtDMgc^2?4@E zX;ustv4-Ocx4=eDa)YN|qDlS`L?iaa?V?dHO==?&Kkt2QJ^a$cK?%jWZ2ZU*kQ1&MrDvz+BDp6ft$y1L%8=S`)UprKBt+ zQf}AI@H3n`xzevsolDXQn9WGeLC)Xb01s~{tiRTI;Jje?igPB_G+W~qEkp|=mXHZL zun{^GTTA)Mz^Ix?tIjXYGV6m^^n841Vety{1FRl0(MJ+B^dvgqvA8>vfFhH^#TtB% zZ)JlH%;dJTrO!Z%455&O0azq)l_98^?D{5neAd6BLWTl zjTd@AIBfS3?6`f(hz<2(Sn#IT<>g~;rc(W$OTPVqV~ zW>zT$%5@~Q?nnhp(RQWOxXf;Q9hXbFzYS}VQ`XLnSW+WT{&=^}SLqmA=YH*up85JB&{XOytE@ z{8wvsLoSU=vAC};djVCT<%_R)OUEFWd>yH?H0W)J+Lz|K8n>YiyiRN8T#!QPy|`%< zdFWHGQm+AN?+$saoMu{6tnYAse$ILRvPXWLUtSLYwBLnu*t)fUFj>+Hb-tbJ zukU$?`nycjt=$Sga8i=K{xhv<|F4j%V|V^aW;%6^)58tU$(v81LH|Fy263_lDy{{M2 z2n}pL5Ha&i%E!hL^6S3I54 zg}=}~Ub{Qz?Sr>kNvfCsG4?4XJ)u)?%8zco-1lN9_g@COPkC?h(&w|-r87Tx^NkMe z`*V7Q`*MzvPdN)NA3AhkO9yVYXSd0je+C;81~_387aM-Z zYraqW_kKeLNkv8E0xwgW^v+IEk8SJ#u;TWiQ$TiPjAihYnW|4L1dXFBWtc;f`HU*3HkvDQjfQ0-fcNqSgMSDSCK z3H5Nvr|{&gwC=ff_Jfo8W8C<0a@7@o`Z+1WJHqzT4fkKcca$*1>z`#g<{8GfFyS?2 z(nD)%i|d?Vyk&?*-ImsVE!@Sd|v z)B6t}&*wROd-woE_Uy<9hOk{ewWn-F8d|`BZsmqA4~u0aDEdxv{a%Wj!VbQs-(I+8 zY(tVWj5dnfAjfStPtqc$zPLVj2 zvwaJFFDYIpemYrIaPXr&#)t8c`9-3pz@rzJh)eTpK|8s#MEv!NY-%qFuIV1Q=Dp-T z5NHAE&COt-gi|+g6?Tp*~UE~>aDgCR2P;*)z#A30W?t>8=fKMG~jDONDUE%E%+)Gg!%AYaG zFJKfVPt!{#H67oZaB@rL)QBb9K6mg!v`Cm%+3cuo4XCYc&Jx)$2AR^HQp`K82WviA zyBqp3eRb0|4B8qxF5*A_^&WD=>ALX~5FR=9F_e){>$GXg`L88n-Lf*a8qs*Rha6br zmLYS38&v*U2E)mqJks*iMsZBe!c62ylIq^0wr3>zQHF5A*9XuUh`S>O7GgmoH#$7* z%4~{-`zS$F|1{?$)xx^&ffx&|A-3?5g?A?dX&)8KnD5+59Lx6dqnrimzuohvrd|8Z zYCE3b)G%Mi!Dpj3INJTWOzJx#HTea0U68iZH8OUUA;karT12?zh^$*>r*PToY5Cn@ zz$@{$5FBHUUw((!YbK3{yI5(js#4jk;B;`1646 zY=yBl?o;Iz;y~%F$Cf@m$i}@bF5`=yC8bu_*P7(j5dbT9yESN?6K`;k@Kmc06|mNr zzIr)~&wt#6!$VcW>?Vn|#wopWyvipSxogHchiE9Mq@Vq%x2bAy4lSl#CfN2%8CA|y zY0Z&3!;3APhfbTkmAP-htTyPk+>enC79{gm_-X!P=oor%#_V)R!%g4@b3q2UVf9EH zkWu~ps{X9^xhB^`hxMU(QWwKBhXqCPiz%w)TF-Y4J5iCjylR8&c>XK~$-h(Z?Ke(_ zq9y8)EyHhWIUvsuKA9=s zBtB=O)jvkorg@~jM&e-W0euoNJK&uk8ya5q@%-YCrY$LJLRR`=rDqAq(==Xsl&QNm z_b-mbe8h*azgv7WYK?yT(5M_Q;AWX^LeBRZt&;xH==V#_i`j_--x@+;o!$IN5y&R2 zW~u&#T=K)u!HrF(h3?Z?Ye#ES1?9Cii@#+bu+UU;0Nw85*9&0Wd1`h~DN?qeC4rw1ZHS)xcig*kb=#C&h>j^~@{xUHJHitR5$csOn8R;2=W+D0-C>H^#X(R3t93Pct}dTap>P zQn~Z+s0(#NPl(LDn0TDbzrC`jb?X}|u|wv~UPh`%h6c2?Ke=dr;XV{Eg~>{@mzYI9`eY+s~1g5AY}AbwXRq*&$A#qj(%MnUB1}; zX~XAp*GH;kld~^9s+C53y3ksT@6DZYJIm_vLaM3UnZk7jjFX?Lv z(CklYD^}R*y%I*UXMJ%QXap>|FDVBMsL9Com$84!a=*FE!@_jXw9(@zw zMf)n2q3%*DP-{bH`p1Sp@YUK{kwQ;qW=+y}n#WlDBA%-YXAQ5{Wy-q02;UrzTG~I^B)+rU$_U^DvYgbSl`*G5C_`uFP(I)(BRT9Q%VYsYj(dra( zW~^q5a@q_#3-k4>lAJxd77ZV4V7iUd^%5zp5Qi5l1jhz%U!)Gbdwr>ekmpLe!>D0o zshO56zEXmiFlwv4NDV(US1Qcf)&^;r>y%V7o}aWC;AJ8fRQr>>;xSq|8{uHvAEctv zGlau&Z87$3Qf;82S z*h9@3h|rd>heCJ82{`ybvDTdCAs^cC! z%0bOC-@}GiXfmu~4K|^G!}txW7~E=KX+J6WLIU{IPwBgTE?nZWFNL8f@#Jw$)FL8n zTt}=mo$J#9Mzg21WaTOF2$Ab4fjM3W*ngWF$09eR38c5TNx0Y z$X~s3ql#zK|3^*-fmg$*EFXtBLEh?MhDS*Q9Xlu0b#^tYaVNN;Xh{^vFz;BLRc~30U$ophw`_-IX zAV99+YpPv+A2fVB)VPku9Dc)XdW1-EF(7Y zB2aVlnEc^6$FPP%{Te%-(3Ww=lIBh+(QyPm3OLY}=4Q=SkW*LbE^s7tj^W?M5{cIW zKpp`@hTyh0!po$M0;7e^D5RCa!z{r!!f~GY>C|L3nV%?_hMKY+ylTGkfQ+MgzmeLa zVyWhn5!eteNN#cQ3PQf;3pvbf7$~$grYXX;-kC}0_EDOP5Mtt7Ucof;21G7X1Ip*q z9D|!PS>nH?#GpmdhcN3pF0u}AHJ+1M!73g-U)K@vma~5E%XN-EF@kAd!^^D6Isnl2 z;XRO>JNNTZd7bsL*~S+;wjK(Yc5W*1L;=KW#eq*z$~L7c8)G)lj%uZoif_8voT!K@ zeGM?BSoQa*EQQo*_rN1eA8;QAE7xKcXnN7PdayXX?v>;}?s#%s?WpAK(ePYsr`n|v za)VHU_s^+Ishm6)pb;Q*#;7HeeZPS;?X@OI%bIPpI`K46Knqz3b7@tB8V;)l^nch~ zt1Kzx0U8O>B!-v$BdNML;f4NwZ00$Ry_{d!v)^|?4<ObX`pR-v9cDRwq7>Xg1#A*c0|)c zvJyozfAy-JqUF)R6b5XQ%v7HufDV z+~7K56$0ZhOIMEc%f_2KlDueHF zYtc8)jiAK_G@!!naE*Ns*CY8)vxfa+gi)vSJkGzoli7;!G+X)Dop71?&$ChfR~vUd z>T|O5)vV*os2O|eh7`6dYy2LcXTXVgQ!SAKqME+Ln!0rconbw_6O;XWcA^YuUJjlG zb82fIroN=ANP6(IX2qa8a@L2ptmv`B*P?~RMi3KFv{XHDC(qY5pdMJi=sZ8C7RApI8` z9#uQvjIH6c2#qbWp%Cj55RGPsn&Tv1vsNtp$L=5ghr@d9<#(A2xDcC4kpk{%=QH_n zwCFJU(DPrpBVVE6SxJAFE;3YV$1*xTBboV1)ZJdXoXb(7K70d0*$OBLu&a4I5Wl8thDuuLOywo@J$ta_ zPm8H7VZ3wm+3W<}MavZx*SdBCYA%O)6-YYz27`BZ7qP4h6Yt3BD`bGX9!UbF!}4N- z&{mlQhA_E(iC$^sT?N);+OxrrKP7PAu*9jHy@+nQQ@UG0N|t1kUDgq7{rx*tey^Lu z2=sCF_a@IS@_Q+p6u06)lm@VGi6rGK%RDAsNVRE!pl+NO#G1CHD1>bs^A>m`q$jlb z*Z%8m#jp5F0#W{#E>cly&NFvXCUNT9*pp)L+c9!70_h%>Q43*-ckMPz$*;#pA)O8l z@i63jQE+|zsA4H&5OVxX5#FPVC0YJ81f+ZY*GUn_)BR#%H1s%b{5$*4vw*@XU2f=! zj>bum=^0KuIbDAaf4P)MDsuw%+&;AeyI9DM_9t7>`yGo+b=>2(!K(Q3@Z2Jl%PX=e zMcL_rhm7M%RJNRilDjjA2u5*jF}Qe2>?0h_Qfg^3amH!QgL^?C2j72*~y6GQuLvsx{mA zVW}Mv9}?xLUmtjb?NwOinc+BEtxK39f4E*})8tpi_l>?sw(Oj387a-9XLG`88@o~Z z`u}6^y`!2;|GZ)BV}qH&hP1IFBA`+Np{a;S?;u@7K)RF=LW_<9f)te!dJlonL`r}J zP>~Lan1r4nA_)WtLI|Pfz0sN3`Td^ryu17EzWeNX&T~z{}aK}@AKOo>>w6+Nx`nT${}{Xp=`Jg_E?6msvn1>RpASMjRwNMLL?mNvIH1 zu}SNhU+6OBatp||#>^_-5g|zb6Zd0!CLg$pgEqOqr&5!cF=f9J5WA|^y}YkU7#4ZQ zdfTj)NaU2-h)5gSv^9|Gea{s#mv8yi8_iKFFHNKxGISpRfSP7npCn|sdW?C3=x6mj zgEhN*A`9vQv@KS_9eon?YN@3#PD#k)RC|{U8LKM;YQhQik<|o{WO|~pOIfBgs}DB@ ze}L(=a>;%H+$@>P$xpy<*w;EjS_#+*LHLpF15^C*Zv_1`X_fdfgdgT@mrmR8kHCHjN;g1aH8IHidv*)z!4693-}e?L2lE9K_~>O41BE3gdMSXly< z8L`xMVJB@?ZjIF9a>ha)==`k2liNfzNoIkzlLLOEm74WNa#f)wjJF?|mhlnO} zondVnfG-tMvMbxCEw+e3{e~B$m$pcmByhjwJD*G<^y;pbW~|yEPrf&Ahf2#%+*h-A z+CG|taMyeU){WZ>4ca;6lG-MX_VqV0nt%1AHjIoY2Hg+yplh@@?OsIL1})jY#6T1Q zFI}g3d`c8kl^O6PHCCyT&q%|FC!ZLjMimPe%{KGjSaDQDn(c#mGiui25u@rEjkJx6 zUkZ7>N5Ax@r_Q&l^}{`sXELNOI2M}#5Jsl;z|2-X(|oxC4Co&2AWEjIVk?~}O zq`(3{!y7XExJ$yL`J!8N6mu?nuwY%(zM_)=XJ$D*Nc=}gIM$%p(YM%oF17~kDcd6L zbRzz507Y@Ya*!x#oWPmtO*^wzCET=;m>2NMLduO}QD*h#UgX7@h9wBM?5m=GTMh|! z_ni?`I(G&EshcjM%5bm+w5Q7u`+?P!Q}|;-1E2tExjk__Gk}`LzTSPV)r<1!v*cK{ zuCcaoMM`CSF*9G7R+;s2;CSyDs0hlt$$YtsNmmU#@5balLZdk;<0EXZ_QNtug$+su z3`f6p3v=QA<8!ny=`134VI=O}KLFqu9|?%ZT3iXT$^3g?>!GZjxnFYo`kXk%i=g;X z6ci_u!3#UjUsj$Jy4;<=)^<$1zwG%MNpNdwEYA%KfXMX_b$Y&S(7N1w068>zI>Ik2 z{X_MeLr~g+n|%(CB6`!Jx0;Zl%^O^1qC^;dc<|&*zhod)XN zxdp%6!sWbxDqiSjTj+-%f7}PJiR{8g+MY7ikRibqKh_(4P{k*~nXqz8fI1M}uxVbc zGuFfnxXt6of`~sk*T>c6f4z(sAeSAq1L^shbG5xg?DEf0@VCW*8@)<31Bn3Y5#~1m z?@K)Sr`9yWX`{kEswJnPguXYzsr``&K>?SDxRs#kOrlv+gITA60<=-F37?jAKqkU{ zia^}K4v|}ODbH^4c`>a?OvR?WOYgAT;CP`k`$m$Qa@4@j+6KAOVg?rO&i5ORm3tdk zH`}XZLePO9nzAKGUq{NRRX$C$3NJ%V19(42LA$3HsBp6i1w=QrOQ4{cw>uJOC(X<) z&L4OV*jo{72&F>Soh-ZQtd3;#fHP(0c3Ic>5WU&A@++q5NabXA&s^DVaq|GhiPTxU z{AN>WLtBJWnso*)Cw5_mfAxH&Pr#H9&e)|TEpZ0pX8 z^|j=>lkWqTBc2G!hOoHPG?}t5&w1HPn&c&_vfjn#ML79_!wYqoRA<$RS^C|0a8uF8 zrSH)RW*huoZ$ng_fYOv9PUC74@(s(o4oS~y_KxLs@YWt&q~`BqNqGRw>j z?Al(^_da`YA-NL^YJUinRvn9$0I2S5zFB*Q5eI9*i(2@3mJMSkCj3h%HeRYer+m`; z4j}c%fs;n|9dK+UB{P3M%@?-0avz)m7GT-aj$w$y3fWZ_l%A8adO=?;dnclQh ztg~spLLg-H_P!bO*>Q+??a8rQU9#Q@+$#6Cr4#z*LoH^}LF&d&scnb0+?q~1$(Ush zp1VSM8y6mZv&-!GShsUsHmdf})rlVN#Z}jnwkozxoPuKt%)nnHN5^A9+uOhHznaxC zP;v8QF38jB1*OCx2U-;n;C8fZnMWEr4u%lk_18!xeP~_ww*xuapvt zw2G+9m~2asqZ#FyvO&XFzhI&o9d1y(iv7Gwj-__PADmcw?YPMed{@tvMB#Q=#=wdl zTXhO+M8$a3Kqomf$u@p9lTSfBZ#}CtbS;NMkYlw z9<7jE|K>n_z9VXHZ@y~En6*?hajHU-`z*^=sSE7PiE$-5dZC$qx?yI4f;s}GI{bFp&(xKWN)$DlDRe?p z=k4fqed9tFqh1{l8Occ-LHu#TXNR+o_McNP_9K|;ZFb%u`!5%9?liOsm8fcL!uB@eJLk2FrE_RYIq#0Agv@Zi+a!<}qbA%RCiv1}?Pr zEnht}i#Nl=u=PxWtY?(BLBRZF_oJt>v$qIa4k~szZ(~D?iKvNnhFSA`-P+CxWcZ&| zegOh3*8pw12xM2v=)rJS38H16IK7ji%I0P3v@lwnj7y`8M*_vYX~vz-Ev8Qb$^;j9 zL9j?oONoCxw^rUDB(GDZKg}T>GA2DRwU4%(AUgI%u&GlZj3C`J2VclNPblv@;)fOY zlb?!=51qmj@vfIoUnyZ-qXro;OuQVsHeYmG&hq`S7kHQ6RIP`{ z-+%XO);D96{b6_p;}|#!sHh`@Z_|^nz0|x&diW_zK^|R5o=kHy$fM4NX+R3+H{X0D z2r#oN#zl7WUI+xToIZ^hw0J$CSM!YOPp_8eSK$c|AUdf(AcwlTKz4s|CxiRO{}!ezes~5$dUW?Vj5ZjwtCB(29E;c7+VajFqn2xf)Z{D%>xJ zjYuGRJ)u)g_0-V7;Og1+2h9Q5ewxuW!V3|6Zez&-b4rL&G1UM@3N_` ze4ShozmoM5Yem-6lJ#Dy%oUrFL7y4uRS0I^&Ks)B@~oN8lpFbZOFA zrnl_&t-b#~S!N-r`w-08Y-(;%;7IgRY*L39Xa0((QS8Y8*{21c6kXi`CevlBCS1Rs zv9o=g8Av!3uWQkIysz5c0^5wwu84SR-f3Yho7eUy?xT9i_FdI=ed}y6*Q;RI4 z_!Vi%&G!5&Jf=`}B{5c(qb_y%*;4EFW7xWeJ_;52vB)gD<5W(F#4r2+bxMJ24x z#+#lUDBC_>-^&Fc@xKVG_2sRt9TT4KmKQKkcZox!O{}SLEq}vRj|Bo>TUmcQllo zVNlk;b)`3LSx09w$%xM5fE33h{h^U4u}(=t|@MvJQZ zuyNDjVz}w}@94ohSr1~Zr(OT15!ZYB{@Ue>X258T3Eg244`%SGxlO?fF7I_RU)V3xOc^)LT=>?P@4|fZjd^G7t`&==;HxvP ziC69kR}mVqUxp!D4UzhqNZN|_i!(JuAOuM})U)}c)1>gLS=K18mb|~ut8N8##I{bz z7d76?EgGF)kXws|>HAS6_Fn_L*vj9p_%;sENFmPYgg2}9d(>L3YG$*p>halH)JCvi z;G76V0==tqxqc2{gr)#l)a4l4;wp8e0FvAKOJa0*Oo9+#6)gX*3@9|#JRWQ|E;#>K zlAd|*%T33{7x$*=q*YzGSIry&GRGY}c5-1nvWA`~FbcWR{2I}?c#DEE%{n2b81iip z6C`^Dr=>&~dg;xW2^y2-(qm>R?Qyk=2p1AI@)nayd?iHhoLeJ>F>R+IT>{XIxBecg zQ%O}?7yfg2q!B<&c_+e>f$J-nT2qW3Y$;R}bK|@6F+Tz+BUgOsOXd<;!trV{n0n>i zx?4u$lfuZ2FMS%tPmC>!wv`|FKaZtbpKXS4D}VY?peM!M&?_2mj# z$&WE+&&jiM!+xP-_b^A?1Q>fj|2kuIk6>?NUVC}9{=|TdL%(OY8B|GB6A$+2h<}+e z{=6SvYz&TInx22?Gzx{5#!m zQcQ$?yW17GFkYEI7v(UG#P67^>|U)h+8oYOYD1U>gnyE-_%f;IZ?O?zha0yaK=A_j zmU;84GKAIS1)#Jq(kClIR=-IK|CB5ZB0T7B08~m56(Nyd zmGT?htot|2t*^2-7JOSq4n8nvw}Ug4(=5?_qmJjTi~XhrJ*!!b!=qG=f@VN70&*{% z!kVV9jj6W;^6$Lu8+Pr;{#jd@oI(xf(530L5rs=d)_7g{Y2y`(-EPBKKoBSW2aOjcUl@n524W7+2*Bu+ z{Ss>1=whFJmV%b#y$o1qhi(=4{(Sn);Wr4d!E8UxgxM83JGw`1sHK%$>q^1Up1%do z1jl9j$LH`^ndm>2E?x(b`VIn?#S| zId@Y}tNFA?4YNEirItTi%}WjPy)*yfi1SLdOLFnr^RKJ^7qipLwVbmCd15}9r2tGG z6<)0^j9=J%66Jm2Dr+kNh8`sq#EHmk+%I966QKG$DxR(-m_GMsle?o|NuF^ov&d4r^jym55^MDicrar=>?Q=kbR5>XG_ zwEGgfC-y{l-$8&a%0G}O)CW=^bfZ$TlQRFG;IvEwQa^opMA$J%-~FXuR_5JN7BdC_ zechYA?G#avTn^TL@?g&fcp{@Ox_)aqrAMV8w8?d-AQ9|77oruqz8M(+&@apT1<<4+ zS8v6lGuC`hdn`6^N=*xzr+(nV2Q=2&w7;4Jxh7oPTq7B`GoXN>VZx*?QNCj+Rm?S|{L_w77)`+aXWcp)BB{eZ2W=F}c<04JW5y514T{)po%pgloNskEbYK?-9iLZL*taQr9SuhH0I4{DgydL+ z&t#|?tf!f-j`k$3r++7c&cn9llmMRwqT-Nxr)E0UfySyXCbZb`M`vX{mIoxnwB`TR zqe?;WH`%OuYgs3zv)+{!^DsZ11~MwXTdhCTPu{hQKRb0soPv8pNCX;XH-A5~LTl z<;M|H&lma!BY*s|2jGhZM~yamvX{7{ZLpGE4|R1K`>@WPukz59jwvgf`{ zqK?!g;Czj+&2HpZN0m%12apx(-scFpGJBEuT?gYDg7@1tm$v9>va{;P&dG^YSFAVS z+xdKIKi4%?vH~{Kc;~BG{iS?XQsMzK$$Pz53!PpWGXh&o$>IV;d67#TbHfyG>QyfEzI)3@_xH$chr3e{Rd%M!h zmV}~y)8rmA8`+~|ODGcri_U!-seoZhm?pZQ4A$t`!X&3UnRtu!oqIZr=9=9KLusbI zgYKEbFj|E5$2%A=@qj`LGMpv+#becHP7RTPc{k`ZS30emZeFIscr&kRkDf7shM-JX zfen06H>cqc&jDcQ(lQH^s0Gg;VP1XKPH{#7$@aB6WBk^*v-W z%x*;d-3!CRlRpj&J9v6X;P0!%!;`4`H#f~lU%sZ8hvA*~`qBTqWdE&7g^wC?=^OpzIa;nCHcI}h`_3CH$i&c?{q~a1#HD zD$nC4BKA`(##z;Phxm5gZe@;3t+ye(LgrV1`ufwGBoOP-7a9*>Q!WF62sPqn^M;{X z;4HtM*1y2_@SuKz>DQOxXsk6a9tP5wlE*)0-R4l17=Q7 zylm8%eu`cDp`ES5H^S@sQBZPo^(wJ6v?G<4+Sqyid?+sP3+u!dW_DyV8n1AU#PKf_ zPqS0q!DD#yKSGYob$R~bW;ysy!i60+To?WwTid^Tl?cC@R$EyJCn^J*uSCjUg17B3 zlK0UF*=BqeCga+FRnF5UrIJ*vI%j+9mv7OJ4h2u{K3v;$8oRHz-q!9E|0l-%i|)S$ zj|E~ntr#bAgJ(W)J`El1b&v*Tp2(-S*E;FsrF5cQo|v3vM|jB8!+dK@ru@_C;>fxM z8_%lAKB&KQymu22)m@9<6JUa^?oPf&IIms&jqY%buGXw>D`epejMVE zE*ULiXdrk_f+r^s;LZKUZ&tavkC25=h|K)iC@CTcVJtr2v@eM?-gj%eVWMT`FVjJY zCCd&Vy{KzqMi#bQ_;Ds$;+-))Cm>4(;TReO@*KSc%e%$FTcOsoeyaBp+P-Q!lL=b| zaEbLY^Ke^>Yu6w9$RBvqCq2JyO(`dqxq;_Ae-22V1hmcqwU;3$4vfwvf{&9it-_qb zDzRQ+hGL@K&-X8ij*fS}a_o5Ze#DxtYvSvD6e^u*;jcaJ0G03wqjm#p6;u`dSo@0o{v546n)86k9Uj$ za0?5ry4xZfvd@rB=qFwJ0`|z2iA0K`Eo%T;7dbUkVNx$3&n+Pxj@)*NT>5n|CjUW%BU-@sOcaTIDDgf>Jq_-1~PT(82EVT-_UZvw6j_|GU{KT zar^rHMD0w7%TXd^4n<0R4Oo?c^}>{WSJ}bJrMhqJk9j^K1<6B)UCn#5uiLC9e>>Z~ z#tZ#%NvU^?7<2p*gr;IqJ}qrl?4|jH!8&~htC~sp`uAM7u*GRUUunoatV@9q?<`~M_@r9Q9UH6F zhkn-(e8a51(eVu8IlGQSw#Fyy`g{u~^FU$c!P9kK0pyt;G1@{|b{X|d;}Ah?TZ&pe z*#kU|GN@ugdN6rH8h$kq9ObtY)~a1de<%K~hb635)%THL!3)=M$?^@n#KUu>s1lfN z;2&b&$lwTD*x$uf|D}psGDZO})*WOpJ)}@P-okw`-)ya^e&b0y8ZtIY81e!x3|2d}H6%Knr8)QQB4whvtd~Fg!D38}^B`bg=$2c1T)+9X9Rp0l^Nko| z9rRnb4=L)ba+hr#_3Fwvyf*GA+Q4E>Y2ua77fzqOOps}5uZJ%;yjAc7p!ChE-cYsW zD8FX>Yq1{O@JO%!Ja;{Q%T{fP)~!li7m;aEoi*2e; z4%i1#O5g1vTVZT}`C{j3UA?RG>&3Lj*{1nmQ<|nz7yX77gEGadn2;SP_4g;b}|8VvLOk><@8sRwH2=mDYIM zbhEE1R`T=y&(m!knggT%KiE>NLS{)<8rd7pjcb#N>{bwS^du=NQ*sR!l2%&^b3pW0 z+v?+4>>1~b#-OuCvx7d%Xy#x|qEFM-r&0SHlF#yu24C~}K!oU>fSZTgd*{AXL1qe- z?4`Zr2SmwRpL2J|+-W!B)cU!x(W!S4jeOnI*7vJw(jEby4*jh ziAUYS=%AoiRR~StaD9imGUIkh-L9SCG2N2xK%)JkZ-$a`4erWSp}30a!(*GmC7+hw zxS|(%`|iW1)nKp^ti?5)^2rAuH{NC`@w6H0M_S3u57fx?26ncb4#0uToPNQ&*!e$; zT|FUc_lx0rla$cVboVLSZONq$1ov*=Jbqd4dFQ8Vwq7D$mo}Isq@o4c=ZN`QkYGkCF@0y z)qCyNE37nKICLXHalqImU}a+8Wk!bR`Bb(&{L2h=sC?Ipp}{1urvJvx=ZqO^f1LEl z-<=3g2E1LrjqV|PDHmbf2^Scp{O$i>KskIyg@WhWTMy-l_0FMi{?{ZCJ>O<_xs41J z52&u0D;bQepD^ui2;!*X77Hu5$@fsf?8z)CvX|o2Vdy+|{Tn7I*a_vh%)W2MEQ7K2vR^NIX77_aXGAj z<=M}`bh7g9lej=5J*Bzok?OU#PEb3gk=|-d2@XgK$>yXw3_!m6t%nGaB)q*q7)rtM zfF-5)Qvqu+=I}%u;a$07(D;7uwfyfS|K-CY)t>1H2%OZMq=IbzAUz`cbo4yodRAts z$?A7AcWfRA=g`rdt1axpmyt@fGou3Xecs2%jsx7I0jTBMA;E}DW3ft1JeD38EDB(@ zi*2w&cBk$a@-NKy?z-zSd52LT?LG^u8D)7QGt>^kUa9|bw~pSjfZ*LKI40uiq}M~q zM`7P#5b-bliW4T3X=iIK8fyplA2Esp-t7t%#7Ag``dg>T3==vpJ0J*=xpNXILjxyu zsx1b}VFRnXyVJIa$K^hI`zfod*{iD=AOeO|l6zz~;6L#=y1b<9M(69TfT&Ww=;*iEim1c4!Jys)RA z6rl(jPZ(`Pom0dojIfI-P5#IMahFk_oy5x391DCLdk6?e9$`PP&t^0YiOxh;Z83!+ zJYz%i?zyl7LWEqlb^#>DCWcWx^RCf0NL;n&YhT6e$>o3cq2y+i_GjF_>1STqSN=`b z)xnb1l2lJ`OR3mP=NrgR6YIVzbhR@R54iA*XBImzR?+VY-@1PrpgVj(>U($(j~(E7bWi5r zXCXP-{ueJ`pI&pl!X^p<>a$%Kfh|P9ZL`6nsqNOA=;gz~pF0ES$_h`$0>FrYp+%Zi zh4~&PXCQd?h;&I<69|7T+Z?4UrdZa4j8ow=DBCjivssU`H-^q8@10P4ws>640f|4p zT#yWctR#?D*S2Pi6j5i_+ATVLG{yfgG+Z~|<+kE@c24Nxg(J){6rfdiYnVN({R|vT zyXg`2<*<)-QU@T{X%k)n6iyR{jJjanUJLfxV&Y<(xL>kq$(j*nbjM|VV9Y^AONGX< zpglf@wT(PiR3oHx_wqHCmoo&w&@REBKQmid=6O9oNs8j$e}Hdg0(FTLL%U8KQ-ra@I+f_PXG zUHIN5=MDn#`}Tj(FZ`am!qOPyb_va^i+C)*dDwjcW>0>zvd=544+^YTFH@Z%9aKrHF|V$u>PRio5<%Sp2P<4eSj_Si;IY0JcC$C%$dg=?J%2EE@t*lF;zX>y_0_MrG_Ho( z($%%4fU3RoUx(I3SxXuHr|HT{@9O9jf#=4k{wxD_mtxt$#<9(d_IGIm0`wU39=1XI zedejTZgWOy4eK0xjw3qkS=B!zcE8Bj1=Tp26X&7w^Huu=7IURdH2gLZj4Oo*d&0`0Pu0zd-;tNAB2jES;B1KORVhXq#ML$xeE)-D4Tu# zOaOF;I{2nNW@e=1r?(0}!RBv)lHJ!R%b{)vu>@I2|8|PVSn4h}AV%uL;(1>Xoz$sT z@zZO;%_o%_c-VZ%)g~2>Pa2T&witVB=@H5M7sW?a!kC5zCCwZAM^Oo%JtM6dhoYU3vd2$B-GeK{vhqMh@?P3XJY+_-(hW^&Fgd5nY@?ppw5B)tI zjPrR8@^)?#<=){|E|mH;<-`Cuv^B%u%eG>j-au^RthRtX#1Q6;LvCXY2EEn2EC<^7 zWA3ysev=4&7$3Hho!x+e-%DV^LmJPkaqENQa*cSuOLuqPy|hQ?#{h&|V=IZ^^V|L2 zos!{OG8@Jb3xDsE-ROp$Prw_iB8`@QH{rD{h-_n${$iKL+!oqQ$9&e%$rjPXY)(>+ z#Ggn6^IcM4FwgmKzTpK4lY?nt2vWw!Cgu!SRPDpi?-Ofn_z|`{7)QigSE)XzFBmMd zK8c%5Pu9{do;WJAe1#lZ-J;yjzqXbK`--1f>K*8^%LF~yOSsv)DQalO7Lf_TQs?R% zBB-WNx>l%%7q<)DvX(~~op1FE0)>qj{eg(yz4S-!Q5&@`2`nGlPBykLSp$9?2P7VU zh!TAcMs_pny)rUffSB(7R`483A|-YorYy36aCF-CL<9oemWcH+rg|*L6oq19C9c&Wzg&eO5Ku zUci8#PK2Wl5ZA;M(o=0C~0ny);r^cvn zf6q30duKZU3i#TNF#G=_4e5Ua(tiInPxQajc;Va~8+GzX@*kN^o$kd%3gsVW`xadD z-B|It5urQijv^Ts0duNiGG8xaV*?`+@+)>4b#do!SC5vZ$0z= z$?>vSRAB~;JR*{mx=qc^3p*%8Ie2K~UR;UMPisdv^Nc5}3f*3<3bu0fC+ErH!}GDf z7NR;=NA&#;2nJ)HG1oeEle}Ys&YVD%$Po`^SE0>RRD`3KQ`5_`UE9hG6F}N&v;)u} zK8sEe@`#>y%8UyDs$&oR#;4!^V9Q|V{3L+2bCS=9k8fJN4T5+Pp(HcmSJIrIi2??9 zk=Ji?8zlk#_Su&>yW|>rbtJ^YpTW@cJ`0RTmSl-1mc!R~(HaII<7m*^dD^K=$~R#M zNa&TfuYj#etwy7DSVjiounZ~qYhL~NZbyT&kgakKlUy&IZN}NVE;Kj;9O;tY(>9tF z<-rqYg+jYQ!qVBwCDdemB0Fb^-mQzJX=Hk0Qx;clWLt9tJi-~=|d2K!4&C0gC zIN%KTmi+wDr$1WU?aVKlAQ?TJ#m6BaQl>#-yS8Aby zW+oZ|+;pG5p0`82U3GO+OaKHWSN%K#%hZc^eI>k|K5y2jOp$oJYu*Xfky(tE$M$d{ zFE&4fX|GXCS#p?QqfmO|4$DJAp*j>Yv}m102G92zjNy-yiT4EKcGxmw2>Dvw zGtQ&)Q@Z)ygD>@MeZ-Iw!2S56Dp{DpOwINS=)*n%HHo$>;3VTK#+*|vpN9ixOTKTivzco9JF)jSt#B-ZaGJ1VWi~D&Voqk0yM$HFSF)+eL z&>q2nt-3UKcQRF26lFa}^JPUHj2ekC|KU#BcEN*nH~b zdGbiCngyP*S?zOB?GK7yhbZ{6`tW8)Brx93W9!&U#oX3dubXC@1@&7$N@+#7j0~Z_g>N# z{>?xigPyMDFrn0v$DB7Z9u71P=)lMSg$USkeNi0pFj7n>?v%~}Z|_VQz0O9n(MEr} zzSR`aZzbvsISirZb(akzFn&GZXhRB8OIsorz+4v(-*2E0LZ?&q{-z7uY8h^ zcJe;|Wx?Qg5@5HPqsnu7g^TYbRbI73N{R0!agp_UA>K(P!Q^z79k~CIREPs70A_pK z*YygJYjK=G>_QsaSrUmfTf8a5A4xSRq>np~%!p$|eTp6Hh=E3-$8kV8a3s}793llN zY3!5qms)GnIrwKewC&Nb#MDpUe*WV34q&v-4E|!_%&@&T!*WwJ^AG28S@4qr4rehjuetUw1wisskHYnG74l~8TK(+vRYJ?{zK z%ew=JZ#eSk#m?i|Ky8bo64_douMV3-G$qlamgU$cfVDlZ1vA>K_ z-a-e?95f@Qc0a~mt_=dv@(n#|$5wDqxBdH3uhgq~EfuYVPM>R3eo`4Xy>JMR2nebX{Mn&OG8~c__7^9CWBM%3XBUkxUc7a zwYzEoElfTkf(iLa*SiH?%(=_ZTJyUInT_8)O9jhukum|&nG_8CR#Wk1gd{|30Uu zipeFEXf3W1YDoKGF~Dw*s+5G>V|aO+dgiZkkscE;U|i^5@m~CpxHR8;?Ez(;&3S{8 z^zz<|zPgg>(1zCD^4Iptt)?@hVO7jvq!xsWD}T4*Sz#lOq2#X9f;i)IeQ)OTH-|&< z!s7h_9|Tp4Lam2u=52f>|IrR0=<0Qt@d1BqQ(0Bdx*zvi$9-5zjJ~=Ck-^)kyt)uD zs}O7kowe#xu!p-cr41Ph!KZ8$OQ5)JzDr7Z5fik4g`oxrF|*=0D19d04gSq==dIF- zqTmt5njo_7>uzeKllMBoF^CnO_F*&DdAmh;TpCo^Go+Axg;08+(N^_|vfx9|H+Hs% z8D;H2FHR=URmWFJ>|k3o#(^!*A^CJAW}7QY9IZc*WZZsY8%%OC0qC^g)a{cB7(R6Z zD)1`A0J;sXzXXOep9X(j+&A$~VyD~KK=>J@P{o4oCTVq0vt{m*iZZSxeGk6xyG|fO zCR378c4fjNL}&Bye0qHnIKrZ~Afv+hM7f9zu`+nhl#9R** z=Uxlm4r<8cHrKw0;Oe#E`yciv~yuDNEvDNk6<=^Zq zmL73yL6CdxYNL(!ew`RKTzY6K(Hl}R3cF69n;m)wps}_Hxxj_Iw18n(j4S(bHxn07 zo9^mu0Yk!gRp(_|%4a(0%c}}S7SvHMFRYgI>=aZ)eRfHpZ0iCn`-yG)(tCdDlIHgu zl)EQuT}R}lXSRyq62aQ=DEnI1pX&9pp6uM7dE9+E#I>`k|J*N0lq!#B>cucR3HGK< z+%QNUf5l#bUVNTdk+JJm38|9)xhNRlQ<0i%o1078ao}1UQh!6py3;AFIV~CAXZs6F zwds47V$N4WiBL38i;8Gmv;Q}-ns2uy-0v|(R49j=8be|-bTWnLSHvnC88xl?InR87 zM-ntw|FmgBXs46}Jp&9a!Vs~uM=k(WW2=OHUSmT*FBUI$r++ECsb~j0eL`Su_2e21 zsE3%9_Y23l>O3cu7DO?tS0A2ctm_pSdiwu4xVnR@v4&-;bGb`Gh@J5FBCD5sv71H$iYys;2`n9_cU%9I zMd5Ub?}&xVlD6=Ke=P0h>9nd!K)!KdcZ(E6d6$aYLter$BiP)>boLc<-wV39mQo13 z{+tuvFCalu)w@wD^iJ*T#dnIL26qk8af#rzNfiMm$fP*`Ib-C@vFnI8iKiC)KA%01 zuwr*bJ><^hnsQ7XDQZq{-5QYAc(j$1TnCDo0doEQC6hPp`+=A4?w`>V~&f8 zC=F+wNVa1LeH6id36w|MkNCB(ykWRk$xr>8Qkkr&HZx@O+s&<@_{=X(WCEv6V2a2{ zoIZ<6st5MxcriKKEzW&xL5C4X`E++y&3X{Pm5pD5}eLt|7YA1AQ@ouTj9uR7bc)F~+38W|C^B1O$bO0Mt_5 z{7AUlPjm5pYR$*nx;}FNXYckT{_*;d8;t(qYkXE3l$C$d(y^&Cc zUReH+TBX_qwU2kRORKoZ3Y(t>;+o^MUHFujNu6R9KiyVB#c8=z?47f_SVLRW6Z9X# zYMh*Z?WhttN|VBcd|M7!nCtu!hX{*HIj9LvTHExiL*nh&!+wJyl~$qD>h;=@^+So$ zKENlLS=>6Fc@OnndPYbecp^x$cIR^qh};&RsU&_*Nd!9(EH*YY9pK%PU<+<3Xslu; zBreim4^NI^ETq_PQd^fY7fbWaAI3Ubw#od}P2^iMs$H8muNV+qC4KQ#{4v4Q%*qQ8 zx4Gqv|6Q<=G~nv#$0JCXe@m#5{oW&GWgl_bqd=_DPxip5b+uGfv>vrB_{g&`h{qx~ zvr86`tEV+LTvxG-o1s+Y|A2j<>2H)!ZZyAc)6fg61HC}|gwcw^_$UBvE6~mr2LQU~ z-G>NSrXYh6}R(K2!AwSc66~AdF}U{7 zo_+bb!GMYaID?uhUt;F8Ul3rIytUO)$+WA`s=^cpiRSuq6b7+< zQgo(CFON7r{T1n3(@J%kY8wOt%7|K}7DuhgE+Lycs?z@P!jJg!Kf_rBvyI!o8e@h9-OWZG zMA&y-{tKN3+A$M=|AQGus*UA?+~cMQ0V|6p(ZgDH^+go>8n@19VRY%tr-4n(EBZ%) zC&u*0do(GHPs{E5#|!g=2&40_()fo5LT%|2kqXuiZN>&+*f70F=rGK^f1f1c2o|FA z1W==1)e?u`?zO2FHpB;{v;pKtu z{~Epdn8O_}%E#3Q2x?d_))ta|uVFlce*Q|?rIt(>Zut0xYjJMP6en&^@z>YDgbG&A zVN6b?7sYs1w*t+jDSa4PoEU~nDSAJt>>joxrplKM%h3MRn{Pbiqb>N0GD%(4tHb3` z>x%PCZist2C7*W z5&hqrM06vgyuas7DjE>-HhHR`v&;(LfYNZ?^={kM*~LKj@3SYocKuVZl;O2CH`xjg z1r45C6o3X(nQ=k)Y=!azQxP<~%<8dYf-PN*Bp;N8gV!%!MKe2MvbHEm7vW!}G%`5L zXZ1pZQq$IO5}W${#b129aUHg4Rn^y3K)4yhNB=sOZmpu1*$_k&?0ncBtg~hCtZr+L zFJ;DVAiRXi)0`gZAJ76NQ6AoI>U8pF4<2KCt@`-d$@dt}zkE(hyA-eTlC+AYVlC)R zA?6gpS--m#+^hx+4(TV{*uacUc(^1v=8p?mEDf>-0|OK8A=T`ihvlRh9wV)Z?Z?+} z;3$IQ;KUW;Rl;WKoFHjzCT2I!HKRY3`?t`X+)B&Kmm>fF9IqkI5FTF!R2%`o79SLJ`&vXagv-P5v zIVGqnz=(9ybU6pcwOwwj)Hiq6KbtrGBPjZTACg9~EbQ=u?uFkgdvmc7)RB8CA9Ge|i~kRM?;RA?+O7MlCnW|06?qmm7uP&ULJ5n=o=O3ib{9`tMUi%vHlzh7_l}HdK7db^Y>^BU@L)Y z-=!>5_Bpxd{OsB|VnI$d^iJQCH62=~36aa;(U*qa_NWOob47-<3SN^$g`~VeDu!OY z?f59c$5nR!ms>OwX)<0LFaX+f;fEtrQUEHVAD2*| zP6WT~7JLdk)P-!^k2fZolfgl;?+U$BQe1f1_JHAG7lo-tx!GOY^QwYB^^#u~(W)^` z$Y;*QaFH#o3h#f^a={F8x{W5jSn$*Hco0Np@RAsPq3oP^IQdBHAWIlqF-9w(fp$^_47+?k)3mY6wSRGQ5uh+gNQdThDuUiS~jKvvze7Z^RrHV ziwgHA^UHt%PQX;=pT6$t>Aaa5D?fYy`u1`_d7n|_)tdq-!+c`&azy5%Fkk>jx+d1^ zPVeHQFH#~p(Re|9ov#avc@Rmk!;eaJzSD>>Vil$<(Xn?lJ$D z-~B(??@ssmEC41O6~|C5!3V_Cz*o4KciXAyF*RnZ`Aas*LcXZOkS>JLl-fX{O!pVX z$)m@Gv0ywv2{Ovdd}tn_hZ`oTZt&wzi#SCDucs(kM8%}Y~lH@kl2kLTh4kHdC~ zCg%TB4ee|b|MLy);l5_p&y#hiJ*vF$k0=eK6rul@UGnw z`~yC)^ElHs%bkoMmZ!i{LHnJW|3TX;0ET;# z{r~RtoDu5DmH#F7S76?c8-MkRbk1A@M-|>I3a##x1ZF(?4u5+cuY`C@Xhyay=4c92I1CrdBkpX$lxHr5P7ToJcFIQ9m3crXBoWK^;3&(fj+f?KFK_5g`QmT?+!1> zue5eQ1q?5*qP2y)VW9Wn01O^Mg2b##&f4F#NVh6pPUzSA%lC^4tGV#qUq8>x6x?7w zl!}@J?WR>?1+oT;a8e+g!9bw-c~T=&J}Kn=Lyl59z{~LPXy)dT9=gxEe~1lBQ}Cd-Is}LzhI+Y zp>#!1W&99@!8p_}{6Y3x&`EJWT9|iOgcyAKN2;$)oXLr$v%4P}gH zHqrgKXFFcTK@h#uw7$0l`DS{nHs$4?kPV3pJB8pn_o|kqYI>=J0e#(AmIJFVT=)4j;&gTp*1`1mQin7S zBSZH{;>?SPn2V3xUa&y=ZsTr7V<}gKHPC*9*YE7!T{8U4_duLL^#LDYWT>L!NNI~C znKCImyfL7j!hchKo7BGAvS}srWoN!n3(pYT@g7GvSw!bavAcss zKABaSjk()SKS$P!le0PZiWbGkUowRRuVR{Q*(-CKk?^FTwtzZOf?iQKvf5wQESjW( z1@NUbk==@-nG51P%wZCF?2`x5iJzC+m{TEfnH=79xCfkp;22qlyXQ_iUEHdxXC)-1 zQg3i&1TS3|ei3OnU@ZGOzX4q`!WPm{7Zq^QOps9x-xzy+iyX)H`!k1#2A=c~i6#c>+x3yZ3$ zw(n+~t@fEW*p4}p&!YI61iaKgggBlfzK}uL_{_I1co=J&BdQeXaKTt(V<|7)@6daT zeeX>AYqrmaMI8hlVF*c#PY+Ral5B%RKB0=TvM~rv0Zf#M%2UIS+|Rx@sRxDUfH&iG zL!?3WdbU+90pLfBiqE^M%&2`H=;VP={NlZjgo1nFtoI63f?AdmpYO4eL18IPTYAT| z+rJJC$`=-9^=r^Il8Io!br`(>Eif284JeGdJ6c2jcd_uF=&>P!fc@L~IgWb1N!e2VI2 z`Mu<8!;m9>=TpARg&S?}gbXYR8?edeTlow2v+`EGQ3mqTwaN$aFF@ z{))z%_g$uJ0fGhEr+nk8qcbk}4qZzQW7_QPgCSecZk}m4&MEv6ePlO@Q%o+@v}d;@9hwS?sq}`1EN;&K!G7R zR3onX+X!kCQA>Ve7C=o1%}LJRJXO%lH^*yDG}LH2lU&yh%$Ajv9WhIjL1bocurfZI(~KL6V0%dla+v-(vz#nqBk8WdOk-~c0H&3!Ny&?nro zWet(v{J}E^lU>8fTNbKgKZ*0){bgQVJm!e$V1Mui-T!DPNv_A0mK)9~z5z#`2~b^L z21bsK2gFbTc{f#rAz79YcQaTN*IG&%kgwSYS>KIc4Vuf9_9i9nWxH5#dOW$y_Vtye zBU05pj5gu~Q+-EBY;c1s$oVd8l~e|l`t#GNQ$m5SUqhaCjAWH+RnK|3dv_AOnkJ5rk9 z?~aykbxx#7GKXDEXSXdk-eIrrl=w>-onfNMXq~56Bh71DZO@Uhbt9I8U z_eRb2V-v$}K`nZ9PI8A!-6Wg&ZO_}j3mvFU_qmH78BO6xo10VBbDJgVR$7#@@z>6f3j#%x)iGw~$2yzHyyo z;~%x`oUE^5eKx24)O6KHM8dNh0+txToa8uLpPf)iB`dqzaT8jb@xvPg-S=FM7aiEW zLW+b5995Xc#?{KlA4TSZj9}w3Rwh@AZUsU@LJ6U-`B<1=%?WeQ7Ld;1{N3h9=N>Z- zHE4`egjpz5n_kdrtcmc(rZi-n9klehAL85125VoeWp#>-uB=n1innOYXf;*!OMg&yG!LX$XtH`Gfp<)CpABps}>QvQz8wwd?dpFmQ0R zp*z!B4DGmdfAFB>FCXl8tkMWujzDmHTNYkQivaDP58dBizQc|f%JE7YI$fl_n7V6% zj>eM%{^|EI5`iQ&C(0)EqUqHCw-fw6Nfkc^`NCx2Lyu{ESYHrQm6Yo58^l}~cojVa zqJ|Ea^S@u_R`no(fHwq^Vdgwa%z{mzxK+(DCJoUW`r- zTg!jv<0lder>Cb6>I45H{`Uv{*9XcBEfe4PzucvXQ8j#hF^ZqqrN7{iO%wBDoI|({ z7P)|$XA%CG)zTMmpb?B?u#VF4tSI*tV=Nnh+*hhgRE;_7*fo^w4;R?+49vMtaGFJE zo}dvvB=ylGNDfi?$7nNAvd8Q3I(oCAfosu<2k=7(XzXg8=av4Qtf)WA#_W&WZ;Kb{ zj2}p@t7hMj-xocn7*kdFfsNx6_tot(} zYJitP`<`m}6vTHrhY`=>m3_~MCZVYnX*!%(OV)PU&TXm9W)~$1aT$l#^Y68|BTOi8 z*T*>3x3i)_Ewb6Ri=_+$_SB|`eODVIsGZn%gVS8igKY^ZPxRgTy&LQM#jUYg_{?nm zxtn4_W`}5PY&aC18bp?FEMAz)7M{|FM`%VK&4p<|;D@*GV`rtP)4_%mD>WbLK_z!X z;yF)doW+Tz4xW^w;OxJS@lQblGhZ9#pB~c5L92O3B|k<9H5DdbeX*R_7^6_{_w{$nxS6h)h(jEwMl&T{e(;t_=2x!CN3R~n-)W-#cdNbNMPC?mehiUf zWI*it8eU1vCGP6%Q_J4p>NcbrUFFCt3Vz2W4Z4_FJKdA&weCNsfoN;JzUn$L>5n8; z7%-=#zW#vji2pu0tK_cI|KAkj8}eC595!K6QofjJcFdY0iUH!5ZM%0uXIv zF7n>(pAQzKvTi7%XuR2Wgl&qSwy`H?e4Un$U;i@G%R(n=FT%r(8TsJYPcTqZByin> z^|q3Z6q#W8&KZ!@9xKj^s_uEQdUIph9S(|#Lxq~AIzN2@?z15!f3R!N=#0}|gQYIh z_8zipz#oo$5A$3djkK~}@k>FH5(42uIoH=9N~*3Rh?3?YElWkrCaMfIxm~;Z$QkWS zm^(KM<9M$&H_Dbdp(_67by!3d_qtxo?{z#p&RLZlLfDw+0zMXAU1Odj_=od>p^eY_{OEHE9jL9!|2V+2?(KV zroh5Ri7j40s20%7d z%%w`6obZy$dP7VoXYA!Qh18>BD{AqlXjA}KB0o%JQvF#_HsRts``ZCz9!nGk$>48a zpKZoyvy1DRA77KFl~7VhXqbq0D(*Zfulh>GqJefUd&r|-_^t7dZ+<0$149p=P)o&{ z)E=CD-HT(y-8>eWd^(+{`xGdR%r#jt6<8UgM5d(|bfYcQe`hHrG3r=ZE zW~xRzUZL)xRIBa4_S= zZggtIAq)LRDGXy4#O{Y)2)Yk@c7OLaL$in-eSEg71px~EC&vRxpshM;_Ec(fis|bH zX;B9!4#ux|CMm-aza|r;hnr7cquLNs)^h5Y;$`yV2lp2r!;KBJHt_IX=>Dw#fwb-)Fi-L7@?- zd!)|(zM-4#F_iSau{Et0F?8^8HtA`arWbmy`ITPw=Ibp&+tKBxlcm<;_v|iC8aN$P z<&{&g!sC0HhACFT$V5h8U>?6Y5VKQns;1KzZ1LGionf9xNjmo&q^#aqOLl=l9?At~Zi zmq;)c>*Us`sPY1hnp+qO?)!Nk6JIeA3G^B#Z!kMF9reO;D1E1nW+mh}F?yqs}SEpBT*wa%rHWt(sMmZjCNX-VOvi3*OvY9onA}o8VUE zhc04G&NB$FPuMTr8xB}hAnR(nL9{koA6gFa+->fm$9t4=yx z&b!~i_fWkpdk;ZUlGK2#edte9Y!H^;e$R!`e!wrWNVCq3s39%amyux#hT4*H{z{TB z_T=Fpq@mTon%P=b87picBAh2ow6~95C|a^zlEJ#|>Uk{1yN( z)D_$Ga!VA*aX;g#T}Om7?TjZ`IbZFO`v@9YymrU_l&XIb_pm_f6&e*Gop7hA4zt!p zEn&q(wGu#PV`3*3XV7+*P~vf+TbP!iHk@8?bv7vuFo`C=?5dfk`r z1hcFxDS9ziZk*bi*p;**j-n+N{#6dFa@5;dz*RSFC@%%l8L(Vp<=M@IZedzl+|5U}A@TW(_g+kqk42$ijCD=rr>rQQK6R{# z0&b~6x!5N#YS8WlLmsmwXiyx_H|Whx8XrRx^=^RF4_XG?>UW=0+2Yk*cMh|jxF+n= zAL}fs&6+%z<%Vf>f`kMxAKmjoIFfYvFUEuzskreIJ{6F?ep?b2QJ?M2PKsQX>0PWL zt#;kKt@{=mJe6^FQsW15Q_QJ**CXdLPT7gI_%#N8e^6Ti9~^UHE?PoE`VNqdiBBD_ zBF9i7P#?OyKxJ!Sui2@EmBYj7EBZqg#msD7_`bJ0QDZKV9j`5zB%s!hf94g5NOIL} zb~kwTmamHk>iS?5T4YDZgANL530fSPZEM2Bwm0Wz-y*w56o0C|sGoRLHW8K(7JXbm zx*GyXdG;>NjkK05*xY&P$WW3wZgW4#vbl24t%emX5%_D30^>zFfnD7ssjk(7_|jj# zHQ^NrYID2q-jr-i$CXaarOb>KCU6fbI%}jCECDeg-G|#A92KrvjuL9Hd9vI(Ng^~K zAQQKl1WtE{J@;i0o6l>l6yA`p0|2(7jEPfrWahlw zAzrip{>LlNQpnoqz;v8Ko58niq>qD{jEYQRBEK)GTSm2&b0BZgeQAI{4DNeC1eIUV zmyWcGd#|jN_zJ5LPKqAWeZNgCFZTLy7Sy69m3cz^(?n%+|GGu^JNW10Bc(I(2{BFu zt`G>F(arn1qJp^48-WRgkuWtFGX-lgfO2o?>gtR1J2Tu16Y7N#L!Vm?e5k`HQQ?eD zsTKlZi45yj4bAF$yPr+BoN-C@QxXDa@iIdc^j7|HMy>8gB`~*}yzOI;sy}SdD6v3N zJ1y>+*mJ*#3<6p)=hdN0ls*L3+32YGw5 zQFsoo0+J+0jRsfkj?cS#OvB*H*bpsuG04-jU*eT2ZFVR!E-&WOp9H?}2H|acZZ7fd z`^SZh?)#kvN`!UW6aRzs8u~;q5y>EScbbkqla#vNnNwxkBXTWZ^T>V8x1)=iq_4V$ zg!_cUhK-yWdw`^FN8AOC`gz!!W02ehf2oDD^VWSBcJl?se9$Z7j;Va`5|rv3W$N8z zK9bW&0Fh+sf1X(E4{n@4x_+VpEYYtAK^ydL}~LDO88a=<*Zv^nO}pz}b|T zBClaSy20Gj$*r22`JyDA@DDZ%v0ex(DRf?3oaeMlG#GevHUnt*7|x%?@E;ZsK~*~x zxv`E%+N+KdTeY;KF|tzUd{tJEe1^Zh7q$%?{STDX!d6m{10^#Ynswq;{*6r&%A&ZCj}|$t*^o zDjxtwUJYmVrD|$xJ|0!$4*?2;ex*RLKn`KM@^{voFgo0)sLL{mQv*E*34@fCt1ASs z5N5i&<}^k==qxdN9LTQQg3mu%@Zdq|@^?CK%FM}mWcRwWh>!AxG}E2BTV>VyN!hd| zLzb_Cz>sZSmk>F?OV;{lg#aKIqVr>cn1RQQ&Vs=}4%qd?oa2*onk-vadU3o9$}5ay zCG^p>?M9FkoqyR_NQV?PosUL70Z*(mPFypz)xmN^DFFPjEQ|b@b;h)em$%2FXu&K$ zDQ+&E*5^FvzODfc5{`Y!{|Gm+bP#rMn#d$F@H}a@Y36W%44W+Qx~%4Kt9P1**XztMhnShYavbv@9BOn(@ET0IJG~!Sc)A&0F9NZ2B*DQUOTHKmytr`^< zTkOM5=!B@Zv7Xqaw`$l_O!36jK7?!82!2$9(U-AUYYBs+1HeJ^j#oeM%%x4hQJRwX zGNlok6^mRRwN+M*`ZMmX#A|WLzhJ`gB^oF+N8n=0%+B(a)RA42^7QwXp6z7^9FNn? zJ}Hzk4DRbmn2FTy(IeAObzTcD%vYGvBi&{2Owr`STop$T-#>s%*3w2?G6nJUHl<(f z7n-u!o%b}doyy$nB|w#}a%dy--?io(>_+f{v?f852w z6VzJy8rhO*=Tv(q2d>9+KOlOzOCc56xWOMNmF{hAZg^lKgP?!mvf9>OKw@15@RoCu z@V)TRez98*r9toPimA<}*4}S89BK<2&sV9Dm-AEjDi#5{L*vO4O*dxE{000oexq$& zI3GaZI)pfxaqUFL--`(I(n*Q&KmQX;X2gZNZJp-f+m1pR6PpYDhG^agT!F_hHMGup z*p7Njk81^Ggx0n=dtyp8?_wT8;)K(;%+l}}Tmug{vGt<(qaj{C_lRldkhC<$)3 z*>OYs;}j<1-OdeGVkn~rT5xm1M7&0MYW-EdL92O1MY*~q4WeW!6cUD&VQgCTCAM+C zxXy!Ui@w;)tvz4&5U<(c+crEgOfj?iZ7NVrVZ z>uoL`UtcC>u;-?0#c4ga+X7n#o5MN*ndITO8($)t%J1k0cO#3gA-fla^OsQmi)@Y~ z-ZxT0&U~gBr8DeFT^r*>Je|ph<_o&c{5x~Ehex-}+a&yHX!xp(hhx!S)fH|CZu39! z0ScKF@;udGg**w>CPxrs3#h;f*37x@OECc7F+HO98s+tE5ht6fS7D@BsWX7mv!68k zu(xi#bDJ>#cK|eILX#U4MNKEG5PeGp;dfKJ6Rz--=5#1Jk;c#+OMFkab<}!qd1uOFDm{g7ymCR{;yE~e{CwBN-!f|(G|EBbcWlX ztvDDl9>Z#uF(qGY!iGZ`-8Nb7{#FlC^#K9-U-gWbtJmya*Xja*iNRKgVG#0AhQ)JL zkV*!0U#Z0}lw@{e;?xxk(DAMFdsA4mP~RSUTdKLeNaJA>jSL>NP{GFxCh7zG)?sK# z{oB4879YJfSp5c5{cg4OgQc~77PKA1jUHQ?gPO>ye(MjtUc#+#$!kW=!o-QnR>$&q z@(kxjyV`KO7ONira`qo)k*`;`x*`ng4>Pr<#U7>LxnJ~5+YCo;oooEe6r#}DXDCJC zhB@ih=<36*@3%-9nT~Y}^9_no>>P5XXyrDxS?#$smo_^~IW2O0MCo3Nm^ptdI5whL zR~d|Q8Y#t+aQlSfXJh%BJG7A|uk^=$^8P8L#8?P}I7-JfzGvL&!t=TAXXu7wm?_1z zAc^bMgMvTbs#G#5BeDUw_e3dZpyt_@p*@!wt&lkl_4V@F`ibPh;q8v;rni;UK5Z7n z%+xDM1*C6wH)p8B6-o#Ew_bVNH6b?r8~`rwe@`)To}|ScoPcwa%Q?Wm=8F0Fz#?xo zsAr4AYiej34o-f$!m#Pu?r(-4jW=UPHLz7{b#haFl(^FapD)dx=oQo1`Anr2-ynT$ z-Bq(G$Ur0I)bcHUk!bhV&wYh0g^e^>rzQj`$-pONxsHId+aqMB)JER$(slZmB)2^Otc8YQ`=G+i z=ZjK&IFgitm7isjMQEPIsJe`u2zn{NbXavR~VRKw5P%h18VmwTGGBOXoDt7q3zV%t2`}oD8{h-wcxSF^ce?x@8 z1ZNXUfzN5uL0=bLgg2K?R^(}EesfppK}?|!lZ68o&{({7quZU6a7RkVy4`Bi>+k5P zAc1vpQ|*96=9w#tc6LRBc(jMT{7SB5xO{B3_Ra72)DK+q z)TZ*7k-9n52%kEw=S8RCFoe|sA9Jna8c>UJ@b`T18lJM2N1b{KUm!~3nk>dRC*?Ri z#h;@EKRorDgc&j@0!shH*41aJo6n4xNJL)-Qdt*w2aADq<(SiUgx38rAHP-dKN>W$ zHU1)k(TF@5X8-#9^MjTEbwX(n`aMT=ifoS`(;pJ`J6~`mNe8Cm57%7>jWyJmfjkml zw?v(tFBr~7J9_MOlRl0i4B4Gvart$1mC!qK2alzNo1Q%viW9}Sw}VCeKX^*bc;&Wu zXKVlIo{|A6HJs&!QgLYv|yK))W-El56(b%ps_=8ofa9!b54qUGXQgXR@ACQO-GE>K$b!!vTmWs%(z>E#YTJ`>rT*5F{N>XsrfsgUHLqsaraK_e$L%hH$|-iIpdtCuuR=ZiWv znamsF@rR&^)xR;=!I#nqO34D;OTSOyXmcW{bsKpjV;;`0z`D8tYZps ztq-QuH`__8L!Cpa9$1wG4`Eri5^NvJL6xOWpGh67#iAUPnYNo(s7Rm|)06CYU!-G( zJf}(UXCV3V%QRxEurT!uG#zVCEb^b&c#)ZX7_rkwhgz=D>VcdfaSFSbFvu6o$_1|} zfIZIXm&nuNXa{;m)wR=l98IZl?G>>36R-056L0sLLt^yz=)?Cuw9t~C-*U(?bn)nm-ox38+bU@tvmP|KS89O*h2W;&uJ>CYDi z&!3;uj8x36dpE?tHoRaKVc>f74=qS>Id1EbTPEF@QFh>o#jjsKQX;qa4}0$vdwkqu zy)<@N)jl?Km9s^oCc49XYp$urw8QnB(UfH>yji{=NQUcis8FEc!!-f#{TeIHs^CDd z;8Ol0ngjk{_muJhH&J_JczSe>G$MZN?6R^wHYPv6DxAa&X#;ObQXsUt@*_7rg^#qE zbX5S}`L&Z#9 zzKj0rAJ>I<$ycR!D@wc!<>XQ>S^~i|kx@V_R?e|SQ+~|PC&?4q+VK1_nrZ%bO?#

UK}7PfehQt$}-s@}sC(Vu}shy<#YQsX(E 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

  • K{0lxK`&F-g)fzEh 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%0A8!{$BD}eTh1ntkCn~qzamv=;GG+eT_F#MW)Ohl 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�V{dUA`|MP3S2vuo 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 t5u!^}9>t1)cu4@r*WT17Ng`0(e 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 KB-89r#6JPvd)h7l literal 0 HcmV?d00001 diff --git a/docs/img/QuickStart3.png b/docs/img/QuickStart3.png new file mode 100644 index 0000000000000000000000000000000000000000..11f24f7f62ebbf20ca334edc9b067170d427fb65 GIT binary patch literal 94429 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 literal 0 HcmV?d00001 diff --git a/docs/img/QuickStart4.png b/docs/img/QuickStart4.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6913e6205766add88fd97dad20576d8002267a GIT binary patch literal 298514 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 z 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

  • |-R^!X=!C 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/img/QuickStart7.png b/docs/img/QuickStart7.png new file mode 100644 index 0000000000000000000000000000000000000000..e60a48573604ff5102c4754968dba0d45f3b7414 GIT binary patch literal 37560 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 U+~w|?CI6m+tcnau+9crr0MJF1X8-^I literal 0 HcmV?d00001 diff --git a/docs/img/nni_logo_dark.png b/docs/img/nni_logo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..6432b2cb767e1e67c53ce8875f71ce67ebeb5369 GIT binary patch literal 22693 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𝔲hUr(j84y8J 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 + Tutorials + Examples + Reference + FAQ + Contribution + Changelog \ No newline at end of file diff --git a/docs/mnist_examples.md b/docs/mnist_examples.md new file mode 100644 index 0000000000..3ee443b948 --- /dev/null +++ b/docs/mnist_examples.md @@ -0,0 +1,68 @@ +# MNIST examples + +CNN MNIST classifier for deep learning is similar to `hello world` for programming languages. Thus, we use MNIST as example to introduce different features of NNI. The examples are listed below: + + - [MNIST with NNI API](#mnist) + - [MNIST with NNI annotation](#mnist-annotation) + - [MNIST in keras](#mnist-keras) + - [MNIST -- tuning with batch tuner](#mnist-batch) + - [MNIST -- tuning with hyperband](#mnist-hyperband) + - [MNIST -- tuning within a nested search space](#mnist-nested) + - [distributed MNIST (tensorflow) using kubeflow](#mnist-kubeflow-tf) + - [distributed MNIST (pytorch) using kubeflow](#mnist-kubeflow-pytorch) + + +**MNIST with NNI API** + +This is a simple network which has two convolutional layers, two pooling layers and a fully connected layer. We tune hyperparameters, such as dropout rate, convolution size, hidden size, etc. It can be tuned with most NNI built-in tuners, such as TPE, SMAC, Random. We also provide an exmaple yaml file which enables assessor. + +`code directory: examples/trials/mnist/` + + +**MNIST with NNI annotation** + +This example is similar to the example above, the only difference is that this example uses NNI annotation to specify search space and report results, while the example above uses NNI apis to receive configuration and report results. + +`code directory: examples/trials/mnist-annotation/` + + +**MNIST in keras** + +This example is implemented in keras. It is also a network for MNIST dataset, with two convolution layers, one pooling layer, and two fully connected layers. + +`code directory: examples/trials/mnist-keras/` + + +**MNIST -- tuning with batch tuner** + +This example is to show how to use batch tuner. Users simply list all the configurations they want to try in the search space file. NNI will try all of them. + +`code directory: examples/trials/mnist-batch-tune-keras/` + + +**MNIST -- tuning with hyperband** + +This example is to show how to use hyperband to tune the model. There is one more key `STEPS` in the received configuration for trials to control how long it can run (e.g., number of iterations). + +`code directory: examples/trials/mnist-hyperband/` + + +**MNIST -- tuning within a nested search space** + +This example is to show that NNI also support nested search space. The search space file is an example of how to define nested search space. + +`code directory: examples/trials/mnist-cascading-search-space/` + + +**distributed MNIST (tensorflow) using kubeflow** + +This example is to show how to run distributed training on kubeflow through NNI. Users can simply provide distributed training code and a configure file which specifies the kubeflow mode. For example, what is the command to run ps and what is the command to run worker, and how many resources they consume. This example is implemented in tensorflow, thus, uses kubeflow tensorflow operator. + +`code directory: examples/trials/mnist-distributed/` + + +**distributed MNIST (pytorch) using kubeflow** + +Similar to the previous example, the difference is that this example is implemented in pytorch, thus, it uses kubeflow pytorch operator. + +`code directory: examples/trials/mnist-distributed-pytorch/` \ No newline at end of file diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000000..4d6a69d9f4 --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,7 @@ +sphinx==1.8.3 +sphinx-argparse==0.2.5 +sphinx-markdown-tables==0.0.9 +sphinx-rtd-theme==0.4.2 +sphinxcontrib-websupport==1.1.0 +recommonmark==0.5.0 +nni==0.5 \ No newline at end of file diff --git a/docs/sdk_reference.rst b/docs/sdk_reference.rst new file mode 100644 index 0000000000..a743d55591 --- /dev/null +++ b/docs/sdk_reference.rst @@ -0,0 +1,51 @@ +########################### +Python API Reference +########################### + +API for trial code +------------------------ +.. autofunction:: nni.get_next_parameter +.. autofunction:: nni.get_current_parameter +.. autofunction:: nni.report_intermediate_result +.. autofunction:: nni.report_final_result +.. autofunction:: nni.get_sequence_id + + +API for tuners +------------------------ +.. autoclass:: nni.tuner.Tuner + :members: + +.. autoclass:: nni.hyperopt_tuner.hyperopt_tuner.HyperoptTuner + :members: + +.. autoclass:: nni.batch_tuner.batch_tuner.BatchTuner + :members: + +.. autoclass:: nni.evolution_tuner.evolution_tuner.EvolutionTuner + :members: + +.. autoclass:: nni.gridsearch_tuner.gridsearch_tuner.GridSearchTuner + :members: + +.. autoclass:: nni.networkmorphism_tuner.networkmorphism_tuner.NetworkMorphismTuner + :members: + +.. autoclass:: nni.smac_tuner.smac_tuner.SMACTuner + :members: + +API for assessors +------------------------ +.. autoclass:: nni.assessor.Assessor + :members: + +.. autoclass:: nni.curvefitting_assessor.curvefitting_assessor.CurvefittingAssessor + :members: + +.. autoclass:: nni.medianstop_assessor.medianstop_assessor.MedianstopAssessor + :members: + + +API for Advisors +------------------------ +.. autoclass:: nni.hyperband_advisor.hyperband_advisor.Hyperband \ No newline at end of file diff --git a/docs/sklearn_examples.md b/docs/sklearn_examples.md new file mode 100644 index 0000000000..893640d167 --- /dev/null +++ b/docs/sklearn_examples.md @@ -0,0 +1,69 @@ +# Scikit-learn in NNI +[Scikit-learn](https://github.com/scikit-learn/scikit-learn) is a pupular meachine learning tool for data mining and data analysis. It supports many kinds of meachine learning models like LinearRegression, LogisticRegression, DecisionTree, SVM etc. How to make the use of scikit-learn more efficiency is a valuable topic. +NNI supports many kinds of tuning algorithms to search the best models and/or hyper-parameters for scikit-learn, and support many kinds of environments like local machine, remote servers and cloud. + +## 1. How to run the example +To start using NNI, you should install the nni package, and use the command line tool `nnictl` to start an experiment. For more information about installation and preparing for the environment, please [refer](GetStarted.md). +After you installed NNI, you could enter the corresponding folder and start the experiment using following commands: +``` +nnictl create --config ./config.yml +``` + +## 2. Description of the example + + +### 2.1 classification +This example uses the dataset of digits, which is made up of 1797 8x8 images, and each image is a hand-written digit, the goal is to classify these images into 10 classes. +In this example, we use SVC as the model, and choose some parameters of this model, including `"C", "keral", "degree", "gamma" and "coef0"`. For more information of these parameters, please [refer](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html). + + +### 2.2 regression +This example uses the Boston Housing Dataset, this dataset consists of price of houses in various places in Boston and the information such as Crime (CRIM), areas of non-retail business in the town (INDUS), the age of people who own the house (AGE) etc to predict the house price of boston. +In this example, we tune different kinds of regression models including `"LinearRegression", "SVR", "KNeighborsRegressor", "DecisionTreeRegressor"` and some parameters like `"svr_kernel", "knr_weights"`. You could get more details about these models from [here](https://scikit-learn.org/stable/supervised_learning.html#supervised-learning). + +## 3. How to write sklearn code using nni +It is easy to use nni in your sklearn code, there are only a few steps. +* __step 1__ + Prepare a search_space.json to storage your choose spaces. + For example, if you want to choose different models, you may try: + ``` + { + "model_name":{"_type":"choice","_value":["LinearRegression", "SVR", "KNeighborsRegressor", "DecisionTreeRegressor"]} + } + ``` + If you want to choose different models and parameters, you could put them together in a search_space.json file. + ``` + { + "model_name":{"_type":"choice","_value":["LinearRegression", "SVR", "KNeighborsRegressor", "DecisionTreeRegressor"]}, + "svr_kernel": {"_type":"choice","_value":["linear", "poly", "rbf"]}, + "knr_weights": {"_type":"choice","_value":["uniform", "distance"]} + } + ``` + Then you could read these values as a dict from your python code, please get into the step 2. +* __step 2__ + At the beginning of your python code, you should `import nni` to insure the packages works normally. + First, you should use `nni.get_next_parameter()` function to get your parameters given by nni. Then you could use these parameters to update your code. + For example, if you define your search_space.json like following format: + ``` + { + "C": {"_type":"uniform","_value":[0.1, 1]}, + "keral": {"_type":"choice","_value":["linear", "rbf", "poly", "sigmoid"]}, + "degree": {"_type":"choice","_value":[1, 2, 3, 4]}, + "gamma": {"_type":"uniform","_value":[0.01, 0.1]}, + "coef0 ": {"_type":"uniform","_value":[0.01, 0.1]} + } + ``` + You may get a parameter dict like this: + ``` + params = { + 'C': 1.0, + 'keral': 'linear', + 'degree': 3, + 'gamma': 0.01, + 'coef0': 0.01 + } + ``` + Then you could use these variables to write your scikit-learn code. +* __step 3__ + After you finished your training, you could get your own score of the model, like your percision, recall or MSE etc. NNI needs your score to tuner algorithms and generate next group of parameters, please report the score back to NNI and start next trial job. + You just need to use `nni.report_final_result(score)` to communitate with NNI after you process your scikit-learn code. Or if you have multiple scores in the steps of training, you could also report them back to NNI using `nni.report_intemediate_result(score)`. Note, you may not report intemediate result of your job, but you must report back your final result. diff --git a/docs/training_services.rst b/docs/training_services.rst new file mode 100644 index 0000000000..e573c677aa --- /dev/null +++ b/docs/training_services.rst @@ -0,0 +1,9 @@ +Introduction to NNI Training Services +===================================== + +.. toctree:: + Local + Remote + PAI + Kubeflow + FrameworkController Mode \ No newline at end of file diff --git a/docs/tuners.rst b/docs/tuners.rst new file mode 100644 index 0000000000..67e16dadf1 --- /dev/null +++ b/docs/tuners.rst @@ -0,0 +1,19 @@ +################# +Tuners +################# + +Overview +----------------- + +NNI provides an easy way to adopt an approach to set up parameter tuning algorithms, we call them **Tuner**. + +Tuner receives the result from `Trial` as a matrix to evaluate the performance of a specific parameters/architecture configures. And tuner sends next hyper-parameter or architecture configure to Trial. + +In NNI, we support two approaches to set the tuner: first is directly use builtin tuner provided by nni sdk, second is customize a tuner file by yourself. We also have Advisor that combines the functinality of Tuner & Assessor. + +For details, please refer to the following tutorials: + +.. toctree:: + Builtin Tuners + Customized Tuners + Customized Advisor \ No newline at end of file diff --git a/examples/trials/mnist/config_assessor.yml b/examples/trials/mnist/config_assessor.yml index 5abf02e736..b7503c9c45 100644 --- a/examples/trials/mnist/config_assessor.yml +++ b/examples/trials/mnist/config_assessor.yml @@ -2,7 +2,7 @@ authorName: default experimentName: example_mnist trialConcurrency: 1 maxExecDuration: 1h -maxTrialNum: 20 +maxTrialNum: 50 #choice: local, remote trainingServicePlatform: local searchSpacePath: search_space.json @@ -17,10 +17,12 @@ tuner: optimize_mode: maximize assessor: #choice: Medianstop, Curvefitting - builtinAssessorName: Medianstop + builtinAssessorName: Curvefitting classArgs: #choice: maximize, minimize optimize_mode: maximize + epoch_num: 20 + threshold: 0.9 trial: command: python3 mnist.py codeDir: . diff --git a/examples/trials/mnist/mnist_before.py b/examples/trials/mnist/mnist_before.py new file mode 100644 index 0000000000..c67fc01681 --- /dev/null +++ b/examples/trials/mnist/mnist_before.py @@ -0,0 +1,223 @@ +"""A deep MNIST classifier using convolutional layers.""" +import argparse +import logging +import math +import tempfile +import tensorflow as tf + +from tensorflow.examples.tutorials.mnist import input_data + +FLAGS = None + +logger = logging.getLogger('mnist_AutoML') + + +class MnistNetwork(object): + ''' + MnistNetwork is for initializing and building basic network for mnist. + ''' + + def __init__(self, + channel_1_num, + channel_2_num, + conv_size, + hidden_size, + pool_size, + learning_rate, + x_dim=784, + y_dim=10): + self.channel_1_num = channel_1_num + self.channel_2_num = channel_2_num + self.conv_size = conv_size + self.hidden_size = hidden_size + self.pool_size = pool_size + self.learning_rate = learning_rate + self.x_dim = x_dim + self.y_dim = y_dim + + self.images = tf.placeholder( + tf.float32, [None, self.x_dim], name='input_x') + self.labels = tf.placeholder( + tf.float32, [None, self.y_dim], name='input_y') + self.keep_prob = tf.placeholder(tf.float32, name='keep_prob') + + self.train_step = None + self.accuracy = None + + def build_network(self): + ''' + Building network for mnist + ''' + + # Reshape to use within a convolutional neural net. + # Last dimension is for "features" - there is only one here, since images are + # grayscale -- it would be 3 for an RGB image, 4 for RGBA, etc. + with tf.name_scope('reshape'): + try: + input_dim = int(math.sqrt(self.x_dim)) + except: + print( + 'input dim cannot be sqrt and reshape. input dim: ' + str(self.x_dim)) + logger.debug( + 'input dim cannot be sqrt and reshape. input dim: %s', str(self.x_dim)) + raise + x_image = tf.reshape(self.images, [-1, input_dim, input_dim, 1]) + + # First convolutional layer - maps one grayscale image to 32 feature maps. + with tf.name_scope('conv1'): + w_conv1 = weight_variable( + [self.conv_size, self.conv_size, 1, self.channel_1_num]) + b_conv1 = bias_variable([self.channel_1_num]) + h_conv1 = tf.nn.relu(conv2d(x_image, w_conv1) + b_conv1) + + # Pooling layer - downsamples by 2X. + with tf.name_scope('pool1'): + h_pool1 = max_pool(h_conv1, self.pool_size) + + # Second convolutional layer -- maps 32 feature maps to 64. + with tf.name_scope('conv2'): + w_conv2 = weight_variable([self.conv_size, self.conv_size, + self.channel_1_num, self.channel_2_num]) + b_conv2 = bias_variable([self.channel_2_num]) + h_conv2 = tf.nn.relu(conv2d(h_pool1, w_conv2) + b_conv2) + + # Second pooling layer. + with tf.name_scope('pool2'): + h_pool2 = max_pool(h_conv2, self.pool_size) + + # Fully connected layer 1 -- after 2 round of downsampling, our 28x28 image + # is down to 7x7x64 feature maps -- maps this to 1024 features. + last_dim = int(input_dim / (self.pool_size * self.pool_size)) + with tf.name_scope('fc1'): + w_fc1 = weight_variable( + [last_dim * last_dim * self.channel_2_num, self.hidden_size]) + b_fc1 = bias_variable([self.hidden_size]) + + h_pool2_flat = tf.reshape( + h_pool2, [-1, last_dim * last_dim * self.channel_2_num]) + h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, w_fc1) + b_fc1) + + # Dropout - controls the complexity of the model, prevents co-adaptation of features. + with tf.name_scope('dropout'): + h_fc1_drop = tf.nn.dropout(h_fc1, self.keep_prob) + + # Map the 1024 features to 10 classes, one for each digit + with tf.name_scope('fc2'): + w_fc2 = weight_variable([self.hidden_size, self.y_dim]) + b_fc2 = bias_variable([self.y_dim]) + y_conv = tf.matmul(h_fc1_drop, w_fc2) + b_fc2 + + with tf.name_scope('loss'): + cross_entropy = tf.reduce_mean( + tf.nn.softmax_cross_entropy_with_logits(labels=self.labels, logits=y_conv)) + with tf.name_scope('adam_optimizer'): + self.train_step = tf.train.AdamOptimizer( + self.learning_rate).minimize(cross_entropy) + + with tf.name_scope('accuracy'): + correct_prediction = tf.equal( + tf.argmax(y_conv, 1), tf.argmax(self.labels, 1)) + self.accuracy = tf.reduce_mean( + tf.cast(correct_prediction, tf.float32)) + + +def conv2d(x_input, w_matrix): + """conv2d returns a 2d convolution layer with full stride.""" + return tf.nn.conv2d(x_input, w_matrix, strides=[1, 1, 1, 1], padding='SAME') + + +def max_pool(x_input, pool_size): + """max_pool downsamples a feature map by 2X.""" + return tf.nn.max_pool(x_input, ksize=[1, pool_size, pool_size, 1], + strides=[1, pool_size, pool_size, 1], padding='SAME') + + +def weight_variable(shape): + """weight_variable generates a weight variable of a given shape.""" + initial = tf.truncated_normal(shape, stddev=0.1) + return tf.Variable(initial) + + +def bias_variable(shape): + """bias_variable generates a bias variable of a given shape.""" + initial = tf.constant(0.1, shape=shape) + return tf.Variable(initial) + + +def main(params): + ''' + Main function, build mnist network, run and send result to NNI. + ''' + # Import data + mnist = input_data.read_data_sets(params['data_dir'], one_hot=True) + print('Mnist download data down.') + logger.debug('Mnist download data down.') + + # Create the model + # Build the graph for the deep net + mnist_network = MnistNetwork(channel_1_num=params['channel_1_num'], + channel_2_num=params['channel_2_num'], + conv_size=params['conv_size'], + hidden_size=params['hidden_size'], + pool_size=params['pool_size'], + learning_rate=params['learning_rate']) + mnist_network.build_network() + logger.debug('Mnist build network done.') + + # Write log + graph_location = tempfile.mkdtemp() + logger.debug('Saving graph to: %s', graph_location) + train_writer = tf.summary.FileWriter(graph_location) + train_writer.add_graph(tf.get_default_graph()) + + test_acc = 0.0 + with tf.Session() as sess: + sess.run(tf.global_variables_initializer()) + for i in range(params['batch_num']): + batch = mnist.train.next_batch(params['batch_size']) + mnist_network.train_step.run(feed_dict={mnist_network.images: batch[0], + mnist_network.labels: batch[1], + mnist_network.keep_prob: 1 - params['dropout_rate']} + ) + + if i % 100 == 0: + test_acc = mnist_network.accuracy.eval( + feed_dict={mnist_network.images: mnist.test.images, + mnist_network.labels: mnist.test.labels, + mnist_network.keep_prob: 1.0}) + + logger.debug('test accuracy %g', test_acc) + logger.debug('Pipe send intermediate result done.') + + test_acc = mnist_network.accuracy.eval( + feed_dict={mnist_network.images: mnist.test.images, + mnist_network.labels: mnist.test.labels, + mnist_network.keep_prob: 1.0}) + + logger.debug('Final result is %g', test_acc) + logger.debug('Send final result done.') + +def get_params(): + ''' Get parameters from command line ''' + parser = argparse.ArgumentParser() + parser.add_argument("--data_dir", type=str, default='/tmp/tensorflow/mnist/input_data', help="data directory") + parser.add_argument("--dropout_rate", type=float, default=0.5, help="dropout rate") + parser.add_argument("--channel_1_num", type=int, default=32) + parser.add_argument("--channel_2_num", type=int, default=64) + parser.add_argument("--conv_size", type=int, default=5) + parser.add_argument("--pool_size", type=int, default=2) + parser.add_argument("--hidden_size", type=int, default=1024) + parser.add_argument("--learning_rate", type=float, default=1e-4) + parser.add_argument("--batch_num", type=int, default=2000) + parser.add_argument("--batch_size", type=int, default=32) + + args, _ = parser.parse_known_args() + return args + +if __name__ == '__main__': + try: + params = vars(get_params()) + main(params) + except Exception as exception: + logger.exception(exception) + raise From 45c6508eec59fbc40255d9703b6c606c76b1d842 Mon Sep 17 00:00:00 2001 From: Chi Song Date: Tue, 29 Jan 2019 12:17:54 +0800 Subject: [PATCH 04/22] fix format of doc, change nni to NNI, yaml to yml. (#660) fix indents of doc, change nni to NNI yaml to yml(file) and YAML(doc) --- deployment/docker/README.md | 2 +- docs/AdvancedNAS.md | 4 +- docs/Builtin_Assessors.md | 4 +- docs/Builtin_Tuner.md | 20 +- docs/Customize_Advisor.md | 6 +- docs/Customize_Assessor.md | 6 +- docs/Customize_Tuner.md | 6 +- docs/EnableAssessor.md | 4 +- docs/ExperimentConfig.md | 24 +- docs/FAQ.md | 6 +- docs/FrameworkControllerMode.md | 16 +- docs/GetStarted.md | 10 +- docs/GridSearchTuner.md | 2 +- docs/HowToChooseTuner.md | 50 +- docs/KubeflowMode.md | 18 +- docs/NNICTLDOC.md | 487 ++++++++++-------- docs/PAIMode.md | 14 +- docs/QuickStart.md | 4 +- docs/RELEASE.md | 208 ++++---- docs/RemoteMachineMode.md | 2 +- docs/SQuAD_evolution_examples.md | 2 +- docs/StartExperiment.md | 8 +- docs/Trials.md | 2 +- docs/howto_1_WriteTrial.md | 5 +- docs/howto_2_CustomizedTuner.md | 6 +- docs/howto_3_CustomizedAdvisor.md | 40 ++ docs/mnist_examples.md | 2 +- docs/multiPhase.md | 60 +-- docs/tutorial_1_CR_exp_local_api.md | 6 +- docs/tutorial_3_tryTunersAndAssessors.md | 4 +- examples/trials/ga_squad/README.md | 6 +- examples/trials/network_morphism/README.md | 16 +- examples/tuners/enas_nni/README.md | 2 +- .../pynni/nni/curvefitting_assessor/README.md | 2 +- src/sdk/pynni/nni/hyperband_advisor/README.md | 4 +- .../pynni/nni/networkmorphism_tuner/README.md | 4 +- src/sdk/pynni/nni/smac_tuner/README.md | 2 +- 37 files changed, 596 insertions(+), 468 deletions(-) create mode 100644 docs/howto_3_CustomizedAdvisor.md diff --git a/deployment/docker/README.md b/deployment/docker/README.md index a92bc2cdfd..491cbe5334 100644 --- a/deployment/docker/README.md +++ b/deployment/docker/README.md @@ -1,7 +1,7 @@ Dockerfile === ## 1.Description -This is the Dockerfile of nni project. It includes serveral popular deep learning frameworks and NNI. It is tested on `Ubuntu 16.04 LTS`: +This is the Dockerfile of NNI project. It includes serveral popular deep learning frameworks and NNI. It is tested on `Ubuntu 16.04 LTS`: ``` CUDA 9.0, CuDNN 7.0 diff --git a/docs/AdvancedNAS.md b/docs/AdvancedNAS.md index ca5e063c26..451c7c25a4 100644 --- a/docs/AdvancedNAS.md +++ b/docs/AdvancedNAS.md @@ -8,7 +8,8 @@ Currently we recommend sharing weights through NFS (Network File System), which ### Weight Sharing through NFS file With the NFS setup (see below), trial code can share model weight through loading & saving files. Here we recommend that user feed the tuner with the storage path: -```yaml + +```yml tuner: codeDir: path/to/customer_tuner classFileName: customer_tuner.py @@ -17,6 +18,7 @@ tuner: ... save_dir_root: /nfs/storage/path/ ``` + And let tuner decide where to save & load weights and feed the paths to trials through `nni.get_next_parameters()`: drawing diff --git a/docs/Builtin_Assessors.md b/docs/Builtin_Assessors.md index 46fd4f89d5..bb6ae4c40d 100644 --- a/docs/Builtin_Assessors.md +++ b/docs/Builtin_Assessors.md @@ -32,7 +32,7 @@ It is applicable in a wide range of performance curves, thus, can be used in var **Usage example:** -```yaml +```yml # config.yml assessor: builtinAssessorName: Medianstop @@ -62,7 +62,7 @@ It is applicable in a wide range of performance curves, thus, can be used in var **Usage example:** -```yaml +```yml # config.yml assessor: builtinAssessorName: Curvefitting diff --git a/docs/Builtin_Tuner.md b/docs/Builtin_Tuner.md index e9dde6bf1d..78f296bb68 100644 --- a/docs/Builtin_Tuner.md +++ b/docs/Builtin_Tuner.md @@ -39,7 +39,7 @@ TPE, as a black-box optimization, can be used in various scenarios and shows goo **Usage example:** -```yaml +```yml # config.yml tuner: builtinTunerName: TPE @@ -65,7 +65,7 @@ Random search is suggested when each trial does not take too long (e.g., each tr **Usage example** -```yaml +```yml # config.yml tuner: builtinTunerName: Random @@ -91,7 +91,7 @@ Anneal is suggested when each trial does not take too long, and you have enough **Usage example** -```yaml +```yml # config.yml tuner: builtinTunerName: Anneal @@ -117,7 +117,7 @@ Its requirement of computation resource is relatively high. Specifically, it req **Usage example** -```yaml +```yml # config.yml tuner: builtinTunerName: Evolution @@ -143,7 +143,7 @@ Similar to TPE, SMAC is also a black-box tuner which can be tried in various sce **Usage example** -```yaml +```yml # config.yml tuner: builtinTunerName: SMAC @@ -165,7 +165,7 @@ If the configurations you want to try have been decided, you can list them in se **Usage example** -```yaml +```yml # config.yml tuner: builtinTunerName: BatchTuner @@ -206,7 +206,7 @@ It is suggested when search space is small, it is feasible to exhaustively sweep **Usage example** -```yaml +```yml # config.yml tuner: builtinTunerName: GridSearch @@ -232,7 +232,7 @@ It is suggested when you have limited computation resource but have relatively l **Usage example** -```yaml +```yml # config.yml advisor: builtinAdvisorName: Hyperband @@ -268,7 +268,7 @@ It is suggested that you want to apply deep learning methods to your task (your **Usage example** -```yaml +```yml # config.yml tuner: builtinTunerName: NetworkMorphism @@ -304,7 +304,7 @@ Similar to TPE and SMAC, Metis is a black-box tuner. If your system takes a long **Usage example** -```yaml +```yml # config.yml tuner: builtinTunerName: MetisTuner diff --git a/docs/Customize_Advisor.md b/docs/Customize_Advisor.md index 9d2bafab31..12b2d9bf33 100644 --- a/docs/Customize_Advisor.md +++ b/docs/Customize_Advisor.md @@ -6,7 +6,7 @@ So, if user want to implement a customized Advisor, she/he only need to: 1. Define an Advisor inheriting from the MsgDispatcherBase class 1. Implement the methods with prefix `handle_` except `handle_request` -1. Configure your customized Advisor in experiment yaml config file +1. Configure your customized Advisor in experiment YAML config file Here is an example: @@ -24,11 +24,11 @@ class CustomizedAdvisor(MsgDispatcherBase): Please refer to the implementation of Hyperband ([src/sdk/pynni/nni/hyperband_advisor/hyperband_advisor.py](../src/sdk/pynni/nni/hyperband_advisor/hyperband_advisor.py)) for how to implement the methods. -**3) Configure your customized Advisor in experiment yaml config file** +**3) Configure your customized Advisor in experiment YAML config file** Similar to tuner and assessor. NNI needs to locate your customized Advisor class and instantiate the class, so you need to specify the location of the customized Advisor class and pass literal values as parameters to the \_\_init__ constructor. -```yaml +```yml advisor: codeDir: /home/abc/myadvisor classFileName: my_customized_advisor.py diff --git a/docs/Customize_Assessor.md b/docs/Customize_Assessor.md index fa6bfa5031..43247aba5c 100644 --- a/docs/Customize_Assessor.md +++ b/docs/Customize_Assessor.md @@ -8,7 +8,7 @@ If you want to implement a customized Assessor, there are three things for you t 1) Inherit an assessor of a base Assessor class 2) Implement assess_trial function -3) Configure your customized Assessor in experiment yaml config file +3) Configure your customized Assessor in experiment YAML config file **1. Inherit an assessor of a base Assessor class** @@ -38,11 +38,11 @@ class CustomizedAssessor(Assessor): ... ``` -**3. Configure your customized Assessor in experiment yaml config file** +**3. Configure your customized Assessor in experiment YAML config file** NNI needs to locate your customized Assessor class and instantiate the class, so you need to specify the location of the customized Assessor class and pass literal values as parameters to the \_\_init__ constructor. -```yaml +```yml assessor: codeDir: /home/abc/myassessor diff --git a/docs/Customize_Tuner.md b/docs/Customize_Tuner.md index 8279864ba0..70b4615780 100644 --- a/docs/Customize_Tuner.md +++ b/docs/Customize_Tuner.md @@ -8,7 +8,7 @@ If you want to implement and use your own tuning algorithm, you can implement a 1) Inherit a tuner of a base Tuner class 2) Implement receive_trial_result and generate_parameter function -3) Configure your customized tuner in experiment yaml config file +3) Configure your customized tuner in experiment YAML config file Here is an example: @@ -91,11 +91,11 @@ _fd = open(os.path.join(_pwd, 'data.txt'), 'r') This is because your tuner is not executed in the directory of your tuner (i.e., `pwd` is not the directory of your own tuner). -**3. Configure your customized tuner in experiment yaml config file** +**3. Configure your customized tuner in experiment YAML config file** NNI needs to locate your customized tuner class and instantiate the class, so you need to specify the location of the customized tuner class and pass literal values as parameters to the \_\_init__ constructor. -```yaml +```yml tuner: codeDir: /home/abc/mytuner diff --git a/docs/EnableAssessor.md b/docs/EnableAssessor.md index b6a76c8c70..4c29f01e05 100644 --- a/docs/EnableAssessor.md +++ b/docs/EnableAssessor.md @@ -3,7 +3,7 @@ Assessor module is for assessing running trials. One common use case is early stopping, which terminates unpromising trial jobs based on their intermediate results. ## Using NNI built-in Assessor -Here we use the same example `examples/trials/mnist-annotation`. We use `Medianstop` assessor for this experiment. The yaml configure file is shown below: +Here we use the same example `examples/trials/mnist-annotation`. We use `Medianstop` assessor for this experiment. The yml configure file is shown below: ``` authorName: your_name experimentName: auto_mnist @@ -33,7 +33,7 @@ trial: For our built-in assessors, you need to fill two fields: `builtinAssessorName` which chooses NNI provided assessors (refer to [here]() for built-in assessors), `optimize_mode` which includes maximize and minimize (you want to maximize or minimize your trial result). ## Using user customized Assessor -You can also write your own assessor following the guidance [here](). For example, you wrote an assessor for `examples/trials/mnist-annotation`. You should prepare the yaml configure below: +You can also write your own assessor following the guidance [here](). For example, you wrote an assessor for `examples/trials/mnist-annotation`. You should prepare the yml configure below: ``` authorName: your_name experimentName: auto_mnist diff --git a/docs/ExperimentConfig.md b/docs/ExperimentConfig.md index 01dbc4042d..faf82ecb71 100644 --- a/docs/ExperimentConfig.md +++ b/docs/ExperimentConfig.md @@ -1,7 +1,7 @@ # Experiment config reference A config file is needed when create an experiment, the path of the config file is provide to nnictl. -The config file is written in yaml format, and need to be written correctly. +The config file is written in YAML format, and need to be written correctly. This document describes the rule to write config file, and will provide some examples and templates. - [Template](#Template) (the templates of an config file) @@ -149,7 +149,7 @@ machineList: * __maxTrialNum__ * Description - __maxTrialNum__ specifies the max number of trial jobs created by nni, including succeeded and failed jobs. + __maxTrialNum__ specifies the max number of trial jobs created by NNI, including succeeded and failed jobs. * __trainingServicePlatform__ * Description @@ -164,7 +164,7 @@ machineList: * __pai__ submit trial jobs to [OpenPai](https://github.com/Microsoft/pai) of Microsoft. For more details of pai configuration, please reference [PAIMOdeDoc](./PAIMode.md) - * __kubeflow__ submit trial jobs to [kubeflow](https://www.kubeflow.org/docs/about/kubeflow/), nni support kubeflow based on normal kubernetes and [azure kubernetes](https://azure.microsoft.com/en-us/services/kubernetes-service/). + * __kubeflow__ submit trial jobs to [kubeflow](https://www.kubeflow.org/docs/about/kubeflow/), NNI support kubeflow based on normal kubernetes and [azure kubernetes](https://azure.microsoft.com/en-us/services/kubernetes-service/). * __searchSpacePath__ * Description @@ -182,7 +182,7 @@ machineList: * __nniManagerIp__ * Description - __nniManagerIp__ set the IP address of the machine on which nni manager process runs. This field is optional, and if it's not set, eth0 device IP will be used instead. + __nniManagerIp__ set the IP address of the machine on which NNI manager process runs. This field is optional, and if it's not set, eth0 device IP will be used instead. Note: run ifconfig on NNI manager's machine to check if eth0 device exists. If not, we recommend to set nnimanagerIp explicitly. @@ -200,11 +200,11 @@ machineList: * __tuner__ * Description - __tuner__ specifies the tuner algorithm in the experiment, there are two kinds of ways to set tuner. One way is to use tuner provided by nni sdk, need to set __builtinTunerName__ and __classArgs__. Another way is to use users' own tuner file, and need to set __codeDirectory__, __classFileName__, __className__ and __classArgs__. + __tuner__ specifies the tuner algorithm in the experiment, there are two kinds of ways to set tuner. One way is to use tuner provided by NNI sdk, need to set __builtinTunerName__ and __classArgs__. Another way is to use users' own tuner file, and need to set __codeDirectory__, __classFileName__, __className__ and __classArgs__. * __builtinTunerName__ and __classArgs__ * __builtinTunerName__ - __builtinTunerName__ specifies the name of system tuner, nni sdk provides four kinds of tuner, including {__TPE__, __Random__, __Anneal__, __Evolution__, __BatchTuner__, __GridSearch__} + __builtinTunerName__ specifies the name of system tuner, NNI sdk provides four kinds of tuner, including {__TPE__, __Random__, __Anneal__, __Evolution__, __BatchTuner__, __GridSearch__} * __classArgs__ __classArgs__ specifies the arguments of tuner algorithm. If the __builtinTunerName__ is in {__TPE__, __Random__, __Anneal__, __Evolution__}, user should set __optimize_mode__. @@ -231,11 +231,11 @@ machineList: * Description - __assessor__ specifies the assessor algorithm to run an experiment, there are two kinds of ways to set assessor. One way is to use assessor provided by nni sdk, users need to set __builtinAssessorName__ and __classArgs__. Another way is to use users' own assessor file, and need to set __codeDirectory__, __classFileName__, __className__ and __classArgs__. + __assessor__ specifies the assessor algorithm to run an experiment, there are two kinds of ways to set assessor. One way is to use assessor provided by NNI sdk, users need to set __builtinAssessorName__ and __classArgs__. Another way is to use users' own assessor file, and need to set __codeDirectory__, __classFileName__, __className__ and __classArgs__. * __builtinAssessorName__ and __classArgs__ * __builtinAssessorName__ - __builtinAssessorName__ specifies the name of system assessor, nni sdk provides one kind of assessor {__Medianstop__} + __builtinAssessorName__ specifies the name of system assessor, NNI sdk provides one kind of assessor {__Medianstop__} * __classArgs__ __classArgs__ specifies the arguments of assessor algorithm @@ -383,7 +383,7 @@ machineList: If users use ssh key to login remote machine, could set __sshKeyPath__ in config file. __sshKeyPath__ is the path of ssh key file, which should be valid. - Note: if users set passwd and sshKeyPath simultaneously, nni will try passwd. + Note: if users set passwd and sshKeyPath simultaneously, NNI will try passwd. * __passphrase__ @@ -393,7 +393,7 @@ machineList: * __operator__ - __operator__ specify the kubeflow's operator to be used, nni support __tf-operator__ in current version. + __operator__ specify the kubeflow's operator to be used, NNI support __tf-operator__ in current version. * __storage__ @@ -611,11 +611,11 @@ trial: gpuNum: 4 cpuNum: 2 memoryMB: 10000 - #The docker image to run nni job on pai + #The docker image to run NNI job on pai image: msranni/nni:latest #The hdfs directory to store data on pai, format 'hdfs://host:port/directory' dataDir: hdfs://10.11.12.13:9000/test - #The hdfs directory to store output data generated by nni, format 'hdfs://host:port/directory' + #The hdfs directory to store output data generated by NNI, format 'hdfs://host:port/directory' outputDir: hdfs://10.11.12.13:9000/test paiConfig: #The username to login pai diff --git a/docs/FAQ.md b/docs/FAQ.md index 88be31118b..dc2565ab2e 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -9,14 +9,14 @@ When met errors like below, try to clean up **tmp** folder first. > OSError: [Errno 28] No space left on device ### Cannot get trials' metrics in OpenPAI mode -In OpenPAI training mode, we start a rest server which listens on 51189 port in nniManager to receive metrcis reported from trials running in OpenPAI cluster. If you didn't see any metrics from WebUI in OpenPAI mode, check your machine where nniManager runs on to make sure 51189 port is turned on in the firewall rule. +In OpenPAI training mode, we start a rest server which listens on 51189 port in NNI Manager to receive metrcis reported from trials running in OpenPAI cluster. If you didn't see any metrics from WebUI in OpenPAI mode, check your machine where NNI manager runs on to make sure 51189 port is turned on in the firewall rule. ### Segmentation Fault (core dumped) when installing > make: *** [install-XXX] Segmentation fault (core dumped) Please try the following solutions in turn: * Update or reinstall you current python's pip like `python3 -m pip install -U pip` -* Install nni with `--no-cache-dir` flag like `python3 -m pip install nni --no-cache-dir` +* Install NNI with `--no-cache-dir` flag like `python3 -m pip install nni --no-cache-dir` ### Job management error: getIPV4Address() failed because os.networkInterfaces().eth0 is undefined. Your machine don't have eth0 device, please set nniManagerIp in your config file manually. [refer](https://github.com/Microsoft/nni/blob/master/docs/ExperimentConfig.md) @@ -25,7 +25,7 @@ Your machine don't have eth0 device, please set nniManagerIp in your config file When the duration of experiment reaches the maximum duration, nniManager will not create new trials, but the existing trials will continue unless user manually stop the experiment. ### Could not stop an experiment using `nnictl stop` -If you upgrade your nni or you delete some config files of nni when there is an experiment running, this kind of issue may happen because the loss of config file. You could use `ps -ef | grep node` to find the pid of your experiment, and use `kill -9 {pid}` to kill it manually. +If you upgrade your NNI or you delete some config files of NNI when there is an experiment running, this kind of issue may happen because the loss of config file. You could use `ps -ef | grep node` to find the pid of your experiment, and use `kill -9 {pid}` to kill it manually. ### Could not get `default metric` in webUI of virtual machines Config the network mode to bridge mode or other mode that could make virtual machine's host accessible from external machine, and make sure the port of virtual machine is not forbidden by firewall. diff --git a/docs/FrameworkControllerMode.md b/docs/FrameworkControllerMode.md index c54c33756b..b9c096483f 100644 --- a/docs/FrameworkControllerMode.md +++ b/docs/FrameworkControllerMode.md @@ -4,9 +4,9 @@ NNI supports running experiment using [FrameworkController](https://github.com/M ## Prerequisite for on-premises Kubernetes Service 1. A **Kubernetes** cluster using Kubernetes 1.8 or later. Follow this [guideline](https://kubernetes.io/docs/setup/) to set up Kubernetes -2. Prepare a **kubeconfig** file, which will be used by NNI to interact with your kubernetes API server. By default, NNI manager will use $(HOME)/.kube/config as kubeconfig file's path. You can also specify other kubeconfig files by setting the **KUBECONFIG** environment variable. Refer this [guideline]( https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig) to learn more about kubeconfig. +2. Prepare a **kubeconfig** file, which will be used by NNI to interact with your kubernetes API server. By default, NNI manager will use $(HOME)/.kube/config as kubeconfig file's path. You can also specify other kubeconfig files by setting the **KUBECONFIG** environment variable. Refer this [guideline]( https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig) to learn more about kubeconfig. 3. If your NNI trial job needs GPU resource, you should follow this [guideline](https://github.com/NVIDIA/k8s-device-plugin) to configure **Nvidia device plugin for Kubernetes**. -4. Prepare a **NFS server** and export a general purpose mount (we recommend to map your NFS server path in `root_squash option`, otherwise permission issue may raise when nni copy files to NFS. Refer this [page](https://linux.die.net/man/5/exports) to learn what root_squash option is), or **Azure File Storage**. +4. Prepare a **NFS server** and export a general purpose mount (we recommend to map your NFS server path in `root_squash option`, otherwise permission issue may raise when NNI copies files to NFS. Refer this [page](https://linux.die.net/man/5/exports) to learn what root_squash option is), or **Azure File Storage**. 5. Install **NFS client** on the machine where you install NNI and run nnictl to create experiment. Run this command to install NFSv4 client: ``` apt-get install nfs-common @@ -17,12 +17,12 @@ NNI supports running experiment using [FrameworkController](https://github.com/M ## Prerequisite for Azure Kubernetes Service 1. NNI support kubeflow based on Azure Kubernetes Service, follow the [guideline](https://azure.microsoft.com/en-us/services/kubernetes-service/) to set up Azure Kubernetes Service. 2. Install [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest) and __kubectl__. Use `az login` to set azure account, and connect kubectl client to AKS, refer this [guideline](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough#connect-to-the-cluster). -3. Follow the [guideline](https://docs.microsoft.com/en-us/azure/storage/common/storage-quickstart-create-account?tabs=portal) to create azure file storage account. If you use Azure Kubernetes Service, nni need Azure Storage Service to store code files and the output files. -4. To access Azure storage service, nni need the access key of the storage account, and nni use [Azure Key Vault](https://azure.microsoft.com/en-us/services/key-vault/) Service to protect your private key. Set up Azure Key Vault Service, add a secret to Key Vault to store the access key of Azure storage account. Follow this [guideline](https://docs.microsoft.com/en-us/azure/key-vault/quick-create-cli) to store the access key. +3. Follow the [guideline](https://docs.microsoft.com/en-us/azure/storage/common/storage-quickstart-create-account?tabs=portal) to create azure file storage account. If you use Azure Kubernetes Service, NNI need Azure Storage Service to store code files and the output files. +4. To access Azure storage service, NNI need the access key of the storage account, and NNI uses [Azure Key Vault](https://azure.microsoft.com/en-us/services/key-vault/) Service to protect your private key. Set up Azure Key Vault Service, add a secret to Key Vault to store the access key of Azure storage account. Follow this [guideline](https://docs.microsoft.com/en-us/azure/key-vault/quick-create-cli) to store the access key. ## Set up FrameworkController -Follow the [guideline](https://github.com/Microsoft/frameworkcontroller/tree/master/example/run) to set up frameworkcontroller in the kubernetes cluster, nni support frameworkcontroller by the statefulset mode. +Follow the [guideline](https://github.com/Microsoft/frameworkcontroller/tree/master/example/run) to set up frameworkcontroller in the kubernetes cluster, NNI supports frameworkcontroller by the statefulset mode. ## Design Please refer the design of [kubeflow training service](./KubeflowMode.md), frameworkcontroller training service pipeline is similar. @@ -71,7 +71,7 @@ frameworkcontrollerConfig: server: {your_nfs_server} path: {your_nfs_server_exported_path} ``` -If you use Azure Kubernetes Service, you should set `frameworkcontrollerConfig` in your config yaml file as follows: +If you use Azure Kubernetes Service, you should set `frameworkcontrollerConfig` in your config YAML file as follows: ``` frameworkcontrollerConfig: storage: azureStorage @@ -82,9 +82,9 @@ frameworkcontrollerConfig: accountName: {your_storage_account_name} azureShare: {your_azure_share_name} ``` -Note: You should explicitly set `trainingServicePlatform: frameworkcontroller` in nni config yaml file if you want to start experiment in frameworkcontrollerConfig mode. +Note: You should explicitly set `trainingServicePlatform: frameworkcontroller` in NNI config YAML file if you want to start experiment in frameworkcontrollerConfig mode. -The trial's config format for nni frameworkcontroller mode is a simple version of frameworkcontroller's offical config, you could refer the [tensorflow example of frameworkcontroller](https://github.com/Microsoft/frameworkcontroller/blob/master/example/framework/scenario/tensorflow/cpu/tensorflowdistributedtrainingwithcpu.yaml) for deep understanding. +The trial's config format for NNI frameworkcontroller mode is a simple version of frameworkcontroller's offical config, you could refer the [tensorflow example of frameworkcontroller](https://github.com/Microsoft/frameworkcontroller/blob/master/example/framework/scenario/tensorflow/cpu/tensorflowdistributedtrainingwithcpu.yaml) for deep understanding. Trial configuration in frameworkcontroller mode have the following configuration keys: * taskRoles: you could set multiple task roles in config file, and each task role is a basic unit to process in kubernetes cluster. * name: the name of task role specified, like "worker", "ps", "master". diff --git a/docs/GetStarted.md b/docs/GetStarted.md index 590f878c62..e2c72e5498 100644 --- a/docs/GetStarted.md +++ b/docs/GetStarted.md @@ -34,7 +34,7 @@ An experiment is to run multiple trial jobs, each trial job tries a configuratio * Provide a runnable trial * Provide or choose a tuner -* Provide a yaml experiment configure file +* Provide a YAML experiment configure file * (optional) Provide or choose an assessor **Prepare trial**: Let's use a simple trial example, e.g. mnist, provided by NNI. After you installed NNI, NNI examples have been put in ~/nni/examples, run `ls ~/nni/examples/trials` to see all the trial examples. You can simply execute the following command to run the NNI mnist example: @@ -43,11 +43,11 @@ An experiment is to run multiple trial jobs, each trial job tries a configuratio python3 ~/nni/examples/trials/mnist-annotation/mnist.py ``` -This command will be filled in the yaml configure file below. Please refer to [here](howto_1_WriteTrial.md) for how to write your own trial. +This command will be filled in the YAML configure file below. Please refer to [here](howto_1_WriteTrial.md) for how to write your own trial. **Prepare tuner**: NNI supports several popular automl algorithms, including Random Search, Tree of Parzen Estimators (TPE), Evolution algorithm etc. Users can write their own tuner (refer to [here](howto_2_CustomizedTuner.md), but for simplicity, here we choose a tuner provided by NNI as below: -```yaml +```yml tuner: builtinTunerName: TPE classArgs: @@ -56,9 +56,9 @@ tuner: *builtinTunerName* is used to specify a tuner in NNI, *classArgs* are the arguments pass to the tuner, *optimization_mode* is to indicate whether you want to maximize or minimize your trial's result. -**Prepare configure file**: Since you have already known which trial code you are going to run and which tuner you are going to use, it is time to prepare the yaml configure file. NNI provides a demo configure file for each trial example, `cat ~/nni/examples/trials/mnist-annotation/config.yml` to see it. Its content is basically shown below: +**Prepare configure file**: Since you have already known which trial code you are going to run and which tuner you are going to use, it is time to prepare the YAML configure file. NNI provides a demo configure file for each trial example, `cat ~/nni/examples/trials/mnist-annotation/config.yml` to see it. Its content is basically shown below: -```yaml +```yml authorName: your_name experimentName: auto_mnist diff --git a/docs/GridSearchTuner.md b/docs/GridSearchTuner.md index 96fa0d09ab..cc9111ae62 100644 --- a/docs/GridSearchTuner.md +++ b/docs/GridSearchTuner.md @@ -14,7 +14,7 @@ Moreover, in GridSearch Tuner, for users' convenience, the definition of `qunifo ## 2. Usage -Since Grid Search Tuner will exhaust all possible hyper-parameter combination according to the search space file without any hyper-parameter for tuner itself, all you need to do is to specify tuner name in your experiment's yaml config file: +Since Grid Search Tuner will exhaust all possible hyper-parameter combination according to the search space file without any hyper-parameter for tuner itself, all you need to do is to specify tuner name in your experiment's YAML config file: ``` tuner: diff --git a/docs/HowToChooseTuner.md b/docs/HowToChooseTuner.md index f012732521..3c2cccee76 100644 --- a/docs/HowToChooseTuner.md +++ b/docs/HowToChooseTuner.md @@ -29,8 +29,8 @@ This optimization approach is described in detail in [Algorithms for Hyper-Param _Suggested scenario_: TPE, as a black-box optimization, can be used in various scenarios, and shows good performance in general. Especially when you have limited computation resource and can only try a small number of trials. From a large amount of experiments, we could found that TPE is far better than Random Search. _Usage_: -```yaml - # config.yaml +```yml + # config.yml tuner: builtinTunerName: TPE classArgs: @@ -46,8 +46,8 @@ In [Random Search for Hyper-Parameter Optimization][2] show that Random Search m _Suggested scenario_: Random search is suggested when each trial does not take too long (e.g., each trial can be completed very soon, or early stopped by assessor quickly), and you have enough computation resource. Or you want to uniformly explore the search space. Random Search could be considered as baseline of search algorithm. _Usage_: -```yaml - # config.yaml +```yml + # config.yml tuner: builtinTunerName: Random ``` @@ -60,8 +60,8 @@ This simple annealing algorithm begins by sampling from the prior, but tends ove _Suggested scenario_: Anneal is suggested when each trial does not take too long, and you have enough computation resource(almost same with Random Search). Or the variables in search space could be sample from some prior distribution. _Usage_: -```yaml - # config.yaml +```yml + # config.yml tuner: builtinTunerName: Anneal classArgs: @@ -77,8 +77,8 @@ Naive Evolution comes from [Large-Scale Evolution of Image Classifiers][3]. It r _Suggested scenario_: Its requirement of computation resource is relatively high. Specifically, it requires large inital population to avoid falling into local optimum. If your trial is short or leverages assessor, this tuner is a good choice. And, it is more suggested when your trial code supports weight transfer, that is, the trial could inherit the converged weights from its parent(s). This can greatly speed up the training progress. _Usage_: -```yaml - # config.yaml +```yml + # config.yml tuner: builtinTunerName: Evolution classArgs: @@ -89,9 +89,9 @@ _Usage_: **SMAC** -[SMAC][4] is based on Sequential Model-Based Optimization (SMBO). It adapts the most prominent previously used model class (Gaussian stochastic process models) and introduces the model class of random forests to SMBO, in order to handle categorical parameters. The SMAC supported by nni is a wrapper on [the SMAC3 github repo][5]. +[SMAC][4] is based on Sequential Model-Based Optimization (SMBO). It adapts the most prominent previously used model class (Gaussian stochastic process models) and introduces the model class of random forests to SMBO, in order to handle categorical parameters. The SMAC supported by NNI is a wrapper on [the SMAC3 github repo][5]. -Note that SMAC on nni only supports a subset of the types in [search space spec](./SearchSpaceSpec.md), including `choice`, `randint`, `uniform`, `loguniform`, `quniform(q=1)`. +Note that SMAC on NNI only supports a subset of the types in [search space spec](./SearchSpaceSpec.md), including `choice`, `randint`, `uniform`, `loguniform`, `quniform(q=1)`. _Installation_: * Install swig first. (`sudo apt-get install swig` for Ubuntu users) @@ -100,8 +100,8 @@ _Installation_: _Suggested scenario_: Similar to TPE, SMAC is also a black-box tuner which can be tried in various scenarios, and is suggested when computation resource is limited. It is optimized for discrete hyperparameters, thus, suggested when most of your hyperparameters are discrete. _Usage_: -```yaml - # config.yaml +```yml + # config.yml tuner: builtinTunerName: SMAC classArgs: @@ -117,8 +117,8 @@ Batch tuner allows users to simply provide several configurations (i.e., choices _Suggested sceanrio_: If the configurations you want to try have been decided, you can list them in searchspace file (using `choice`) and run them using batch tuner. _Usage_: -```yaml - # config.yaml +```yml + # config.yml tuner: builtinTunerName: BatchTuner ``` @@ -149,8 +149,8 @@ Note that the only acceptable types of search space are `choice`, `quniform`, `q _Suggested scenario_: It is suggested when search space is small, it is feasible to exhaustively sweeping the whole search space. _Usage_: -```yaml - # config.yaml +```yml + # config.yml tuner: builtinTunerName: GridSearch ``` @@ -163,8 +163,8 @@ _Usage_: _Suggested scenario_: It is suggested when you have limited computation resource but have relatively large search space. It performs good in the scenario that intermediate result (e.g., accuracy) can reflect good or bad of final result (e.g., accuracy) to some extent. _Usage_: -```yaml - # config.yaml +```yml + # config.yml advisor: builtinAdvisorName: Hyperband classArgs: @@ -189,8 +189,8 @@ NetworkMorphism requires [pyTorch](https://pytorch.org/get-started/locally), so _Suggested scenario_: It is suggested that you want to apply deep learning methods to your task (your own dataset) but you have no idea of how to choose or design a network. You modify the [example](../examples/trials/network_morphism/cifar10/cifar10_keras.py) to fit your own dataset and your own data augmentation method. Also you can change the batch size, learning rate or optimizer. It is feasible for different tasks to find a good network architecture. Now this tuner only supports the cv domain. _Usage_: -```yaml - # config.yaml +```yml + # config.yml tuner: builtinTunerName: NetworkMorphism classArgs: @@ -232,11 +232,11 @@ Metis Tuner requires [sklearn](https://scikit-learn.org/), so users should insta _Suggested scenario_: -Similar to TPE and SMAC, Metis is a black-box tuner. If your system takes a long time to finish each trial, Metis is more favorable than other approaches such as random search. Furthermore, Metis provides guidance on the subsequent trial. Here is an [example](../examples/trials/auto-gbdt/search_space_metis.json) about the use of Metis. User only need to send the final result like `accuracy` to tuner, by calling the nni SDK. +Similar to TPE and SMAC, Metis is a black-box tuner. If your system takes a long time to finish each trial, Metis is more favorable than other approaches such as random search. Furthermore, Metis provides guidance on the subsequent trial. Here is an [example](../examples/trials/auto-gbdt/search_space_metis.json) about the use of Metis. User only need to send the final result like `accuracy` to tuner, by calling the NNI SDK. _Usage_: -```yaml - # config.yaml +```yml + # config.yml tuner: builtinTunerName: MetisTuner classArgs: @@ -262,7 +262,7 @@ Medianstop is a simple early stopping rule mentioned in the [paper][8]. It stops _Suggested scenario_: It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress. _Usage_: -```yaml +```yml assessor: builtinAssessorName: Medianstop classArgs: @@ -282,7 +282,7 @@ Curve Fitting Assessor is a LPA(learning, predicting, assessing) algorithm. It s _Suggested scenario_: It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress. Even better, it's able to handle and assess curves with similar performance. _Usage_: -```yaml +```yml assessor: builtinAssessorName: Curvefitting classArgs: diff --git a/docs/KubeflowMode.md b/docs/KubeflowMode.md index b8852d1ddd..f1028afba0 100644 --- a/docs/KubeflowMode.md +++ b/docs/KubeflowMode.md @@ -7,7 +7,7 @@ Now NNI supports running experiment on [Kubeflow](https://github.com/kubeflow/ku 2. Download, set up, and deploy **Kubelow** to your Kubernetes cluster. Follow this [guideline](https://www.kubeflow.org/docs/started/getting-started/) to set up Kubeflow 3. Prepare a **kubeconfig** file, which will be used by NNI to interact with your kubernetes API server. By default, NNI manager will use $(HOME)/.kube/config as kubeconfig file's path. You can also specify other kubeconfig files by setting the **KUBECONFIG** environment variable. Refer this [guideline]( https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig) to learn more about kubeconfig. 4. If your NNI trial job needs GPU resource, you should follow this [guideline](https://github.com/NVIDIA/k8s-device-plugin) to configure **Nvidia device plugin for Kubernetes**. -5. Prepare a **NFS server** and export a general purpose mount (we recommend to map your NFS server path in `root_squash option`, otherwise permission issue may raise when nni copy files to NFS. Refer this [page](https://linux.die.net/man/5/exports) to learn what root_squash option is), or **Azure File Storage**. +5. Prepare a **NFS server** and export a general purpose mount (we recommend to map your NFS server path in `root_squash option`, otherwise permission issue may raise when NNI copy files to NFS. Refer this [page](https://linux.die.net/man/5/exports) to learn what root_squash option is), or **Azure File Storage**. 6. Install **NFS client** on the machine where you install NNI and run nnictl to create experiment. Run this command to install NFSv4 client: ``` apt-get install nfs-common @@ -19,14 +19,14 @@ Now NNI supports running experiment on [Kubeflow](https://github.com/kubeflow/ku 1. NNI support kubeflow based on Azure Kubernetes Service, follow the [guideline](https://azure.microsoft.com/en-us/services/kubernetes-service/) to set up Azure Kubernetes Service. 2. Install [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest) and __kubectl__. Use `az login` to set azure account, and connect kubectl client to AKS, refer this [guideline](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough#connect-to-the-cluster). 3. Deploy kubeflow on Azure Kubernetes Service, follow the [guideline](https://www.kubeflow.org/docs/started/getting-started/). -4. Follow the [guideline](https://docs.microsoft.com/en-us/azure/storage/common/storage-quickstart-create-account?tabs=portal) to create azure file storage account. If you use Azure Kubernetes Service, nni need Azure Storage Service to store code files and the output files. -5. To access Azure storage service, nni need the access key of the storage account, and nni use [Azure Key Vault](https://azure.microsoft.com/en-us/services/key-vault/) Service to protect your private key. Set up Azure Key Vault Service, add a secret to Key Vault to store the access key of Azure storage account. Follow this [guideline](https://docs.microsoft.com/en-us/azure/key-vault/quick-create-cli) to store the access key. +4. Follow the [guideline](https://docs.microsoft.com/en-us/azure/storage/common/storage-quickstart-create-account?tabs=portal) to create azure file storage account. If you use Azure Kubernetes Service, NNI need Azure Storage Service to store code files and the output files. +5. To access Azure storage service, NNI need the access key of the storage account, and NNI use [Azure Key Vault](https://azure.microsoft.com/en-us/services/key-vault/) Service to protect your private key. Set up Azure Key Vault Service, add a secret to Key Vault to store the access key of Azure storage account. Follow this [guideline](https://docs.microsoft.com/en-us/azure/key-vault/quick-create-cli) to store the access key. ## Design ![](./img/kubeflow_training_design.png) Kubeflow training service instantiates a kubernetes rest client to interact with your K8s cluster's API server. -For each trial, we will upload all the files in your local codeDir path (configured in nni_config.yaml) together with NNI generated files like parameter.cfg into a storage volumn. Right now we support two kinds of storage volumns: [nfs](https://en.wikipedia.org/wiki/Network_File_System) and [azure file storage](https://azure.microsoft.com/en-us/services/storage/files/), you should configure the storage volumn in nni config yaml file. After files are prepared, Kubeflow training service will call K8S rest API to create kubeflow jobs ([tf-operator](https://github.com/kubeflow/tf-operator) job or [pytorch-operator](https://github.com/kubeflow/pytorch-operator) job) in K8S, and mount your storage volumn into the job's pod. Output files of kubeflow job, like stdout, stderr, trial.log or model files, will also be copied back to the storage volumn. NNI will show the storage volumn's URL for each trial in WebUI, to allow user browse the log files and job's output files. +For each trial, we will upload all the files in your local codeDir path (configured in nni_config.yml) together with NNI generated files like parameter.cfg into a storage volumn. Right now we support two kinds of storage volumns: [nfs](https://en.wikipedia.org/wiki/Network_File_System) and [azure file storage](https://azure.microsoft.com/en-us/services/storage/files/), you should configure the storage volumn in NNI config YAML file. After files are prepared, Kubeflow training service will call K8S rest API to create kubeflow jobs ([tf-operator](https://github.com/kubeflow/tf-operator) job or [pytorch-operator](https://github.com/kubeflow/pytorch-operator) job) in K8S, and mount your storage volumn into the job's pod. Output files of kubeflow job, like stdout, stderr, trial.log or model files, will also be copied back to the storage volumn. NNI will show the storage volumn's URL for each trial in WebUI, to allow user browse the log files and job's output files. ## Supported operator NNI only support tf-operator and pytorch-operator of kubeflow, other operators is not tested. @@ -55,7 +55,7 @@ kubeflowConfig: # Your NFS server export path, like /var/nfs/nni path: {your_nfs_server_export_path} ``` -If you use Azure storage, you should set `kubeflowConfig` in your config yaml file as follows: +If you use Azure storage, you should set `kubeflowConfig` in your config YAML file as follows: ``` kubeflowConfig: storage: azureStorage @@ -69,7 +69,7 @@ kubeflowConfig: ## Run an experiment -Use `examples/trials/mnist` as an example. This is a tensorflow job, and use tf-operator of kubeflow. The nni config yaml file's content is like: +Use `examples/trials/mnist` as an example. This is a tensorflow job, and use tf-operator of kubeflow. The NNI config yml file's content is like: ``` authorName: default experimentName: example_mnist @@ -119,7 +119,7 @@ kubeflowConfig: path: {your_nfs_server_export_path} ``` -Note: You should explicitly set `trainingServicePlatform: kubeflow` in nni config yaml file if you want to start experiment in kubeflow mode. +Note: You should explicitly set `trainingServicePlatform: kubeflow` in NNI config yml file if you want to start experiment in kubeflow mode. If you want to run Pytorch jobs, you could set your config files as follow: ``` @@ -185,9 +185,9 @@ Trial configuration in kubeflow mode have the following configuration keys: * ps (optional). This config section is used to configure tensorflow parameter server role. * master(optional). This config section is used to configure pytorch parameter server role. -Once complete to fill nni experiment config file and save (for example, save as exp_kubeflow.yaml), then run the following command +Once complete to fill NNI experiment config file and save (for example, save as exp_kubeflow.yml), then run the following command ``` -nnictl create --config exp_kubeflow.yaml +nnictl create --config exp_kubeflow.yml ``` to start the experiment in kubeflow mode. NNI will create Kubeflow tfjob or pytorchjob for each trial, and the job name format is something like `nni_exp_{experiment_id}_trial_{trial_id}`. You can see the kubeflow tfjob created by NNI in your Kubernetes dashboard. diff --git a/docs/NNICTLDOC.md b/docs/NNICTLDOC.md index 82584ccd7c..709c5c1332 100644 --- a/docs/NNICTLDOC.md +++ b/docs/NNICTLDOC.md @@ -1,6 +1,5 @@ # nnictl - ## Introduction __nnictl__ is a command line tool, which can be used to control experiments, such as start/stop/resume an experiment, start/stop NNIBoard, etc. @@ -8,41 +7,45 @@ __nnictl__ is a command line tool, which can be used to control experiments, suc ## Commands nnictl support commands: - - [nnictl create](#create) - - [nnictl resume](#resume) - - [nnictl stop](#stop) - - [nnictl update](#update) - - [nnictl trial](#trial) - - [nnictl top](#top) - - [nnictl experiment](#experiment) - - [nnictl config](#config) - - [nnictl log](#log) - - [nnictl webui](#webui) - - [nnictl tensorboard](#tensorboard) - - [nnictl package](#package) - +* [nnictl create](#create) +* [nnictl resume](#resume) +* [nnictl stop](#stop) +* [nnictl update](#update) +* [nnictl trial](#trial) +* [nnictl top](#top) +* [nnictl experiment](#experiment) +* [nnictl config](#config) +* [nnictl log](#log) +* [nnictl webui](#webui) +* [nnictl tensorboard](#tensorboard) +* [nnictl package](#package) +* [nnictl --version](#version) ### Manage an experiment + -* __nnictl create__ - * Description - - You can use this command to create a new experiment, using the configuration specified in config file. - After this command is successfully done, the context will be set as this experiment, - which means the following command you issued is associated with this experiment, - unless you explicitly changes the context(not supported yet). - +* __nnictl create__ + + * Description + + You can use this command to create a new experiment, using the configuration specified in config file. + + After this command is successfully done, the context will be set as this experiment, which means the following command you issued is associated with this experiment, unless you explicitly changes the context(not supported yet). + * Usage - - nnictl create [OPTIONS] - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | --config, -c| True| |yaml configure file of the experiment| - | --port, -p | False| |the port of restful server| + + ```bash + nnictl create [OPTIONS] + ``` + + * Options + + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |--config, -c| True| |YAML configure file of the experiment| + |--port, -p|False| |the port of restful server| + * __nnictl resume__ @@ -56,17 +59,16 @@ nnictl support commands: nnictl resume [OPTIONS] ``` - Options: + * Options + + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |The id of the experiment you want to resume| + |--port, -p| False| |Rest port of the experiment you want to resume| - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |The id of the experiment you want to resume| - | --port, -p| False| |Rest port of the experiment you want to resume| - - - * __nnictl stop__ + * Description You can use this command to stop a running experiment or multiple experiments. @@ -78,81 +80,89 @@ nnictl support commands: ``` * Detail - - 1.If there is an id specified, and the id matches the running experiment, nnictl will stop the corresponding experiment, or will print error message. - 2.If there is no id specified, and there is an experiment running, stop the running experiment, or print error message. - 3.If the id ends with *, nnictl will stop all experiments whose ids matchs the regular. - 4.If the id does not exist but match the prefix of an experiment id, nnictl will stop the matched experiment. - 5.If the id does not exist but match multiple prefix of the experiment ids, nnictl will give id information. - 6.Users could use 'nnictl stop all' to stop all experiments + + 1.If there is an id specified, and the id matches the running experiment, nnictl will stop the corresponding experiment, or will print error message. + 2.If there is no id specified, and there is an experiment running, stop the running experiment, or print error message. + 3.If the id ends with *, nnictl will stop all experiments whose ids matchs the regular. + 4.If the id does not exist but match the prefix of an experiment id, nnictl will stop the matched experiment. + 5.If the id does not exist but match multiple prefix of the experiment ids, nnictl will give id information. + 6.Users could use 'nnictl stop all' to stop all experiments. + * __nnictl update__ - - * __nnictl update searchspace__ - * Description - - You can use this command to update an experiment's search space. - - * Usage - - nnictl update searchspace [OPTIONS] - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --filename, -f| True| |the file storing your new search space| - - * __nnictl update concurrency__ - * Description - - You can use this command to update an experiment's concurrency. - - * Usage - - nnictl update concurrency [OPTIONS] - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --value, -v| True| |the number of allowed concurrent trials| - - * __nnictl update duration__ - * Description - - You can use this command to update an experiment's concurrency. - - * Usage - - nnictl update duration [OPTIONS] - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --value, -v| True| |the experiment duration will be NUMBER seconds. SUFFIX may be 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.| - - * __nnictl update trialnum__ - * Description - - You can use this command to update an experiment's maxtrialnum. - - * Usage - - nnictl update trialnum [OPTIONS] - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --value, -v| True| |the new number of maxtrialnum you want to set| - - + + * __nnictl update searchspace__ + * Description + + You can use this command to update an experiment's search space. + + * Usage + + ```bash + nnictl update searchspace [OPTIONS] + ``` + + * Options + + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--filename, -f| True| |the file storing your new search space| + + * __nnictl update concurrency__ + * Description + + You can use this command to update an experiment's concurrency. + + * Usage + + ```bash + nnictl update concurrency [OPTIONS] + ``` + + * Options + + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--value, -v| True| |the number of allowed concurrent trials| + + * __nnictl update duration__ + + * Description + + You can use this command to update an experiment's concurrency. + + * Usage + + ```bash + nnictl update duration [OPTIONS] + ``` + * Options + + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--value, -v| True| |the experiment duration will be NUMBER seconds. SUFFIX may be 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.| + + * __nnictl update trialnum__ + * Description + + You can use this command to update an experiment's maxtrialnum. + + * Usage + + ```bash + nnictl update trialnum [OPTIONS] + ``` + + * Options + + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--value, -v| True| |the new number of maxtrialnum you want to set| + * __nnictl trial__ @@ -163,50 +173,56 @@ nnictl support commands: You can use this command to show trial's information. * Usage - + ```bash nnictl trial ls ``` - Options: + * Options - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| * __nnictl trial kill__ - * Description - - You can use this command to kill a trial job. - * Usage - - nnictl trial kill [OPTIONS] - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --trialid, -t| True| |ID of the trial you want to kill.| + + * Description + + You can use this command to kill a trial job. + + * Usage + + ```bash + nnictl trial kill [OPTIONS] + ``` + + * Options + + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--trialid, -t| True| |ID of the trial you want to kill.| + * __nnictl top__ - * Description - - Monitor all of running experiments. - - * Usage - - nnictl top - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --time, -t| False| |The interval to update the experiment status, the unit of time is second, and the default value is 3 second.| - - + * Description + + Monitor all of running experiments. + + * Usage + + ```bash + nnictl top + ``` + + * Options + + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--time, -t| False| |The interval to update the experiment status, the unit of time is second, and the default value is 3 second.| + ### Manage experiment information @@ -222,11 +238,11 @@ nnictl support commands: nnictl experiment show ``` - Options: + * Options - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| * __nnictl experiment status__ @@ -240,13 +256,14 @@ nnictl support commands: nnictl experiment status ``` - Options: + * Options - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| * __nnictl experiment list__ + * Description Show the information of all the (running) experiments. @@ -257,17 +274,19 @@ nnictl support commands: nnictl experiment list ``` - * __nnictl config show__ - * Description - - Display the current context information. - - * Usage - - nnictl config show - + + * Description + + Display the current context information. + + * Usage + + ```bash + nnictl config show + ``` + ### Manage log @@ -283,42 +302,53 @@ nnictl support commands: nnictl log stdout [options] ``` - Options: + * Options - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --head, -h| False| |show head lines of stdout| - | --tail, -t| False| |show tail lines of stdout| - | --path, -p| False| |show the path of stdout file| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--head, -h| False| |show head lines of stdout| + |--tail, -t| False| |show tail lines of stdout| + |--path, -p| False| |show the path of stdout file| * __nnictl log stderr__ * Description Show the stderr log content. - + * Usage ```bash nnictl log stderr [options] ``` - Options: + * Options - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --head, -h| False| |show head lines of stderr| - | --tail, -t| False| |show tail lines of stderr| - | --path, -p| False| |show the path of stderr file| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--head, -h| False| |show head lines of stderr| + |--tail, -t| False| |show tail lines of stderr| + |--path, -p| False| |show the path of stderr file| * __nnictl log trial__ + * Description Show trial log path. * Usage + ```bash + nnictl log trial [options] + ``` + + * Options + + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |the id of trial| + ### Manage webui @@ -339,13 +369,13 @@ nnictl support commands: nnictl tensorboard start ``` - Options: + * Options - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| - | --trialid| False| |ID of the trial| - | --port| False| 6006|The port of the tensorboard process| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--trialid| False| |ID of the trial| + |--port| False| 6006|The port of the tensorboard process| * Detail @@ -356,42 +386,65 @@ nnictl support commands: 5. If there is only one trial job, you don't need to set trialid. If there are multiple trial jobs running, you should set the trialid, or you could use [nnictl tensorboard start --trialid all] to map --logdir to all trial log paths. * __nnictl tensorboard stop__ - * Description - - Stop all of the tensorboard process. - - * Usage - - nnictl tensorboard stop - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | id| False| |ID of the experiment you want to set| + * Description + + Stop all of the tensorboard process. + + * Usage + + ```bash + nnictl tensorboard stop + ``` + + * Options + + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| ### Manage package + * __nnictl package install__ - * Description - - Install the packages needed in nni experiments. - - * Usage - - nnictl package install [OPTIONS] - - Options: - - | Name, shorthand | Required|Default | Description | - | ------ | ------ | ------ |------ | - | --name| True| |The name of package to be installed| + * Description + + Install the packages needed in nni experiments. + + * Usage + + ```bash + nnictl package install [OPTIONS] + ``` + + * Options + + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |--name| True| |The name of package to be installed| * __nnictl package show__ - * Description - - List the packages supported. - - * Usage - - nnictl package show + + * Description + + List the packages supported. + + * Usage + + ```bash + nnictl package show + ``` + + +### Check NNI version + +* __nnictl --version__ + + * Description + + Describe the current version of NNI installed. + + * Usage + + ```bash + nnictl --version + ``` \ No newline at end of file diff --git a/docs/PAIMode.md b/docs/PAIMode.md index ccdf0b78b0..c1cdd1268d 100644 --- a/docs/PAIMode.md +++ b/docs/PAIMode.md @@ -6,9 +6,9 @@ NNI supports running an experiment on [OpenPAI](https://github.com/Microsoft/pai Install NNI, follow the install guide [here](GetStarted.md). ## Run an experiment -Use `examples/trials/mnist-annotation` as an example. The nni config yaml file's content is like: +Use `examples/trials/mnist-annotation` as an example. The NNI config YAML file's content is like: -```yaml +```yml authorName: your_name experimentName: auto_mnist # how many trials could be concurrently running @@ -41,7 +41,7 @@ paiConfig: host: 10.1.1.1 ``` -Note: You should set `trainingServicePlatform: pai` in nni config yaml file if you want to start experiment in pai mode. +Note: You should set `trainingServicePlatform: pai` in NNI config YAML file if you want to start experiment in pai mode. Compared with LocalMode and [RemoteMachineMode](RemoteMachineMode.md), trial configuration in pai mode have five additional keys: * cpuNum @@ -49,16 +49,16 @@ Compared with LocalMode and [RemoteMachineMode](RemoteMachineMode.md), trial con * memoryMB * Required key. Should be positive number based on your trial program's memory requirement * image - * Required key. In pai mode, your trial program will be scheduled by OpenPAI to run in [Docker container](https://www.docker.com/). This key is used to specify the Docker image used to create the container in which your traill will run. + * Required key. In pai mode, your trial program will be scheduled by OpenPAI to run in [Docker container](https://www.docker.com/). This key is used to specify the Docker image used to create the container in which your trial will run. * We already build a docker image [nnimsra/nni](https://hub.docker.com/r/msranni/nni/) on [Docker Hub](https://hub.docker.com/). It contains NNI python packages, Node modules and javascript artifact files required to start experiment, and all of NNI dependencies. The docker file used to build this image can be found at [here](../deployment/Dockerfile.build.base). You can either use this image directly in your config file, or build your own image based on it. * dataDir * Optional key. It specifies the HDFS data direcotry for trial to download data. The format should be something like hdfs://{your HDFS host}:9000/{your data directory} * outputDir * Optional key. It specifies the HDFS output direcotry for trial. Once the trial is completed (either succeed or fail), trial's stdout, stderr will be copied to this directory by NNI sdk automatically. The format should be something like hdfs://{your HDFS host}:9000/{your output directory} -Once complete to fill nni experiment config file and save (for example, save as exp_pai.yaml), then run the following command +Once complete to fill NNI experiment config file and save (for example, save as exp_pai.yml), then run the following command ``` -nnictl create --config exp_pai.yaml +nnictl create --config exp_pai.yml ``` to start the experiment in pai mode. NNI will create OpenPAI job for each trial, and the job name format is something like `nni_exp_{experiment_id}_trial_{trial_id}`. You can see the pai jobs created by NNI in your OpenPAI cluster's web portal, like: @@ -78,4 +78,4 @@ You can see there're three fils in output folder: stderr, stdout, and trial.log If you also want to save trial's other output into HDFS, like model files, you can use environment variable `NNI_OUTPUT_DIR` in your trial code to save your own output files, and NNI SDK will copy all the files in `NNI_OUTPUT_DIR` from trial's container to HDFS. -Any problems when using NNI in pai mode, plesae create issues on [NNI github repo](https://github.com/Microsoft/nni), or send mail to nni@microsoft.com +Any problems when using NNI in pai mode, plesae create issues on [NNI github repo](https://github.com/Microsoft/nni). diff --git a/docs/QuickStart.md b/docs/QuickStart.md index 4167a92d5b..c7d1cd355d 100644 --- a/docs/QuickStart.md +++ b/docs/QuickStart.md @@ -104,9 +104,9 @@ If you want to use NNI to automatically train your model and find the optimal hy *Implemented code directory: [mnist.py](../examples/trials/mnist/mnist.py)* -**Step 3**: Define a `config` file in yaml, which declare the `path` to search space and trial, also give `other information` such as tuning algorithm, max trial number and max runtime arguments. +**Step 3**: Define a `config` file in YAML, which declare the `path` to search space and trial, also give `other information` such as tuning algorithm, max trial number and max runtime arguments. -```yaml +```yml authorName: default experimentName: example_mnist trialConcurrency: 1 diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 3e96f38f44..41a23ebbf5 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -1,131 +1,163 @@ # ChangeLog ## Release 0.5.0 - 01/14/2019 + ### Major Features + #### New tuner and assessor supports - * Support [Metis tuner](./HowToChooseTuner.md#MetisTuner) as a new NNI tuner. Metis algorithm has been proofed to be well performed for **online** hyper-parameter tuning. - * Support [ENAS customized tuner](https://github.com/countif/enas_nni), a tuner contributed by github community user, is an algorithm for neural network search, it could learn neural network architecture via reinforcement learning and serve a better performance than NAS. - * Support [Curve fitting assessor](./HowToChooseTuner.md#Curvefitting) for early stop policy using learning curve extrapolation. - * Advanced Support of [Weight Sharing](./AdvancedNAS.md): Enable weight sharing for NAS tuners, currently through NFS. +* Support [Metis tuner](./HowToChooseTuner.md#MetisTuner) as a new NNI tuner. Metis algorithm has been proofed to be well performed for **online** hyper-parameter tuning. +* Support [ENAS customized tuner](https://github.com/countif/enas_nni), a tuner contributed by github community user, is an algorithm for neural network search, it could learn neural network architecture via reinforcement learning and serve a better performance than NAS. +* Support [Curve fitting assessor](./HowToChooseTuner.md#Curvefitting) for early stop policy using learning curve extrapolation. +* Advanced Support of [Weight Sharing](./AdvancedNAS.md): Enable weight sharing for NAS tuners, currently through NFS. #### Training Service Enhancement + * [FrameworkController Training service](./FrameworkControllerMode.md): Support run experiments using frameworkcontroller on kubernetes - * FrameworkController is a Controller on kubernetes that is general enough to run (distributed) jobs with various machine learning frameworks, such as tensorflow, pytorch, MXNet. - * NNI provides unified and simple specification for job definition. - * MNIST example for how to use FrameworkController. + * FrameworkController is a Controller on kubernetes that is general enough to run (distributed) jobs with various machine learning frameworks, such as tensorflow, pytorch, MXNet. + * NNI provides unified and simple specification for job definition. + * MNIST example for how to use FrameworkController. #### User Experience improvements - * A better trial logging support for NNI experiments in PAI, Kubeflow and FrameworkController mode: - * An improved logging architecture to send stdout/stderr of trials to NNI manager via Http post. NNI manager will store trial's stdout/stderr messages in local log file. - * Show the link for trial log file on WebUI. - * Support to show final result's all key-value pairs. + +* A better trial logging support for NNI experiments in PAI, Kubeflow and FrameworkController mode: + * An improved logging architecture to send stdout/stderr of trials to NNI manager via Http post. NNI manager will store trial's stdout/stderr messages in local log file. + * Show the link for trial log file on WebUI. +* Support to show final result's all key-value pairs. ## Release 0.4.1 - 12/14/2018 + ### Major Features + #### New tuner supports - * Support [network morphism](./HowToChooseTuner.md#NetworkMorphism) as a new tuner + +* Support [network morphism](./HowToChooseTuner.md#NetworkMorphism) as a new tuner #### Training Service improvements - * Migrate [Kubeflow training service](https://github.com/Microsoft/nni/blob/master/docs/KubeflowMode.md)'s dependency from kubectl CLI to [Kubernetes API](https://kubernetes.io/docs/concepts/overview/kubernetes-api/) client - * [Pytorch-operator](https://github.com/kubeflow/pytorch-operator) support for Kubeflow training service - * Improvement on local code files uploading to OpenPAI HDFS - * Fixed OpenPAI integration WebUI bug: WebUI doesn't show latest trial job status, which is caused by OpenPAI token expiration + +* Migrate [Kubeflow training service](https://github.com/Microsoft/nni/blob/master/docs/KubeflowMode.md)'s dependency from kubectl CLI to [Kubernetes API](https://kubernetes.io/docs/concepts/overview/kubernetes-api/) client +* [Pytorch-operator](https://github.com/kubeflow/pytorch-operator) support for Kubeflow training service +* Improvement on local code files uploading to OpenPAI HDFS +* Fixed OpenPAI integration WebUI bug: WebUI doesn't show latest trial job status, which is caused by OpenPAI token expiration #### NNICTL improvements - * Show version information both in nnictl and WebUI. You can run **nnictl -v** to show your current installed NNI version + +* Show version information both in nnictl and WebUI. You can run **nnictl -v** to show your current installed NNI version #### WebUI improvements - * Enable modify concurrency number during experiment - * Add feedback link to NNI github 'create issue' page - * Enable customize top 10 trials regarding to metric numbers (largest or smallest) - * Enable download logs for dispatcher & nnimanager - * Enable automatic scaling of axes for metric number - * Update annotation to support displaying real choice in searchspace + +* Enable modify concurrency number during experiment +* Add feedback link to NNI github 'create issue' page +* Enable customize top 10 trials regarding to metric numbers (largest or smallest) +* Enable download logs for dispatcher & nnimanager +* Enable automatic scaling of axes for metric number +* Update annotation to support displaying real choice in searchspace ### New examples - * [FashionMnist](https://github.com/Microsoft/nni/tree/master/examples/trials/network_morphism), work together with network morphism tuner - * [Distributed MNIST example](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-distributed-pytorch) written in PyTorch - - + +* [FashionMnist](https://github.com/Microsoft/nni/tree/master/examples/trials/network_morphism), work together with network morphism tuner +* [Distributed MNIST example](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-distributed-pytorch) written in PyTorch + ## Release 0.4 - 12/6/2018 ### Major Features - * [Kubeflow Training service](./KubeflowMode.md) - * Support tf-operator - * [Distributed trial example](../examples/trials/mnist-distributed/dist_mnist.py) on Kubeflow - * [Grid search tuner](../src/sdk/pynni/nni/README.md#Grid) - * [Hyperband tuner](../src/sdk/pynni/nni/README.md#Hyperband) - * Support launch NNI experiment on MAC - * WebUI - * UI support for hyperband tuner - * Remove tensorboard button - * Show experiment error message - * Show line numbers in search space and trial profile - * Support search a specific trial by trial number - * Show trial's hdfsLogPath - * Download experiment parameters + +* [Kubeflow Training service](./KubeflowMode.md) + * Support tf-operator + * [Distributed trial example](../examples/trials/mnist-distributed/dist_mnist.py) on Kubeflow +* [Grid search tuner](../src/sdk/pynni/nni/README.md#Grid) +* [Hyperband tuner](../src/sdk/pynni/nni/README.md#Hyperband) +* Support launch NNI experiment on MAC +* WebUI + * UI support for hyperband tuner + * Remove tensorboard button + * Show experiment error message + * Show line numbers in search space and trial profile + * Support search a specific trial by trial number + * Show trial's hdfsLogPath + * Download experiment parameters + ### Others - * Asynchronous dispatcher - * Docker file update, add pytorch library - * Refactor 'nnictl stop' process, send SIGTERM to nni manager process, rather than calling stop Rest API. - * OpenPAI training service bug fix - * Support NNI Manager IP configuration(nniManagerIp) in PAI cluster config file, to fix the issue that user’s machine has no eth0 device - * File number in codeDir is capped to 1000 now, to avoid user mistakenly fill root dir for codeDir - * Don’t print useless ‘metrics is empty’ log int PAI job’s stdout. Only print useful message once new metrics are recorded, to reduce confusion when user checks PAI trial’s output for debugging purpose - * Add timestamp at the beginning of each log entry in trial keeper. + +* Asynchronous dispatcher +* Docker file update, add pytorch library +* Refactor 'nnictl stop' process, send SIGTERM to nni manager process, rather than calling stop Rest API. +* OpenPAI training service bug fix + * Support NNI Manager IP configuration(nniManagerIp) in PAI cluster config file, to fix the issue that user’s machine has no eth0 device + * File number in codeDir is capped to 1000 now, to avoid user mistakenly fill root dir for codeDir + * Don’t print useless ‘metrics is empty’ log int PAI job’s stdout. Only print useful message once new metrics are recorded, to reduce confusion when user checks PAI trial’s output for debugging purpose + * Add timestamp at the beginning of each log entry in trial keeper. ## Release 0.3.0 - 11/2/2018 + ### NNICTL new features and updates -* Support running multiple experiments simultaneously. - Before v0.3, NNI only supports running single experiment once a time. After this realse, users are able to run multiple experiments simultaneously. Each experiment will require a unique port, the 1st experiment will be set to the default port as previous versions. You can specify a unique port for the rest experiments as below: +* Support running multiple experiments simultaneously. + + Before v0.3, NNI only supports running single experiment once a time. After this realse, users are able to run multiple experiments simultaneously. Each experiment will require a unique port, the 1st experiment will be set to the default port as previous versions. You can specify a unique port for the rest experiments as below: + + ```bash + nnictl create --port 8081 --config + ``` - ```nnictl create --port 8081 --config ``` * Support updating max trial number. - use ```nnictl update --help``` to learn more. Or refer to [NNICTL Spec](https://github.com/Microsoft/nni/blob/master/docs/NNICTLDOC.md) for the fully usage of NNICTL. + use `nnictl update --help` to learn more. Or refer to [NNICTL Spec](https://github.com/Microsoft/nni/blob/master/docs/NNICTLDOC.md) for the fully usage of NNICTL. ### API new features and updates + * **breaking change**: nn.get_parameters() is refactored to nni.get_next_parameter. All examples of prior releases can not run on v0.3, please clone nni repo to get new examples. If you had applied NNI to your own codes, please update the API accordingly. * New API **nni.get_sequence_id()**. - Each trial job is allocated a unique sequence number, which can be retrieved by nni.get_sequence_id() API. + Each trial job is allocated a unique sequence number, which can be retrieved by nni.get_sequence_id() API. + + ```bash + git clone -b v0.3 https://github.com/Microsoft/nni.git + ``` + +* **nni.report_final_result(result)** API supports more data types for result parameter. - ```git clone -b v0.3 https://github.com/Microsoft/nni.git``` -* **nni.report_final_result(result)** API supports more data types for result parameter. - It can be of following types: - * int - * float - * A python dict containing 'default' key, the value of 'default' key should be of type int or float. The dict can contain any other key value pairs. + It can be of following types: + * int + * float + * A python dict containing 'default' key, the value of 'default' key should be of type int or float. The dict can contain any other key value pairs. ### New tuner support + * **Batch Tuner** which iterates all parameter combination, can be used to submit batch trial jobs. ### New examples + * A NNI Docker image for public usage: - ```docker pull msranni/nni:latest``` + + ```bash + docker pull msranni/nni:latest + ``` + * New trial example: [NNI Sklearn Example](https://github.com/Microsoft/nni/tree/master/examples/trials/sklearn) * New competition example: [Kaggle Competition TGS Salt Example](https://github.com/Microsoft/nni/tree/master/examples/trials/kaggle-tgs-salt) - + ### Others + * UI refactoring, refer to [WebUI doc](WebUI.md) for how to work with the new UI. * Continuous Integration: NNI had switched to Azure pipelines * [Known Issues in release 0.3.0](https://github.com/Microsoft/nni/labels/nni030knownissues). - ## Release 0.2.0 - 9/29/2018 + ### Major Features - * Support [OpenPAI](https://github.com/Microsoft/pai) (aka pai) Training Service (See [here](./PAIMode.md) for instructions about how to submit NNI job in pai mode) - * Support training services on pai mode. NNI trials will be scheduled to run on OpenPAI cluster - * NNI trial's output (including logs and model file) will be copied to OpenPAI HDFS for further debugging and checking - * Support [SMAC](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) tuner (See [here](HowToChooseTuner.md) for instructions about how to use SMAC tuner) - * [SMAC](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) is based on Sequential Model-Based Optimization (SMBO). It adapts the most prominent previously used model class (Gaussian stochastic process models) and introduces the model class of random forests to SMBO to handle categorical parameters. The SMAC supported by NNI is a wrapper on [SMAC3](https://github.com/automl/SMAC3) - * Support NNI installation on [conda](https://conda.io/docs/index.html) and python virtual environment - * Others - * Update ga squad example and related documentation - * WebUI UX small enhancement and bug fix + +* Support [OpenPAI](https://github.com/Microsoft/pai) (aka pai) Training Service (See [here](./PAIMode.md) for instructions about how to submit NNI job in pai mode) + * Support training services on pai mode. NNI trials will be scheduled to run on OpenPAI cluster + * NNI trial's output (including logs and model file) will be copied to OpenPAI HDFS for further debugging and checking +* Support [SMAC](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) tuner (See [here](HowToChooseTuner.md) for instructions about how to use SMAC tuner) + * [SMAC](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) is based on Sequential Model-Based Optimization (SMBO). It adapts the most prominent previously used model class (Gaussian stochastic process models) and introduces the model class of random forests to SMBO to handle categorical parameters. The SMAC supported by NNI is a wrapper on [SMAC3](https://github.com/automl/SMAC3) +* Support NNI installation on [conda](https://conda.io/docs/index.html) and python virtual environment +* Others + * Update ga squad example and related documentation + * WebUI UX small enhancement and bug fix ### Known Issues + [Known Issues in release 0.2.0](https://github.com/Microsoft/nni/labels/nni020knownissues). ## Release 0.1.0 - 9/10/2018 (initial release) @@ -133,21 +165,23 @@ Initial release of Neural Network Intelligence (NNI). ### Major Features - * Installation and Deployment - * Support pip install and source codes install - * Support training services on local mode(including Multi-GPU mode) as well as multi-machines mode - * Tuners, Assessors and Trial - * Support AutoML algorithms including: hyperopt_tpe, hyperopt_annealing, hyperopt_random, and evolution_tuner - * Support assessor(early stop) algorithms including: medianstop algorithm - * Provide Python API for user defined tuners and assessors - * Provide Python API for user to wrap trial code as NNI deployable codes - * Experiments - * Provide a command line toolkit 'nnictl' for experiments management - * Provide a WebUI for viewing experiments details and managing experiments - * Continuous Integration - * Support CI by providing out-of-box integration with [travis-ci](https://github.com/travis-ci) on ubuntu - * Others - * Support simple GPU job scheduling + +* Installation and Deployment + * Support pip install and source codes install + * Support training services on local mode(including Multi-GPU mode) as well as multi-machines mode +* Tuners, Assessors and Trial + * Support AutoML algorithms including: hyperopt_tpe, hyperopt_annealing, hyperopt_random, and evolution_tuner + * Support assessor(early stop) algorithms including: medianstop algorithm + * Provide Python API for user defined tuners and assessors + * Provide Python API for user to wrap trial code as NNI deployable codes +* Experiments + * Provide a command line toolkit 'nnictl' for experiments management + * Provide a WebUI for viewing experiments details and managing experiments +* Continuous Integration + * Support CI by providing out-of-box integration with [travis-ci](https://github.com/travis-ci) on ubuntu +* Others + * Support simple GPU job scheduling ### Known Issues + [Known Issues in release 0.1.0](https://github.com/Microsoft/nni/labels/nni010knownissues). diff --git a/docs/RemoteMachineMode.md b/docs/RemoteMachineMode.md index 2099d7a0e8..074b488f9d 100644 --- a/docs/RemoteMachineMode.md +++ b/docs/RemoteMachineMode.md @@ -20,7 +20,7 @@ Install NNI on another machine which has network accessibility to those three ma We use `examples/trials/mnist-annotation` as an example here. `cat ~/nni/examples/trials/mnist-annotation/config_remote.yml` to see the detailed configuration file: -```yaml +```yml authorName: default experimentName: example_mnist trialConcurrency: 1 diff --git a/docs/SQuAD_evolution_examples.md b/docs/SQuAD_evolution_examples.md index a3406f9f4a..325e002172 100644 --- a/docs/SQuAD_evolution_examples.md +++ b/docs/SQuAD_evolution_examples.md @@ -84,7 +84,7 @@ nnictl create --config ~/nni/examples/trials/ga_squad/config.yml Due to the memory limitation of upload, we only upload the source code and complete the data download and training on OpenPAI. This experiment requires sufficient memory that `memoryMB >= 32G`, and the training may last for several hours. ### 3.1 Update configuration -Modify `nni/examples/trials/ga_squad/config_pai.yaml`, here is the default configuration: +Modify `nni/examples/trials/ga_squad/config_pai.yml`, here is the default configuration: ``` authorName: default diff --git a/docs/StartExperiment.md b/docs/StartExperiment.md index 1e4789cfcd..66d22d9215 100644 --- a/docs/StartExperiment.md +++ b/docs/StartExperiment.md @@ -1,7 +1,7 @@ How to start an experiment === ## 1.Introduce -There are few steps to start an new experiment of nni, here are the process. +There are few steps to start an new experiment of NNI, here are the process. @@ -9,17 +9,17 @@ There are few steps to start an new experiment of nni, here are the process. ### 2.1 Check environment 1. Check if there is an old experiment running 2. Check if the port of restfurl server is free. -3. Validate the content of config yaml file. +3. Validate the content of config YAML file. 4. Prepare a config file to to record the information of this experiment. ### 2.2 Start restful server -Start an restful server process to manage nni experiment, the default port is 8080. +Start an restful server process to manage NNI experiment, the default port is 8080. ### 2.3 Check restful server Check whether restful server process is successfully started and could get a response when send message to restful server. ### 2.4 Set experiment config -Call restful server to set experiment config before starting an experiment, experiment config includes the config values in config yaml file. +Call restful server to set experiment config before starting an experiment, experiment config includes the config values in config YAML file. ### 2.5 Check experiment cofig Check the response content of restful server, if the status code of response is 200, the config is successfully set. diff --git a/docs/Trials.md b/docs/Trials.md index c6182e6c3c..b79816fbdf 100644 --- a/docs/Trials.md +++ b/docs/Trials.md @@ -120,7 +120,7 @@ For more information about annotation syntax and its usage, please refer to [Ann ### Step 2 - Enable NNI Annotation -In the yaml configure file, you need to set *useAnnotation* to true to enable NNI annotation: +In the YAML configure file, you need to set *useAnnotation* to true to enable NNI annotation: ``` useAnnotation: true ``` diff --git a/docs/howto_1_WriteTrial.md b/docs/howto_1_WriteTrial.md index 23d160c3ef..f8f0282d30 100644 --- a/docs/howto_1_WriteTrial.md +++ b/docs/howto_1_WriteTrial.md @@ -120,11 +120,10 @@ with tf.Session() as sess: >> >>Please refer to [Annotation README](../tools/nni_annotation/README.md) for more information about annotation syntax and its usage. - >Step 2 - Enable NNI Annotation -In the yaml configure file, you need to set *useAnnotation* to true to enable NNI annotation: +In the YAML configure file, you need to set *useAnnotation* to true to enable NNI annotation: -```yaml +```yml useAnnotation: true ``` diff --git a/docs/howto_2_CustomizedTuner.md b/docs/howto_2_CustomizedTuner.md index f24e21b6ac..b8f7a5808c 100644 --- a/docs/howto_2_CustomizedTuner.md +++ b/docs/howto_2_CustomizedTuner.md @@ -6,7 +6,7 @@ So, if user want to implement a customized Tuner, she/he only need to: 1. Inherit a tuner of a base Tuner class 1. Implement receive_trial_result and generate_parameter function -1. Configure your customized tuner in experiment yaml config file +1. Configure your customized tuner in experiment YAML config file Here is an example: @@ -83,11 +83,11 @@ _fd = open(os.path.join(_pwd, 'data.txt'), 'r') This is because your tuner is not executed in the directory of your tuner (i.e., `pwd` is not the directory of your own tuner). -**3) Configure your customized tuner in experiment yaml config file** +**3) Configure your customized tuner in experiment YAML config file** NNI needs to locate your customized tuner class and instantiate the class, so you need to specify the location of the customized tuner class and pass literal values as parameters to the \_\_init__ constructor. -```yaml +```yml tuner: codeDir: /home/abc/mytuner classFileName: my_customized_tuner.py diff --git a/docs/howto_3_CustomizedAdvisor.md b/docs/howto_3_CustomizedAdvisor.md new file mode 100644 index 0000000000..12b2d9bf33 --- /dev/null +++ b/docs/howto_3_CustomizedAdvisor.md @@ -0,0 +1,40 @@ +# **How To** - Customize Your Own Advisor + +*Advisor targets the scenario that the automl algorithm wants the methods of both tuner and assessor. Advisor is similar to tuner on that it receives trial parameters request, final results, and generate trial parameters. Also, it is similar to assessor on that it receives intermediate results, trial's end state, and could send trial kill command. Note that, if you use Advisor, tuner and assessor are not allowed to be used at the same time.* + +So, if user want to implement a customized Advisor, she/he only need to: + +1. Define an Advisor inheriting from the MsgDispatcherBase class +1. Implement the methods with prefix `handle_` except `handle_request` +1. Configure your customized Advisor in experiment YAML config file + +Here is an example: + +**1) Define an Advisor inheriting from the MsgDispatcherBase class** + +```python +from nni.msg_dispatcher_base import MsgDispatcherBase + +class CustomizedAdvisor(MsgDispatcherBase): + def __init__(self, ...): + ... +``` + +**2) Implement the methods with prefix `handle_` except `handle_request`** + +Please refer to the implementation of Hyperband ([src/sdk/pynni/nni/hyperband_advisor/hyperband_advisor.py](../src/sdk/pynni/nni/hyperband_advisor/hyperband_advisor.py)) for how to implement the methods. + +**3) Configure your customized Advisor in experiment YAML config file** + +Similar to tuner and assessor. NNI needs to locate your customized Advisor class and instantiate the class, so you need to specify the location of the customized Advisor class and pass literal values as parameters to the \_\_init__ constructor. + +```yml +advisor: + codeDir: /home/abc/myadvisor + classFileName: my_customized_advisor.py + className: CustomizedAdvisor + # Any parameter need to pass to your advisor class __init__ constructor + # can be specified in this optional classArgs field, for example + classArgs: + arg1: value1 +``` diff --git a/docs/mnist_examples.md b/docs/mnist_examples.md index 3ee443b948..916c32f153 100644 --- a/docs/mnist_examples.md +++ b/docs/mnist_examples.md @@ -14,7 +14,7 @@ CNN MNIST classifier for deep learning is similar to `hello world` for programmi **MNIST with NNI API** -This is a simple network which has two convolutional layers, two pooling layers and a fully connected layer. We tune hyperparameters, such as dropout rate, convolution size, hidden size, etc. It can be tuned with most NNI built-in tuners, such as TPE, SMAC, Random. We also provide an exmaple yaml file which enables assessor. +This is a simple network which has two convolutional layers, two pooling layers and a fully connected layer. We tune hyperparameters, such as dropout rate, convolution size, hidden size, etc. It can be tuned with most NNI built-in tuners, such as TPE, SMAC, Random. We also provide an exmaple YAML file which enables assessor. `code directory: examples/trials/mnist/` diff --git a/docs/multiPhase.md b/docs/multiPhase.md index 86aadca699..5ee03c663a 100644 --- a/docs/multiPhase.md +++ b/docs/multiPhase.md @@ -1,6 +1,7 @@ ## Create multi-phase experiment Typically each trial job gets single set of configuration (e.g. hyper parameters) from tuner and do some kind of experiment, let's say train a model with that hyper parameter and reports its result to tuner. Sometimes you may want to train multiple models within one trial job to share information between models or saving system resource by creating less trial jobs, for example: + 1. Train multiple models sequentially in one trial job, so that later models can leverage the weights or other information of prior models and may use different hyper parameters. 2. Train large amount of models on limited system resource, combine multiple models together to save system resource to create large amount of trial jobs. 3. Any other scenario that you would like to train multiple models with different hyper parameters in one trial job, be aware that if you allocate multiple GPUs to a trial job and you train multiple models concurrently within on trial job, you need to allocate GPU resource properly by your trial code. @@ -11,33 +12,32 @@ Multi-phase experiments refer to experiments whose trial jobs request multiple h To use multi-phase experiment, please follow below steps: -1. Implement nni.multi_phase.MultiPhaseTuner. For example, this [ENAS tuner](https://github.com/countif/enas_nni/blob/master/nni/examples/tuners/enas/nni_controller_ptb.py) is a multi-phase Tuner which implements nni.multi_phase.MultiPhaseTuner. While implementing your MultiPhaseTuner, you may want to use the trial_job_id parameter of generate_parameters method to generate hyper parameters for each trial job. - -2. Set ```multiPhase``` field to ```true```, and configure your tuner implemented in step 1 as customized tuner in configuration file, for example: - -```yml -... -multiPhase: true -tuner: - codeDir: tuners/enas - classFileName: nni_controller_ptb.py - className: ENASTuner - classArgs: - say_hello: "hello" -... -``` - - -3. Invoke nni.get_next_parameter() API for multiple times as needed in a trial, for example: - -```python -for i in range(5): - # get parameter from tuner - tuner_param = nni.get_next_parameter() - - # consume the params - # ... - # report final result somewhere for the parameter retrieved above - nni.report_final_result() - # ... -``` +1. Implement nni.multi_phase.MultiPhaseTuner. For example, this [ENAS tuner](https://github.com/countif/enas_nni/blob/master/nni/examples/tuners/enas/nni_controller_ptb.py) is a multi-phase Tuner which implements nni.multi_phase.MultiPhaseTuner. While implementing your MultiPhaseTuner, you may want to use the trial_job_id parameter of generate_parameters method to generate hyper parameters for each trial job. + +1. Set `multiPhase` field to `true`, and configure your tuner implemented in step 1 as customized tuner in configuration file, for example: + + ```yml + ... + multiPhase: true + tuner: + codeDir: tuners/enas + classFileName: nni_controller_ptb.py + className: ENASTuner + classArgs: + say_hello: "hello" + ... + ``` + +1. Invoke nni.get_next_parameter() API for multiple times as needed in a trial, for example: + + ```python + for i in range(5): + # get parameter from tuner + tuner_param = nni.get_next_parameter() + + # consume the params + # ... + # report final result somewhere for the parameter retrieved above + nni.report_final_result() + # ... + ``` diff --git a/docs/tutorial_1_CR_exp_local_api.md b/docs/tutorial_1_CR_exp_local_api.md index 9fe92ba0d3..ced6314904 100644 --- a/docs/tutorial_1_CR_exp_local_api.md +++ b/docs/tutorial_1_CR_exp_local_api.md @@ -73,7 +73,7 @@ To run an experiment in NNI, you only needed: * Provide a runnable trial * Provide or choose a tuner -* Provide a yaml experiment configure file +* Provide a YAML experiment configure file * (optional) Provide or choose an assessor **Prepare trial**: @@ -83,7 +83,7 @@ Let's use a simple trial example, e.g. mnist, provided by NNI. After you install python ~/nni/examples/trials/mnist-annotation/mnist.py -This command will be filled in the yaml configure file below. Please refer to [here](./howto_1_WriteTrial.md) for how to write your own trial. +This command will be filled in the YAML configure file below. Please refer to [here](./howto_1_WriteTrial.md) for how to write your own trial. **Prepare tuner**: NNI supports several popular automl algorithms, including Random Search, Tree of Parzen Estimators (TPE), Evolution algorithm etc. Users can write their own tuner (refer to [here](./howto_2_CustomizedTuner.md)), but for simplicity, here we choose a tuner provided by NNI as below: @@ -94,7 +94,7 @@ This command will be filled in the yaml configure file below. Please refer to [h *builtinTunerName* is used to specify a tuner in NNI, *classArgs* are the arguments pass to the tuner (the spec of builtin tuners can be found [here]()), *optimization_mode* is to indicate whether you want to maximize or minimize your trial's result. -**Prepare configure file**: Since you have already known which trial code you are going to run and which tuner you are going to use, it is time to prepare the yaml configure file. NNI provides a demo configure file for each trial example, `cat ~/nni/examples/trials/mnist-annotation/config.yml` to see it. Its content is basically shown below: +**Prepare configure file**: Since you have already known which trial code you are going to run and which tuner you are going to use, it is time to prepare the YAML configure file. NNI provides a demo configure file for each trial example, `cat ~/nni/examples/trials/mnist-annotation/config.yml` to see it. Its content is basically shown below: ``` authorName: your_name diff --git a/docs/tutorial_3_tryTunersAndAssessors.md b/docs/tutorial_3_tryTunersAndAssessors.md index 16ad80e29a..82fa0ef8c8 100644 --- a/docs/tutorial_3_tryTunersAndAssessors.md +++ b/docs/tutorial_3_tryTunersAndAssessors.md @@ -3,7 +3,7 @@ NNI provides an easy to adopt approach to set up parameter tuning algorithms as well as early stop policies, we call them **Tuners** and **Assessors**. **Tuner** specifies the algorithm you use to generate hyperparameter sets for each trial. In NNI, we support two approaches to set the tuner. -1. Directly use tuner provided by nni sdk +1. Directly use tuner provided by NNI sdk required fields: builtinTunerName and classArgs. @@ -18,7 +18,7 @@ NNI provides an easy to adopt approach to set up parameter tuning algorithms as **Assessor** specifies the algorithm you use to apply early stop policy. In NNI, there are two approaches to set the assessor. -1. Directly use assessor provided by nni sdk +1. Directly use assessor provided by NNI sdk required fields: builtinAssessorName and classArgs. diff --git a/examples/trials/ga_squad/README.md b/examples/trials/ga_squad/README.md index 3b7d021759..b05952c4fa 100644 --- a/examples/trials/ga_squad/README.md +++ b/examples/trials/ga_squad/README.md @@ -88,7 +88,7 @@ nnictl create --config ~/nni/examples/trials/ga_squad/config.yml Due to the memory limitation of upload, we only upload the source code and complete the data download and training on OpenPAI. This experiment requires sufficient memory that `memoryMB >= 32G`, and the training may last for several hours. ### Update configuration -Modify `nni/examples/trials/ga_squad/config_pai.yaml`, here is the default configuration: +Modify `nni/examples/trials/ga_squad/config_pai.yml`, here is the default configuration: ``` authorName: default @@ -114,11 +114,11 @@ trial: gpuNum: 0 cpuNum: 1 memoryMB: 32869 - #The docker image to run nni job on pai + #The docker image to run NNI job on pai image: msranni/nni:latest #The hdfs directory to store data on pai, format 'hdfs://host:port/directory' dataDir: hdfs://10.10.10.10:9000/username/nni - #The hdfs directory to store output data generated by nni, format 'hdfs://host:port/directory' + #The hdfs directory to store output data generated by NNI, format 'hdfs://host:port/directory' outputDir: hdfs://10.10.10.10:9000/username/nni paiConfig: #The username to login pai diff --git a/examples/trials/network_morphism/README.md b/examples/trials/network_morphism/README.md index c5dc45c991..9239bc1910 100644 --- a/examples/trials/network_morphism/README.md +++ b/examples/trials/network_morphism/README.md @@ -18,9 +18,9 @@ pip install -r requirements.txt ### 3. Update configuration -Modify `examples/trials/network_morphism/cifar10/config.yaml` to fit your own task, note that searchSpacePath is not required in our configuration. Here is the default configuration: +Modify `examples/trials/network_morphism/cifar10/config.yml` to fit your own task, note that searchSpacePath is not required in our configuration. Here is the default configuration: -```yaml +```yml authorName: default experimentName: example_cifar10-network-morphism trialConcurrency: 1 @@ -79,16 +79,16 @@ net = build_graph_from_json(RCV_CONFIG) # training procedure # .... -# report the final accuracy to nni +# report the final accuracy to NNI nni.report_final_result(best_acc) ``` ### 5. Submit this job ```bash -# You can use nni command tool "nnictl" to create the a job which submit to the nni -# finally you successfully commit a Network Morphism Job to nni -nnictl create --config config.yaml +# You can use NNI command tool "nnictl" to create the a job which submit to the NNI +# finally you successfully commit a Network Morphism Job to NNI +nnictl create --config config.yml ``` ## Trial Examples @@ -99,10 +99,10 @@ The trial has some examples which can guide you which located in `examples/trial `Fashion-MNIST` is a dataset of [Zalando](https://jobs.zalando.com/tech/)'s article images—consisting of a training set of 60,000 examples and a test set of 10,000 examples. Each example is a 28x28 grayscale image, associated with a label from 10 classes. It is a modern image classification dataset widely used to replacing MNIST as a baseline dataset, because the dataset MNIST is too easy and overused. -There are two examples, [FashionMNIST-keras.py](./FashionMNIST/FashionMNIST_keras.py) and [FashionMNIST-pytorch.py](./FashionMNIST/FashionMNIST_pytorch.py). Attention, you should change the `input_width` to 28 and `input_channel` to 1 in `config.yaml ` for this dataset. +There are two examples, [FashionMNIST-keras.py](./FashionMNIST/FashionMNIST_keras.py) and [FashionMNIST-pytorch.py](./FashionMNIST/FashionMNIST_pytorch.py). Attention, you should change the `input_width` to 28 and `input_channel` to 1 in `config.yml` for this dataset. ### Cifar10 The `CIFAR-10` dataset [Canadian Institute For Advanced Research](https://www.cifar.ca/) is a collection of images that are commonly used to train machine learning and computer vision algorithms. It is one of the most widely used datasets for machine learning research. The CIFAR-10 dataset contains 60,000 32x32 color images in 10 different classes. -There are two examples, [cifar10-keras.py](./cifar10/cifar10_keras.py) and [cifar10-pytorch.py](./cifar10/cifar10_pytorch.py). The value `input_width` is 32 and the value `input_channel` is 3 in `config.yaml ` for this dataset. +There are two examples, [cifar10-keras.py](./cifar10/cifar10_keras.py) and [cifar10-pytorch.py](./cifar10/cifar10_pytorch.py). The value `input_width` is 32 and the value `input_channel` is 3 in `config.yml` for this dataset. diff --git a/examples/tuners/enas_nni/README.md b/examples/tuners/enas_nni/README.md index e3ec0855f0..ed6c4f4401 100644 --- a/examples/tuners/enas_nni/README.md +++ b/examples/tuners/enas_nni/README.md @@ -1,6 +1,6 @@ **Run ENAS in NNI** === - Now we have an enas example [enas-nni](https://github.com/countif/enas_nni) run in nni from our contributors. + Now we have an enas example [enas-nni](https://github.com/countif/enas_nni) run in NNI from our contributors. Thanks our lovely contributors. And welcome more and more people to join us! diff --git a/src/sdk/pynni/nni/curvefitting_assessor/README.md b/src/sdk/pynni/nni/curvefitting_assessor/README.md index 35a4d6fede..29daafe425 100644 --- a/src/sdk/pynni/nni/curvefitting_assessor/README.md +++ b/src/sdk/pynni/nni/curvefitting_assessor/README.md @@ -37,7 +37,7 @@ The figure below is the result of our algorithm on MNIST trial history data, whe

    ## 2. Usage -To use Curve Fitting Assessor, you should add the following spec in your experiment's yaml config file: +To use Curve Fitting Assessor, you should add the following spec in your experiment's YAML config file: ``` assessor: diff --git a/src/sdk/pynni/nni/hyperband_advisor/README.md b/src/sdk/pynni/nni/hyperband_advisor/README.md index 72f47fcecd..6e14b1e83c 100644 --- a/src/sdk/pynni/nni/hyperband_advisor/README.md +++ b/src/sdk/pynni/nni/hyperband_advisor/README.md @@ -1,4 +1,4 @@ -Hyperband on nni +Hyperband on NNI === ## 1. Introduction @@ -10,7 +10,7 @@ Frist, this is an example of how to write an automl algorithm based on MsgDispat Second, this implementation fully leverages Hyperband's internal parallelism. More specifically, the next bucket is not started strictly after the current bucket, instead, it starts when there is available resource. ## 3. Usage -To use Hyperband, you should add the following spec in your experiment's yaml config file: +To use Hyperband, you should add the following spec in your experiment's yml config file: ``` advisor: diff --git a/src/sdk/pynni/nni/networkmorphism_tuner/README.md b/src/sdk/pynni/nni/networkmorphism_tuner/README.md index 5cf64b0c13..82457f0993 100644 --- a/src/sdk/pynni/nni/networkmorphism_tuner/README.md +++ b/src/sdk/pynni/nni/networkmorphism_tuner/README.md @@ -10,7 +10,7 @@ If you want to know about network morphism trial usage, please check [Readme.md] To use Network Morphism, you should modify the following spec in your `config.yml` file: -```yaml +```yml tuner: #choice: NetworkMorphism builtinTunerName: NetworkMorphism @@ -50,7 +50,7 @@ net = build_graph_from_json(RCV_CONFIG) # training procedure # .... -# report the final accuracy to nni +# report the final accuracy to NNI nni.report_final_result(best_acc) ``` diff --git a/src/sdk/pynni/nni/smac_tuner/README.md b/src/sdk/pynni/nni/smac_tuner/README.md index a1a8b37190..f6ec7ff4fd 100644 --- a/src/sdk/pynni/nni/smac_tuner/README.md +++ b/src/sdk/pynni/nni/smac_tuner/README.md @@ -1 +1 @@ -# Integration doc: SMAC on nni \ No newline at end of file +# Integration doc: SMAC on NNI \ No newline at end of file From ac255b5f2dae6dbffd7d2445608d9a33383d39cc Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Tue, 29 Jan 2019 13:50:03 +0800 Subject: [PATCH 05/22] Doc fix0 (#677) * fix doc titles * fix doc bug --- docs/Contribution.rst | 2 +- docs/Customize_Assessor.md | 2 -- docs/Overview.md | 4 +--- docs/QuickStart.md | 4 ++-- docs/index.rst | 2 +- docs/tuners.rst | 3 --- 6 files changed, 5 insertions(+), 12 deletions(-) diff --git a/docs/Contribution.rst b/docs/Contribution.rst index ced890d516..1e17b33e2f 100644 --- a/docs/Contribution.rst +++ b/docs/Contribution.rst @@ -1,5 +1,5 @@ ############################### -Contribution to NNI +Contribute to NNI ############################### .. toctree:: diff --git a/docs/Customize_Assessor.md b/docs/Customize_Assessor.md index 43247aba5c..dfb001ff2a 100644 --- a/docs/Customize_Assessor.md +++ b/docs/Customize_Assessor.md @@ -1,7 +1,5 @@ # Customize Assessor -## Customize Assessor - NNI also support building an assessor by yourself to adjust your tuning demand. If you want to implement a customized Assessor, there are three things for you to do: diff --git a/docs/Overview.md b/docs/Overview.md index dbfef6bc02..b09c678b3a 100644 --- a/docs/Overview.md +++ b/docs/Overview.md @@ -56,6 +56,4 @@ More details about how to run an experiment, please refer to [Get Started](Quick * [How to run an experiment on local?](tutorial_1_CR_exp_local_api.md) * [How to run an experiment on multiple machines?](tutorial_2_RemoteMachineMode.md) * [How to run an experiment on OpenPAI?](PAIMode.md) -* [Examples](mnist_examples.md) - -[How to do trouble shooting when using NNI?]: <> () \ No newline at end of file +* [Examples](mnist_examples.md) \ No newline at end of file diff --git a/docs/QuickStart.md b/docs/QuickStart.md index c7d1cd355d..5cb9b22d2c 100644 --- a/docs/QuickStart.md +++ b/docs/QuickStart.md @@ -177,7 +177,7 @@ The Web UI urls are: [Your IP]:8080 Open the `Web UI url`(In this information is: `[Your IP]:8080`) in your browser, you can view detail information of the experiment and all the submitted trial jobs as shown below. -### View summary page +#### View summary page Click the tab "Overview". @@ -189,7 +189,7 @@ Top 10 trials will be listed in the Overview page, you can browse all the trials ![](./img/QuickStart2.png) -### View trials detail page +#### View trials detail page Click the tab "Default Metric" to see the point graph of all trials. Hover to see its specific default metric and search space message. diff --git a/docs/index.rst b/docs/index.rst index 7ec897d3b2..ebf7f6dd42 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -9,7 +9,7 @@ Contents .. toctree:: :caption: Table of Contents :maxdepth: 2 - :glob: + :titlesonly: Overview GetStarted diff --git a/docs/tuners.rst b/docs/tuners.rst index 67e16dadf1..f4be4e5a72 100644 --- a/docs/tuners.rst +++ b/docs/tuners.rst @@ -2,9 +2,6 @@ Tuners ################# -Overview ------------------ - NNI provides an easy way to adopt an approach to set up parameter tuning algorithms, we call them **Tuner**. Tuner receives the result from `Trial` as a matrix to evaluate the performance of a specific parameters/architecture configures. And tuner sends next hyper-parameter or architecture configure to Trial. From 2f01a4cdfc0fc698d0235dd040d497611da0e263 Mon Sep 17 00:00:00 2001 From: chicm-ms <38930155+chicm-ms@users.noreply.github.com> Date: Tue, 29 Jan 2019 14:28:26 +0800 Subject: [PATCH 06/22] Fix broken pipe v0.5.1 (#679) * Fix broken pipe error * updates --- azure-pipelines.yml | 2 +- src/sdk/pynni/nni/common.py | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 4312742be9..74f3034097 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -33,7 +33,7 @@ jobs: displayName: 'Built-in tuners / assessors tests' - script: | cd test - PATH=$HOME/.local/bin:$PATH python3 config_test.py --ts local + PATH=$HOME/.local/bin:$PATH python3 config_test.py --ts local --local_gpu displayName: 'Examples and advanced features tests on local machine' - script: | cd test diff --git a/src/sdk/pynni/nni/common.py b/src/sdk/pynni/nni/common.py index 946571bd8c..03fd870c31 100644 --- a/src/sdk/pynni/nni/common.py +++ b/src/sdk/pynni/nni/common.py @@ -44,13 +44,10 @@ def _load_env_args(): class _LoggerFileWrapper(TextIOBase): def __init__(self, logger_file): self.file = logger_file - self.orig_stdout = sys.stdout def write(self, s): if s != '\n': time = datetime.now().strftime(_time_format) - self.orig_stdout.write(s + '\n') - self.orig_stdout.flush() self.file.write('[{}] PRINT '.format(time) + s + '\n') self.file.flush() return len(s) From 83684388fd1efc433e6d64207a24e451e6f4697e Mon Sep 17 00:00:00 2001 From: Chi Song Date: Tue, 29 Jan 2019 14:29:13 +0800 Subject: [PATCH 07/22] fix table of NNICTLDOC (#678) * fix table of NNICTLDOC --- docs/NNICTL.rst | 630 --------------------------------------------- docs/NNICTLDOC.md | 146 +++++------ docs/Reference.rst | 2 +- 3 files changed, 74 insertions(+), 704 deletions(-) delete mode 100644 docs/NNICTL.rst diff --git a/docs/NNICTL.rst b/docs/NNICTL.rst deleted file mode 100644 index c53b6e4a9b..0000000000 --- a/docs/NNICTL.rst +++ /dev/null @@ -1,630 +0,0 @@ -.. role:: raw-html-m2r(raw) - :format: html - - -nnictl -====== - -Introduction ------------- - -**nnictl** is a command line tool, which can be used to control experiments, such as start/stop/resume an experiment, start/stop NNIBoard, etc. - -Commands --------- - -nnictl support commands: - - -* `nnictl create <#create>`_ -* `nnictl resume <#resume>`_ -* `nnictl stop <#stop>`_ -* `nnictl update <#update>`_ -* `nnictl trial <#trial>`_ -* `nnictl top <#top>`_ -* `nnictl experiment <#experiment>`_ -* `nnictl config <#config>`_ -* `nnictl log <#log>`_ -* `nnictl webui <#webui>`_ -* `nnictl tensorboard <#tensorboard>`_ -* `nnictl package <#package>`_ - -Manage an experiment -^^^^^^^^^^^^^^^^^^^^ - -:raw-html-m2r:`` - - -* - **nnictl create** - - - * - Description - - You can use this command to create a new experiment, using the configuration specified in config file. - After this command is successfully done, the context will be set as this experiment, - which means the following command you issued is associated with this experiment, - unless you explicitly changes the context(not supported yet). - - - * - Usage - - .. code-block:: bash - - nnictl create [OPTIONS] - - - * - Options: - - +-------------------+-----------+-----------+-------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+=====================================+ - | --config, -c | True | |yaml configure file of the experiment| - +-------------------+-----------+-----------+-------------------------------------+ - | --port, -p | False | |the port of restful server | - +-------------------+-----------+-----------+-------------------------------------+ - :raw-html-m2r:`` - -* - **nnictl resume** - - - * - Description - - You can use this command to resume a stopped experiment. - - * - Usage - - .. code-block:: bash - - nnictl resume [OPTIONS] - - * - Options: - - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |The id of the experiment you want to resume | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --port, -p | False | |Rest port of the experiment you want to resume | - +-------------------+-----------+-----------+-----------------------------------------------+ - - -:raw-html-m2r:`` - - -* - **nnictl stop** - - - * - Description - - You can use this command to stop a running experiment or multiple experiments. - - * - Usage - - .. code-block:: bash - - nnictl stop [id] - - * - Detail - - 1.If there is an id specified, and the id matches the running experiment, nnictl will stop the corresponding experiment, or will print error message. - 2.If there is no id specified, and there is an experiment running, stop the running experiment, or print error message. - 3.If the id ends with *, nnictl will stop all experiments whose ids matchs the regular. - 4.If the id does not exist but match the prefix of an experiment id, nnictl will stop the matched experiment. - 5.If the id does not exist but match multiple prefix of the experiment ids, nnictl will give id information. - 6.Users could use 'nnictl stop all' to stop all experiments - - :raw-html-m2r:`` - -* - **nnictl update** - - - * - **nnictl update searchspace** - - - * - Description - - You can use this command to update an experiment's search space. - - * - Usage - - .. code-block:: bash - - nnictl update searchspace [OPTIONS] - - * - Options: - - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |ID of the experiment you want to set | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --filename, -f | True | |the file storing your new search space | - +-------------------+-----------+-----------+-----------------------------------------------+ - - - * - **nnictl update concurrency** - - - * - Description - - You can use this command to update an experiment's concurrency. - - * - Usage - - .. code-block:: bash - - nnictl update concurrency [OPTIONS] - - - * - Options: - - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |ID of the experiment you want to set | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --value, -v | True | |the number of allowed concurrent trials | - +-------------------+-----------+-----------+-----------------------------------------------+ - - * - **nnictl update duration** - - - * - Description - - You can use this command to update an experiment's concurrency. - - * - Usage - - .. code-block:: bash - - nnictl update duration [OPTIONS] - - * - Options: - - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |ID of the experiment you want to set | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --value, -v | True | |the experiment duration will be NUMBER seconds.| - | | | |SUFFIX may be 's' for seconds (the default), | - | | | |'m' for minutes, 'h' for hours or 'd' for days.| - +-------------------+-----------+-----------+-----------------------------------------------+ - - - * - **nnictl update trialnum** - - - * - Description - - You can use this command to update an experiment's maxtrialnum. - - * - Usage - - .. code-block:: bash - - nnictl update trialnum [OPTIONS] - - * - Options: - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |ID of the experiment you want to set | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --value, -v | True | |the new number of maxtrialnum you want to set | - +-------------------+-----------+-----------+-----------------------------------------------+ - -:raw-html-m2r:`` - - -* - **nnictl trial** - - - * - **nnictl trial ls** - - - * - Description - - You can use this command to show trial's information. - - * - Usage - - .. code-block:: bash - - nnictl trial ls - - * - Options: - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |ID of the experiment you want to set | - +-------------------+-----------+-----------+-----------------------------------------------+ - - * - **nnictl trial kill** - - - * - Description - - You can use this command to kill a trial job. - - - * - Usage - - .. code-block:: bash - - nnictl trial kill [OPTIONS] - - * - Options: - - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |ID of the experiment you want to set | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --trialid, -t | True | |ID of the trial you want to kill. | - +-------------------+-----------+-----------+-----------------------------------------------+ - :raw-html-m2r:`` - -* - **nnictl top** - - - * - Description - - Monitor all of running experiments. - - - * - Usage - - .. code-block:: bash - - nnictl top - - * - Options: - - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |ID of the experiment you want to set | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --time, -t | False | |The interval to update the experiment status, | - | | | |the unit of time is second, | - | | | |and the default value is 3 second. | - +-------------------+-----------+-----------+-----------------------------------------------+ - -:raw-html-m2r:`` - -Manage experiment information -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -* - **nnictl experiment show** - - - * - Description - - Show the information of experiment. - - * - Usage - - .. code-block:: bash - - nnictl experiment show - - * - Options: - - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |ID of the experiment you want to set | - +-------------------+-----------+-----------+-----------------------------------------------+ - -* - **nnictl experiment status** - - - * - Description - - Show the status of experiment. - - * - Usage - - .. code-block:: bash - - nnictl experiment status - * - Options: - - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |ID of the experiment you want to check | - +-------------------+-----------+-----------+-----------------------------------------------+ - -* - **nnictl experiment list** - - - * - Description - - Show the information of all the (running) experiments. - - * - Usage - - .. code-block:: bash - - nnictl experiment list - -:raw-html-m2r:`` - - -* - **nnictl config show** - - - * - Description - - Display the current context information. - - * - Usage - - .. code-block:: bash - - nnictl config show - -:raw-html-m2r:`` - -Manage log -^^^^^^^^^^ - - -* - **nnictl log stdout** - - - * - Description - - Show the stdout log content. - - * - Usage - - .. code-block:: bash - - nnictl log stdout [options] - * - Options: - - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |ID of the experiment you want to set | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --head, -h | False | |show head lines of stdout | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --tail, -t | False | |show tail lines of stdout | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --path, -p | False | |show the path of stdout file | - +-------------------+-----------+-----------+-----------------------------------------------+ - -* - **nnictl log stderr** - - - * - Description - - Show the stderr log content. - - * - Usage - - .. code-block:: bash - - nnictl log stderr [options] - * - Options: - - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |ID of the experiment you want to set | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --head, -h | False | |show head lines of stderr | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --tail, -t | False | |show tail lines of stderr | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --path, -p | False | |show the path of stderr file | - +-------------------+-----------+-----------+-----------------------------------------------+ - -* - **nnictl log trial** - - - * - Description - - Show trial log path. - - * - Usage - -:raw-html-m2r:`` - -Manage webui -^^^^^^^^^^^^ - - -* - **nnictl webui url** - -:raw-html-m2r:`` - -Manage tensorboard -^^^^^^^^^^^^^^^^^^ - - -* - **nnictl tensorboard start** - - - * - Description - - Start the tensorboard process. - - * - Usage - - .. code-block:: bash - - nnictl tensorboard start - - * - Options: - - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |ID of the experiment you want to set | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --trialid | False | |ID of the trial | - +-------------------+-----------+-----------+-----------------------------------------------+ - | --port | False | 6006 |The port of the tensorboard process | - +-------------------+-----------+-----------+-----------------------------------------------+ - - * - Detail - - - #. NNICTL support tensorboard function in local and remote platform for the moment, other platforms will be supported later. - #. If you want to use tensorboard, you need to write your tensorboard log data to environment variable [NNI_OUTPUT_DIR] path. - #. In local mode, nnictl will set --logdir=[NNI_OUTPUT_DIR] directly and start a tensorboard process. - #. In remote mode, nnictl will create a ssh client to copy log data from remote machine to local temp directory firstly, and then start a tensorboard process in your local machine. You need to notice that nnictl only copy the log data one time when you use the command, if you want to see the later result of tensorboard, you should execute nnictl tensorboard command again. - #. If there is only one trial job, you don't need to set trialid. If there are multiple trial jobs running, you should set the trialid, or you could use [nnictl tensorboard start --trialid all] to map --logdir to all trial log paths. - -* - **nnictl tensorboard stop** - - - * - Description - - Stop all of the tensorboard process. - - * - Usage - - .. code-block:: bash - - nnictl tensorboard stop - - * - Options: - - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | id | False | |ID of the experiment | - +-------------------+-----------+-----------+-----------------------------------------------+ - -:raw-html-m2r:`` - -Manage package -^^^^^^^^^^^^^^ - - -* - **nnictl package install** - - - * - Description - - Install the packages needed in nni experiments. - - * - Usage - - .. code-block:: bash - - nnictl package install [OPTIONS] - -* - Options: - - +-------------------+-----------+-----------+-----------------------------------------------+ - | Name, shorthand | Required | Default | Description | - +===================+===========+===========+===============================================+ - | --name | True | |The name of package to be installed | - +-------------------+-----------+-----------+-----------------------------------------------+ - -* - **nnictl package show** - - - * - Description - - .. code-block:: bash - - List the packages supported. - - * - Usage - - .. code-block:: bash - - nnictl package show diff --git a/docs/NNICTLDOC.md b/docs/NNICTLDOC.md index 709c5c1332..e5b410cde7 100644 --- a/docs/NNICTLDOC.md +++ b/docs/NNICTLDOC.md @@ -41,10 +41,10 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |--config, -c| True| |YAML configure file of the experiment| - |--port, -p|False| |the port of restful server| + |Name, shorthand|Required|Default|Description| + |------|------|------|------| + |--config, -c| True| |YAML configure file of the experiment| + |--port, -p|False| |the port of restful server| * __nnictl resume__ @@ -61,10 +61,10 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |The id of the experiment you want to resume| - |--port, -p| False| |Rest port of the experiment you want to resume| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |The id of the experiment you want to resume| + |--port, -p| False| |Rest port of the experiment you want to resume| * __nnictl stop__ @@ -81,12 +81,12 @@ nnictl support commands: * Detail - 1.If there is an id specified, and the id matches the running experiment, nnictl will stop the corresponding experiment, or will print error message. - 2.If there is no id specified, and there is an experiment running, stop the running experiment, or print error message. - 3.If the id ends with *, nnictl will stop all experiments whose ids matchs the regular. - 4.If the id does not exist but match the prefix of an experiment id, nnictl will stop the matched experiment. - 5.If the id does not exist but match multiple prefix of the experiment ids, nnictl will give id information. - 6.Users could use 'nnictl stop all' to stop all experiments. + 1. If there is an id specified, and the id matches the running experiment, nnictl will stop the corresponding experiment, or will print error message. + 2. If there is no id specified, and there is an experiment running, stop the running experiment, or print error message. + 3. If the id ends with *, nnictl will stop all experiments whose ids matchs the regular. + 4. If the id does not exist but match the prefix of an experiment id, nnictl will stop the matched experiment. + 5. If the id does not exist but match multiple prefix of the experiment ids, nnictl will give id information. + 6. Users could use 'nnictl stop all' to stop all experiments. * __nnictl update__ @@ -104,10 +104,10 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |ID of the experiment you want to set| - |--filename, -f| True| |the file storing your new search space| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--filename, -f| True| |the file storing your new search space| * __nnictl update concurrency__ * Description @@ -122,10 +122,10 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |ID of the experiment you want to set| - |--value, -v| True| |the number of allowed concurrent trials| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--value, -v| True| |the number of allowed concurrent trials| * __nnictl update duration__ @@ -140,10 +140,10 @@ nnictl support commands: ``` * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |ID of the experiment you want to set| - |--value, -v| True| |the experiment duration will be NUMBER seconds. SUFFIX may be 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--value, -v| True| |the experiment duration will be NUMBER seconds. SUFFIX may be 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.| * __nnictl update trialnum__ * Description @@ -158,10 +158,10 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |ID of the experiment you want to set| - |--value, -v| True| |the new number of maxtrialnum you want to set| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--value, -v| True| |the new number of maxtrialnum you want to set| * __nnictl trial__ @@ -180,9 +180,9 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |ID of the experiment you want to set| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| * __nnictl trial kill__ @@ -198,10 +198,10 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |ID of the experiment you want to set| - |--trialid, -t| True| |ID of the trial you want to kill.| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--trialid, -t| True| |ID of the trial you want to kill.| * __nnictl top__ @@ -218,10 +218,10 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |ID of the experiment you want to set| - |--time, -t| False| |The interval to update the experiment status, the unit of time is second, and the default value is 3 second.| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--time, -t| False| |The interval to update the experiment status, the unit of time is second, and the default value is 3 second.| ### Manage experiment information @@ -240,9 +240,9 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |ID of the experiment you want to set| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| * __nnictl experiment status__ @@ -258,9 +258,9 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |ID of the experiment you want to set| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| * __nnictl experiment list__ @@ -304,12 +304,12 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |ID of the experiment you want to set| - |--head, -h| False| |show head lines of stdout| - |--tail, -t| False| |show tail lines of stdout| - |--path, -p| False| |show the path of stdout file| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--head, -h| False| |show head lines of stdout| + |--tail, -t| False| |show tail lines of stdout| + |--path, -p| False| |show the path of stdout file| * __nnictl log stderr__ * Description @@ -324,12 +324,12 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |ID of the experiment you want to set| - |--head, -h| False| |show head lines of stderr| - |--tail, -t| False| |show tail lines of stderr| - |--path, -p| False| |show the path of stderr file| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--head, -h| False| |show head lines of stderr| + |--tail, -t| False| |show tail lines of stderr| + |--path, -p| False| |show the path of stderr file| * __nnictl log trial__ @@ -345,9 +345,9 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |the id of trial| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |the id of trial| ### Manage webui @@ -371,11 +371,11 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |ID of the experiment you want to set| - |--trialid| False| |ID of the trial| - |--port| False| 6006|The port of the tensorboard process| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| + |--trialid| False| |ID of the trial| + |--port| False| 6006|The port of the tensorboard process| * Detail @@ -398,9 +398,9 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |id| False| |ID of the experiment you want to set| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |id| False| |ID of the experiment you want to set| ### Manage package @@ -418,9 +418,9 @@ nnictl support commands: * Options - |Name, shorthand|Required|Default|Description| - |------|------|------ |------| - |--name| True| |The name of package to be installed| + |Name, shorthand|Required|Default|Description| + |------|------|------ |------| + |--name| True| |The name of package to be installed| * __nnictl package show__ diff --git a/docs/Reference.rst b/docs/Reference.rst index 53d1573f04..3ce330c3c4 100644 --- a/docs/Reference.rst +++ b/docs/Reference.rst @@ -4,7 +4,7 @@ References .. toctree:: :maxdepth: 3 - Command Line + Command Line Python API Annotation Configuration From 9d3d926bcd6c51344da9c2942dc8416b6d263600 Mon Sep 17 00:00:00 2001 From: SparkSnail Date: Tue, 29 Jan 2019 14:42:52 +0800 Subject: [PATCH 08/22] Migrate remote log (#655) * fix remote bug * add document * add document * update * update * update * update * fix remote issue * fix forEach * update doc according to comments * update * update * update * remove 'any more' * add base version for remote-log * change launcher.py * test * basic version * debug * debug * basic work version * fix code * update disable_log * remove unused line * add diable log in kubernetesTrainingService * add detect frameworkcontroller * fix comment * update * update * fix kubernetesData * debug * debug * debug * fix comment * fix conflict * remove local temp files * revert launcher.py * update code by comments * remove disableLog * remove disable Log * set timeout for cleanup * fix code by comments * update variable names * add comments * add delay function * update * update * update by comments * add in remote script path * rename variables * update variable name * add mkdir -p for subfolder --- src/nni_manager/package.json | 2 +- src/nni_manager/scripts/metrics_reader.py | 192 ------------------ .../remote_machine/gpuScheduler.ts | 16 ++ .../remote_machine/metricsCollector.ts | 158 -------------- .../remote_machine/remoteMachineData.ts | 21 +- .../remoteMachineJobRestServer.ts | 54 +++++ .../remoteMachineTrainingService.ts | 189 +++++++++++------ src/sdk/pynni/nni/platform/local.py | 4 +- .../src/components/public-child/OpenRow.tsx | 3 +- tools/nni_cmd/launcher.py | 2 +- tools/nni_gpu_tool/__init__.py | 0 .../nni_gpu_tool}/gpu_metrics_collector.py | 9 +- 12 files changed, 222 insertions(+), 428 deletions(-) delete mode 100644 src/nni_manager/scripts/metrics_reader.py delete mode 100644 src/nni_manager/training_service/remote_machine/metricsCollector.ts create mode 100644 src/nni_manager/training_service/remote_machine/remoteMachineJobRestServer.ts create mode 100644 tools/nni_gpu_tool/__init__.py rename {src/nni_manager/scripts => tools/nni_gpu_tool}/gpu_metrics_collector.py (89%) diff --git a/src/nni_manager/package.json b/src/nni_manager/package.json index 0d27e36461..757677211a 100644 --- a/src/nni_manager/package.json +++ b/src/nni_manager/package.json @@ -3,7 +3,7 @@ "version": "999.0.0-developing", "main": "index.js", "scripts": { - "postbuild": "cp -rf scripts ./dist/ && cp -rf config ./dist/", + "postbuild": "cp -rf config ./dist/", "build": "tsc", "test": "nyc mocha -r ts-node/register -t 15000 --recursive **/*.test.ts --exclude node_modules/**/**/*.test.ts --exclude core/test/nnimanager.test.ts --colors", "start": "node dist/main.js", diff --git a/src/nni_manager/scripts/metrics_reader.py b/src/nni_manager/scripts/metrics_reader.py deleted file mode 100644 index 38f2a99db6..0000000000 --- a/src/nni_manager/scripts/metrics_reader.py +++ /dev/null @@ -1,192 +0,0 @@ -# ============================================================================================================================== # -# Copyright (c) Microsoft Corporation -# All rights reserved. -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -# documentation files (the "Software"), to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and -# to permit persons to whom the Software is furnished to do so, subject to the following conditions: -# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -# BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# ============================================================================================================================== # - -import argparse -import errno -import json -import os -import re - -METRICS_FILENAME = '.nni/metrics' -OFFSET_FILENAME = '.nni/metrics_offset' -JOB_CODE_FILENAME = '.nni/code' -JOB_PID_FILENAME = '.nni/jobpid' -JOB_CODE_PATTERN = re.compile('^(\d+)\s+(\d+)$') - -LEN_FIELD_SIZE = 6 -MAGIC = 'ME' - -class TrialMetricsReader(): - ''' - Read metrics data from a trial job - ''' - def __init__(self, trial_job_dir): - self.trial_job_dir = trial_job_dir - self.offset_filename = os.path.join(trial_job_dir, OFFSET_FILENAME) - self.metrics_filename = os.path.join(trial_job_dir, METRICS_FILENAME) - self.jobcode_filename = os.path.join(trial_job_dir, JOB_CODE_FILENAME) - self.jobpid_filemame = os.path.join(trial_job_dir, JOB_PID_FILENAME) - - def _metrics_file_is_empty(self): - if not os.path.isfile(self.metrics_filename): - return True - statinfo = os.stat(self.metrics_filename) - return statinfo.st_size == 0 - - def _get_offset(self): - offset = 0 - if os.path.isfile(self.offset_filename): - with open(self.offset_filename, 'r') as f: - offset = int(f.readline()) - return offset - - def _write_offset(self, offset): - statinfo = os.stat(self.metrics_filename) - if offset < 0 or offset > statinfo.st_size: - raise ValueError('offset value is invalid: {}'.format(offset)) - - with open(self.offset_filename, 'w') as f: - f.write(str(offset)+'\n') - - def _read_all_available_records(self, offset): - new_offset = offset - metrics = [] - with open(self.metrics_filename, 'r') as f: - f.seek(offset) - while True: - magic_string = f.read(len(MAGIC)) - # empty data means EOF - if not magic_string: - break - strdatalen = f.read(LEN_FIELD_SIZE) - # empty data means EOF - if not strdatalen: - raise ValueError("metric file {} format error after offset: {}.".format(self.metrics_filename, new_offset)) - datalen = int(strdatalen) - data = f.read(datalen) - - if datalen > 0 and len(data) == datalen: - new_offset = f.tell() - metrics.append(data) - else: - raise ValueError("metric file {} format error after offset: {}.".format(self.metrics_filename, new_offset)) - self._write_offset(new_offset) - return metrics - - def _pid_exists(selft, pid): - if pid < 0: - return False - if pid == 0: - # According to "man 2 kill" PID 0 refers to every process - # in the process group of the calling process. - # On certain systems 0 is a valid PID but we have no way - # to know that in a portable fashion. - raise ValueError('invalid PID 0') - try: - os.kill(pid, 0) - except OSError as err: - if err.errno == errno.ESRCH: - # ESRCH == No such process - return False - elif err.errno == errno.EPERM: - # EPERM clearly means there's a process to deny access to - return True - else: - # According to "man 2 kill" possible error values are - # (EINVAL, EPERM, ESRCH) - raise - else: - return True - - def read_trial_metrics(self): - ''' - Read available metrics data for a trial - ''' - if self._metrics_file_is_empty(): - return [] - - offset = self._get_offset() - return self._read_all_available_records(offset) - - def read_trial_status(self): - if os.path.isfile(self.jobpid_filemame): - with open(self.jobpid_filemame, 'r') as f: - jobpid = int(f.readline()) - if self._pid_exists(jobpid): - return 'RUNNING' ,-1 - else: - return self._read_job_return_code() - else: - # raise ValueError('offset value is invalid: {}'.format(offset)) - return 'UNKNOWN' ,-1 - - def _read_job_return_code(self): - if os.path.isfile(self.jobcode_filename): - with open(self.jobcode_filename, 'r') as f: - job_return_code = f.readline() - match = JOB_CODE_PATTERN.match(job_return_code) - if(match): - return_code = int(match.group(1)) - timestamp = int(match.group(2)) - status = '' - if return_code == 0: - status = 'SUCCEEDED' - elif return_code > 128: - status = 'USER_CANCELED' - else: - status = 'FAILED' - return status, timestamp - else: - raise ValueError('Job code file format incorrect') - else: - raise ValueError('job return code file doesnt exist: {}'.format(self.jobcode_filename)) - - -def read_experiment_metrics(args): - ''' - Read metrics data for specified trial jobs - ''' - trial_job_ids = args.trial_job_ids.strip().split(',') - trial_job_ids = [id.strip() for id in trial_job_ids] - results = [] - for trial_job_id in trial_job_ids: - result = {} - try: - trial_job_dir = os.path.join(args.experiment_dir, 'trials', trial_job_id) - reader = TrialMetricsReader(trial_job_dir) - result['jobId'] = trial_job_id - result['metrics'] = reader.read_trial_metrics() - result['jobStatus'], result['endTimestamp'] = reader.read_trial_status() - results.append(result) - except Exception: - #TODO error logging to file - pass - print(json.dumps(results)) - - - - -if __name__ == '__main__': - PARSER = argparse.ArgumentParser() - PARSER.add_argument("--experiment_dir", type=str, help="Root directory of experiment", required=True) - PARSER.add_argument("--trial_job_ids", type=str, help="Trial job ids splited with ','", required=True) - - ARGS, UNKNOWN = PARSER.parse_known_args() - read_experiment_metrics(ARGS) - diff --git a/src/nni_manager/training_service/remote_machine/gpuScheduler.ts b/src/nni_manager/training_service/remote_machine/gpuScheduler.ts index 4d0588b45b..4fcdbd8ca4 100644 --- a/src/nni_manager/training_service/remote_machine/gpuScheduler.ts +++ b/src/nni_manager/training_service/remote_machine/gpuScheduler.ts @@ -163,4 +163,20 @@ export class GPUScheduler { } }; } + + /** + * remove the job's gpu reversion + * @param trialJobId + * @param rmMeta + */ + public removeGpuReservation(trialJobId: string, rmMeta?: RemoteMachineMeta): void{ + // If remote machine has no GPU, gpuReservcation is not initialized, so check if it's undefined + if(rmMeta !== undefined && rmMeta.gpuReservation !== undefined) { + rmMeta.gpuReservation.forEach((reserveTrialJobId : string, gpuIndex : number) => { + if(reserveTrialJobId == trialJobId) { + rmMeta.gpuReservation.delete(gpuIndex); + } + }); + } + } } diff --git a/src/nni_manager/training_service/remote_machine/metricsCollector.ts b/src/nni_manager/training_service/remote_machine/metricsCollector.ts deleted file mode 100644 index a60be6484c..0000000000 --- a/src/nni_manager/training_service/remote_machine/metricsCollector.ts +++ /dev/null @@ -1,158 +0,0 @@ -/** - * Copyright (c) Microsoft Corporation - * All rights reserved. - * - * MIT License - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated - * documentation files (the "Software"), to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and - * to permit persons to whom the Software is furnished to do so, subject to the following conditions: - * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -'use strict'; - -import * as assert from 'assert'; -import { EventEmitter } from 'events'; -import * as path from 'path'; -import { Client } from 'ssh2'; -import { getLogger, Logger } from '../../common/log'; -import { TrialJobStatus, TrialJobDetail } from '../../common/trainingService'; -import { JobMetrics } from '../common/jobMetrics'; -import { RemoteCommandResult, RemoteMachineMeta, RemoteMachineTrialJobDetail } from './remoteMachineData'; -import { SSHClientUtility } from './sshClientUtility'; - -export class MetricsCollector { - private machineSSHClientMap : Map; - private trialJobsMap : Map; - private expRootDir: string; - private metricsEmitter: EventEmitter; - private log: Logger = getLogger(); - - constructor(clientMap: Map, - jobMap: Map, - expDir: string, eventEmitter: EventEmitter) { - this.machineSSHClientMap = clientMap; - this.trialJobsMap = jobMap; - this.expRootDir = expDir; - this.metricsEmitter = eventEmitter; - } - - public async collectMetrics(): Promise { - const aliveJobStatus : TrialJobStatus[] = ['RUNNING', 'SUCCEEDED']; - const runningJobsMap: Map = this.getTrialJobIdsGroupByRmMeta(aliveJobStatus); - const readMetricsTasks: Promise[] = [];; - runningJobsMap.forEach((jobIds: string[], rmMeta: RemoteMachineMeta) => { - readMetricsTasks.push(this.readRmMetrics(rmMeta, jobIds)); - }); - const allMetrics = await Promise.all(readMetricsTasks.map(task => { return task.catch(err => { this.log.error(err.message); }); })); - allMetrics.forEach((rmMetrics) => { - if (rmMetrics !== undefined && rmMetrics.length > 0) { - rmMetrics.forEach((jobMetrics) => { - const trialJobId : string = jobMetrics.jobId; - const trialJobDetail : RemoteMachineTrialJobDetail = this.trialJobsMap.get(trialJobId); - assert(trialJobDetail); - // If job status is not alive again, remove its GPU reservation - if(!['RUNNING'].includes(jobMetrics.jobStatus)) { - if (trialJobDetail.status !== 'EARLY_STOPPED') { - trialJobDetail.status = jobMetrics.jobStatus; - } - this.log.debug(`Set trialjob ${trialJobDetail.id} status to ${trialJobDetail.status}`); - runningJobsMap.forEach((jobIds: string[], rmMeta: RemoteMachineMeta) => { - // If remote machine has no GPU, gpuReservcation is not initialized, so check if it's undefined - if(rmMeta.gpuReservation !== undefined) { - rmMeta.gpuReservation.forEach((reserveTrialJobId : string, gpuIndex : number) => { - if(reserveTrialJobId == trialJobId) { - rmMeta.gpuReservation.delete(gpuIndex); - } - }); - } - }); - } - this.sendMetricsToListeners(jobMetrics); - }); - } - }); - } - - private getTrialJobIdsGroupByRmMeta(status: TrialJobStatus[]): Map { - const map: Map = new Map(); - this.trialJobsMap.forEach((trialJob, id) => { - let reservedTrialJobIds : string[] = []; - if(trialJob.rmMeta !== undefined - && trialJob.rmMeta.gpuReservation !== undefined) { - reservedTrialJobIds = Array.from(trialJob.rmMeta.gpuReservation.values()); - } - if (reservedTrialJobIds.includes(id) || status.includes(trialJob.status)) { - if (map.has(trialJob.rmMeta)) { - const ids = map.get(trialJob.rmMeta); - if (ids !== undefined && !ids.includes(id)) { - ids.push(id); - } - } else { - let initJobIds : string[] = [id]; - - // If the remote machine has jobs reserve GPU, also put that jobs into list to get metrics data - if(trialJob.rmMeta.gpuReservation !== undefined) { - const concatJobIds : string[] = initJobIds.concat(reservedTrialJobIds); - initJobIds = concatJobIds.filter((item, pos) => concatJobIds.indexOf(item) === pos); - } - - map.set(trialJob.rmMeta, initJobIds); - } - } - }); - - return map; - } - - private sendMetricsToListeners(jobMetrics: JobMetrics): void { - if (jobMetrics === undefined) { - return; - } - const jobId: string = jobMetrics.jobId; - jobMetrics.metrics.forEach((metric: string) => { - if (metric.length > 0) { - this.metricsEmitter.emit('metric', { - id : jobId, - data : metric - }); - } - }); - } - - private async readRmMetrics(rmMeta: RemoteMachineMeta, trialJobIds: string[]): Promise { - if (trialJobIds === undefined || trialJobIds.length < 1) { - return []; - } - const scriptFile: string = path.join(path.dirname(path.dirname(this.expRootDir)), 'scripts', 'metrics_reader.py'); - const cmdStr: string = `python3 ${scriptFile} --experiment_dir ${this.expRootDir} --trial_job_ids ${trialJobIds.join(',')}`; - - trialJobIds.forEach((id: string) => { - const trialJob: RemoteMachineTrialJobDetail = this.trialJobsMap.get(id); - assert(trialJob.rmMeta === rmMeta); - }); - const sshClient: Client | undefined = this.machineSSHClientMap.get(rmMeta); - if (sshClient === undefined) { - throw new Error('SSHClient not found!'); - } - - const result: RemoteCommandResult = await SSHClientUtility.remoteExeCommand(cmdStr, sshClient); - if (result.exitCode !== 0) { - throw new Error(`Failed to read metrics data: ${result.stderr}`); - } else { - if (result.stdout !== undefined && result.stdout.length > 0) { - return JSON.parse(result.stdout); - } else { - return []; - } - } - } -} diff --git a/src/nni_manager/training_service/remote_machine/remoteMachineData.ts b/src/nni_manager/training_service/remote_machine/remoteMachineData.ts index 27577c095e..fdedd78888 100644 --- a/src/nni_manager/training_service/remote_machine/remoteMachineData.ts +++ b/src/nni_manager/training_service/remote_machine/remoteMachineData.ts @@ -108,15 +108,14 @@ export enum ScheduleResultType { REQUIRE_EXCEED_TOTAL } -export const REMOTEMACHINE_RUN_SHELL_FORMAT: string = +export const REMOTEMACHINE_TRIAL_COMMAND_FORMAT: string = `#!/bin/bash -export NNI_PLATFORM=remote NNI_SYS_DIR={0} NNI_TRIAL_JOB_ID={1} NNI_OUTPUT_DIR={0} -export MULTI_PHASE={7} -export NNI_TRIAL_SEQ_ID={8} +export NNI_PLATFORM=remote NNI_SYS_DIR={0} NNI_OUTPUT_DIR={1} NNI_TRIAL_JOB_ID={2} NNI_EXP_ID={3} NNI_TRIAL_SEQ_ID={4} export MULTI_PHASE={5} cd $NNI_SYS_DIR -echo $$ >{2} -eval {3}{4} 2>{5} -echo $? \`date +%s%3N\` >{6}`; +sh install_nni.sh +echo $$ >{6} +python3 -m nni_trial_tool.trial_keeper --trial_command '{7}' --nnimanager_ip '{8}' --nnimanager_port '{9}' +echo $? \`date +%s%3N\` >{10}`; export const HOST_JOB_SHELL_FORMAT: string = `#!/bin/bash @@ -124,3 +123,11 @@ cd {0} echo $$ >{1} eval {2} >stdout 2>stderr echo $? \`date +%s%3N\` >{3}`; + +export const GPU_COLLECTOR_FORMAT: string = +` +#!/bin/bash +export METRIC_OUTPUT_DIR={0} +echo $$ >{1} +python3 -m nni_gpu_tool.gpu_metrics_collector +` diff --git a/src/nni_manager/training_service/remote_machine/remoteMachineJobRestServer.ts b/src/nni_manager/training_service/remote_machine/remoteMachineJobRestServer.ts new file mode 100644 index 0000000000..7bb6ad4a25 --- /dev/null +++ b/src/nni_manager/training_service/remote_machine/remoteMachineJobRestServer.ts @@ -0,0 +1,54 @@ +/** + * Copyright (c) Microsoft Corporation + * All rights reserved. + * + * MIT License + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and + * to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +'use strict'; + +import * as component from '../../common/component'; +import { Inject } from 'typescript-ioc'; +import { RemoteMachineTrainingService } from './remoteMachineTrainingService'; +import { ClusterJobRestServer } from '../common/clusterJobRestServer' + +/** + * RemoteMachine Training service Rest server, provides rest RemoteMachine to support remotemachine job metrics update + * + */ +@component.Singleton +export class RemoteMachineJobRestServer extends ClusterJobRestServer{ + @Inject + private readonly remoteMachineTrainingService : RemoteMachineTrainingService; + + /** + * constructor to provide NNIRestServer's own rest property, e.g. port + */ + constructor() { + super(); + this.remoteMachineTrainingService = component.get(RemoteMachineTrainingService); + } + + protected handleTrialMetrics(jobId : string, metrics : any[]) : void { + // Split metrics array into single metric, then emit + // Warning: If not split metrics into single ones, the behavior will be UNKNOWNls + for (const singleMetric of metrics) { + this.remoteMachineTrainingService.MetricsEmitter.emit('metric', { + id : jobId, + data : singleMetric + }); + } + } +} \ No newline at end of file diff --git a/src/nni_manager/training_service/remote_machine/remoteMachineTrainingService.ts b/src/nni_manager/training_service/remote_machine/remoteMachineTrainingService.ts index 36556185ec..50bb6ab4ef 100644 --- a/src/nni_manager/training_service/remote_machine/remoteMachineTrainingService.ts +++ b/src/nni_manager/training_service/remote_machine/remoteMachineTrainingService.ts @@ -29,30 +29,34 @@ import { Client, ConnectConfig } from 'ssh2'; import { Deferred } from 'ts-deferred'; import { String } from 'typescript-string-operations'; import * as component from '../../common/component'; -import { MethodNotImplementedError, NNIError, NNIErrorNames } from '../../common/errors'; +import { NNIError, NNIErrorNames } from '../../common/errors'; import { getExperimentId, getInitTrialSequenceId } from '../../common/experimentStartupInfo'; import { getLogger, Logger } from '../../common/log'; import { ObservableTimer } from '../../common/observableTimer'; import { - HostJobApplicationForm, HyperParameters, JobApplicationForm, TrainingService, TrialJobApplicationForm, TrialJobDetail, TrialJobMetric + HostJobApplicationForm, HyperParameters, JobApplicationForm, TrainingService, TrialJobApplicationForm, TrialJobDetail, TrialJobMetric, NNIManagerIpConfig } from '../../common/trainingService'; -import { delay, generateParamFileName, getExperimentRootDir, uniqueString, getJobCancelStatus, getRemoteTmpDir } from '../../common/utils'; +import { delay, generateParamFileName, getExperimentRootDir, uniqueString, getJobCancelStatus, getRemoteTmpDir,getIPV4Address } from '../../common/utils'; import { GPUSummary } from '../common/gpuData'; import { TrialConfig } from '../common/trialConfig'; import { TrialConfigMetadataKey } from '../common/trialConfigMetadataKey'; import { GPUScheduler } from './gpuScheduler'; -import { MetricsCollector } from './metricsCollector'; import { HOST_JOB_SHELL_FORMAT, RemoteCommandResult, RemoteMachineMeta, - REMOTEMACHINE_RUN_SHELL_FORMAT, RemoteMachineScheduleInfo, RemoteMachineScheduleResult, - RemoteMachineTrialJobDetail, ScheduleResultType + RemoteMachineScheduleInfo, RemoteMachineScheduleResult, + RemoteMachineTrialJobDetail, ScheduleResultType, REMOTEMACHINE_TRIAL_COMMAND_FORMAT, + GPU_COLLECTOR_FORMAT } from './remoteMachineData'; import { SSHClientUtility } from './sshClientUtility'; import { validateCodeDir} from '../common/util'; +import { RemoteMachineJobRestServer } from './remoteMachineJobRestServer'; +import { CONTAINER_INSTALL_NNI_SHELL_FORMAT } from '../common/containerJobData'; +import { mkDirP } from '../../common/utils'; /** * Training Service implementation for Remote Machine (Linux) */ +@component.Singleton class RemoteMachineTrainingService implements TrainingService { private machineSSHClientMap: Map; private trialJobsMap: Map; @@ -67,7 +71,9 @@ class RemoteMachineTrainingService implements TrainingService { private log: Logger; private isMultiPhase: boolean = false; private trialSequenceId: number; + private remoteRestServerPort?: number; private readonly remoteOS: string; + private nniManagerIpConfig?: NNIManagerIpConfig; constructor(@component.Inject timer: ObservableTimer) { this.remoteOS = 'linux'; @@ -88,9 +94,12 @@ class RemoteMachineTrainingService implements TrainingService { * Loop to launch trial jobs and collect trial metrics */ public async run(): Promise { + const restServer: RemoteMachineJobRestServer = component.get(RemoteMachineJobRestServer); + await restServer.start(); this.log.info('Run remote machine training service.'); while (!this.stopping) { while (this.jobQueue.length > 0) { + this.updateGpuReservation(); const trialJobId: string = this.jobQueue[0]; const prepareResult : boolean = await this.prepareTrialJob(trialJobId); if (prepareResult) { @@ -102,9 +111,6 @@ class RemoteMachineTrainingService implements TrainingService { break; } } - const metricsCollector: MetricsCollector = new MetricsCollector( - this.machineSSHClientMap, this.trialJobsMap, this.remoteExpRootDir, this.metricsEmitter); - await metricsCollector.collectMetrics(); await delay(3000); } this.log.info('Remote machine training service exit.'); @@ -225,6 +231,17 @@ class RemoteMachineTrainingService implements TrainingService { return trialJobDetail; } + + /** + * remove gpu reversion when job is not running + */ + private updateGpuReservation() { + for (const [key, value] of this.trialJobsMap) { + if(!['WAITING', 'RUNNING'].includes(value.status)) { + this.gpuScheduler.removeGpuReservation(value.id, value.rmMeta); + } + }; + } /** * Is multiphase job supported in current training service @@ -284,8 +301,13 @@ class RemoteMachineTrainingService implements TrainingService { */ public async setClusterMetadata(key: string, value: string): Promise { switch (key) { + case TrialConfigMetadataKey.NNI_MANAGER_IP: + this.nniManagerIpConfig = JSON.parse(value); + break; case TrialConfigMetadataKey.MACHINE_LIST: await this.setupConnections(value); + //remove local temp files + await cpp.exec(`rm -rf ${this.getLocalGpuMetricCollectorDir()}`); break; case TrialConfigMetadataKey.TRIAL_CONFIG: const remoteMachineTrailConfig: TrialConfig = JSON.parse(value); @@ -326,12 +348,58 @@ class RemoteMachineTrainingService implements TrainingService { return deferred.promise; } - - public cleanUp(): Promise { + + /** + * cleanup() has a time out of 10s to clean remote connections + */ + public async cleanUp(): Promise { this.log.info('Stopping remote machine training service...'); this.stopping = true; + await Promise.race([delay(10000), this.cleanupConnections()]); + } + + /** + * stop gpu_metric_collector process in remote machine and remove unused scripts + */ + private async cleanupConnections(): Promise { + try{ + for (const [rmMeta, client] of this.machineSSHClientMap.entries()) { + let jobpidPath: string = path.join(this.getRemoteScriptsPath(rmMeta.username), 'pid'); + await SSHClientUtility.remoteExeCommand(`pkill -P \`cat ${jobpidPath}\``, client); + await SSHClientUtility.remoteExeCommand(`rm -rf ${this.getRemoteScriptsPath(rmMeta.username)}`, client); + } + }catch (error) { + //ignore error, this function is called to cleanup remote connections when experiment is stopping + this.log.error(`Cleanup connection exception, error is ${error.message}`); + } return Promise.resolve(); + } + + /** + * Generate gpu metric collector directory to store temp gpu metric collector script files + */ + private getLocalGpuMetricCollectorDir(): string { + let userName: string = path.basename(os.homedir()); //get current user name of os + return `${os.tmpdir()}/${userName}/nni/scripts/`; + } + + /** + * Generate gpu metric collector shell script in local machine, + * used to run in remote machine, and will be deleted after uploaded from local. + */ + private async generateGpuMetricsCollectorScript(userName: string): Promise { + let gpuMetricCollectorScriptFolder : string = this.getLocalGpuMetricCollectorDir(); + await cpp.exec(`mkdir -p ${path.join(gpuMetricCollectorScriptFolder, userName)}`); + //generate gpu_metrics_collector.sh + let gpuMetricsCollectorScriptPath: string = path.join(gpuMetricCollectorScriptFolder, userName, 'gpu_metrics_collector.sh'); + const remoteGPUScriptsDir: string = this.getRemoteScriptsPath(userName); // This directory is used to store gpu_metrics and pid created by script + const gpuMetricsCollectorScriptContent: string = String.Format( + GPU_COLLECTOR_FORMAT, + remoteGPUScriptsDir, + path.join(remoteGPUScriptsDir, 'pid'), + ); + await fs.promises.writeFile(gpuMetricsCollectorScriptPath, gpuMetricsCollectorScriptContent, { encoding: 'utf8' }); } private async setupConnections(machineList: string): Promise { @@ -340,6 +408,7 @@ class RemoteMachineTrainingService implements TrainingService { //TO DO: verify if value's format is wrong, and json parse failed, how to handle error const rmMetaList: RemoteMachineMeta[] = JSON.parse(machineList); let connectedRMNum: number = 0; + rmMetaList.forEach((rmMeta: RemoteMachineMeta) => { const conn: Client = new Client(); let connectConfig: ConnectConfig = { @@ -372,29 +441,30 @@ class RemoteMachineTrainingService implements TrainingService { deferred.reject(new Error(err.message)); }).connect(connectConfig); }); - return deferred.promise; } private async initRemoteMachineOnConnected(rmMeta: RemoteMachineMeta, conn: Client): Promise { // Create root working directory after ssh connection is ready - //TO DO: Should we mk experiments rootDir here? - const nniRootDir: string = '/tmp/nni'; + await this.generateGpuMetricsCollectorScript(rmMeta.username); //generate gpu script in local machine first, will copy to remote machine later + const nniRootDir: string = `${os.tmpdir()}/nni`; await SSHClientUtility.remoteExeCommand(`mkdir -p ${this.remoteExpRootDir}`, conn); // Copy NNI scripts to remote expeirment working directory - const remoteScriptsDir: string = this.getRemoteScriptsPath(); - await SSHClientUtility.remoteExeCommand(`mkdir -p ${remoteScriptsDir}`, conn); - await SSHClientUtility.copyDirectoryToRemote('./scripts', remoteScriptsDir, conn, this.remoteOS); + const localGpuScriptCollectorDir: string = this.getLocalGpuMetricCollectorDir(); + const remoteGpuScriptCollectorDir: string = this.getRemoteScriptsPath(rmMeta.username); //the directory to store temp scripts in remote machine + await SSHClientUtility.remoteExeCommand(`mkdir -p ${remoteGpuScriptCollectorDir}`, conn); await SSHClientUtility.remoteExeCommand(`chmod 777 ${nniRootDir} ${nniRootDir}/* ${nniRootDir}/scripts/*`, conn); + //copy gpu_metrics_collector.sh to remote + await SSHClientUtility.copyFileToRemote(path.join(localGpuScriptCollectorDir, rmMeta.username, 'gpu_metrics_collector.sh'), path.join(remoteGpuScriptCollectorDir, 'gpu_metrics_collector.sh'), conn); //Begin to execute gpu_metrics_collection scripts - SSHClientUtility.remoteExeCommand(`cd ${remoteScriptsDir} && python3 gpu_metrics_collector.py`, conn); + SSHClientUtility.remoteExeCommand(`bash ${path.join(remoteGpuScriptCollectorDir, 'gpu_metrics_collector.sh')}`, conn); this.timer.subscribe( async (tick: number) => { const cmdresult: RemoteCommandResult = await SSHClientUtility.remoteExeCommand( - `tail -n 1 ${path.join(remoteScriptsDir, 'gpu_metrics')}`, conn); + `tail -n 1 ${path.join(remoteGpuScriptCollectorDir, 'gpu_metrics')}`, conn); if (cmdresult && cmdresult.stdout) { rmMeta.gpuSummary = JSON.parse(cmdresult.stdout); } @@ -412,7 +482,6 @@ class RemoteMachineTrainingService implements TrainingService { if (trialJobDetail === undefined) { throw new NNIError(NNIErrorNames.INVALID_JOB_DETAIL, `Invalid job detail information for trial job ${trialJobId}`); } - // get an ssh client from scheduler const rmScheduleResult: RemoteMachineScheduleResult = this.gpuScheduler.scheduleMachine(this.trialConfig.gpuNum, trialJobId); if (rmScheduleResult.resultType === ScheduleResultType.REQUIRE_EXCEED_TOTAL) { @@ -466,39 +535,51 @@ class RemoteMachineTrainingService implements TrainingService { await SSHClientUtility.remoteExeCommand(`mkdir -p ${trialWorkingFolder}`, sshClient); await SSHClientUtility.remoteExeCommand(`mkdir -p ${path.join(trialWorkingFolder, '.nni')}`, sshClient); - await SSHClientUtility.remoteExeCommand(`touch ${path.join(trialWorkingFolder, '.nni', 'metrics')}`, sshClient); // RemoteMachineRunShellFormat is the run shell format string, // See definition in remoteMachineData.ts - const runScriptContent: string = String.Format( - REMOTEMACHINE_RUN_SHELL_FORMAT, + + let command: string; + // Set CUDA_VISIBLE_DEVICES environment variable based on cuda_visible_device + // If no valid cuda_visible_device is defined, set CUDA_VISIBLE_DEVICES to empty string to hide GPU device + if(typeof cuda_visible_device === 'string' && cuda_visible_device.length > 0) { + command = `CUDA_VISIBLE_DEVICES=${cuda_visible_device} ${this.trialConfig.command}`; + } else { + command = `CUDA_VISIBLE_DEVICES=" " ${this.trialConfig.command}`; + } + + const nniManagerIp = this.nniManagerIpConfig?this.nniManagerIpConfig.nniManagerIp:getIPV4Address(); + if(!this.remoteRestServerPort) { + const restServer: RemoteMachineJobRestServer = component.get(RemoteMachineJobRestServer); + this.remoteRestServerPort = restServer.clusterRestServerPort; + } + const runScriptTrialContent: string = String.Format( + REMOTEMACHINE_TRIAL_COMMAND_FORMAT, + trialWorkingFolder, trialWorkingFolder, trialJobId, - path.join(trialWorkingFolder, '.nni', 'jobpid'), - // Set CUDA_VISIBLE_DEVICES environment variable based on cuda_visible_device - // If no valid cuda_visible_device is defined, set CUDA_VISIBLE_DEVICES to empty string to hide GPU device - (typeof cuda_visible_device === 'string' && cuda_visible_device.length > 0) ? - `CUDA_VISIBLE_DEVICES=${cuda_visible_device} ` : `CUDA_VISIBLE_DEVICES=" " `, - this.trialConfig.command, - path.join(trialWorkingFolder, 'stderr'), - path.join(trialWorkingFolder, '.nni', 'code'), - /** Mark if the trial is multi-phase job */ + getExperimentId(), + trialJobDetail.sequenceId.toString(), this.isMultiPhase, - trialJobDetail.sequenceId.toString() - ); + path.join(trialWorkingFolder, '.nni', 'jobpid'), + command, + nniManagerIp, + this.remoteRestServerPort, + path.join(trialWorkingFolder, '.nni', 'code') + ) //create tmp trial working folder locally. await cpp.exec(`mkdir -p ${path.join(trialLocalTempFolder, '.nni')}`); + //create tmp trial working folder locally. + await cpp.exec(`cp -r ${this.trialConfig.codeDir}/* ${trialLocalTempFolder}`); + const installScriptContent : string = CONTAINER_INSTALL_NNI_SHELL_FORMAT; + // Write NNI installation file to local tmp files + await fs.promises.writeFile(path.join(trialLocalTempFolder, 'install_nni.sh'), installScriptContent, { encoding: 'utf8' }); // Write file content ( run.sh and parameter.cfg ) to local tmp files - await fs.promises.writeFile(path.join(trialLocalTempFolder, 'run.sh'), runScriptContent, { encoding: 'utf8' }); - - // Copy local tmp files to remote machine - await SSHClientUtility.copyFileToRemote( - path.join(trialLocalTempFolder, 'run.sh'), path.join(trialWorkingFolder, 'run.sh'), sshClient); + await fs.promises.writeFile(path.join(trialLocalTempFolder, 'run.sh'), runScriptTrialContent, { encoding: 'utf8' }); await this.writeParameterFile(trialJobId, form.hyperParameters, rmScheduleInfo.rmMeta); - // Copy files in codeDir to remote working directory - await SSHClientUtility.copyDirectoryToRemote(this.trialConfig.codeDir, trialWorkingFolder, sshClient, this.remoteOS); + await SSHClientUtility.copyDirectoryToRemote(trialLocalTempFolder, trialWorkingFolder, sshClient, this.remoteOS); // Execute command in remote machine SSHClientUtility.remoteExeCommand(`bash ${path.join(trialWorkingFolder, 'run.sh')}`, sshClient); } @@ -546,7 +627,6 @@ class RemoteMachineTrainingService implements TrainingService { const deferred: Deferred = new Deferred(); const jobpidPath: string = this.getJobPidPath(trialJob.id); const trialReturnCodeFilePath: string = path.join(this.remoteExpRootDir, 'trials', trialJob.id, '.nni', 'code'); - try { const killResult: number = (await SSHClientUtility.remoteExeCommand(`kill -0 \`cat ${jobpidPath}\``, sshClient)).exitCode; // if the process of jobpid is not alive any more @@ -576,12 +656,11 @@ class RemoteMachineTrainingService implements TrainingService { deferred.resolve(trialJob); } } - return deferred.promise; } - private getRemoteScriptsPath(): string { - return path.join(path.dirname(path.dirname(this.remoteExpRootDir)), 'scripts'); + private getRemoteScriptsPath(userName: string): string { + return path.join(getRemoteTmpDir(this.remoteOS), userName, 'nni', 'scripts'); } private getHostJobRemoteDir(jobId: string): string { @@ -592,6 +671,10 @@ class RemoteMachineTrainingService implements TrainingService { return path.join(getRemoteTmpDir(this.remoteOS), 'nni', 'experiments', getExperimentId()); } + public get MetricsEmitter() : EventEmitter { + return this.metricsEmitter; + } + private getJobPidPath(jobId: string): string { const trialJobDetail: RemoteMachineTrialJobDetail | undefined = this.trialJobsMap.get(jobId); if (trialJobDetail === undefined) { @@ -633,22 +716,6 @@ class RemoteMachineTrainingService implements TrainingService { return this.trialSequenceId++; } - - private async writeRemoteTrialFile(trialJobId: string, fileContent: string, - rmMeta: RemoteMachineMeta, fileName: string): Promise { - const sshClient: Client | undefined = this.machineSSHClientMap.get(rmMeta); - if (sshClient === undefined) { - throw new Error('sshClient is undefined.'); - } - - const trialWorkingFolder: string = path.join(this.remoteExpRootDir, 'trials', trialJobId); - const trialLocalTempFolder: string = path.join(this.expRootDir, 'trials-local', trialJobId); - - const localFilepath: string = path.join(trialLocalTempFolder, fileName); - await fs.promises.writeFile(localFilepath, fileContent, { encoding: 'utf8' }); - - await SSHClientUtility.copyFileToRemote(localFilepath, path.join(trialWorkingFolder, fileName), sshClient); - } } export { RemoteMachineTrainingService }; diff --git a/src/sdk/pynni/nni/platform/local.py b/src/sdk/pynni/nni/platform/local.py index fec0ae42c0..d3958d91ba 100644 --- a/src/sdk/pynni/nni/platform/local.py +++ b/src/sdk/pynni/nni/platform/local.py @@ -36,7 +36,7 @@ os.makedirs(_outputdir) _nni_platform = os.environ['NNI_PLATFORM'] -if _nni_platform not in ['pai', 'kubeflow', 'frameworkcontroller']: +if _nni_platform == 'local': _log_file_path = os.path.join(_outputdir, 'trial.log') init_logger(_log_file_path) @@ -77,7 +77,7 @@ def get_next_parameter(): return params def send_metric(string): - if _nni_platform in ['pai', 'kubeflow', 'frameworkcontroller']: + if _nni_platform != 'local': data = (string).encode('utf8') assert len(data) < 1000000, 'Metric too long' print('NNISDK_ME%s' % (data)) diff --git a/src/webui/src/components/public-child/OpenRow.tsx b/src/webui/src/components/public-child/OpenRow.tsx index b2b3e33f16..41119a44c2 100644 --- a/src/webui/src/components/public-child/OpenRow.tsx +++ b/src/webui/src/components/public-child/OpenRow.tsx @@ -57,8 +57,7 @@ class OpenRow extends React.Component { { - trainingPlatform === 'pai' || trainingPlatform === 'kubeflow' || - trainingPlatform === 'frameworkcontroller' + trainingPlatform !== 'local' ? Date: Tue, 29 Jan 2019 16:03:09 +0800 Subject: [PATCH 09/22] Fix broken pipe (#675) * Pull code (#22) * Support distributed job for frameworkcontroller (#612) support distributed job for frameworkcontroller * Multiphase doc (#519) * multiPhase doc * updates * updates * Add time parser for 'nnictl update duration' (#632) Current nnictl update duration only support seconds unit, add a parser for this command to support {s, m, h, d} * fix experiment state bug (#629) * update top README.md (#622) * Update README.md * update (#634) * Integration tests refactoring (#625) * Integration test refactoring (#21) (#616) * Integration test refactoring (#21) * Refactoring integration tests * test metrics * update azure pipeline * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * update trigger * Integration test refactoring (#618) * updates * updates * update pipeline (#619) * update pipeline * updates * updates * updates * updates * updates * test pipeline (#623) * test pipeline * updates * updates * updates * Update integration test (#624) * Update integration test * updates * updates * updates * updates * updates * updates * Revert "Pull code (#22)" This reverts commit 62fc165ad7b2ba724eead3b99f010aa34491e2c7. * Fix broken pipe error * updates * updates --- azure-pipelines.yml | 2 +- src/sdk/pynni/nni/common.py | 3 --- test/config_test/examples/cifar10-pytorch.test.yml | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 4312742be9..74f3034097 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -33,7 +33,7 @@ jobs: displayName: 'Built-in tuners / assessors tests' - script: | cd test - PATH=$HOME/.local/bin:$PATH python3 config_test.py --ts local + PATH=$HOME/.local/bin:$PATH python3 config_test.py --ts local --local_gpu displayName: 'Examples and advanced features tests on local machine' - script: | cd test diff --git a/src/sdk/pynni/nni/common.py b/src/sdk/pynni/nni/common.py index 946571bd8c..03fd870c31 100644 --- a/src/sdk/pynni/nni/common.py +++ b/src/sdk/pynni/nni/common.py @@ -44,13 +44,10 @@ def _load_env_args(): class _LoggerFileWrapper(TextIOBase): def __init__(self, logger_file): self.file = logger_file - self.orig_stdout = sys.stdout def write(self, s): if s != '\n': time = datetime.now().strftime(_time_format) - self.orig_stdout.write(s + '\n') - self.orig_stdout.flush() self.file.write('[{}] PRINT '.format(time) + s + '\n') self.file.flush() return len(s) diff --git a/test/config_test/examples/cifar10-pytorch.test.yml b/test/config_test/examples/cifar10-pytorch.test.yml index 47a02be27d..94916e35aa 100644 --- a/test/config_test/examples/cifar10-pytorch.test.yml +++ b/test/config_test/examples/cifar10-pytorch.test.yml @@ -1,7 +1,7 @@ authorName: nni experimentName: default_test maxExecDuration: 15m -maxTrialNum: 4 +maxTrialNum: 2 trialConcurrency: 2 searchSpacePath: ./cifar10_search_space.json From 4539b4d34179e92c97451e8c05bf07cfe23ccc7f Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Wed, 30 Jan 2019 11:09:49 +0800 Subject: [PATCH 10/22] fix warning for homepage build (#680) * fix lex format for code * fix doc links * hide api reference * delete orphan files * fix deadlink in FAQ * remove email address * fix deadlinks for deleted orphan files --- README.md | 45 +-- docs/AdvancedNAS.md | 4 +- docs/Builtin_Assessors.md | 4 +- docs/Builtin_Tuner.md | 24 +- docs/CONTRIBUTING.md | 4 +- docs/Customize_Advisor.md | 4 +- docs/Customize_Assessor.md | 6 +- docs/Customize_Tuner.md | 10 +- docs/EnableAssessor.md | 79 ----- docs/FAQ.md | 2 +- docs/FrameworkControllerMode.md | 2 +- docs/GetStarted.md | 112 ------- docs/GridSearchTuner.md | 23 -- docs/HowToChooseTuner.md | 316 ------------------ docs/Installation.md | 2 +- docs/KubeflowMode.md | 6 +- docs/Overview.md | 2 +- docs/PAIMode.md | 6 +- docs/QuickStart.md | 12 +- docs/README.md | 133 -------- docs/RELEASE.md | 14 +- docs/Reference.rst | 1 - docs/RemoteMachineMode.md | 4 +- docs/SQuAD_evolution_examples.md | 4 +- docs/StartExperiment.md | 34 -- docs/Trials.md | 14 +- docs/cifar10_examples.md | 2 +- docs/conf.py | 11 +- docs/gbdt_example.md | 2 +- docs/howto_1_WriteTrial.md | 132 -------- docs/howto_2_CustomizedTuner.md | 109 ------ docs/howto_3_CustomizedAdvisor.md | 40 --- docs/index.rst | 2 +- docs/multiPhase.md | 2 +- docs/sdk_reference.rst | 6 - docs/sklearn_examples.md | 2 +- docs/tutorial_1_CR_exp_local_api.md | 8 +- docs/tutorial_2_RemoteMachineMode.md | 65 ---- docs/tutorial_3_tryTunersAndAssessors.md | 37 -- examples/trials/network_morphism/README.md | 2 +- .../pynni/nni/networkmorphism_tuner/README.md | 2 +- 41 files changed, 105 insertions(+), 1184 deletions(-) delete mode 100644 docs/EnableAssessor.md delete mode 100644 docs/GetStarted.md delete mode 100644 docs/GridSearchTuner.md delete mode 100644 docs/HowToChooseTuner.md delete mode 100644 docs/README.md delete mode 100644 docs/StartExperiment.md delete mode 100644 docs/howto_1_WriteTrial.md delete mode 100644 docs/howto_2_CustomizedTuner.md delete mode 100644 docs/howto_3_CustomizedAdvisor.md delete mode 100644 docs/tutorial_2_RemoteMachineMode.md delete mode 100644 docs/tutorial_3_tryTunersAndAssessors.md diff --git a/README.md b/README.md index 63c7090f87..743696d1a2 100644 --- a/README.md +++ b/README.md @@ -49,30 +49,30 @@ The tool dispatches and runs trial jobs generated by tuning algorithms to search - Tuner + Tuner - Assessor + Assessor
    • Local Machine
    • -
    • Remote Servers
    • +
    • Remote Servers
    • OpenPAI
    • Kubeflow
    • FrameworkController on K8S (AKS etc.)
    • @@ -168,24 +168,25 @@ You can use these commands to get more information about the experiment ## **Documentation** * [NNI overview](docs/Overview.md) -* [Quick start](docs/GetStarted.md) +* [Quick start](docs/QuickStart.md) ## **How to** * [Install NNI](docs/Installation.md) * [Use command line tool nnictl](docs/NNICTLDOC.md) * [Use NNIBoard](docs/WebUI.md) * [How to define search space](docs/SearchSpaceSpec.md) -* [How to define a trial](docs/howto_1_WriteTrial.md) -* [How to choose tuner/search-algorithm](docs/HowToChooseTuner.md) +* [How to define a trial](docs/Trials.md) +* [How to choose tuner/search-algorithm](docs/Builtin_Tuner.md) * [Config an experiment](docs/ExperimentConfig.md) -* [How to use annotation](docs/howto_1_WriteTrial.md#nni-python-annotation) +* [How to use annotation](docs/Trials.md#nni-python-annotation) ## **Tutorials** * [Run an experiment on local (with multiple GPUs)?](docs/tutorial_1_CR_exp_local_api.md) -* [Run an experiment on multiple machines?](docs/tutorial_2_RemoteMachineMode.md) +* [Run an experiment on multiple machines?](docs/RemoteMachineMode.md) * [Run an experiment on OpenPAI?](docs/PAIMode.md) * [Run an experiment on Kubeflow?](docs/KubeflowMode.md) -* [Try different tuners and assessors](docs/tutorial_3_tryTunersAndAssessors.md) -* [Implement a customized tuner](docs/howto_2_CustomizedTuner.md) +* [Try different tuners](docs/tuners.rst) +* [Try different assessors](docs/assessors.rst) +* [Implement a customized tuner](docs/Customize_Tuner.md) * [Implement a customized assessor](examples/assessors/README.md) * [Use Genetic Algorithm to find good model architectures for Reading Comprehension task](examples/trials/ga_squad/README.md) diff --git a/docs/AdvancedNAS.md b/docs/AdvancedNAS.md index 451c7c25a4..72edcc1dd8 100644 --- a/docs/AdvancedNAS.md +++ b/docs/AdvancedNAS.md @@ -9,7 +9,7 @@ Currently we recommend sharing weights through NFS (Network File System), which ### Weight Sharing through NFS file With the NFS setup (see below), trial code can share model weight through loading & saving files. Here we recommend that user feed the tuner with the storage path: -```yml +```yaml tuner: codeDir: path/to/customer_tuner classFileName: customer_tuner.py @@ -82,7 +82,7 @@ The feature of weight sharing enables trials from different machines, in which m ``` ## Examples -For details, please refer to this [simple weight sharing example](../test/async_sharing_test). We also provided a [practice example](../examples/trials/weight_sharing/ga_squad) for reading comprehension, based on previous [ga_squad](../examples/trials/ga_squad) example. +For details, please refer to this [simple weight sharing example](https://github.com/Microsoft/nni/tree/master/test/async_sharing_test). We also provided a [practice example](https://github.com/Microsoft/nni/tree/master/examples/trials/weight_sharing/ga_squad) for reading comprehension, based on previous [ga_squad](https://github.com/Microsoft/nni/tree/master/examples/trials/ga_squad) example. [1]: https://arxiv.org/abs/1802.03268 [2]: https://arxiv.org/abs/1707.07012 diff --git a/docs/Builtin_Assessors.md b/docs/Builtin_Assessors.md index bb6ae4c40d..46fd4f89d5 100644 --- a/docs/Builtin_Assessors.md +++ b/docs/Builtin_Assessors.md @@ -32,7 +32,7 @@ It is applicable in a wide range of performance curves, thus, can be used in var **Usage example:** -```yml +```yaml # config.yml assessor: builtinAssessorName: Medianstop @@ -62,7 +62,7 @@ It is applicable in a wide range of performance curves, thus, can be used in var **Usage example:** -```yml +```yaml # config.yml assessor: builtinAssessorName: Curvefitting diff --git a/docs/Builtin_Tuner.md b/docs/Builtin_Tuner.md index 78f296bb68..bfb6474c93 100644 --- a/docs/Builtin_Tuner.md +++ b/docs/Builtin_Tuner.md @@ -39,7 +39,7 @@ TPE, as a black-box optimization, can be used in various scenarios and shows goo **Usage example:** -```yml +```yaml # config.yml tuner: builtinTunerName: TPE @@ -65,7 +65,7 @@ Random search is suggested when each trial does not take too long (e.g., each tr **Usage example** -```yml +```yaml # config.yml tuner: builtinTunerName: Random @@ -91,7 +91,7 @@ Anneal is suggested when each trial does not take too long, and you have enough **Usage example** -```yml +```yaml # config.yml tuner: builtinTunerName: Anneal @@ -117,7 +117,7 @@ Its requirement of computation resource is relatively high. Specifically, it req **Usage example** -```yml +```yaml # config.yml tuner: builtinTunerName: Evolution @@ -143,7 +143,7 @@ Similar to TPE, SMAC is also a black-box tuner which can be tried in various sce **Usage example** -```yml +```yaml # config.yml tuner: builtinTunerName: SMAC @@ -165,7 +165,7 @@ If the configurations you want to try have been decided, you can list them in se **Usage example** -```yml +```yaml # config.yml tuner: builtinTunerName: BatchTuner @@ -206,7 +206,7 @@ It is suggested when search space is small, it is feasible to exhaustively sweep **Usage example** -```yml +```yaml # config.yml tuner: builtinTunerName: GridSearch @@ -232,7 +232,7 @@ It is suggested when you have limited computation resource but have relatively l **Usage example** -```yml +```yaml # config.yml advisor: builtinAdvisorName: Hyperband @@ -256,7 +256,7 @@ NetworkMorphism requires [pyTorch](https://pytorch.org/get-started/locally), so **Suggested scenario** -It is suggested that you want to apply deep learning methods to your task (your own dataset) but you have no idea of how to choose or design a network. You modify the [example](../examples/trials/network_morphism/cifar10/cifar10_keras.py) to fit your own dataset and your own data augmentation method. Also you can change the batch size, learning rate or optimizer. It is feasible for different tasks to find a good network architecture. Now this tuner only supports the computer vision domain. +It is suggested that you want to apply deep learning methods to your task (your own dataset) but you have no idea of how to choose or design a network. You modify the [example](https://github.com/Microsoft/nni/tree/master/examples/trials/network_morphism/cifar10/cifar10_keras.py) to fit your own dataset and your own data augmentation method. Also you can change the batch size, learning rate or optimizer. It is feasible for different tasks to find a good network architecture. Now this tuner only supports the computer vision domain. **Requirement of classArg** @@ -268,7 +268,7 @@ It is suggested that you want to apply deep learning methods to your task (your **Usage example** -```yml +```yaml # config.yml tuner: builtinTunerName: NetworkMorphism @@ -296,7 +296,7 @@ Metis Tuner requires [sklearn](https://scikit-learn.org/), so users should insta **Suggested scenario** -Similar to TPE and SMAC, Metis is a black-box tuner. If your system takes a long time to finish each trial, Metis is more favorable than other approaches such as random search. Furthermore, Metis provides guidance on the subsequent trial. Here is an [example](../examples/trials/auto-gbdt/search_space_metis.json) about the use of Metis. User only need to send the final result like `accuracy` to tuner, by calling the nni SDK. +Similar to TPE and SMAC, Metis is a black-box tuner. If your system takes a long time to finish each trial, Metis is more favorable than other approaches such as random search. Furthermore, Metis provides guidance on the subsequent trial. Here is an [example](https://github.com/Microsoft/nni/tree/master/examples/trials/auto-gbdt/search_space_metis.json) about the use of Metis. User only need to send the final result like `accuracy` to tuner, by calling the nni SDK. **Requirement of classArg** @@ -304,7 +304,7 @@ Similar to TPE and SMAC, Metis is a black-box tuner. If your system takes a long **Usage example** -```yml +```yaml # config.yml tuner: builtinTunerName: MetisTuner diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 9fc7ff3c96..fcb74f820c 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -6,7 +6,7 @@ Firstly, if you are unsure or afraid of anything, just ask or submit the issue o However, for those individuals who want a bit more guidance on the best way to contribute to the project, read on. This document will cover all the points we're looking for in your contributions, raising your chances of quickly merging or addressing your contributions. -Looking for a quickstart, get acquainted with our [Get Started](./GetStarted.md) guide. +Looking for a quickstart, get acquainted with our [Get Started](./QuickStart.md) guide. There are a few simple guidelines that you need to follow before providing your hacks. @@ -30,7 +30,7 @@ Provide PRs with appropriate tags for bug fixes or enhancements to the source co If you are looking for How to develop and debug the NNI source code, you can refer to [How to set up NNI developer environment doc](./SetupNNIDeveloperEnvironment.md) file in the `docs` folder. -Similarly for [writing trials](./WriteYourTrial.md) or [starting experiments](StartExperiment.md). For everything else, refer [here](https://github.com/Microsoft/nni/tree/master/docs). +Similarly for [Quick Start](QuickStart.md). For everything else, refer to [NNI Home page](http://nni.readthedocs.io). ## Solve Existing Issues Head over to [issues](https://github.com/Microsoft/nni/issues) to find issues where help is needed from contributors. You can find issues tagged with 'good-first-issue' or 'help-wanted' to contribute in. diff --git a/docs/Customize_Advisor.md b/docs/Customize_Advisor.md index 12b2d9bf33..41cdfc56a1 100644 --- a/docs/Customize_Advisor.md +++ b/docs/Customize_Advisor.md @@ -22,13 +22,13 @@ class CustomizedAdvisor(MsgDispatcherBase): **2) Implement the methods with prefix `handle_` except `handle_request`** -Please refer to the implementation of Hyperband ([src/sdk/pynni/nni/hyperband_advisor/hyperband_advisor.py](../src/sdk/pynni/nni/hyperband_advisor/hyperband_advisor.py)) for how to implement the methods. +Please refer to the implementation of Hyperband ([src/sdk/pynni/nni/hyperband_advisor/hyperband_advisor.py](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperband_advisor/hyperband_advisor.py)) for how to implement the methods. **3) Configure your customized Advisor in experiment YAML config file** Similar to tuner and assessor. NNI needs to locate your customized Advisor class and instantiate the class, so you need to specify the location of the customized Advisor class and pass literal values as parameters to the \_\_init__ constructor. -```yml +```yaml advisor: codeDir: /home/abc/myadvisor classFileName: my_customized_advisor.py diff --git a/docs/Customize_Assessor.md b/docs/Customize_Assessor.md index dfb001ff2a..82cf74f5da 100644 --- a/docs/Customize_Assessor.md +++ b/docs/Customize_Assessor.md @@ -40,7 +40,7 @@ class CustomizedAssessor(Assessor): NNI needs to locate your customized Assessor class and instantiate the class, so you need to specify the location of the customized Assessor class and pass literal values as parameters to the \_\_init__ constructor. -```yml +```yaml assessor: codeDir: /home/abc/myassessor @@ -56,5 +56,5 @@ assessor: Please noted in **2**. The object `trial_history` are exact the object that Trial send to Assessor by using SDK `report_intermediate_result` function. More detail example you could see: -> * [medianstop-assessor](../src/sdk/pynni/nni/medianstop_assessor) -> * [curvefitting-assessor](../src/sdk/pynni/nni/curvefitting_assessor) \ No newline at end of file +> * [medianstop-assessor](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/medianstop_assessor) +> * [curvefitting-assessor](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/curvefitting_assessor) \ No newline at end of file diff --git a/docs/Customize_Tuner.md b/docs/Customize_Tuner.md index 70b4615780..5e44d542f5 100644 --- a/docs/Customize_Tuner.md +++ b/docs/Customize_Tuner.md @@ -95,7 +95,7 @@ This is because your tuner is not executed in the directory of your tuner (i.e., NNI needs to locate your customized tuner class and instantiate the class, so you need to specify the location of the customized tuner class and pass literal values as parameters to the \_\_init__ constructor. -```yml +```yaml tuner: codeDir: /home/abc/mytuner @@ -109,10 +109,10 @@ tuner: ``` More detail example you could see: -> * [evolution-tuner](../src/sdk/pynni/nni/evolution_tuner) -> * [hyperopt-tuner](../src/sdk/pynni/nni/hyperopt_tuner) -> * [evolution-based-customized-tuner](../examples/tuners/ga_customer_tuner) +> * [evolution-tuner](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/evolution_tuner) +> * [hyperopt-tuner](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperopt_tuner) +> * [evolution-based-customized-tuner](https://github.com/Microsoft/nni/tree/master/examples/tuners/ga_customer_tuner) ### Write a more advanced automl algorithm -The methods above are usually enough to write a general tuner. However, users may also want more methods, for example, intermediate results, trials' state (e.g., the methods in assessor), in order to have a more powerful automl algorithm. Therefore, we have another concept called `advisor` which directly inherits from `MsgDispatcherBase` in [`src/sdk/pynni/nni/msg_dispatcher_base.py`](../src/sdk/pynni/nni/msg_dispatcher_base.py). Please refer to [here](./howto_3_CustomizedAdvisor.md) for how to write a customized advisor. \ No newline at end of file +The methods above are usually enough to write a general tuner. However, users may also want more methods, for example, intermediate results, trials' state (e.g., the methods in assessor), in order to have a more powerful automl algorithm. Therefore, we have another concept called `advisor` which directly inherits from `MsgDispatcherBase` in [`src/sdk/pynni/nni/msg_dispatcher_base.py`](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/msg_dispatcher_base.py). Please refer to [here](Customize_Advisor.md) for how to write a customized advisor. \ No newline at end of file diff --git a/docs/EnableAssessor.md b/docs/EnableAssessor.md deleted file mode 100644 index 4c29f01e05..0000000000 --- a/docs/EnableAssessor.md +++ /dev/null @@ -1,79 +0,0 @@ -**Enable Assessor in your expeirment** -=== -Assessor module is for assessing running trials. One common use case is early stopping, which terminates unpromising trial jobs based on their intermediate results. - -## Using NNI built-in Assessor -Here we use the same example `examples/trials/mnist-annotation`. We use `Medianstop` assessor for this experiment. The yml configure file is shown below: -``` -authorName: your_name -experimentName: auto_mnist -# how many trials could be concurrently running -trialConcurrency: 2 -# maximum experiment running duration -maxExecDuration: 3h -# empty means never stop -maxTrialNum: 100 -# choice: local, remote -trainingServicePlatform: local -# choice: true, false -useAnnotation: true -tuner: - builtinTunerName: TPE - classArgs: - optimize_mode: maximize -assessor: - builtinAssessorName: Medianstop - classArgs: - optimize_mode: maximize -trial: - command: python mnist.py - codeDir: /usr/share/nni/examples/trials/mnist-annotation - gpuNum: 0 -``` -For our built-in assessors, you need to fill two fields: `builtinAssessorName` which chooses NNI provided assessors (refer to [here]() for built-in assessors), `optimize_mode` which includes maximize and minimize (you want to maximize or minimize your trial result). - -## Using user customized Assessor -You can also write your own assessor following the guidance [here](). For example, you wrote an assessor for `examples/trials/mnist-annotation`. You should prepare the yml configure below: -``` -authorName: your_name -experimentName: auto_mnist -# how many trials could be concurrently running -trialConcurrency: 2 -# maximum experiment running duration -maxExecDuration: 3h -# empty means never stop -maxTrialNum: 100 -# choice: local, remote -trainingServicePlatform: local -# choice: true, false -useAnnotation: true -tuner: - # Possible values: TPE, Random, Anneal, Evolution - builtinTunerName: TPE - classArgs: - optimize_mode: maximize -assessor: - # Your assessor code directory - codeDir: - # Name of the file which contains your assessor class - classFileName: - # Your assessor class name, must be a subclass of nni.Assessor - className: - # Parameter names and literal values you want to pass to - # the __init__ constructor of your assessor class - classArgs: - arg1: value1 - gpuNum: 0 -trial: - command: python mnist.py - codeDir: /usr/share/nni/examples/trials/mnist-annotation - gpuNum: 0 -``` -You need to fill: `codeDir`, `classFileName`, `className`, and pass parameters to \_\_init__ constructor through `classArgs` field if the \_\_init__ constructor of your assessor class has required parameters. - -**Note that** if you want to access a file (e.g., ```data.txt```) in the directory of your own assessor, you cannot use ```open('data.txt', 'r')```. Instead, you should use the following: -``` -_pwd = os.path.dirname(__file__) -_fd = open(os.path.join(_pwd, 'data.txt'), 'r') -``` -This is because your assessor is not executed in the directory of your assessor (i.e., ```pwd``` is not the directory of your own assessor). \ No newline at end of file diff --git a/docs/FAQ.md b/docs/FAQ.md index dc2565ab2e..8543b1c90a 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -19,7 +19,7 @@ Please try the following solutions in turn: * Install NNI with `--no-cache-dir` flag like `python3 -m pip install nni --no-cache-dir` ### Job management error: getIPV4Address() failed because os.networkInterfaces().eth0 is undefined. -Your machine don't have eth0 device, please set nniManagerIp in your config file manually. [refer](https://github.com/Microsoft/nni/blob/master/docs/ExperimentConfig.md) +Your machine don't have eth0 device, please set [nniManagerIp](ExperimentConfig.md) in your config file manually. ### Exceed the MaxDuration but didn't stop When the duration of experiment reaches the maximum duration, nniManager will not create new trials, but the existing trials will continue unless user manually stop the experiment. diff --git a/docs/FrameworkControllerMode.md b/docs/FrameworkControllerMode.md index b9c096483f..ce6cd3fd11 100644 --- a/docs/FrameworkControllerMode.md +++ b/docs/FrameworkControllerMode.md @@ -12,7 +12,7 @@ NNI supports running experiment using [FrameworkController](https://github.com/M apt-get install nfs-common ``` -6. Install **NNI**, follow the install guide [here](GetStarted.md). +6. Install **NNI**, follow the install guide [here](QuickStart.md). ## Prerequisite for Azure Kubernetes Service 1. NNI support kubeflow based on Azure Kubernetes Service, follow the [guideline](https://azure.microsoft.com/en-us/services/kubernetes-service/) to set up Azure Kubernetes Service. diff --git a/docs/GetStarted.md b/docs/GetStarted.md deleted file mode 100644 index e2c72e5498..0000000000 --- a/docs/GetStarted.md +++ /dev/null @@ -1,112 +0,0 @@ -# Get Started with NNI - -## **Installation** - -* __Dependencies__ - - ```bash - python >= 3.5 - git - wget - ``` - - python pip should also be correctly installed. You could use "python3 -m pip -v" to check in Linux. - - * Note: we don't support virtual environment in current releases. - -* __Install NNI through pip__ - - ```bash - python3 -m pip install --user --upgrade nni - ``` - -* __Install NNI through source code__ - - ```bash - git clone -b v0.5 https://github.com/Microsoft/nni.git - cd nni - source install.sh - ``` - -## **Quick start: run a customized experiment** - -An experiment is to run multiple trial jobs, each trial job tries a configuration which includes a specific neural architecture (or model) and hyper-parameter values. To run an experiment through NNI, you should: - -* Provide a runnable trial -* Provide or choose a tuner -* Provide a YAML experiment configure file -* (optional) Provide or choose an assessor - -**Prepare trial**: Let's use a simple trial example, e.g. mnist, provided by NNI. After you installed NNI, NNI examples have been put in ~/nni/examples, run `ls ~/nni/examples/trials` to see all the trial examples. You can simply execute the following command to run the NNI mnist example: - -```bash -python3 ~/nni/examples/trials/mnist-annotation/mnist.py -``` - -This command will be filled in the YAML configure file below. Please refer to [here](howto_1_WriteTrial.md) for how to write your own trial. - -**Prepare tuner**: NNI supports several popular automl algorithms, including Random Search, Tree of Parzen Estimators (TPE), Evolution algorithm etc. Users can write their own tuner (refer to [here](howto_2_CustomizedTuner.md), but for simplicity, here we choose a tuner provided by NNI as below: - -```yml -tuner: - builtinTunerName: TPE - classArgs: - optimize_mode: maximize -``` - -*builtinTunerName* is used to specify a tuner in NNI, *classArgs* are the arguments pass to the tuner, *optimization_mode* is to indicate whether you want to maximize or minimize your trial's result. - -**Prepare configure file**: Since you have already known which trial code you are going to run and which tuner you are going to use, it is time to prepare the YAML configure file. NNI provides a demo configure file for each trial example, `cat ~/nni/examples/trials/mnist-annotation/config.yml` to see it. Its content is basically shown below: - -```yml -authorName: your_name -experimentName: auto_mnist - -# how many trials could be concurrently running -trialConcurrency: 2 - -# maximum experiment running duration -maxExecDuration: 3h - -# empty means never stop -maxTrialNum: 100 - -# choice: local, remote, pai -trainingServicePlatform: local - -# choice: true, false -useAnnotation: true -tuner: - builtinTunerName: TPE - classArgs: - optimize_mode: maximize -trial: - command: python mnist.py - codeDir: ~/nni/examples/trials/mnist-annotation - gpuNum: 0 -``` - -Here *useAnnotation* is true because this trial example uses our python annotation (refer to [here](../tools/annotation/README.md) for details). For trial, we should provide *trialCommand* which is the command to run the trial, provide *trialCodeDir* where the trial code is. The command will be executed in this directory. We should also provide how many GPUs a trial requires. - -With all these steps done, we can run the experiment with the following command: - - nnictl create --config ~/nni/examples/trials/mnist-annotation/config.yml - -You can refer to [here](NNICTLDOC.md) for more usage guide of *nnictl* command line tool. - -## View experiment results -The experiment has been running now, NNI provides WebUI for you to view experiment progress, to control your experiment, and some other appealing features. The WebUI is opened by default by `nnictl create`. - -## Read more - -* [Tuners supported in the latest NNI release](./HowToChooseTuner.md) -* [Overview](Overview.md) -* [Installation](Installation.md) -* [Use command line tool nnictl](NNICTLDOC.md) -* [Use NNIBoard](WebUI.md) -* [Define search space](SearchSpaceSpec.md) -* [Config an experiment](ExperimentConfig.md) -* [How to run an experiment on local (with multiple GPUs)?](tutorial_1_CR_exp_local_api.md) -* [How to run an experiment on multiple machines?](tutorial_2_RemoteMachineMode.md) -* [How to run an experiment on OpenPAI?](PAIMode.md) -* [How to create a multi-phase experiment](multiPhase.md) diff --git a/docs/GridSearchTuner.md b/docs/GridSearchTuner.md deleted file mode 100644 index cc9111ae62..0000000000 --- a/docs/GridSearchTuner.md +++ /dev/null @@ -1,23 +0,0 @@ -Grid Search on nni -=== - -## 1. Introduction - -Grid Search performs an exhaustive searching through a manually specified subset of the hyperparameter space defined in the searchspace file. - -Note that the only acceptable types of search space are `choice`, `quniform`, `qloguniform` since only these three types of search space can be exhausted. - -Moreover, in GridSearch Tuner, for users' convenience, the definition of `quniform` and `qloguniform` change, where q here specifies the number of values that will be sampled. Details about them are listed as follows: - -* Type 'quniform' will receive three values [low, high, q], where [low, high] specifies a range and 'q' specifies the number of values that will be sampled evenly. Note that q should be at least 2. It will be sampled in a way that the first sampled value is 'low', and each of the following values is (high-low)/q larger that the value in front of it. -* Type 'qloguniform' behaves like 'quniform' except that it will first change the range to [log(low), log(high)] and sample and then change the sampled value back. - -## 2. Usage - -Since Grid Search Tuner will exhaust all possible hyper-parameter combination according to the search space file without any hyper-parameter for tuner itself, all you need to do is to specify tuner name in your experiment's YAML config file: - -``` -tuner: - builtinTunerName: GridSearch -``` - diff --git a/docs/HowToChooseTuner.md b/docs/HowToChooseTuner.md deleted file mode 100644 index 3c2cccee76..0000000000 --- a/docs/HowToChooseTuner.md +++ /dev/null @@ -1,316 +0,0 @@ -# How to use Tuner that NNI supports? - -For now, NNI has supported the following tuner algorithms. Note that NNI installation only installs a subset of those algorithms, other algorithms should be installed through `nnictl package install` before you use them. For example, for SMAC the installation command is `nnictl package install --name=SMAC`. - - - [TPE](#TPE) - - [Random Search](#Random) - - [Anneal](#Anneal) - - [Naive Evolution](#Evolution) - - [SMAC](#SMAC) (to install through `nnictl`) - - [Batch Tuner](#Batch) - - [Grid Search](#Grid) - - [Hyperband](#Hyperband) - - [Network Morphism](#NetworkMorphism) (require pyTorch) - - [Metis Tuner](#MetisTuner) (require sklearn) - - - ## Supported tuner algorithms - - -We will introduce some basic knowledge about the tuner algorithms, suggested scenarios for each tuner, and their example usage (for complete usage spec, please refer to [here]()). - - -**TPE** - -The Tree-structured Parzen Estimator (TPE) is a sequential model-based optimization (SMBO) approach. SMBO methods sequentially construct models to approximate the performance of hyperparameters based on historical measurements, and then subsequently choose new hyperparameters to test based on this model. -The TPE approach models P(x|y) and P(y) where x represents hyperparameters and y the associated evaluate matric. P(x|y) is modeled by transforming the generative process of hyperparameters, replacing the distributions of the configuration prior with non-parametric densities. -This optimization approach is described in detail in [Algorithms for Hyper-Parameter Optimization][1]. -​ -_Suggested scenario_: TPE, as a black-box optimization, can be used in various scenarios, and shows good performance in general. Especially when you have limited computation resource and can only try a small number of trials. From a large amount of experiments, we could found that TPE is far better than Random Search. - -_Usage_: -```yml - # config.yml - tuner: - builtinTunerName: TPE - classArgs: - # choice: maximize, minimize - optimize_mode: maximize -``` - - -**Random Search** - -In [Random Search for Hyper-Parameter Optimization][2] show that Random Search might be surprisingly simple and effective. We suggests that we could use Random Search as baseline when we have no knowledge about the prior distribution of hyper-parameters. - -_Suggested scenario_: Random search is suggested when each trial does not take too long (e.g., each trial can be completed very soon, or early stopped by assessor quickly), and you have enough computation resource. Or you want to uniformly explore the search space. Random Search could be considered as baseline of search algorithm. - -_Usage_: -```yml - # config.yml - tuner: - builtinTunerName: Random -``` - - -**Anneal** - -This simple annealing algorithm begins by sampling from the prior, but tends over time to sample from points closer and closer to the best ones observed. This algorithm is a simple variation on random search that leverages smoothness in the response surface. The annealing rate is not adaptive. - -_Suggested scenario_: Anneal is suggested when each trial does not take too long, and you have enough computation resource(almost same with Random Search). Or the variables in search space could be sample from some prior distribution. - -_Usage_: -```yml - # config.yml - tuner: - builtinTunerName: Anneal - classArgs: - # choice: maximize, minimize - optimize_mode: maximize -``` - - -**Naive Evolution** - -Naive Evolution comes from [Large-Scale Evolution of Image Classifiers][3]. It randomly initializes a population based on search space. For each generation, it chooses better ones and do some mutation (e.g., change a hyperparameter, add/remove one layer) on them to get the next generation. Naive Evolution requires many trials to works, but it's very simple and easily to expand new features. - -_Suggested scenario_: Its requirement of computation resource is relatively high. Specifically, it requires large inital population to avoid falling into local optimum. If your trial is short or leverages assessor, this tuner is a good choice. And, it is more suggested when your trial code supports weight transfer, that is, the trial could inherit the converged weights from its parent(s). This can greatly speed up the training progress. - -_Usage_: -```yml - # config.yml - tuner: - builtinTunerName: Evolution - classArgs: - # choice: maximize, minimize - optimize_mode: maximize -``` - - -**SMAC** - -[SMAC][4] is based on Sequential Model-Based Optimization (SMBO). It adapts the most prominent previously used model class (Gaussian stochastic process models) and introduces the model class of random forests to SMBO, in order to handle categorical parameters. The SMAC supported by NNI is a wrapper on [the SMAC3 github repo][5]. - -Note that SMAC on NNI only supports a subset of the types in [search space spec](./SearchSpaceSpec.md), including `choice`, `randint`, `uniform`, `loguniform`, `quniform(q=1)`. - -_Installation_: -* Install swig first. (`sudo apt-get install swig` for Ubuntu users) -* Run `nnictl package install --name=SMAC` - -_Suggested scenario_: Similar to TPE, SMAC is also a black-box tuner which can be tried in various scenarios, and is suggested when computation resource is limited. It is optimized for discrete hyperparameters, thus, suggested when most of your hyperparameters are discrete. - -_Usage_: -```yml - # config.yml - tuner: - builtinTunerName: SMAC - classArgs: - # choice: maximize, minimize - optimize_mode: maximize -``` - - -**Batch tuner** - -Batch tuner allows users to simply provide several configurations (i.e., choices of hyper-parameters) for their trial code. After finishing all the configurations, the experiment is done. Batch tuner only supports the type `choice` in [search space spec](./SearchSpaceSpec.md). - -_Suggested sceanrio_: If the configurations you want to try have been decided, you can list them in searchspace file (using `choice`) and run them using batch tuner. - -_Usage_: -```yml - # config.yml - tuner: - builtinTunerName: BatchTuner -``` - -Note that the search space that BatchTuner supported like: -```json -{ - "combine_params": - { - "_type" : "choice", - "_value" : [{"optimizer": "Adam", "learning_rate": 0.00001}, - {"optimizer": "Adam", "learning_rate": 0.0001}, - {"optimizer": "Adam", "learning_rate": 0.001}, - {"optimizer": "SGD", "learning_rate": 0.01}, - {"optimizer": "SGD", "learning_rate": 0.005}, - {"optimizer": "SGD", "learning_rate": 0.0002}] - } -} -``` -The search space file including the high-level key `combine_params`. The type of params in search space must be `choice` and the `values` including all the combined-params value. - - -**Grid Search** - -Grid Search performs an exhaustive searching through a manually specified subset of the hyperparameter space defined in the searchspace file. -Note that the only acceptable types of search space are `choice`, `quniform`, `qloguniform`. **The number `q` in `quniform` and `qloguniform` has special meaning (different from the spec in [search space spec](./SearchSpaceSpec.md)). It means the number of values that will be sampled evenly from the range `low` and `high`.** - -_Suggested scenario_: It is suggested when search space is small, it is feasible to exhaustively sweeping the whole search space. - -_Usage_: -```yml - # config.yml - tuner: - builtinTunerName: GridSearch -``` - - -**Hyperband** - -[Hyperband][6] tries to use limited resource to explore as many configurations as possible, and finds out the promising ones to get the final result. The basic idea is generating many configurations and to run them for small number of STEPs to find out promising one, then further training those promising ones to select several more promising one. More detail can be referred to [here](../src/sdk/pynni/nni/hyperband_advisor/README.md). - -_Suggested scenario_: It is suggested when you have limited computation resource but have relatively large search space. It performs good in the scenario that intermediate result (e.g., accuracy) can reflect good or bad of final result (e.g., accuracy) to some extent. - -_Usage_: -```yml - # config.yml - advisor: - builtinAdvisorName: Hyperband - classArgs: - # choice: maximize, minimize - optimize_mode: maximize - # R: the maximum STEPS (could be the number of mini-batches or epochs) can be - # allocated to a trial. Each trial should use STEPS to control how long it runs. - R: 60 - # eta: proportion of discarded trials - eta: 3 -``` - - -**Network Morphism** - -[Network Morphism][7] provides functions to automatically search for architecture of deep learning models. Every child network inherits the knowledge from its parent network and morphs into diverse types of networks, including changes of depth, width and skip-connection. Next, it estimates the value of child network using the history architecture and metric pairs. Then it selects the most promising one to train. More detail can be referred to [here](../src/sdk/pynni/nni/networkmorphism_tuner/README.md). - -_Installation_: -NetworkMorphism requires [pyTorch](https://pytorch.org/get-started/locally), so users should install it first. - - -_Suggested scenario_: It is suggested that you want to apply deep learning methods to your task (your own dataset) but you have no idea of how to choose or design a network. You modify the [example](../examples/trials/network_morphism/cifar10/cifar10_keras.py) to fit your own dataset and your own data augmentation method. Also you can change the batch size, learning rate or optimizer. It is feasible for different tasks to find a good network architecture. Now this tuner only supports the cv domain. - -_Usage_: -```yml - # config.yml - tuner: - builtinTunerName: NetworkMorphism - classArgs: - #choice: maximize, minimize - optimize_mode: maximize - #for now, this tuner only supports cv domain - task: cv - #input image width - input_width: 32 - #input image channel - input_channel: 3 - #number of classes - n_output_node: 10 -``` - - - -**Metis Tuner** - -[Metis][10] offers the following benefits when it comes to tuning parameters: -While most tools only predicts the optimal configuration, Metis gives you two outputs: (a) current prediction of optimal configuration, and (b) suggestion for the next trial. No more guess work! - -While most tools assume training datasets do not have noisy data, Metis actually tells you if you need to re-sample a particular hyper-parameter. - -While most tools have problems of being exploitation-heavy, Metis' search strategy balances exploration, exploitation, and (optional) re-sampling. - -Metis belongs to the class of sequential model-based optimization (SMBO), and it is based on the Bayesian Optimization framework. To model the parameter-vs-performance space, Metis uses both Gaussian Process and GMM. Since each trial can impose a high time cost, Metis heavily trades inference computations with naive trial. At each iteration, Metis does two tasks: -* It finds the global optimal point in the Gaussian Process space. This point represents the optimal configuration. -* It identifies the next hyper-parameter candidate. This is achieved by inferring the potential information gain of exploration, exploitation, and re-sampling. - -Note that the only acceptable types of search space are `choice`, `quniform`, `uniform` and `randint`. We only support -numerical `choice` now. More features will support later. - -More details can be found in our paper: https://www.microsoft.com/en-us/research/publication/metis-robustly-tuning-tail-latencies-cloud-systems/ - - -_Installation_: -Metis Tuner requires [sklearn](https://scikit-learn.org/), so users should install it first. User could use `pip3 install sklearn` to install it. - - -_Suggested scenario_: -Similar to TPE and SMAC, Metis is a black-box tuner. If your system takes a long time to finish each trial, Metis is more favorable than other approaches such as random search. Furthermore, Metis provides guidance on the subsequent trial. Here is an [example](../examples/trials/auto-gbdt/search_space_metis.json) about the use of Metis. User only need to send the final result like `accuracy` to tuner, by calling the NNI SDK. - -_Usage_: -```yml - # config.yml - tuner: - builtinTunerName: MetisTuner - classArgs: - #choice: maximize, minimize - optimize_mode: maximize -``` - - -# How to use Assessor that NNI supports? - -For now, NNI has supported the following assessor algorithms. - - - [Medianstop](#Medianstop) - - [Curvefitting](#Curvefitting) - -## Supported Assessor Algorithms - - -**Medianstop** - -Medianstop is a simple early stopping rule mentioned in the [paper][8]. It stops a pending trial X at step S if the trial’s best objective value by step S is strictly worse than the median value of the running averages of all completed trials’ objectives reported up to step S. - -_Suggested scenario_: It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress. - -_Usage_: -```yml - assessor: - builtinAssessorName: Medianstop - classArgs: - #choice: maximize, minimize - optimize_mode: maximize - # (optional) A trial is determined to be stopped or not, - * only after receiving start_step number of reported intermediate results. - * The default value of start_step is 0. - start_step: 5 -``` - - -**Curvefitting** - -Curve Fitting Assessor is a LPA(learning, predicting, assessing) algorithm. It stops a pending trial X at step S if the prediction of final epoch's performance worse than the best final performance in the trial history. In this algorithm, we use 12 curves to fit the accuracy curve, the large set of parametric curve models are chosen from [reference paper][9]. The learning curves' shape coincides with our prior knowlwdge about the form of learning curves: They are typically increasing, saturating functions. - -_Suggested scenario_: It is applicable in a wide range of performance curves, thus, can be used in various scenarios to speed up the tuning progress. Even better, it's able to handle and assess curves with similar performance. - -_Usage_: -```yml - assessor: - builtinAssessorName: Curvefitting - classArgs: - # (required)The total number of epoch. - # We need to know the number of epoch to determine which point we need to predict. - epoch_num: 20 - # (optional) choice: maximize, minimize - # Kindly reminds that if you choose minimize mode, please adjust the value of threshold >= 1.0 (e.g threshold=1.1) - * The default value of optimize_mode is maximize - optimize_mode: maximize - # (optional) A trial is determined to be stopped or not - # In order to save our computing resource, we start to predict when we have more than start_step(default=6) accuracy points. - # only after receiving start_step number of reported intermediate results. - * The default value of start_step is 6. - start_step: 6 - # (optional) The threshold that we decide to early stop the worse performance curve. - # For example: if threshold = 0.95, optimize_mode = maximize, best performance in the history is 0.9, then we will stop the trial which predict value is lower than 0.95 * 0.9 = 0.855. - * The default value of threshold is 0.95. - threshold: 0.95 -``` - -[1]: https://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf -[2]: http://www.jmlr.org/papers/volume13/bergstra12a/bergstra12a.pdf -[3]: https://arxiv.org/pdf/1703.01041.pdf -[4]: https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf -[5]: https://github.com/automl/SMAC3 -[6]: https://arxiv.org/pdf/1603.06560.pdf -[7]: https://arxiv.org/abs/1806.10282 -[8]: https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf -[9]: http://aad.informatik.uni-freiburg.de/papers/15-IJCAI-Extrapolation_of_Learning_Curves.pdf -[10]:https://www.microsoft.com/en-us/research/publication/metis-robustly-tuning-tail-latencies-cloud-systems/ diff --git a/docs/Installation.md b/docs/Installation.md index dc6ec25a14..76c2775c6e 100644 --- a/docs/Installation.md +++ b/docs/Installation.md @@ -22,7 +22,7 @@ Currently we only support installation on Linux & Mac. * __Install NNI in docker image__ - You can also install NNI in a docker image. Please follow the instructions [here](../deployment/docker/README.md) to build NNI docker image. The NNI docker image can also be retrieved from Docker Hub through the command `docker pull msranni/nni:latest`. + You can also install NNI in a docker image. Please follow the instructions [here](https://github.com/Microsoft/nni/tree/master/deployment/docker/README.md) to build NNI docker image. The NNI docker image can also be retrieved from Docker Hub through the command `docker pull msranni/nni:latest`. ## **System requirements** diff --git a/docs/KubeflowMode.md b/docs/KubeflowMode.md index f1028afba0..226be6b7f6 100644 --- a/docs/KubeflowMode.md +++ b/docs/KubeflowMode.md @@ -13,7 +13,7 @@ Now NNI supports running experiment on [Kubeflow](https://github.com/kubeflow/ku apt-get install nfs-common ``` -7. Install **NNI**, follow the install guide [here](GetStarted.md). +7. Install **NNI**, follow the install guide [here](QuickStart.md). ## Prerequisite for Azure Kubernetes Service 1. NNI support kubeflow based on Azure Kubernetes Service, follow the [guideline](https://azure.microsoft.com/en-us/services/kubernetes-service/) to set up Azure Kubernetes Service. @@ -179,7 +179,7 @@ Trial configuration in kubeflow mode have the following configuration keys: * gpuNum * image * Required key. In kubeflow mode, your trial program will be scheduled by Kubernetes to run in [Pod](https://kubernetes.io/docs/concepts/workloads/pods/pod/). This key is used to specify the Docker image used to create the pod where your trail program will run. - * We already build a docker image [msranni/nni](https://hub.docker.com/r/msranni/nni/) on [Docker Hub](https://hub.docker.com/). It contains NNI python packages, Node modules and javascript artifact files required to start experiment, and all of NNI dependencies. The docker file used to build this image can be found at [here](../deployment/Dockerfile.build.base). You can either use this image directly in your config file, or build your own image based on it. + * We already build a docker image [msranni/nni](https://hub.docker.com/r/msranni/nni/) on [Docker Hub](https://hub.docker.com/). It contains NNI python packages, Node modules and javascript artifact files required to start experiment, and all of NNI dependencies. The docker file used to build this image can be found at [here](https://github.com/Microsoft/nni/tree/master/deployment/Dockerfile.build.base). You can either use this image directly in your config file, or build your own image based on it. * apiVersion * Required key. The API version of your kubeflow. * ps (optional). This config section is used to configure tensorflow parameter server role. @@ -196,4 +196,4 @@ Notice: In kubeflow mode, NNIManager will start a rest server and listen on a po Once a trial job is completed, you can goto NNI WebUI's overview page (like http://localhost:8080/oview) to check trial's information. -Any problems when using NNI in kubeflow mode, plesae create issues on [NNI github repo](https://github.com/Microsoft/nni), or send mail to nni@microsoft.com +Any problems when using NNI in kubeflow mode, plesae create issues on [NNI Github repo](https://github.com/Microsoft/nni). \ No newline at end of file diff --git a/docs/Overview.md b/docs/Overview.md index b09c678b3a..a004ffabf9 100644 --- a/docs/Overview.md +++ b/docs/Overview.md @@ -54,6 +54,6 @@ More details about how to run an experiment, please refer to [Get Started](Quick * [What are assessors supported by NNI?](Builtin_Assessors.md) * [How to customize your own assessor?](Customize_Assessor.md) * [How to run an experiment on local?](tutorial_1_CR_exp_local_api.md) -* [How to run an experiment on multiple machines?](tutorial_2_RemoteMachineMode.md) +* [How to run an experiment on multiple machines?](RemoteMachineMode.md) * [How to run an experiment on OpenPAI?](PAIMode.md) * [Examples](mnist_examples.md) \ No newline at end of file diff --git a/docs/PAIMode.md b/docs/PAIMode.md index c1cdd1268d..997c6eff33 100644 --- a/docs/PAIMode.md +++ b/docs/PAIMode.md @@ -3,12 +3,12 @@ NNI supports running an experiment on [OpenPAI](https://github.com/Microsoft/pai) (aka pai), called pai mode. Before starting to use NNI pai mode, you should have an account to access an [OpenPAI](https://github.com/Microsoft/pai) cluster. See [here](https://github.com/Microsoft/pai#how-to-deploy) if you don't have any OpenPAI account and want to deploy an OpenPAI cluster. In pai mode, your trial program will run in pai's container created by Docker. ## Setup environment -Install NNI, follow the install guide [here](GetStarted.md). +Install NNI, follow the install guide [here](QuickStart.md). ## Run an experiment Use `examples/trials/mnist-annotation` as an example. The NNI config YAML file's content is like: -```yml +```yaml authorName: your_name experimentName: auto_mnist # how many trials could be concurrently running @@ -50,7 +50,7 @@ Compared with LocalMode and [RemoteMachineMode](RemoteMachineMode.md), trial con * Required key. Should be positive number based on your trial program's memory requirement * image * Required key. In pai mode, your trial program will be scheduled by OpenPAI to run in [Docker container](https://www.docker.com/). This key is used to specify the Docker image used to create the container in which your trial will run. - * We already build a docker image [nnimsra/nni](https://hub.docker.com/r/msranni/nni/) on [Docker Hub](https://hub.docker.com/). It contains NNI python packages, Node modules and javascript artifact files required to start experiment, and all of NNI dependencies. The docker file used to build this image can be found at [here](../deployment/Dockerfile.build.base). You can either use this image directly in your config file, or build your own image based on it. + * We already build a docker image [nnimsra/nni](https://hub.docker.com/r/msranni/nni/) on [Docker Hub](https://hub.docker.com/). It contains NNI python packages, Node modules and javascript artifact files required to start experiment, and all of NNI dependencies. The docker file used to build this image can be found at [here](https://github.com/Microsoft/nni/tree/master/deployment/Dockerfile.build.base). You can either use this image directly in your config file, or build your own image based on it. * dataDir * Optional key. It specifies the HDFS data direcotry for trial to download data. The format should be something like hdfs://{your HDFS host}:9000/{your data directory} * outputDir diff --git a/docs/QuickStart.md b/docs/QuickStart.md index 5cb9b22d2c..985eeab11c 100644 --- a/docs/QuickStart.md +++ b/docs/QuickStart.md @@ -40,7 +40,7 @@ if __name__ == '__main__': run_trial(params) ``` -Note: If you want to see the full implementation, please refer to [examples/trials/mnist/mnist_before.py](../examples/trials/mnist/mnist_before.py) +Note: If you want to see the full implementation, please refer to [examples/trials/mnist/mnist_before.py](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist/mnist_before.py) The above code can only try one set of parameters at a time, if we want to tune learning rate, we need to manually modify the hyperparameter and start the trial again and again. @@ -77,7 +77,7 @@ If you want to use NNI to automatically train your model and find the optimal hy + } ``` -*Implemented code directory: [search_space.json](../examples/trials/mnist/search_space.json)* +*Implemented code directory: [search_space.json](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist/search_space.json)* **Step 2**: Modified your `Trial` file to get the hyperparameter set from NNI and report the final result to NNI. @@ -102,11 +102,11 @@ If you want to use NNI to automatically train your model and find the optimal hy run_trial(params) ``` -*Implemented code directory: [mnist.py](../examples/trials/mnist/mnist.py)* +*Implemented code directory: [mnist.py](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist/mnist.py)* **Step 3**: Define a `config` file in YAML, which declare the `path` to search space and trial, also give `other information` such as tuning algorithm, max trial number and max runtime arguments. -```yml +```yaml authorName: default experimentName: example_mnist trialConcurrency: 1 @@ -125,9 +125,9 @@ trial: gpuNum: 0 ``` -*Implemented code directory: [config.yml](../examples/trials/mnist/config.yml)* +*Implemented code directory: [config.yml](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist/config.yml)* -All the codes above are already prepared and stored in [examples/trials/mnist/](../examples/trials/mnist). +All the codes above are already prepared and stored in [examples/trials/mnist/](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist). When these things are done, **run the config.yml file from your command line to start the experiment**. diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index a882498cd9..0000000000 --- a/docs/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# Overview - -

      -drawing -

      - ------------ - -[![](https://img.shields.io/badge/license-MIT-yellow.svg)](https://github.com/Microsoft/nni/blob/master/LICENSE) -[![](https://msrasrg.visualstudio.com/NNIOpenSource/_apis/build/status/Microsoft.nni)](https://msrasrg.visualstudio.com/NNIOpenSource/_build/latest?definitionId=6) -[![](https://img.shields.io/github/issues-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen) -[![](https://img.shields.io/github/issues/Microsoft/nni/bug.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen+label%3Abug) -[![](https://img.shields.io/github/issues-pr-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/pulls?q=is%3Apr+is%3Aopen) -[![](https://img.shields.io/github/release/Microsoft/nni.svg)](https://github.com/Microsoft/nni/releases) -[![](https://badges.gitter.im/Microsoft/nni.svg)](https://gitter.im/Microsoft/nni?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - -NNI (Neural Network Intelligence) is a toolkit to help users run automated machine learning (AutoML) experiments. -The tool dispatches and runs trial jobs generated by tuning algorithms to search the best neural architecture and/or hyper-parameters in different environments like local machine, remote servers and cloud. - - -![](img/nni_arch_overview.png) - -## **Who should consider using NNI** -* Those who want to try different AutoML algorithms in their training code (model) at their local machine. -* Those who want to run AutoML trial jobs in different environments to speed up search (e.g. remote servers and cloud). -* Researchers and data scientists who want to implement their own AutoML algorithms and compare it with other algorithms. -* ML Platform owners who want to support AutoML in their platform. - -## **Install & Verify** - -**Install through pip** -* We support Linux and MacOS in current stage, Ubuntu 16.04 or higher, along with MacOS 10.14.1 are tested and supported. Simply run the following `pip install` in an environment that has `python >= 3.5`. -```bash - python3 -m pip install --user --upgrade nni -``` -* Note: - * If you are in docker container (as root), please remove `--user` from the installation command. - * If there is any error like `Segmentation fault`, please refer to [FAQ](FAQ.md) - -**Install through source code** -* We support Linux (Ubuntu 16.04 or higher), MacOS (10.14.1) in our current stage. -* Run the following commands in an environment that has `python >= 3.5`, `git` and `wget`. -```bash - git clone -b v0.4.1 https://github.com/Microsoft/nni.git - cd nni - source install.sh -``` - -For the system requirements of NNI, please refer to [Install NNI](Installation.md) - -**Verify install** - -The following example is an experiment built on TensorFlow. Make sure you have **TensorFlow installed** before running it. -* Download the examples via clone the source code. -```bash - git clone -b v0.4.1 https://github.com/Microsoft/nni.git -``` -* Run the mnist example. -```bash - nnictl create --config nni/examples/trials/mnist/config.yml -``` - -* Wait for the message `INFO: Successfully started experiment!` in the command line. This message indicates that your experiment has been successfully started. You can explore the experiment using the `Web UI url`. -``` -INFO: Starting restful server... -INFO: Successfully started Restful server! -INFO: Setting local config... -INFO: Successfully set local config! -INFO: Starting experiment... -INFO: Successfully started experiment! ------------------------------------------------------------------------ -The experiment id is egchD4qy -The Web UI urls are: http://223.255.255.1:8080 http://127.0.0.1:8080 ------------------------------------------------------------------------ - -You can use these commands to get more information about the experiment ------------------------------------------------------------------------ - commands description -1. nnictl experiment show show the information of experiments -2. nnictl trial ls list all of trial jobs -3. nnictl log stderr show stderr log content -4. nnictl log stdout show stdout log content -5. nnictl stop stop an experiment -6. nnictl trial kill kill a trial job by id -7. nnictl --help get help information about nnictl ------------------------------------------------------------------------ -``` - -* Open the `Web UI url` in your browser, you can view detail information of the experiment and all the submitted trial jobs as shown below. [Here](WebUI.md) are more Web UI pages. - - - - - -
      drawingdrawing
      - - -## **Documentation** -* [NNI overview](Overview.md) -* [Quick start](GetStarted.md) - -## **How to** -* [Install NNI](Installation.md) -* [Use command line tool nnictl](NNICTLDOC.md) -* [Use NNIBoard](WebUI.md) -* [How to define search space](SearchSpaceSpec.md) -* [How to define a trial](howto_1_WriteTrial.md) -* [Config an experiment](ExperimentConfig.md) -* [How to use annotation](howto_1_WriteTrial.md#nni-python-annotation) -## **Tutorials** -* [Run an experiment on local (with multiple GPUs)?](tutorial_1_CR_exp_local_api.md) -* [Run an experiment on multiple machines?](tutorial_2_RemoteMachineMode.md) -* [Run an experiment on OpenPAI?](PAIMode.md) -* [Run an experiment on Kubeflow?](KubeflowMode.md) -* [Try different tuners and assessors](tutorial_3_tryTunersAndAssessors.md) -* [Implement a customized tuner](howto_2_CustomizedTuner.md) -* [Implement a customized assessor](../examples/assessors/README.md) -* [Use Genetic Algorithm to find good model architectures for Reading Comprehension task](../examples/trials/ga_squad/README.md) - -## **Contribute** -This project welcomes contributions and suggestions, we use [GitHub issues](https://github.com/Microsoft/nni/issues) for tracking requests and bugs. - -Issues with the **good first issue** label are simple and easy-to-start ones that we recommend new contributors to start with. - -To set up environment for NNI development, refer to the instruction: [Set up NNI developer environment](SetupNNIDeveloperEnvironment.md) - -Before start coding, review and get familiar with the NNI Code Contribution Guideline: [Contributing](CONTRIBUTING.md) - -We are in construction of the instruction for [How to Debug](HowToDebug.md), you are also welcome to contribute questions or suggestions on this area. - -## **License** -The entire codebase is under [MIT license](https://github.com/Microsoft/nni/blob/master/LICENSE) - diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 41a23ebbf5..707c5ed020 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -6,9 +6,9 @@ #### New tuner and assessor supports -* Support [Metis tuner](./HowToChooseTuner.md#MetisTuner) as a new NNI tuner. Metis algorithm has been proofed to be well performed for **online** hyper-parameter tuning. +* Support [Metis tuner](./Builtin_Tuner.md#MetisTuner) as a new NNI tuner. Metis algorithm has been proofed to be well performed for **online** hyper-parameter tuning. * Support [ENAS customized tuner](https://github.com/countif/enas_nni), a tuner contributed by github community user, is an algorithm for neural network search, it could learn neural network architecture via reinforcement learning and serve a better performance than NAS. -* Support [Curve fitting assessor](./HowToChooseTuner.md#Curvefitting) for early stop policy using learning curve extrapolation. +* Support [Curve fitting assessor](./Builtin_Tuner.md#Curvefitting) for early stop policy using learning curve extrapolation. * Advanced Support of [Weight Sharing](./AdvancedNAS.md): Enable weight sharing for NAS tuners, currently through NFS. #### Training Service Enhancement @@ -31,7 +31,7 @@ #### New tuner supports -* Support [network morphism](./HowToChooseTuner.md#NetworkMorphism) as a new tuner +* Support [network morphism](./Builtin_Tuner.md#NetworkMorphism) as a new tuner #### Training Service improvements @@ -64,9 +64,9 @@ * [Kubeflow Training service](./KubeflowMode.md) * Support tf-operator - * [Distributed trial example](../examples/trials/mnist-distributed/dist_mnist.py) on Kubeflow -* [Grid search tuner](../src/sdk/pynni/nni/README.md#Grid) -* [Hyperband tuner](../src/sdk/pynni/nni/README.md#Hyperband) + * [Distributed trial example](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-distributed/dist_mnist.py) on Kubeflow +* [Grid search tuner](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/README.md#Grid) +* [Hyperband tuner](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/README.md#Hyperband) * Support launch NNI experiment on MAC * WebUI * UI support for hyperband tuner @@ -149,7 +149,7 @@ * Support [OpenPAI](https://github.com/Microsoft/pai) (aka pai) Training Service (See [here](./PAIMode.md) for instructions about how to submit NNI job in pai mode) * Support training services on pai mode. NNI trials will be scheduled to run on OpenPAI cluster * NNI trial's output (including logs and model file) will be copied to OpenPAI HDFS for further debugging and checking -* Support [SMAC](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) tuner (See [here](HowToChooseTuner.md) for instructions about how to use SMAC tuner) +* Support [SMAC](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) tuner (See [here](Builtin_Tuner.md) for instructions about how to use SMAC tuner) * [SMAC](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) is based on Sequential Model-Based Optimization (SMBO). It adapts the most prominent previously used model class (Gaussian stochastic process models) and introduces the model class of random forests to SMBO to handle categorical parameters. The SMAC supported by NNI is a wrapper on [SMAC3](https://github.com/automl/SMAC3) * Support NNI installation on [conda](https://conda.io/docs/index.html) and python virtual environment * Others diff --git a/docs/Reference.rst b/docs/Reference.rst index 3ce330c3c4..df57d3af6e 100644 --- a/docs/Reference.rst +++ b/docs/Reference.rst @@ -5,7 +5,6 @@ References :maxdepth: 3 Command Line - Python API Annotation Configuration Search Space \ No newline at end of file diff --git a/docs/RemoteMachineMode.md b/docs/RemoteMachineMode.md index 074b488f9d..46c21153d4 100644 --- a/docs/RemoteMachineMode.md +++ b/docs/RemoteMachineMode.md @@ -12,7 +12,7 @@ e.g. Three machines and you login in with account `bob` (Note: the account is no ## Setup NNI environment -Install NNI on each of your machines following the install guide [here](GetStarted.md). +Install NNI on each of your machines following the install guide [here](QuickStart.md). ## Run an experiment @@ -20,7 +20,7 @@ Install NNI on another machine which has network accessibility to those three ma We use `examples/trials/mnist-annotation` as an example here. `cat ~/nni/examples/trials/mnist-annotation/config_remote.yml` to see the detailed configuration file: -```yml +```yaml authorName: default experimentName: example_mnist trialConcurrency: 1 diff --git a/docs/SQuAD_evolution_examples.md b/docs/SQuAD_evolution_examples.md index 325e002172..9d3cf72213 100644 --- a/docs/SQuAD_evolution_examples.md +++ b/docs/SQuAD_evolution_examples.md @@ -13,7 +13,7 @@ We conclude the search space as follow: 6. ADD-SKIP (Identity between random layers). 7. REMOVE-SKIP (Removes random skip). -![](../examples/trials/ga_squad/ga_squad.png) +![](https://github.com/Microsoft/nni/tree/master/examples/trials/ga_squad/ga_squad.png) ### New version Also we have another version which time cost is less and performance is better. We will release soon. @@ -99,7 +99,7 @@ useAnnotation: false #Your nni_manager ip nniManagerIp: 10.10.10.10 tuner: - codeDir: ../../tuners/ga_customer_tuner + codeDir: https://github.com/Microsoft/nni/tree/master/examples/tuners/ga_customer_tuner classFileName: customer_tuner.py className: CustomerTuner classArgs: diff --git a/docs/StartExperiment.md b/docs/StartExperiment.md deleted file mode 100644 index 66d22d9215..0000000000 --- a/docs/StartExperiment.md +++ /dev/null @@ -1,34 +0,0 @@ -How to start an experiment -=== -## 1.Introduce -There are few steps to start an new experiment of NNI, here are the process. - - - -## 2.Details -### 2.1 Check environment -1. Check if there is an old experiment running -2. Check if the port of restfurl server is free. -3. Validate the content of config YAML file. -4. Prepare a config file to to record the information of this experiment. - -### 2.2 Start restful server -Start an restful server process to manage NNI experiment, the default port is 8080. - -### 2.3 Check restful server -Check whether restful server process is successfully started and could get a response when send message to restful server. - -### 2.4 Set experiment config -Call restful server to set experiment config before starting an experiment, experiment config includes the config values in config YAML file. - -### 2.5 Check experiment cofig -Check the response content of restful server, if the status code of response is 200, the config is successfully set. - -### 2.6 Start Experiment -Call restful server process to setup an experiment. - -### 2.7 Check experiment -1. Check the response of restful server. -2. Handle error information. -3. Print success or error information to screen. -4. Save configuration information to config file of nnictl. diff --git a/docs/Trials.md b/docs/Trials.md index b79816fbdf..93f11bc913 100644 --- a/docs/Trials.md +++ b/docs/Trials.md @@ -30,7 +30,7 @@ Refer to [SearchSpaceSpec.md](./SearchSpaceSpec.md) to learn more about search s - Get configuration from Tuner -```json +```python RECEIVED_PARAMS = nni.get_next_parameter() ``` `RECEIVED_PARAMS` is an object, for example: @@ -38,30 +38,30 @@ RECEIVED_PARAMS = nni.get_next_parameter() - Report metric data periodically (optional) -```json +```python nni.report_intermediate_result(metrics) ``` `metrics` could be any python object. If users use NNI built-in tuner/assessor, `metrics` can only have two formats: 1) a number e.g., float, int, 2) a dict object that has a key named `default` whose value is a number. This `metrics` is reported to [assessor](Builtin_Assessors.md). Usually, `metrics` could be periodically evaluated loss or accuracy. - Report performance of the configuration -```json +```python nni.report_final_result(metrics) ``` -`metrics` also could be any python object. If users use NNI built-in tuner/assessor, `metrics` follows the same format rule as that in `report_intermediate_result`, the number indicates the model's performance, for example, the model's accuracy, loss etc. This `metrics` is reported to [tuner](Builtin-Tuner.md). +`metrics` also could be any python object. If users use NNI built-in tuner/assessor, `metrics` follows the same format rule as that in `report_intermediate_result`, the number indicates the model's performance, for example, the model's accuracy, loss etc. This `metrics` is reported to [tuner](tuners.md). ### Step 3 - Enable NNI API To enable NNI API mode, you need to set useAnnotation to *false* and provide the path of SearchSpace file (you just defined in step 1): -```json +```yaml useAnnotation: false searchSpacePath: /path/to/your/search_space.json ``` You can refer to [here](ExperimentConfig.md) for more information about how to set up experiment configurations. -*Please refer to [here]() for more APIs (e.g., `nni.get_sequence_id()`) provided by NNI. +*Please refer to [here](sdk_reference.md) for more APIs (e.g., `nni.get_sequence_id()`) provided by NNI. @@ -115,7 +115,7 @@ with tf.Session() as sess: - `@nni.variable` will take effect on its following line, which is an assignment statement whose leftvalue must be specified by the keyword `name` in `@nni.variable`. - `@nni.report_intermediate_result`/`@nni.report_final_result` will send the data to assessor/tuner at that line. -For more information about annotation syntax and its usage, please refer to [Annotation README](../tools/nni_annotation/README.md) . +For more information about annotation syntax and its usage, please refer to [Annotation](AnnotationSpec.md). ### Step 2 - Enable NNI Annotation diff --git a/docs/cifar10_examples.md b/docs/cifar10_examples.md index e2b7911dad..489db31f36 100644 --- a/docs/cifar10_examples.md +++ b/docs/cifar10_examples.md @@ -77,7 +77,7 @@ We are ready for the experiment, let's now **run the config.yml file from your c [2]: https://pytorch.org/ [3]: https://www.cs.toronto.edu/~kriz/cifar.html [4]: https://github.com/Microsoft/nni/tree/master/examples/trials/cifar10_pytorch -[5]: https://github.com/Microsoft/nni/blob/master/docs/howto_1_WriteTrial.md +[5]: https://github.com/Microsoft/nni/blob/master/docs/Trials.md [6]: https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/config.yml [7]: https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/config_pai.yml [8]: https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/search_space.json diff --git a/docs/conf.py b/docs/conf.py index 5f4b99810c..739b347379 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -16,8 +16,8 @@ # import sys # sys.path.insert(0, os.path.abspath('.')) -import recommonmark from recommonmark.parser import CommonMarkParser +from recommonmark.transform import AutoStructify # -- Project information --------------------------------------------------- @@ -95,7 +95,7 @@ # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] +# html_static_path = ['_static'] # Custom sidebar templates, must be a dictionary that maps document names # to template names. @@ -185,3 +185,10 @@ # -- Extension configuration ------------------------------------------------- +github_doc_root = 'https://github.com/Microsoft/nni/tree/master/doc/' +def setup(app): + app.add_config_value('recommonmark_config', { + 'url_resolver': lambda url: github_doc_root + url if url.startswith('..') else url, + 'enable_auto_toc_tree': False, + }, True) + app.add_transform(AutoStructify) diff --git a/docs/gbdt_example.md b/docs/gbdt_example.md index e5bb053ace..56c8d17a51 100644 --- a/docs/gbdt_example.md +++ b/docs/gbdt_example.md @@ -155,7 +155,7 @@ In the config file, you could set some settings including: * Algorithm setting: select `tuner` algorithm, `tuner optimize_mode`, etc. An config.yml as follow: -```yml +```yaml authorName: default experimentName: example_auto-gbdt trialConcurrency: 1 diff --git a/docs/howto_1_WriteTrial.md b/docs/howto_1_WriteTrial.md deleted file mode 100644 index f8f0282d30..0000000000 --- a/docs/howto_1_WriteTrial.md +++ /dev/null @@ -1,132 +0,0 @@ -# Write a Trial Run on NNI - -A **Trial** in NNI is an individual attempt at applying a set of parameters on a model. - -To define a NNI trial, you need to firstly define the set of parameters and then update the model. NNI provide two approaches for you to define a trial: `NNI API` and `NNI Python annotation`. - -## NNI API - ->Step 1 - Prepare a SearchSpace parameters file. - -An example is shown below: - -```json -{ - "dropout_rate":{"_type":"uniform","_value":[0.1,0.5]}, - "conv_size":{"_type":"choice","_value":[2,3,5,7]}, - "hidden_size":{"_type":"choice","_value":[124, 512, 1024]}, - "learning_rate":{"_type":"uniform","_value":[0.0001, 0.1]} -} -``` - -Refer to [SearchSpaceSpec.md](./SearchSpaceSpec.md) to learn more about search space. - ->Step 2 - Update model codes - -~~~~ -2.1 Declare NNI API - Include `import nni` in your trial code to use NNI APIs. - -2.2 Get predefined parameters - Use the following code snippet: - - RECEIVED_PARAMS = nni.get_next_parameter() - - to get hyper-parameters' values assigned by tuner. `RECEIVED_PARAMS` is an object, for example: - - {"conv_size": 2, "hidden_size": 124, "learning_rate": 0.0307, "dropout_rate": 0.2029} - -2.3 Report NNI results - Use the API: - - `nni.report_intermediate_result(accuracy)` - - to send `accuracy` to assessor. - - Use the API: - - `nni.report_final_result(accuracy)` - - to send `accuracy` to tuner. -~~~~ - -**NOTE**: - -~~~~ -accuracy - The `accuracy` could be any python object, but if you use NNI built-in tuner/assessor, `accuracy` should be a numerical variable (e.g. float, int). -assessor - The assessor will decide which trial should early stop based on the history performance of trial (intermediate result of one trial). -tuner - The tuner will generate next parameters/architecture based on the explore history (final result of all trials). -~~~~ - ->Step 3 - Enable NNI API - -To enable NNI API mode, you need to set useAnnotation to *false* and provide the path of SearchSpace file (you just defined in step 1): - -``` -useAnnotation: false -searchSpacePath: /path/to/your/search_space.json -``` - -You can refer to [here](./ExperimentConfig.md) for more information about how to set up experiment configurations. - -You can refer to [here](../examples/trials/README.md) for more information about how to write trial code using NNI APIs. - -## NNI Python Annotation - -An alternative to write a trial is to use NNI's syntax for python. Simple as any annotation, NNI annotation is working like comments in your codes. You don't have to make structure or any other big changes to your existing codes. With a few lines of NNI annotation, you will be able to: -* annotate the variables you want to tune -* specify in which range you want to tune the variables -* annotate which variable you want to report as intermediate result to `assessor` -* annotate which variable you want to report as the final result (e.g. model accuracy) to `tuner`. - -Again, take MNIST as an example, it only requires 2 steps to write a trial with NNI Annotation. - ->Step 1 - Update codes with annotations - -Please refer the following tensorflow code snippet for NNI Annotation, the highlighted 4 lines are annotations that help you to: (1) tune batch\_size and (2) dropout\_rate, (3) report test\_acc every 100 steps, and (4) at last report test\_acc as final result. - ->What noteworthy is: as these new added codes are annotations, it does not actually change your previous codes logic, you can still run your code as usual in environments without NNI installed. - -```diff -with tf.Session() as sess: - sess.run(tf.global_variables_initializer()) -+ """@nni.variable(nni.choice(50, 250, 500), name=batch_size)""" - batch_size = 128 - for i in range(10000): - batch = mnist.train.next_batch(batch_size) -+ """@nni.variable(nni.choice(1, 5), name=dropout_rate)""" - dropout_rate = 0.5 - mnist_network.train_step.run(feed_dict={mnist_network.images: batch[0], - mnist_network.labels: batch[1], - mnist_network.keep_prob: dropout_rate}) - if i % 100 == 0: - test_acc = mnist_network.accuracy.eval( - feed_dict={mnist_network.images: mnist.test.images, - mnist_network.labels: mnist.test.labels, - mnist_network.keep_prob: 1.0}) -+ """@nni.report_intermediate_result(test_acc)""" - - test_acc = mnist_network.accuracy.eval( - feed_dict={mnist_network.images: mnist.test.images, - mnist_network.labels: mnist.test.labels, - mnist_network.keep_prob: 1.0}) -+ """@nni.report_final_result(test_acc)""" -``` - ->NOTE ->>`@nni.variable` will take effect on its following line ->> ->>`@nni.report_intermediate_result`/`@nni.report_final_result` will send the data to assessor/tuner at that line. ->> ->>Please refer to [Annotation README](../tools/nni_annotation/README.md) for more information about annotation syntax and its usage. - ->Step 2 - Enable NNI Annotation -In the YAML configure file, you need to set *useAnnotation* to true to enable NNI annotation: - -```yml -useAnnotation: true -``` - -## More Trial Example - -* [Automatic Model Architecture Search for Reading Comprehension.](../examples/trials/ga_squad/README.md) diff --git a/docs/howto_2_CustomizedTuner.md b/docs/howto_2_CustomizedTuner.md deleted file mode 100644 index b8f7a5808c..0000000000 --- a/docs/howto_2_CustomizedTuner.md +++ /dev/null @@ -1,109 +0,0 @@ -# **How To** - Customize Your Own Tuner - -*Tuner receive result from Trial as a matric to evaluate the performance of a specific parameters/architecture configure. And tuner send next hyper-parameter or architecture configure to Trial.* - -So, if user want to implement a customized Tuner, she/he only need to: - -1. Inherit a tuner of a base Tuner class -1. Implement receive_trial_result and generate_parameter function -1. Configure your customized tuner in experiment YAML config file - -Here is an example: - -**1) Inherit a tuner of a base Tuner class** - -```python -from nni.tuner import Tuner - -class CustomizedTuner(Tuner): - def __init__(self, ...): - ... -``` - -**2) Implement receive_trial_result and generate_parameter function** - -```python -from nni.tuner import Tuner - -class CustomizedTuner(Tuner): - def __init__(self, ...): - ... - - def receive_trial_result(self, parameter_id, parameters, value): - ''' - Record an observation of the objective function and Train - parameter_id: int - parameters: object created by 'generate_parameters()' - value: final metrics of the trial, including reward - ''' - # your code implements here. - ... - - def generate_parameters(self, parameter_id): - ''' - Returns a set of trial (hyper-)parameters, as a serializable object - parameter_id: int - ''' - # your code implements here. - return your_parameters - ... -``` - -`receive_trial_result` will receive the `parameter_id, parameters, value` as parameters input. Also, Tuner will receive the `value` object are exactly same value that Trial send. - -The `your_parameters` return from `generate_parameters` function, will be package as json object by NNI SDK. NNI SDK will unpack json object so the Trial will receive the exact same `your_parameters` from Tuner. - -For example: -If the you implement the `generate_parameters` like this: - -```python - def generate_parameters(self, parameter_id): - ''' - Returns a set of trial (hyper-)parameters, as a serializable object - parameter_id: int - ''' - # your code implements here. - return {"dropout": 0.3, "learning_rate": 0.4} -``` - -It means your Tuner will always generate parameters `{"dropout": 0.3, "learning_rate": 0.4}`. Then Trial will receive `{"dropout": 0.3, "learning_rate": 0.4}` by calling API `nni.get_next_parameter()`. Once the trial ends with a result (normally some kind of metrics), it can send the result to Tuner by calling API `nni.report_final_result()`, for example `nni.report_final_result(0.93)`. Then your Tuner's `receive_trial_result` function will receied the result like: - -```python -parameter_id = 82347 -parameters = {"dropout": 0.3, "learning_rate": 0.4} -value = 0.93 -``` - -**Note that** if you want to access a file (e.g., `data.txt`) in the directory of your own tuner, you cannot use `open('data.txt', 'r')`. Instead, you should use the following: - -```python -_pwd = os.path.dirname(__file__) -_fd = open(os.path.join(_pwd, 'data.txt'), 'r') -``` - -This is because your tuner is not executed in the directory of your tuner (i.e., `pwd` is not the directory of your own tuner). - -**3) Configure your customized tuner in experiment YAML config file** - -NNI needs to locate your customized tuner class and instantiate the class, so you need to specify the location of the customized tuner class and pass literal values as parameters to the \_\_init__ constructor. - -```yml -tuner: - codeDir: /home/abc/mytuner - classFileName: my_customized_tuner.py - className: CustomizedTuner - # Any parameter need to pass to your tuner class __init__ constructor - # can be specified in this optional classArgs field, for example - classArgs: - arg1: value1 -``` - -More detail example you could see: - -> * [evolution-tuner](../src/sdk/pynni/nni/evolution_tuner) -> * [hyperopt-tuner](../src/sdk/pynni/nni/hyperopt_tuner) -> * [evolution-based-customized-tuner](../examples/tuners/ga_customer_tuner) - -## Write a more advanced automl algorithm - -The information above are usually enough to write a general tuner. However, users may also want more information, for example, intermediate results, trials' state (e.g., the information in assessor), in order to have a more powerful automl algorithm. Therefore, we have another concept called `advisor` which directly inherits from `MsgDispatcherBase` in [`src/sdk/pynni/nni/msg_dispatcher_base.py`](../src/sdk/pynni/nni/msg_dispatcher_base.py). Please refer to [here](./howto_3_CustomizedAdvisor.md) for how to write a customized advisor. diff --git a/docs/howto_3_CustomizedAdvisor.md b/docs/howto_3_CustomizedAdvisor.md deleted file mode 100644 index 12b2d9bf33..0000000000 --- a/docs/howto_3_CustomizedAdvisor.md +++ /dev/null @@ -1,40 +0,0 @@ -# **How To** - Customize Your Own Advisor - -*Advisor targets the scenario that the automl algorithm wants the methods of both tuner and assessor. Advisor is similar to tuner on that it receives trial parameters request, final results, and generate trial parameters. Also, it is similar to assessor on that it receives intermediate results, trial's end state, and could send trial kill command. Note that, if you use Advisor, tuner and assessor are not allowed to be used at the same time.* - -So, if user want to implement a customized Advisor, she/he only need to: - -1. Define an Advisor inheriting from the MsgDispatcherBase class -1. Implement the methods with prefix `handle_` except `handle_request` -1. Configure your customized Advisor in experiment YAML config file - -Here is an example: - -**1) Define an Advisor inheriting from the MsgDispatcherBase class** - -```python -from nni.msg_dispatcher_base import MsgDispatcherBase - -class CustomizedAdvisor(MsgDispatcherBase): - def __init__(self, ...): - ... -``` - -**2) Implement the methods with prefix `handle_` except `handle_request`** - -Please refer to the implementation of Hyperband ([src/sdk/pynni/nni/hyperband_advisor/hyperband_advisor.py](../src/sdk/pynni/nni/hyperband_advisor/hyperband_advisor.py)) for how to implement the methods. - -**3) Configure your customized Advisor in experiment YAML config file** - -Similar to tuner and assessor. NNI needs to locate your customized Advisor class and instantiate the class, so you need to specify the location of the customized Advisor class and pass literal values as parameters to the \_\_init__ constructor. - -```yml -advisor: - codeDir: /home/abc/myadvisor - classFileName: my_customized_advisor.py - className: CustomizedAdvisor - # Any parameter need to pass to your advisor class __init__ constructor - # can be specified in this optional classArgs field, for example - classArgs: - arg1: value1 -``` diff --git a/docs/index.rst b/docs/index.rst index ebf7f6dd42..bfd726c9ac 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -12,7 +12,7 @@ Contents :titlesonly: Overview - GetStarted + QuickStart Tutorials Examples Reference diff --git a/docs/multiPhase.md b/docs/multiPhase.md index 5ee03c663a..c5ff3ce181 100644 --- a/docs/multiPhase.md +++ b/docs/multiPhase.md @@ -16,7 +16,7 @@ To use multi-phase experiment, please follow below steps: 1. Set `multiPhase` field to `true`, and configure your tuner implemented in step 1 as customized tuner in configuration file, for example: - ```yml + ```yaml ... multiPhase: true tuner: diff --git a/docs/sdk_reference.rst b/docs/sdk_reference.rst index a743d55591..5767ac33c6 100644 --- a/docs/sdk_reference.rst +++ b/docs/sdk_reference.rst @@ -19,18 +19,12 @@ API for tuners .. autoclass:: nni.hyperopt_tuner.hyperopt_tuner.HyperoptTuner :members: -.. autoclass:: nni.batch_tuner.batch_tuner.BatchTuner - :members: - .. autoclass:: nni.evolution_tuner.evolution_tuner.EvolutionTuner :members: .. autoclass:: nni.gridsearch_tuner.gridsearch_tuner.GridSearchTuner :members: -.. autoclass:: nni.networkmorphism_tuner.networkmorphism_tuner.NetworkMorphismTuner - :members: - .. autoclass:: nni.smac_tuner.smac_tuner.SMACTuner :members: diff --git a/docs/sklearn_examples.md b/docs/sklearn_examples.md index 893640d167..6f2b68d933 100644 --- a/docs/sklearn_examples.md +++ b/docs/sklearn_examples.md @@ -3,7 +3,7 @@ NNI supports many kinds of tuning algorithms to search the best models and/or hyper-parameters for scikit-learn, and support many kinds of environments like local machine, remote servers and cloud. ## 1. How to run the example -To start using NNI, you should install the nni package, and use the command line tool `nnictl` to start an experiment. For more information about installation and preparing for the environment, please [refer](GetStarted.md). +To start using NNI, you should install the nni package, and use the command line tool `nnictl` to start an experiment. For more information about installation and preparing for the environment, please [refer](QuickStart.md). After you installed NNI, you could enter the corresponding folder and start the experiment using following commands: ``` nnictl create --config ./config.yml diff --git a/docs/tutorial_1_CR_exp_local_api.md b/docs/tutorial_1_CR_exp_local_api.md index ced6314904..c5fce7b234 100644 --- a/docs/tutorial_1_CR_exp_local_api.md +++ b/docs/tutorial_1_CR_exp_local_api.md @@ -83,16 +83,16 @@ Let's use a simple trial example, e.g. mnist, provided by NNI. After you install python ~/nni/examples/trials/mnist-annotation/mnist.py -This command will be filled in the YAML configure file below. Please refer to [here](./howto_1_WriteTrial.md) for how to write your own trial. +This command will be filled in the YAML configure file below. Please refer to [here](Trials.md) for how to write your own trial. -**Prepare tuner**: NNI supports several popular automl algorithms, including Random Search, Tree of Parzen Estimators (TPE), Evolution algorithm etc. Users can write their own tuner (refer to [here](./howto_2_CustomizedTuner.md)), but for simplicity, here we choose a tuner provided by NNI as below: +**Prepare tuner**: NNI supports several popular automl algorithms, including Random Search, Tree of Parzen Estimators (TPE), Evolution algorithm etc. Users can write their own tuner (refer to [here](Customize_Tuner.md)), but for simplicity, here we choose a tuner provided by NNI as below: tuner: builtinTunerName: TPE classArgs: optimize_mode: maximize -*builtinTunerName* is used to specify a tuner in NNI, *classArgs* are the arguments pass to the tuner (the spec of builtin tuners can be found [here]()), *optimization_mode* is to indicate whether you want to maximize or minimize your trial's result. +*builtinTunerName* is used to specify a tuner in NNI, *classArgs* are the arguments pass to the tuner (the spec of builtin tuners can be found [here](Builtin_Tuner.md)), *optimization_mode* is to indicate whether you want to maximize or minimize your trial's result. **Prepare configure file**: Since you have already known which trial code you are going to run and which tuner you are going to use, it is time to prepare the YAML configure file. NNI provides a demo configure file for each trial example, `cat ~/nni/examples/trials/mnist-annotation/config.yml` to see it. Its content is basically shown below: @@ -124,7 +124,7 @@ trial: gpuNum: 0 ``` -Here *useAnnotation* is true because this trial example uses our python annotation (refer to [here](../tools/annotation/README.md) for details). For trial, we should provide *trialCommand* which is the command to run the trial, provide *trialCodeDir* where the trial code is. The command will be executed in this directory. We should also provide how many GPUs a trial requires. +Here *useAnnotation* is true because this trial example uses our python annotation (refer to [here](AnnotationSpec.md) for details). For trial, we should provide *trialCommand* which is the command to run the trial, provide *trialCodeDir* where the trial code is. The command will be executed in this directory. We should also provide how many GPUs a trial requires. With all these steps done, we can run the experiment with the following command: diff --git a/docs/tutorial_2_RemoteMachineMode.md b/docs/tutorial_2_RemoteMachineMode.md deleted file mode 100644 index 1a7d6f19d7..0000000000 --- a/docs/tutorial_2_RemoteMachineMode.md +++ /dev/null @@ -1,65 +0,0 @@ -**Tutorial: Run an experiment on multiple machines** -=== -NNI supports running an experiment on multiple machines through SSH channel, called `remote` mode. NNI assumes that you have access to those machines, and already setup the environment for running deep learning training code. - -e.g. Three machines and you login in with account `bob` (Note: the account is not necessarily the same on different machine): - -| IP | Username| Password | -| -------- |---------|-------| -| 10.1.1.1 | bob | bob123 | -| 10.1.1.2 | bob | bob123 | -| 10.1.1.3 | bob | bob123 | - -## Setup NNI environment -Install NNI on each of your machines following the install guide [here](GetStarted.md). - -For remote machines that are used only to run trials but not the nnictl, you can just install python SDK: - -* __Install python SDK through pip__ - - python3 -m pip install --user --upgrade nni-sdk - -## Run an experiment -Install NNI on another machine which has network accessibility to those three machines above, or you can just use any machine above to run nnictl command line tool. - -We use `examples/trials/mnist-annotation` as an example here. `cat ~/nni/examples/trials/mnist-annotation/config_remote.yml` to see the detailed configuration file: -``` -authorName: default -experimentName: example_mnist -trialConcurrency: 1 -maxExecDuration: 1h -maxTrialNum: 10 -#choice: local, remote, pai -trainingServicePlatform: remote -#choice: true, false -useAnnotation: true -tuner: - #choice: TPE, Random, Anneal, Evolution, BatchTuner - #SMAC (SMAC should be installed through nnictl) - builtinTunerName: TPE - classArgs: - #choice: maximize, minimize - optimize_mode: maximize -trial: - command: python3 mnist.py - codeDir: . - gpuNum: 0 -#machineList can be empty if the platform is local -machineList: - - ip: 10.1.1.1 - username: bob - passwd: bob123 - #port can be skip if using default ssh port 22 - #port: 22 - - ip: 10.1.1.2 - username: bob - passwd: bob123 - - ip: 10.1.1.3 - username: bob - passwd: bob123 -``` -Simply filling the `machineList` section and then run: -``` -nnictl create --config ~/nni/examples/trials/mnist-annotation/config_remote.yml -``` -to start the experiment. diff --git a/docs/tutorial_3_tryTunersAndAssessors.md b/docs/tutorial_3_tryTunersAndAssessors.md deleted file mode 100644 index 82fa0ef8c8..0000000000 --- a/docs/tutorial_3_tryTunersAndAssessors.md +++ /dev/null @@ -1,37 +0,0 @@ -# Tutorial - Try different Tuners and Assessors - -NNI provides an easy to adopt approach to set up parameter tuning algorithms as well as early stop policies, we call them **Tuners** and **Assessors**. - -**Tuner** specifies the algorithm you use to generate hyperparameter sets for each trial. In NNI, we support two approaches to set the tuner. -1. Directly use tuner provided by NNI sdk - - required fields: builtinTunerName and classArgs. - -2. Customize your own tuner file - - required fields: codeDirectory, classFileName, className and classArgs. - -### **Learn More about tuners** -* For detailed defintion and usage about the required field, please refer to [Config an experiment](ExperimentConfig.md) -* [Tuners in the latest NNI release](HowToChooseTuner.md) -* [How to implement your own tuner](howto_2_CustomizedTuner.md) - - -**Assessor** specifies the algorithm you use to apply early stop policy. In NNI, there are two approaches to set the assessor. -1. Directly use assessor provided by NNI sdk - - required fields: builtinAssessorName and classArgs. - -2. Customize your own assessor file - - required fields: codeDirectory, classFileName, className and classArgs. - -### **Learn More about assessor** -* For detailed defintion and usage aobut the required field, please refer to [Config an experiment](ExperimentConfig.md) -* Find more about the detailed instruction about [enable assessor](EnableAssessor.md) -* [How to implement your own assessor](../examples/assessors/README.md) - -## **Learn More** -* [How to run an experiment on local (with multiple GPUs)?](tutorial_1_CR_exp_local_api.md) -* [How to run an experiment on multiple machines?](tutorial_2_RemoteMachineMode.md) -* [How to run an experiment on OpenPAI?](PAIMode.md) diff --git a/examples/trials/network_morphism/README.md b/examples/trials/network_morphism/README.md index 9239bc1910..6f70cfb569 100644 --- a/examples/trials/network_morphism/README.md +++ b/examples/trials/network_morphism/README.md @@ -20,7 +20,7 @@ pip install -r requirements.txt Modify `examples/trials/network_morphism/cifar10/config.yml` to fit your own task, note that searchSpacePath is not required in our configuration. Here is the default configuration: -```yml +```yaml authorName: default experimentName: example_cifar10-network-morphism trialConcurrency: 1 diff --git a/src/sdk/pynni/nni/networkmorphism_tuner/README.md b/src/sdk/pynni/nni/networkmorphism_tuner/README.md index 82457f0993..500cab6ef6 100644 --- a/src/sdk/pynni/nni/networkmorphism_tuner/README.md +++ b/src/sdk/pynni/nni/networkmorphism_tuner/README.md @@ -10,7 +10,7 @@ If you want to know about network morphism trial usage, please check [Readme.md] To use Network Morphism, you should modify the following spec in your `config.yml` file: -```yml +```yaml tuner: #choice: NetworkMorphism builtinTunerName: NetworkMorphism From 1cbe6340518c0c2d117cd7f81a20c98ed13f2f9c Mon Sep 17 00:00:00 2001 From: Lijiao <35484733+lvybriage@users.noreply.github.com> Date: Wed, 30 Jan 2019 14:49:41 +0800 Subject: [PATCH 11/22] Update version message (#682) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Lijiao (#1) * Set up CI with Azure Pipelines * Add idompotent support for get_parameters() in nni sdk (#216) * Updated based on comments * Fix bug, make get_parameters() idompotent * Add idompotent support for get_parameters() in LocalTrainingService * Add ip address cached to resolve network issue (#220) * Add ip address cached to resolve network issue * Fix bug of trial hypermeters (#222) * Format trial duration, rename button name (#209) * Refactor nnictl to support list multiple experiment (#207) 1.fix some bugs 2.support nnictl stop id, and add some regulars * Fix bug when trail duration is 0 (#223) * Fix broken issue comes from OpenPAI API upgrade (#227) Fix paiTrainingService broken issue comes from OpenPAI API upgrade * add document for nnictl (#230) * fix nnictl bug * fix install.sh * add desc for Dockerfile.build.base * update document for Dockerfile * update * refactor port detect * update * refactor NNICTLDOC.md * add document for pai and nnictl * add default value for port * Fix bug: some trial jobs hyper params not stored and error handling updates (#225) * Pull latest code (#2) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * Bug fix for SQuAD example tuner. (#134) * Update Makefile (#151) * test * update setup.py * update Makefile and install.sh * rever setup.py * change color * update doc * update doc * fix auto-completion's extra space * update Makefile * update webui * Update doc image (#163) * update doc * trivial * trivial * trivial * trivial * trivial * trivial * update image * update image size * Update ga squad (#104) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * sklearn examples (#169) * fix nnictl bug * fix install.sh * add sklearn-regression example * add sklearn classification * update sklearn * update example * remove additional code * Update batch tuner (#158) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * update batch tuner * Quickly fix cascading search space bug in tuner (#156) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * quickly fix cascading searchspace bug in tuner * Add iterative search space example (#119) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * update readme * add iterative search space example * update * update readme * change name * Fix bug: some trial jobs hyper params not stored when fast finished * updates * updates * updates * updates * Add exception handler in trial_keeper (#235) * add exception handling in trial_keeper.py * Merge 0.2 into master (#237) * fix antd (#159) * quick fix config_pai.yml in examples (#171) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * fix dataDir and outputDir in config_pai.yml * fix config_pai.yml * Update slidebar icon (#173) * quick fix bug: assessor validation in nnictl (#200) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * fix dataDir and outputDir in config_pai.yml * fix config_pai.yml * fix assessor launcher * Disable the tensorboard button about pai experiment (#192) * Remove the gap in search space value array (#226) * Remove the gap in search space value array * Update duration * Fix comments of Chengmin * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * Add sequenceId to TrialJobInfo (#283) * Show error information and fix paramiko installation (#282) * fix paramiko install * Refactor pip installation logic for supporting uninstall * Update documents due to new pip installation approach * Refactor Makefile for consistent with pip installation approach * Add README for building and uploading NNI package * Fix issues for pip installation * Minor fix on #41 (#280) * Typo on #12 (#281) * plus minor proposals * Quick fix resume logic (#285) * Tgs salt example (#286) * TGS salt example * updates * updates * Hide install via pip prompt, since 0.3 has not been published (#287) * move reward extraction logic to tuner (#274) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * refactor extract reward from dict by tuner * Update README.md (#288) added License badge * fix doc mistakes and broken links. (#271) * refactor doc * update with Mao's suggestions * Set theme jekyll-theme-dinky * updated the "Contribute" part (merged Gems' wiki in, updated ReadMe) * fix link * Update README.md * Fix misspelling in examples/trials/ga_squad/README.md * Update WebUI (#295) * Update README.md (#296) * Fix nnictl in master (#300) 1.Fix old version of config file 2.fix sklearn requirements 3.Fix resume log logic * revert master's installation doc to install v0.2 before v0.3 official release. (#298) * refactor doc * update with Mao's suggestions * Set theme jekyll-theme-dinky * update doc * fix links * fix links * fix links * merge * fix links and doc errors * merge * merge * merge * merge * Quick fix nnictl config logic (#289) * fix nnictl bug * fix install.sh * add desc for Dockerfile.build.base * update document for Dockerfile * update * refactor port detect * update * refactor NNICTLDOC.md * add document for pai and nnictl * add default value for port * add exception handling in trial_keeper.py * fix port bug * fix resume * fix nnictl resume and fix nnictl stop * fix document * update * refactor nnictl * update * update doc * update * update nnictl * fix comment * revert dockerfile * update * update * update * fix nnictl error hit * fix comments * fix bash-completion * fix paramiko install * quick fix resume logic * update * quick fix nnictl * merge * updated the "Contribute" part (merged Gems' wiki in, updated ReadMe) * fix link * revise the installation cmd to v0.2 * revise to install v0.2 * Update nnictl_utils.py * Update nnictl_utils.py * Update nnictl_utils.py * Rename the pypi package for nni * Merge 0.3 into master (#313) * Quick fix nnictl config logic (#289) * fix nnictl bug * fix install.sh * add desc for Dockerfile.build.base * update document for Dockerfile * update * refactor port detect * update * refactor NNICTLDOC.md * add document for pai and nnictl * add default value for port * add exception handling in trial_keeper.py * fix port bug * fix resume * fix nnictl resume and fix nnictl stop * fix document * update * refactor nnictl * update * update doc * update * update nnictl * fix comment * revert dockerfile * update * update * update * fix nnictl error hit * fix comments * fix bash-completion * fix paramiko install * quick fix resume logic * update * quick fix nnictl * PR merge to 0.3 (#297) * refactor doc * update with Mao's suggestions * Set theme jekyll-theme-dinky * update doc * fix links * fix links * fix links * merge * fix links and doc errors * merge * merge * merge * merge * Update README.md (#288) added License badge * merge * updated the "Contribute" part (merged Gems' wiki in, updated ReadMe) * fix link * fix doc mistakes and broken links. (#271) * refactor doc * update with Mao's suggestions * Set theme jekyll-theme-dinky * updated the "Contribute" part (merged Gems' wiki in, updated ReadMe) * fix link * Update README.md * Fix misspelling in examples/trials/ga_squad/README.md * revise the installation cmd to v0.2 * revise to install v0.2 * remove enas readme (#292) * Fix datastore performance issue (#301) * Fix nnictl in v0.3 (#299) Fix old version of config file fix sklearn requirements Fix resume log logic * remove paramiko in V0.3 (#306) remove paramiko in V0.3 * Release note 0.3 (#303) * v0.3 release notes * updates * updates * updates * updates * updates * updates * Inform users to set experiment id when id is empty (#310) * fix nnictl bug * fix install.sh * add desc for Dockerfile.build.base * update document for Dockerfile * update * refactor port detect * update * refactor NNICTLDOC.md * add document for pai and nnictl * add default value for port * add exception handling in trial_keeper.py * fix port bug * fix resume * fix nnictl resume and fix nnictl stop * fix document * update * refactor nnictl * update * update doc * update * update nnictl * fix comment * revert dockerfile * update * update * update * fix nnictl error hit * fix comments * fix bash-completion * fix paramiko install * quick fix resume logic * update * quick fix nnictl * fix nnictl crash bug * add requirement.txt for sklearn example * fix nnictl configuration bug * update * update * update * update * remove paramiko * refactor nnictl lfor log stdout * update * updaate * fix endtime when resume (#307) * fix endtime when resume * update * update * update * updates * Fix sequence id issue on resuming experiment (#316) * Fix bugs for v0.3 (#315) * Fix bugs * update * Refactor document of nnictl for v0.3 (#314) * fix nnictl document * Fix bug of default metric for v0.3 (#304) * Fix bug of Default Metric and modifiy trials detail style * update * Document updates for v0.3 (#318) * refactor doc * update with Mao's suggestions * Set theme jekyll-theme-dinky * update doc * fix links * fix links * fix links * merge * fix links and doc errors * merge * merge * merge * merge * Quick fix nnictl config logic (#289) * fix nnictl bug * fix install.sh * add desc for Dockerfile.build.base * update document for Dockerfile * update * refactor port detect * update * refactor NNICTLDOC.md * add document for pai and nnictl * add default value for port * add exception handling in trial_keeper.py * fix port bug * fix resume * fix nnictl resume and fix nnictl stop * fix document * update * refactor nnictl * update * update doc * update * update nnictl * fix comment * revert dockerfile * update * update * update * fix nnictl error hit * fix comments * fix bash-completion * fix paramiko install * quick fix resume logic * update * quick fix nnictl * merge * updated the "Contribute" part (merged Gems' wiki in, updated ReadMe) * fix link * revise the installation cmd to v0.2 * revise to install v0.2 * Update nnictl_utils.py * Update nnictl_utils.py * Update nnictl_utils.py * Update documentation for v0.3 * update (#320) * update * fix ga_squad config * Refactor close experiment implementation * Uniform the names of python modules * Update WebUI docs (#325) * add webui screenshot in README.md (#323) * update doc * update * update * update * add logo * logo * logo * update * update installation doc * Update v0.3.0 release note (#324) update v0.3.0 release note * update doc for v0.3.3 installation tag (#329) as the title * Merge v0.3 into master (#337) * Fix pypi package missing python module * Fix pypi package missing python module * fix bug in smartparam example (#322) * Fix nnictl update trialnum and document (#326) 1.Fix restful server of update 2.Update nnictl document of update 3.Add tensorboard in docement * Update the version numbers from 0.3.2 to 0.3.3 * Fix contributing doc problems (#335) broken link wrong step refine wording * Add download button (#332) * Merge v0.3 to master (#339) * Fix pypi package missing python module * Fix pypi package missing python module * fix bug in smartparam example (#322) * Fix nnictl update trialnum and document (#326) 1.Fix restful server of update 2.Update nnictl document of update 3.Add tensorboard in docement * Update the version numbers from 0.3.2 to 0.3.3 * Update examples (#331) * update mnist-annotation * fix mnist-annotation typo * update mnist example * update mnist-smartparam * update mnist-annotation * update mnist-smartparam * change learning rate * update mnist assessor maxTrialNum * update examples * update examples * update maxTrialNum * fix breaking path in config_assessor.yml * Add error message when experiment's status is error (#338) * Add error message when experiment error * delete unuseful code * Fix bug of bgcolor when experiment status is running * Change base image from devel to runtime, to reduce docker image size (#343) * Update version number since v0.3.4 has been released (#342) * Fixed the issue that pip install --user doesn't work in docker as root user * Fix localTrainingService cancel logic and nnictl logic (#334) Fix nnictl stop logic Fix localTrainingService cancelJob logic Show port information in "nnictl experiment list" cmd. Show more information when config file validate failed. Add nnictl detect adjacent port logic if the platform is pai * update doc about nni docker image (#345) * Merge v0.3 2 (#352) * Fix pypi package missing python module * Fix pypi package missing python module * fix bug in smartparam example (#322) * Fix nnictl update trialnum and document (#326) 1.Fix restful server of update 2.Update nnictl document of update 3.Add tensorboard in docement * Update the version numbers from 0.3.2 to 0.3.3 * Update examples (#331) * update mnist-annotation * fix mnist-annotation typo * update mnist example * update mnist-smartparam * update mnist-annotation * update mnist-smartparam * change learning rate * update mnist assessor maxTrialNum * update examples * update examples * update maxTrialNum * fix breaking path in config_assessor.yml * fix bug in nnimanager (#341) * Update nnictl.py (#347) * Update nnictl.py * modify help message for nnictl stop * update doc for docker image (#353) * update doc for docker image * update * [PAI training service] Support running multiple PAI experiment (#348) * Change base image from devel to runtime, to reduce docker image size * Support running multiple experiment for PAI * Fix a bug regarding to recuisively reference between paiRestServer and paiTrainingService * update makefile (#350) * update makefile * update launcher.py to fix the problem of finding main.js * remove duplicated lib * update local demo doc and configuration (#344) * update local demo doc and configuration * change folder name * Update tutorial_1_CR_exp_local_api.md no need to have a new training file * Delete mnist_gpu.py no need to have a new training file * Update config_gpu.yml no need to have a new training file * add PyTorch to Dockerfile (#362) * update local demo doc and configuration * change folder name * Update tutorial_1_CR_exp_local_api.md no need to have a new training file * Delete mnist_gpu.py no need to have a new training file * Update config_gpu.yml no need to have a new training file * add PyTorch to Dockerfile * Add Pytorch and set sklearn version in Dockerfile (#346) 1.Set scikit-learn==0.20.0 in Dockerfile 2.Update readme.md of dockerile 3.Add PyTorch 0.4.1 4.Add description for 'nnictl stop all' * Quick fix Docker (#363) Remove "RUN python3 -m pip --no-cache-dir install torch torchvision" * Updated document for "write a trial" related fixes. (#351) - Updated document for "write a trial" related fixes per Quanlu's feedback; - Fix wrong links in Get started per Meng's feedback. * Fix the issue#211: WebUI does not support search for a specific Trial (#355) * Fix the issue#211: WebUI does not support search for a specific Trial * delete unuseful code * Update * default 20 * add more details for remote mode docs (#366) * add more details for remote mode docs (#365) * update tutorial for remote machine as well (#367) * Support hyper-band (#358) * add gridsearch tuner (#364) * add gridsearch tuner * add gridsearchtuner * add gridsearchtuner * add gridsearchtuner * update gridsearch tuner * update gridsearch tuner * update gridsearch tuner * update gridsearch tuner * update gridsearch tuner * update gridsearch tuner * update gridsearch tuner * update gridsearch and pylint * Fix nni stop (#368) Fix "nnictl stop" * Add more tooltips in default metric graph (#370) * Add more tooltip in default metric graph and fix bug * update * Update README.md (#371) * [Kubeflow Training Service] V1, merge from kubeflow branch to master branch (#382) * Kubeflow TrainingService support, v1 (#373) 1. Create new Training Service: kubeflow trainning service, use 'kubectl' and kubeflow tfjobs CRD to submit and manage jobs 2. Update nni python SDK to support new kubeflow platform 3. Update nni python SDK's get_sequende_id() implementation, read NNI_TRIAL_SEQ_ID env variable, instead of reading .nni/sequence_id file 4. This version only supports Tensorflow operator. Will add more operators' support in future versions * Add Gitter badge (#376) * Update ci with new built-in tuner and assessor (#359) * fix sdk's unittest and add medianstop, batchtuner to ci * fix sdk's unittest and add medianstop, batchtuner to ci * remove debug info * update azure-pipelines * remove useless code * add some checks * fix pylint * update ci test * update ci * Show intermediate result (#384) * Asynchronous dispatcher (#372) * Asynchronous dispatcher * updates * updates * updates * updates * [Kubeflow training service] Update kubeflow exp job config schema to support distributed training (#387) * Support distributed training on tf-operator, for worker and ps * Update validation rule for kubeflow config * small code refactor adjustment for private methods * Use different output folder for ps and worker * add gpuNum check for local TS (#378) * add gpuNum check for local TS * set CUDA_VISIBLE_DEVICES to empty string when gpuNum is 0 * remove redundency code * [Kubeflow Training Service] Explicitly set cuda_visible_devices env var (#388) * Use different output folder for ps and worker * Add cuda_visible_devices env var if gpuNum is 0 * NNICTL set classArgs as optional (#374) In nnictl, classArgs is not required, now set it as optional for some kind of tuner and assessor may not require classArgs. * Move the call of experimentDoneCleanUp into stopExperiment() method (#390) * Adjust sleep position for sdk_test.py * Exit dispather process if receive Terminate command * Add comment for sleep change in sdk_test.py * Add nniManagerIp in nnictl and trainingService (#393) Add nniManager Ip in nnictl, pai TrainingService and kubeflow TrainingService. If users set nniManagerIp, pai and kubeflow will use this ip instead of using getIPV4() function. Web UI will also use this nniManagerIp. * Fix trialjobstate (#385) * add one more trial job status, EARLY_STOPPED * fix datastore/nnimanager/mockeddatastore. test/webui/metrics_reader not done. USER_TO_CANCEL * fix bug * modifications based on Deshui's comments * fix bug * fix bug in remote mode * add NO_MORE_TRIAL state in experiment (#389) * Multi final metrics (#377) * Rest retrieve multiple final results for multiphase job * updates * mac support with local, remote & pai mode (#386) * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * update Makefile with shorturl * fix false fail on mac webui * fix cross os remote tmpdir issue * add readonly to RemoteMachineTrainingService.remoteOS * fix var name for PR 386 * Merge v0.2 branch back to master for PR #273 (#400) * fix bugs due to ts.tailstream (#273) * Fix bugs and update webui doc (#397) * Support Azure k8s (#383) Support aks of kuberflow training service Support nnictl set nniManagerIp * [PAI training service] Support virtualCluster configuration (#401) * [PAI training service] Support virtual cluster config * fix a small bug to convert virtualCluster to string * Correct typo (#402) * Fix bug of webui's table (#407) * Fix bug * fix lint * Fix trial start time (#408) * Fix trial job start time * updates * updates * Add codeDir file count validation for setClusterConfig (#409) * Add codeDir file count validation for setClusterConfig * fix a small bug if find command is not installed * Remove codeDir validation for local training service * Remove useless import * Remove intermediate result (#410) * Trial keeper refactor (#411) * [Trial keeper refactor] refactor trial keeper stdout output * Refactor nnictl error information (#412) 1.Refactor nnictl information when validateion error. 2.Set kubernetesServer as optional. * Kubeflow training service documentation, v1 (#419) * Kubeflow training service documentation, v1 * Fix typos based on comments * Fix for issue #414 (#415) * update doc for "write trial" * fix link * issue 414 * Support to show 2 logPath, add hdfsLogPath (#420) * Support to show 2 logPath * fix lint * Update trial status color * fix sdk for NoMoreTrial status (#394) * fix bug * add docs * [Kubeflow training service] fix bug that wrongly split kube delete cmd into 2 lines (#425) * [Kubeflow training service] fix bug that wrongly split kube delete cmd into 2 lines * Adjust white space * Add AKS document (#422) 1.Add kubeflow in experiment config document 2.Add AKS in kubeflow document * Add macOS environment to CI pipeline * Dev hyperband (#405) * support hyperband * add example for hyperband * register Hyperband in tuner * after debug * update doc * trivial change * update spec validation of yaml config * modify nnictl launcher * modify nnimanager and util to support advisor * Quick fix nnictl config logic (#289) * fix nnictl bug * fix install.sh * add desc for Dockerfile.build.base * update document for Dockerfile * update * refactor port detect * update * refactor NNICTLDOC.md * add document for pai and nnictl * add default value for port * add exception handling in trial_keeper.py * fix port bug * fix resume * fix nnictl resume and fix nnictl stop * fix document * update * refactor nnictl * update * update doc * update * update nnictl * fix comment * revert dockerfile * update * update * update * fix nnictl error hit * fix comments * fix bash-completion * fix paramiko install * quick fix resume logic * update * quick fix nnictl * refactor sdk main * update unit test accordingly * update example's config file * update restserver validation * PR merge to 0.3 (#297) * refactor doc * update with Mao's suggestions * Set theme jekyll-theme-dinky * update doc * fix links * fix links * fix links * merge * fix links and doc errors * merge * merge * merge * merge * Update README.md (#288) added License badge * merge * updated the "Contribute" part (merged Gems' wiki in, updated ReadMe) * fix link * fix doc mistakes and broken links. (#271) * refactor doc * update with Mao's suggestions * Set theme jekyll-theme-dinky * updated the "Contribute" part (merged Gems' wiki in, updated ReadMe) * fix link * Update README.md * Fix misspelling in examples/trials/ga_squad/README.md * revise the installation cmd to v0.2 * revise to install v0.2 * remove files * update * remove enas readme (#292) * support checkpoint directory * Fix datastore performance issue (#301) * fix pylint * Fix nnictl in v0.3 (#299) Fix old version of config file fix sklearn requirements Fix resume log logic * modify log * trivial changes * update example * update makefile * update launcher.py to fix the problem of finding main.js * debug * add hyperparameter info into trial_end api * fix bug and update example * fix error induced by merge * support initialize * add doc for hyperband * fix bugs and add config_pai * fix bugs and add config_pai * fix bugs and add config_pai * fix bugs and add config_pai * update doc * add doc for advisor * fit * modification based on hui's comments * update doc * modify loguniform and lognormal (#395) * modify loguniform and lognormal * fix bug * fix bug * update doc * update doc * fix * update tpe for loguniform * update tpe for loguniform * update for loguniform * update for loguniform * update loguniform and qloguniform * update doc * update * revert * revert * revert * revert * fix ci (#433) * fix ci * expand time range * expand time range * Update doc6 (#428) * test * tuners * refactor doc of tuners * update * update assessor doc * update * update * Update KubeflowMode.md (#436) * Delete unnecessary letter 'a' (#439) Fix a spelling bug that may cause confuse * Update doc (#438) * update readme in ga_squad * fix typo * Update README.md * Update README.md * Update README.md * fix path * update README reference * fix bug in config file about batch tuner * update loguniform for smac (#430) * modify loguniform and lognormal * fix bug * fix bug * update doc * update doc * fix * update tpe for loguniform * update tpe for loguniform * update for loguniform * update for loguniform * update loguniform and qloguniform * update doc * update * revert * revert * revert * revert * update loguniform for smac * update loguniform for smac * update loguniform for smac * update loguniform for smac * Add distributed mnist training example, to show how to perform distri… (#435) * Add distributed mnist training example, to show how to perform distributed training on kubeflow for NNI * rename folder name to mnist_distributed * Remove duplicated is_chief check * [Kubeflow training service] Add document for installing NFS client (#442) * Add document for installing NFS client * [V0.4 Release] Kubeflow training service: Remove unued kubernetesServer config entry (#444) * Remove unused kubernetesServer config entry in config file and schema validation * Fix multiphase error message in nnimanager.log (#445) * NNI V0.4 Release: Update version from v0.3.4 to v0.4 (#446) * Change version number from v0.3.4 to v0.4, for NNI v0.4 release * update makefile & doc for pypi & installation (#440) * update pypi/makefile for multiple platform support * update linux os spec * udpate doc for installation & pypi * update readme * Update webui document (#443) * Update webui document * Fix comments of Chengmin * Update document v0.4 (#437) move nnictl folder delete kubernetsServer in nnictl refactor aks document add warning information to expand relative path update experiment status when the experiment crashed. * Update document for PAI mode to turn on 8081 port (#448) * Update document for PAI mode port * Update document for PAI mode to turn on 8081 port * [V0.4 Release] Docoment update for kubeflow and release notes (#450) * Docoment update for kubeflow and release notes * Refactor examples' default image (#449) * update * remove kubernetsServer in nnictl * update document * update * add warning to expand relative path * update doc * update * update * fix doc * update * update * update * refactor image * update * update * update * update * backward compatibility for mac: job end timestamp (#451) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * add python cache files to gitignore list * move extract scalar reward logic from dispatcher to tuner * update tuner code corresponding to last commit * update doc for receive_trial_result api change * add numpy to package whitelist of pylint * distinguish param value from return reward for tuner.extract_scalar_reward * update pylintrc * add comments to dispatcher.handle_report_metric_data * update install for mac support * fix root mode bug on Makefile * Quick fix bug: nnictl port value error (#245) * fix port bug * Dev exp stop more (#221) * Exp stop refactor (#161) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * fix setup.py (#115) * Add DAG model configuration format for SQuAD example. * Explain config format for SQuAD QA model. * Add more detailed introduction about the evolution algorithm. * Fix install.sh add add trial log path (#109) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * show trial log path * update document * fix install.sh * set default vallue for maxTrialNum and maxExecDuration * fix nnictl * Dev smac (#116) * support package install (#91) * fix nnictl bug * support package install * update * update package install logic * Fix package install issue (#95) * fix nnictl bug * fix pakcage install * support SMAC as a tuner on nni (#81) * update doc * update doc * update doc * update hyperopt installation * update doc * update doc * update description in setup.py * update setup.py * modify encoding * encoding * add encoding * remove pymc3 * update doc * update builtin tuner spec * support smac in sdk, fix logging issue * support smac tuner * add optimize_mode * update config in nnictl * add __init__.py * update smac * update import path * update setup.py: remove entry_point * update rest server validation * fix bug in nnictl launcher * support classArgs: optimize_mode * quick fix bug * test travis * add dependency * add dependency * add dependency * add dependency * create smac python package * fix trivial points * optimize import of tuners, modify nnictl accordingly * fix bug: incorrect algorithm_name * trivial refactor * for debug * support virtual * update doc of SMAC * update smac requirements * update requirements * change debug mode * update doc * update doc * refactor based on comments * fix comments * modify example config path to relative path and increase maxTrialNum (#94) * modify example config path to relative path and increase maxTrialNum * add document * support conda (#90) (#110) * support install from venv and travis CI * support install from venv and travis CI * support install from venv and travis CI * support conda * support conda * modify example config path to relative path and increase maxTrialNum * undo messy commit * undo messy commit * Support pip install as root (#77) * Typo on #58 (#122) * PAI Training Service implementation (#128) * PAI Training service implementation **1. Implement PAITrainingService **2. Add trial-keeper python module, and modify setup.py to install the module **3. Add PAItrainingService rest server to collect metrics from PAI container. * fix datastore for multiple final result (#129) * Update NNI v0.2 release notes (#132) Update NNI v0.2 release notes * Update setup.py Makefile and documents (#130) * update makefile and setup.py * update makefile and setup.py * update document * update document * Update Makefile no travis * update doc * update doc * fix convert from ss to pcs (#133) * Fix bugs about webui (#131) * Fix webui bugs * Fix tslint * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * Merge branch V0.2 to Master (#143) * webui logpath and document (#135) * Add webui document and logpath as a href * fix tslint * fix comments by Chengmin * Pai training service bug fix and enhancement (#136) * Add NNI installation scripts * Update pai script, update NNI_out_dir * Update NNI dir in nni sdk local.py * Create .nni folder in nni sdk local.py * Add check before creating .nni folder * Fix typo for PAI_INSTALL_NNI_SHELL_FORMAT * Improve annotation (#138) * Improve annotation * Minor bugfix * Selectively install through pip (#139) Selectively install through pip * update setup.py * fix paiTrainingService bugs (#137) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * Add documentation for NNI PAI mode experiment (#141) * Add documentation for NNI PAI mode * Fix typo based on PR comments * Exit with subprocess return code of trial keeper * Remove additional exit code * Fix typo based on PR comments * update doc for smac tuner (#140) * Revert "Selectively install through pip (#139)" due to potential pip install issue (#142) * Revert "Selectively install through pip (#139)" This reverts commit 1d174836d3146a0363e9c9c88094bf9cff865faa. * Add exit code of subprocess for trial_keeper * Update README, add link to PAImode doc * fix bug (#147) * Refactor nnictl and add config_pai.yml (#144) * fix nnictl bug * add hdfs host validation * fix bugs * fix dockerfile * fix install.sh * update install.sh * fix dockerfile * Set timeout for HDFSUtility exists function * remove unused TODO * fix sdk * add optional for outputDir and dataDir * refactor dockerfile.base * Remove unused import in hdfsclientUtility * add config_pai.yml * refactor nnictl create logic and add colorful print * fix nnictl stop logic * add annotation for config_pai.yml * add document for start experiment * fix config.yml * fix document * Fix trial keeper wrongly exit issue (#152) * Fix trial keeper bug, use actual exitcode to exit rather than 1 * Fix bug of table sort (#145) * Update doc for PAIMode and v0.2 release notes (#153) * Update v0.2 documentation regards to release note and PAI training service * Update document to describe NNI docker image * fix antd (#159) * refactor experiment stopping logic * support change concurrency * remove trialJobs.ts * trivial changes * fix bugs * fix bug * support updating maxTrialNum * Modify IT scripts for supporting multiple experiments * Update ci (#175) * Update RemoteMachineMode.md (#63) * Remove unused classes for SQuAD QA example. * Remove more unused functions for SQuAD QA example. * Fix default dataset config. * Add Makefile README (#64) * update document (#92) * Edit readme.md * updated a word * Update GetStarted.md * Update GetStarted.md * refact readme, getstarted and write your trial md. * Update README.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Update WriteYourTrial.md * Fix nnictl bugs and add new feature (#75) * fix nnictl bug * fix nnictl create bug * add experiment status logic * add more information for nnictl * fix Evolution Tuner bug * refactor code * fix code in updater.py * fix nnictl --help * fix classArgs bug * update check response.status_code logic * remove Buffer warning (#100) * update readme in ga_squad * update readme * fix typo * Update README.md * Update README.md * Update README.md * Add support for debugging mode * modify CI cuz of refracting exp stop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * update CI for expstop * file saving * fix issues from code merge * remove $(INSTALL_PREFIX)/nni/nni_manager before install * fix indent * fix merge issue * socket close * update port * fix merge error * modify ci logic in nnimanager * fix ci * fix bug * change suspended to done * update ci (#229) * update ci * update ci * update ci (#232) * update ci * update ci * update azure-pipelines * update azure-pipelines * update ci (#233) * update ci * update ci * update azure-pipelines * update azure-pipelines * update azure-pipelines * run.py (#238) * Nnupdate ci (#239) * run.py * test ci * Nnupdate ci (#240) * run.py * test ci * test ci * Udci (#241) * run.py * test ci * test ci * test ci * update ci (#242) * run.py * test ci * test ci * test ci * update ci * revert install.sh (#244) * run.py * test ci * test ci * test ci * update ci * revert install.sh * add comments * remove assert * trivial change * trivial change * update Makefile (#246) * update Makefile * update Makefile * quick fix for ci (#248) * add update trialNum and fix bugs (#261) * Add builtin tuner to CI (#247) * update Makefile * update Makefile * add builtin-tuner test * add builtin-tuner test * refractor ci * update azure.yml * add built-in tuner test * fix bugs * Doc refactor (#258) * doc refactor * image name refactor * Refactor nnictl to support listing stopped experiments. (#256) Refactor nnictl to support listing stopped experiments. * Show experiment parameters more beautifully (#262) * fix error on example of RemoteMachineMode (#269) * add pycharm project files to .gitignore list * update pylintrc to conform vscode settings * fix RemoteMachineMode for wrong trainingServicePlatform * Update docker file to use latest nni release (#263) * fix bug about execDuration and endTime (#270) * fix bug about execDuration and endTime * modify time interval to 30 seconds * refactor based on Gems's suggestion * for triggering ci * Refactor dockerfile (#264) * refactor Dockerfile * Support nnictl tensorboard (#268) support tensorboard * Sdk update (#272) * Rename get_parameters to get_next_parameter * annotations add get_next_parameter * updates * updates * updates * updates * updates * add experiment log path to experiment profile (#276) * refactor extract reward from dict by tuner * update Makefile for mac support, wait for aka.ms support * refix Makefile for colorful echo * update Makefile with shorturl * fix false fail on mac webui * fix cross os remote tmpdir issue * add readonly to RemoteMachineTrainingService.remoteOS * fix var name for PR 386 * cross platform package * update pypi/makefile for multiple platform support * update linux os spec * udpate doc for installation & pypi * update readme * job timestamp compatibility for mac * Update nni arch overview diagram (#447) * refactor doc * update with Mao's suggestions * Set theme jekyll-theme-dinky * update doc * fix links * fix links * fix links * merge * fix links and doc errors * merge * merge * merge * merge * Quick fix nnictl config logic (#289) * fix nnictl bug * fix install.sh * add desc for Dockerfile.build.base * update document for Dockerfile * update * refactor port detect * update * refactor NNICTLDOC.md * add document for pai and nnictl * add default value for port * add exception handling in trial_keeper.py * fix port bug * fix resume * fix nnictl resume and fix nnictl stop * fix document * update * refactor nnictl * update * update doc * update * update nnictl * fix comment * revert dockerfile * update * update * update * fix nnictl error hit * fix comments * fix bash-completion * fix paramiko install * quick fix resume logic * update * quick fix nnictl * merge * updated the "Contribute" part (merged Gems' wiki in, updated ReadMe) * fix link * revise the installation cmd to v0.2 * revise to install v0.2 * Update nnictl_utils.py * Update nnictl_utils.py * Update nnictl_utils.py * Update documentation for v0.3 * update release note * update v0.3.0 release note +1 * update doc for installation tag v0.3.3 * fix contributing doc problems * update doc for "write trial" * fix link * issue 414 * update arch overview diagram in README * update image * fix broken link * Update README.md * Correct typo, macOS -> MacOS * update ga_squad example (#461) * update ga_squad experiment example on pai * Update config_pai.yml * Update README.md * Update config_pai.yml * Update README.md * Update README.md * Update README.md * Update pai token by time interval (#434) Update pai token every 2 hours. * Support kuberflow pytorch-operator (#406) 1.Support pytorch-operator 2.remove unsupported operator * added search trail by id function (#455) * correct assessor typo (#463) correct assessor typos in several files. * Quick fix paiTrainingService (#465) quick fix paiTrainingService, add deferred.resolve(); * Add system requirements for NNI Installation * Fix nnictl multiThread option (#467) * Dev networkmorphism (#413) * Quick fix nnictl config logic (#289) * fix nnictl bug * fix install.sh * add desc for Dockerfile.build.base * update document for Dockerfile * update * refactor port detect * update * refactor NNICTLDOC.md * add document for pai and nnictl * add default value for port * add exception handling in trial_keeper.py * fix port bug * fix resume * fix nnictl resume and fix nnictl stop * fix document * update * refactor nnictl * update * update doc * update * update nnictl * fix comment * revert dockerfile * update * update * update * fix nnictl error hit * fix comments * fix bash-completion * fix paramiko install * quick fix resume logic * update * quick fix nnictl * PR merge to 0.3 (#297) * refactor doc * update with Mao's suggestions * Set theme jekyll-theme-dinky * update doc * fix links * fix links * fix links * merge * fix links and doc errors * merge * merge * merge * merge * Update README.md (#288) added License badge * merge * updated the "Contribute" part (merged Gems' wiki in, updated ReadMe) * fix link * fix doc mistakes and broken links. (#271) * refactor doc * update with Mao's suggestions * Set theme jekyll-theme-dinky * updated the "Contribute" part (merged Gems' wiki in, updated ReadMe) * fix link * Update README.md * Fix misspelling in examples/trials/ga_squad/README.md * revise the installation cmd to v0.2 * revise to install v0.2 * remove enas readme (#292) * Fix datastore performance issue (#301) * Fix nnictl in v0.3 (#299) Fix old version of config file fix sklearn requirements Fix resume log logic * add basic tuner and trial for network morphism * Complete basic receive_trial_result() and generate_parameters(). Use onnx as the intermediate representation ( But it cannot convert to pytorch model ) * add tensorflow cifar10 for network morphism * add unit test for tuner and its function * use temporary torch_model * fix request bug and program can communicate nni * add basic pickle support for graph and train successful in pytorch * Update unittest for networkmorphism_tuner * Network Morphism add multi-gpu trial training support * Format code with black tool * change intermediate representation from pickle file to json we defined * successfully pass the unittest for test_graph_json_transform * add README for network morphism and it works fine in both Pytorch and Keras. * separate the original Readme.md in network-morphism into two parts (tuner and trial) * change the openpai image path * beautify the file structure of network_morphism and add a fashion_mnist keras example * pretty the source and add some docstring for funtion in order to pass the pylint. * remove unused module import and add some docstring * add some details for the application scenario Network Morphism Tuner * follow the advice and modify the doc file * add the config file for each task in the examples trial of network morphism * change default python interpreter from python to python3 * Support 'nnictl top' (#464) Add nnictl top command to monitor the nni experiments. … * Revert "Lijiao (#1)" (#2) This reverts commit 44a4dd461c7b670a0305131e5a92a42e009a0c54. * Update version --- src/webui/src/components/SlideBar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webui/src/components/SlideBar.tsx b/src/webui/src/components/SlideBar.tsx index 6a57bb9e24..7b758ebd27 100644 --- a/src/webui/src/components/SlideBar.tsx +++ b/src/webui/src/components/SlideBar.tsx @@ -221,7 +221,7 @@ class SlideBar extends React.Component<{}, SliderState> { Download - + NNI github issue Date: Wed, 30 Jan 2019 15:15:21 +0800 Subject: [PATCH 12/22] Doc fix: rewording and typos (#685) --- docs/Builtin_Assessors.md | 6 +- docs/Builtin_Tuner.md | 20 +- docs/Customize_Assessor.md | 15 +- docs/Customize_Tuner.md | 26 +- docs/ExperimentConfig.md | 921 +++++++++++++++++++------------------ docs/cifar10_examples.md | 8 +- docs/sdk_reference.rst | 8 +- docs/training_services.rst | 4 +- docs/tuners.rst | 2 +- 9 files changed, 508 insertions(+), 502 deletions(-) diff --git a/docs/Builtin_Assessors.md b/docs/Builtin_Assessors.md index 46fd4f89d5..f104b1fb1f 100644 --- a/docs/Builtin_Assessors.md +++ b/docs/Builtin_Assessors.md @@ -4,10 +4,8 @@ NNI provides state-of-the-art tuning algorithm in our builtin-assessors and make |Assessor|Brief Introduction of Algorithm| |---|---| -|**Medianstop**
      [(Usage)](#MedianStop)|Medianstop is a simple early stopping rule mentioned in the [paper](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf). It stops a pending trial X at step S if the trial’s best objective value by step S is strictly worse than the median value of the running averages of all completed trials’ objectives reported up to step S.| -|[Curvefitting](https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/curvefitting_assessor/README.md)
      [(Usage)](#Curvefitting)|Curve Fitting Assessor is a LPA(learning, predicting, assessing) algorithm. It stops a pending trial X at step S if the prediction of final epoch's performance worse than the best final performance in the trial history. In this algorithm, we use 12 curves to fit the accuracy curve| - -
      +|**Medianstop** [(Usage)](#MedianStop)|Medianstop is a simple early stopping rule mentioned in the [paper](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf). It stops a pending trial X at step S if the trial’s best objective value by step S is strictly worse than the median value of the running averages of all completed trials’ objectives reported up to step S.| +|[Curvefitting](https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/curvefitting_assessor/README.md) [(Usage)](#Curvefitting)|Curve Fitting Assessor is a LPA(learning, predicting, assessing) algorithm. It stops a pending trial X at step S if the prediction of final epoch's performance worse than the best final performance in the trial history. In this algorithm, we use 12 curves to fit the accuracy curve| ## Usage of Builtin Assessors diff --git a/docs/Builtin_Tuner.md b/docs/Builtin_Tuner.md index bfb6474c93..8235ddb525 100644 --- a/docs/Builtin_Tuner.md +++ b/docs/Builtin_Tuner.md @@ -4,16 +4,16 @@ NNI provides state-of-the-art tuning algorithm as our builtin-tuners and makes t |Tuner|Brief Introduction of Algorithm| |---|---| -|**TPE**
      [(Usage)](#TPE)|The Tree-structured Parzen Estimator (TPE) is a sequential model-based optimization (SMBO) approach. SMBO methods sequentially construct models to approximate the performance of hyperparameters based on historical measurements, and then subsequently choose new hyperparameters to test based on this model.| -|**Random Search**
      [(Usage)](#Random)|In Random Search for Hyper-Parameter Optimization show that Random Search might be surprisingly simple and effective. We suggest that we could use Random Search as the baseline when we have no knowledge about the prior distribution of hyper-parameters.| -|**Anneal**
      [(Usage)](#Anneal)|This simple annealing algorithm begins by sampling from the prior, but tends over time to sample from points closer and closer to the best ones observed. This algorithm is a simple variation on the random search that leverages smoothness in the response surface. The annealing rate is not adaptive.| -|**Naive Evolution**
      [(Usage)](#Evolution)|Naive Evolution comes from Large-Scale Evolution of Image Classifiers. It randomly initializes a population-based on search space. For each generation, it chooses better ones and does some mutation (e.g., change a hyperparameter, add/remove one layer) on them to get the next generation. Naive Evolution requires many trials to works, but it's very simple and easy to expand new features.| -|**SMAC**
      [(Usage)](#SMAC)|SMAC is based on Sequential Model-Based Optimization (SMBO). It adapts the most prominent previously used model class (Gaussian stochastic process models) and introduces the model class of random forests to SMBO, in order to handle categorical parameters. The SMAC supported by nni is a wrapper on the SMAC3 Github repo.| -|**Batch tuner**
      [(Usage)](#Batch)|Batch tuner allows users to simply provide several configurations (i.e., choices of hyper-parameters) for their trial code. After finishing all the configurations, the experiment is done. Batch tuner only supports the type choice in search space spec.| -|**Grid Search**
      [(Usage)](#GridSearch)|Grid Search performs an exhaustive searching through a manually specified subset of the hyperparameter space defined in the searchspace file. Note that the only acceptable types of search space are choice, quniform, qloguniform. The number q in quniform and qloguniform has special meaning (different from the spec in search space spec). It means the number of values that will be sampled evenly from the range low and high.| -|[Hyperband](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperband_advisor)
      [(Usage)](#Hyperband)|Hyperband tries to use the limited resource to explore as many configurations as possible, and finds out the promising ones to get the final result. The basic idea is generating many configurations and to run them for the small number of STEPs to find out promising one, then further training those promising ones to select several more promising one.| -|[Network Morphism](https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/networkmorphism_tuner/README.md)
      [(Usage)](#NetworkMorphism)|Network Morphism provides functions to automatically search for architecture of deep learning models. Every child network inherits the knowledge from its parent network and morphs into diverse types of networks, including changes of depth, width, and skip-connection. Next, it estimates the value of a child network using the historic architecture and metric pairs. Then it selects the most promising one to train.| -|**Metis Tuner**
      [(Usage)](#MetisTuner)|Metis offers the following benefits when it comes to tuning parameters: While most tools only predict the optimal configuration, Metis gives you two outputs: (a) current prediction of optimal configuration, and (b) suggestion for the next trial. No more guesswork. While most tools assume training datasets do not have noisy data, Metis actually tells you if you need to re-sample a particular hyper-parameter.| +|**TPE** [(Usage)](#TPE)|The Tree-structured Parzen Estimator (TPE) is a sequential model-based optimization (SMBO) approach. SMBO methods sequentially construct models to approximate the performance of hyperparameters based on historical measurements, and then subsequently choose new hyperparameters to test based on this model.| +|**Random Search** [(Usage)](#Random)|In Random Search for Hyper-Parameter Optimization show that Random Search might be surprisingly simple and effective. We suggest that we could use Random Search as the baseline when we have no knowledge about the prior distribution of hyper-parameters.| +|**Anneal** [(Usage)](#Anneal)|This simple annealing algorithm begins by sampling from the prior, but tends over time to sample from points closer and closer to the best ones observed. This algorithm is a simple variation on the random search that leverages smoothness in the response surface. The annealing rate is not adaptive.| +|**Naive Evolution** [(Usage)](#Evolution)|Naive Evolution comes from Large-Scale Evolution of Image Classifiers. It randomly initializes a population-based on search space. For each generation, it chooses better ones and does some mutation (e.g., change a hyperparameter, add/remove one layer) on them to get the next generation. Naive Evolution requires many trials to works, but it's very simple and easy to expand new features.| +|**SMAC** [(Usage)](#SMAC)|SMAC is based on Sequential Model-Based Optimization (SMBO). It adapts the most prominent previously used model class (Gaussian stochastic process models) and introduces the model class of random forests to SMBO, in order to handle categorical parameters. The SMAC supported by nni is a wrapper on the SMAC3 Github repo.| +|**Batch tuner** [(Usage)](#Batch)|Batch tuner allows users to simply provide several configurations (i.e., choices of hyper-parameters) for their trial code. After finishing all the configurations, the experiment is done. Batch tuner only supports the type choice in search space spec.| +|**Grid Search** [(Usage)](#GridSearch)|Grid Search performs an exhaustive searching through a manually specified subset of the hyperparameter space defined in the searchspace file. Note that the only acceptable types of search space are choice, quniform, qloguniform. The number q in quniform and qloguniform has special meaning (different from the spec in search space spec). It means the number of values that will be sampled evenly from the range low and high.| +|[Hyperband](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperband_advisor) [(Usage)](#Hyperband)|Hyperband tries to use the limited resource to explore as many configurations as possible, and finds out the promising ones to get the final result. The basic idea is generating many configurations and to run them for the small number of STEPs to find out promising one, then further training those promising ones to select several more promising one.| +|[Network Morphism](https://github.com/Microsoft/nni/blob/master/src/sdk/pynni/nni/networkmorphism_tuner/README.md) [(Usage)](#NetworkMorphism)|Network Morphism provides functions to automatically search for architecture of deep learning models. Every child network inherits the knowledge from its parent network and morphs into diverse types of networks, including changes of depth, width, and skip-connection. Next, it estimates the value of a child network using the historic architecture and metric pairs. Then it selects the most promising one to train.| +|**Metis Tuner** [(Usage)](#MetisTuner)|Metis offers the following benefits when it comes to tuning parameters: While most tools only predict the optimal configuration, Metis gives you two outputs: (a) current prediction of optimal configuration, and (b) suggestion for the next trial. No more guesswork. While most tools assume training datasets do not have noisy data, Metis actually tells you if you need to re-sample a particular hyper-parameter.|
      diff --git a/docs/Customize_Assessor.md b/docs/Customize_Assessor.md index 82cf74f5da..049c96a4bc 100644 --- a/docs/Customize_Assessor.md +++ b/docs/Customize_Assessor.md @@ -1,14 +1,14 @@ # Customize Assessor -NNI also support building an assessor by yourself to adjust your tuning demand. +NNI supports to build an assessor by yourself for tuning demand. -If you want to implement a customized Assessor, there are three things for you to do: +If you want to implement a customized Assessor, there are three things to do: -1) Inherit an assessor of a base Assessor class -2) Implement assess_trial function -3) Configure your customized Assessor in experiment YAML config file +1. Inherit the base Assessor class +1. Implement assess_trial function +1. Configure your customized Assessor in experiment YAML config file -**1. Inherit an assessor of a base Assessor class** +**1. Inherit the base Assessor class** ```python from nni.assessor import Assessor @@ -19,6 +19,7 @@ class CustomizedAssessor(Assessor): ``` **2. Implement assess trial function** + ```python from nni.assessor import Assessor, AssessResult @@ -41,7 +42,6 @@ class CustomizedAssessor(Assessor): NNI needs to locate your customized Assessor class and instantiate the class, so you need to specify the location of the customized Assessor class and pass literal values as parameters to the \_\_init__ constructor. ```yaml - assessor: codeDir: /home/abc/myassessor classFileName: my_customized_assessor.py @@ -50,7 +50,6 @@ assessor: # can be specified in this optional classArgs field, for example classArgs: arg1: value1 - ``` Please noted in **2**. The object `trial_history` are exact the object that Trial send to Assessor by using SDK `report_intermediate_result` function. diff --git a/docs/Customize_Tuner.md b/docs/Customize_Tuner.md index 5e44d542f5..bee72489f9 100644 --- a/docs/Customize_Tuner.md +++ b/docs/Customize_Tuner.md @@ -2,17 +2,17 @@ ## Customize Tuner -NNI provides state-of-the-art tuning algorithm in our builtin-tuners. We also support building a tuner by yourself to adjust your tuning demand. +NNI provides state-of-the-art tuning algorithm in builtin-tuners. NNI supports to build a tuner by yourself for tuning demand. -If you want to implement and use your own tuning algorithm, you can implement a customized Tuner, there are three things for you to do: +If you want to implement your own tuning algorithm, you can implement a customized Tuner, there are three things to do: -1) Inherit a tuner of a base Tuner class -2) Implement receive_trial_result and generate_parameter function -3) Configure your customized tuner in experiment YAML config file +1. Inherit the base Tuner class +1. Implement receive_trial_result and generate_parameter function +1. Configure your customized tuner in experiment YAML config file Here is an example: -**1. Inherit a tuner of a base Tuner class** +**1. Inherit the base Tuner class** ```python from nni.tuner import Tuner @@ -33,10 +33,10 @@ class CustomizedTuner(Tuner): def receive_trial_result(self, parameter_id, parameters, value): ''' - Record an observation of the objective function and Train + Receive trial's final result. parameter_id: int parameters: object created by 'generate_parameters()' - value: final metrics of the trial, including default matrix + value: final metrics of the trial, including default metric ''' # your code implements here. ... @@ -59,7 +59,6 @@ For example: If the you implement the `generate_parameters` like this: ```python - def generate_parameters(self, parameter_id): ''' Returns a set of trial (hyper-)parameters, as a serializable object @@ -72,21 +71,17 @@ def generate_parameters(self, parameter_id): It means your Tuner will always generate parameters `{"dropout": 0.3, "learning_rate": 0.4}`. Then Trial will receive `{"dropout": 0.3, "learning_rate": 0.4}` by calling API `nni.get_next_parameter()`. Once the trial ends with a result (normally some kind of metrics), it can send the result to Tuner by calling API `nni.report_final_result()`, for example `nni.report_final_result(0.93)`. Then your Tuner's `receive_trial_result` function will receied the result like: -``` - +```python parameter_id = 82347 parameters = {"dropout": 0.3, "learning_rate": 0.4} value = 0.93 - ``` **Note that** if you want to access a file (e.g., `data.txt`) in the directory of your own tuner, you cannot use `open('data.txt', 'r')`. Instead, you should use the following: -``` - +```python _pwd = os.path.dirname(__file__) _fd = open(os.path.join(_pwd, 'data.txt'), 'r') - ``` This is because your tuner is not executed in the directory of your tuner (i.e., `pwd` is not the directory of your own tuner). @@ -96,7 +91,6 @@ This is because your tuner is not executed in the directory of your tuner (i.e., NNI needs to locate your customized tuner class and instantiate the class, so you need to specify the location of the customized tuner class and pass literal values as parameters to the \_\_init__ constructor. ```yaml - tuner: codeDir: /home/abc/mytuner classFileName: my_customized_tuner.py diff --git a/docs/ExperimentConfig.md b/docs/ExperimentConfig.md index faf82ecb71..60495175dc 100644 --- a/docs/ExperimentConfig.md +++ b/docs/ExperimentConfig.md @@ -4,184 +4,186 @@ A config file is needed when create an experiment, the path of the config file i The config file is written in YAML format, and need to be written correctly. This document describes the rule to write config file, and will provide some examples and templates. - - [Template](#Template) (the templates of an config file) - - [Configuration spec](#Configuration) (the configuration specification of every attribute in config file) - - [Examples](#Examples) (the examples of config file) +* [Template](#Template) (the templates of an config file) +* [Configuration spec](#Configuration) (the configuration specification of every attribute in config file) +* [Examples](#Examples) (the examples of config file)
      ## Template -* __light weight(without Annotation and Assessor)__ -``` -authorName: -experimentName: -trialConcurrency: -maxExecDuration: -maxTrialNum: +* __light weight(without Annotation and Assessor)__ + +```yaml +authorName: +experimentName: +trialConcurrency: +maxExecDuration: +maxTrialNum: #choice: local, remote, pai, kubeflow -trainingServicePlatform: -searchSpacePath: +trainingServicePlatform: +searchSpacePath: #choice: true, false -useAnnotation: +useAnnotation: tuner: #choice: TPE, Random, Anneal, Evolution builtinTunerName: classArgs: #choice: maximize, minimize optimize_mode: - gpuNum: + gpuNum: trial: - command: - codeDir: - gpuNum: + command: + codeDir: + gpuNum: #machineList can be empty if the platform is local machineList: - - ip: - port: - username: - passwd: + - ip: + port: + username: + passwd: ``` * __Use Assessor__ -``` -authorName: -experimentName: -trialConcurrency: -maxExecDuration: -maxTrialNum: +```yaml +authorName: +experimentName: +trialConcurrency: +maxExecDuration: +maxTrialNum: #choice: local, remote, pai, kubeflow -trainingServicePlatform: -searchSpacePath: +trainingServicePlatform: +searchSpacePath: #choice: true, false -useAnnotation: +useAnnotation: tuner: #choice: TPE, Random, Anneal, Evolution builtinTunerName: classArgs: #choice: maximize, minimize optimize_mode: - gpuNum: + gpuNum: assessor: #choice: Medianstop builtinAssessorName: classArgs: #choice: maximize, minimize optimize_mode: - gpuNum: + gpuNum: trial: - command: - codeDir: - gpuNum: + command: + codeDir: + gpuNum: #machineList can be empty if the platform is local machineList: - - ip: - port: - username: - passwd: + - ip: + port: + username: + passwd: ``` * __Use Annotation__ -``` -authorName: -experimentName: -trialConcurrency: -maxExecDuration: -maxTrialNum: +```yaml +authorName: +experimentName: +trialConcurrency: +maxExecDuration: +maxTrialNum: #choice: local, remote, pai, kubeflow -trainingServicePlatform: +trainingServicePlatform: #choice: true, false -useAnnotation: +useAnnotation: tuner: #choice: TPE, Random, Anneal, Evolution builtinTunerName: classArgs: #choice: maximize, minimize optimize_mode: - gpuNum: + gpuNum: assessor: #choice: Medianstop builtinAssessorName: classArgs: #choice: maximize, minimize optimize_mode: - gpuNum: + gpuNum: trial: - command: - codeDir: - gpuNum: + command: + codeDir: + gpuNum: #machineList can be empty if the platform is local machineList: - - ip: - port: - username: - passwd: + - ip: + port: + username: + passwd: ``` + ## Configuration spec + * __authorName__ * Description - - __authorName__ is the name of the author who create the experiment. + + __authorName__ is the name of the author who create the experiment. TBD: add default value - + * __experimentName__ * Description - + __experimentName__ is the name of the experiment created. TBD: add default value - + * __trialConcurrency__ * Description - - __trialConcurrency__ specifies the max num of trial jobs run simultaneously. - - Note: if trialGpuNum is bigger than the free gpu numbers, and the trial jobs running simultaneously can not reach trialConcurrency number, some trial jobs will be put into a queue to wait for gpu allocation. - + + __trialConcurrency__ specifies the max num of trial jobs run simultaneously. + + Note: if trialGpuNum is bigger than the free gpu numbers, and the trial jobs running simultaneously can not reach trialConcurrency number, some trial jobs will be put into a queue to wait for gpu allocation. + * __maxExecDuration__ * Description - - __maxExecDuration__ specifies the max duration time of an experiment.The unit of the time is {__s__, __m__, __h__, __d__}, which means {_seconds_, _minutes_, _hours_, _days_}. - Note: The maxExecDuration spec set the time of an experiment, not a trial job. If the experiment reach the max duration time, the experiment will not stop, but could not submit new trial jobs any more. - + __maxExecDuration__ specifies the max duration time of an experiment.The unit of the time is {__s__, __m__, __h__, __d__}, which means {_seconds_, _minutes_, _hours_, _days_}. + + Note: The maxExecDuration spec set the time of an experiment, not a trial job. If the experiment reach the max duration time, the experiment will not stop, but could not submit new trial jobs any more. + * __maxTrialNum__ - * Description - - __maxTrialNum__ specifies the max number of trial jobs created by NNI, including succeeded and failed jobs. - + * Description + + __maxTrialNum__ specifies the max number of trial jobs created by NNI, including succeeded and failed jobs. + * __trainingServicePlatform__ * Description - - __trainingServicePlatform__ specifies the platform to run the experiment, including {__local__, __remote__, __pai__, __kubeflow__}. - + + __trainingServicePlatform__ specifies the platform to run the experiment, including {__local__, __remote__, __pai__, __kubeflow__}. + * __local__ run an experiment on local ubuntu machine. - - + * __remote__ submit trial jobs to remote ubuntu machines, and __machineList__ field should be filed in order to set up SSH connection to remote machine. - * __pai__ submit trial jobs to [OpenPai](https://github.com/Microsoft/pai) of Microsoft. For more details of pai configuration, please reference [PAIMOdeDoc](./PAIMode.md) - + * __kubeflow__ submit trial jobs to [kubeflow](https://www.kubeflow.org/docs/about/kubeflow/), NNI support kubeflow based on normal kubernetes and [azure kubernetes](https://azure.microsoft.com/en-us/services/kubernetes-service/). - + * __searchSpacePath__ * Description - - __searchSpacePath__ specifies the path of search space file, which should be a valid path in the local linux machine. - - Note: if set useAnnotation=True, the searchSpacePath field should be removed. + + __searchSpacePath__ specifies the path of search space file, which should be a valid path in the local linux machine. + + Note: if set useAnnotation=True, the searchSpacePath field should be removed. + * __useAnnotation__ * Description - - __useAnnotation__ use annotation to analysis trial code and generate search space. - + + __useAnnotation__ use annotation to analysis trial code and generate search space. + Note: if set useAnnotation=True, the searchSpacePath field should be removed. * __nniManagerIp__ * Description - + __nniManagerIp__ set the IP address of the machine on which NNI manager process runs. This field is optional, and if it's not set, eth0 device IP will be used instead. Note: run ifconfig on NNI manager's machine to check if eth0 device exists. If not, we recommend to set nnimanagerIp explicitly. @@ -196,95 +198,109 @@ machineList: __logLevel__ sets log level for the experiment, available log levels are: `trace, debug, info, warning, error, fatal`. The default value is `info`. - * __tuner__ * Description - + __tuner__ specifies the tuner algorithm in the experiment, there are two kinds of ways to set tuner. One way is to use tuner provided by NNI sdk, need to set __builtinTunerName__ and __classArgs__. Another way is to use users' own tuner file, and need to set __codeDirectory__, __classFileName__, __className__ and __classArgs__. * __builtinTunerName__ and __classArgs__ * __builtinTunerName__ - - __builtinTunerName__ specifies the name of system tuner, NNI sdk provides four kinds of tuner, including {__TPE__, __Random__, __Anneal__, __Evolution__, __BatchTuner__, __GridSearch__} + + __builtinTunerName__ specifies the name of system tuner, NNI sdk provides four kinds of tuner, including {__TPE__, __Random__, __Anneal__, __Evolution__, __BatchTuner__, __GridSearch__} * __classArgs__ - - __classArgs__ specifies the arguments of tuner algorithm. If the __builtinTunerName__ is in {__TPE__, __Random__, __Anneal__, __Evolution__}, user should set __optimize_mode__. + + __classArgs__ specifies the arguments of tuner algorithm. If the __builtinTunerName__ is in {__TPE__, __Random__, __Anneal__, __Evolution__}, user should set __optimize_mode__. * __codeDir__, __classFileName__, __className__ and __classArgs__ - * __codeDir__ - - __codeDir__ specifies the directory of tuner code. - * __classFileName__ - - __classFileName__ specifies the name of tuner file. - * __className__ - - __className__ specifies the name of tuner class. - * __classArgs__ - - __classArgs__ specifies the arguments of tuner algorithm. - * __gpuNum__ - + * __codeDir__ + + __codeDir__ specifies the directory of tuner code. + * __classFileName__ + + __classFileName__ specifies the name of tuner file. + * __className__ + + __className__ specifies the name of tuner class. + * __classArgs__ + + __classArgs__ specifies the arguments of tuner algorithm. + * __gpuNum__ + __gpuNum__ specifies the gpu number to run the tuner process. The value of this field should be a positive number. - - Note: users could only specify one way to set tuner, for example, set {tunerName, optimizationMode} or {tunerCommand, tunerCwd}, and could not set them both. + + Note: users could only specify one way to set tuner, for example, set {tunerName, optimizationMode} or {tunerCommand, tunerCwd}, and could not set them both. * __assessor__ - + * Description - + __assessor__ specifies the assessor algorithm to run an experiment, there are two kinds of ways to set assessor. One way is to use assessor provided by NNI sdk, users need to set __builtinAssessorName__ and __classArgs__. Another way is to use users' own assessor file, and need to set __codeDirectory__, __classFileName__, __className__ and __classArgs__. * __builtinAssessorName__ and __classArgs__ * __builtinAssessorName__ - - __builtinAssessorName__ specifies the name of system assessor, NNI sdk provides one kind of assessor {__Medianstop__} + + __builtinAssessorName__ specifies the name of system assessor, NNI sdk provides one kind of assessor {__Medianstop__} * __classArgs__ - __classArgs__ specifies the arguments of assessor algorithm + __classArgs__ specifies the arguments of assessor algorithm + * __codeDir__, __classFileName__, __className__ and __classArgs__ + * __codeDir__ - - __codeDir__ specifies the directory of assessor code. + + __codeDir__ specifies the directory of assessor code. + * __classFileName__ - - __classFileName__ specifies the name of assessor file. + + __classFileName__ specifies the name of assessor file. + * __className__ - - __className__ specifies the name of assessor class. + + __className__ specifies the name of assessor class. + * __classArgs__ - - __classArgs__ specifies the arguments of assessor algorithm. + + __classArgs__ specifies the arguments of assessor algorithm. + * __gpuNum__ - - __gpuNum__ specifies the gpu number to run the assessor process. The value of this field should be a positive number. - Note: users' could only specify one way to set assessor, for example,set {assessorName, optimizationMode} or {assessorCommand, assessorCwd}, and users could not set them both.If users do not want to use assessor, assessor fileld should leave to empty. + __gpuNum__ specifies the gpu number to run the assessor process. The value of this field should be a positive number. + + Note: users' could only specify one way to set assessor, for example,set {assessorName, optimizationMode} or {assessorCommand, assessorCwd}, and users could not set them both.If users do not want to use assessor, assessor fileld should leave to empty. + * __trial(local, remote)__ + * __command__ - __command__ specifies the command to run trial process. + __command__ specifies the command to run trial process. + * __codeDir__ - - __codeDir__ specifies the directory of your own trial file. + + __codeDir__ specifies the directory of your own trial file. + * __gpuNum__ - - __gpuNum__ specifies the num of gpu to run the trial process. Default value is 0. + + __gpuNum__ specifies the num of gpu to run the trial process. Default value is 0. * __trial(pai)__ + * __command__ - __command__ specifies the command to run trial process. + __command__ specifies the command to run trial process. + * __codeDir__ - - __codeDir__ specifies the directory of the own trial file. + + __codeDir__ specifies the directory of the own trial file. + * __gpuNum__ - - __gpuNum__ specifies the num of gpu to run the trial process. Default value is 0. + + __gpuNum__ specifies the num of gpu to run the trial process. Default value is 0. + * __cpuNum__ __cpuNum__ is the cpu number of cpu to be used in pai container. + * __memoryMB__ __memoryMB__ set the momory size to be used in pai's container. - + * __image__ __image__ set the image to be used in pai. @@ -292,417 +308,416 @@ machineList: * __dataDir__ __dataDir__ is the data directory in hdfs to be used. - + * __outputDir__ - - __outputDir__ is the output directory in hdfs to be used in pai, the stdout and stderr files are stored in the directory after job finished. - + __outputDir__ is the output directory in hdfs to be used in pai, the stdout and stderr files are stored in the directory after job finished. * __trial(kubeflow)__ - + * __codeDir__ - + __codeDir__ is the local directory where the code files in. - + * __ps(optional)__ - - __ps__ is the configuration for kubeflow's tensorflow-operator. + + __ps__ is the configuration for kubeflow's tensorflow-operator. + * __replicas__ - + __replicas__ is the replica number of __ps__ role. - + * __command__ - + __command__ is the run script in __ps__'s container. - + * __gpuNum__ - + __gpuNum__ set the gpu number to be used in __ps__ container. - + * __cpuNum__ - + __cpuNum__ set the cpu number to be used in __ps__ container. - + * __memoryMB__ - + __memoryMB__ set the memory size of the container. - + * __image__ - + __image__ set the image to be used in __ps__. * __worker__ - - __worker__ is the configuration for kubeflow's tensorflow-operator. + + __worker__ is the configuration for kubeflow's tensorflow-operator. + * __replicas__ - + __replicas__ is the replica number of __worker__ role. - + * __command__ - + __command__ is the run script in __worker__'s container. - + * __gpuNum__ - + __gpuNum__ set the gpu number to be used in __worker__ container. - + * __cpuNum__ - + __cpuNum__ set the cpu number to be used in __worker__ container. - + * __memoryMB__ - + __memoryMB__ set the memory size of the container. - + * __image__ - + __image__ set the image to be used in __worker__. +* __machineList__ + __machineList__ should be set if __trainingServicePlatform__ is set to remote, or it should be empty. -* __machineList__ - - __machineList__ should be set if users set __trainingServicePlatform__=remote, or it could be empty. * __ip__ - - __ip__ is the ip address of remote machine. + + __ip__ is the ip address of remote machine. + * __port__ - - __port__ is the ssh port to be used to connect machine. - - Note: if users set port empty, the default value will be 22. + + __port__ is the ssh port to be used to connect machine. + + Note: if users set port empty, the default value will be 22. * __username__ - - __username__ is the account of remote machine. + + __username__ is the account of remote machine. * __passwd__ - - __passwd__ specifies the password of the account. + + __passwd__ specifies the password of the account. * __sshKeyPath__ If users use ssh key to login remote machine, could set __sshKeyPath__ in config file. __sshKeyPath__ is the path of ssh key file, which should be valid. - - Note: if users set passwd and sshKeyPath simultaneously, NNI will try passwd. - + + Note: if users set passwd and sshKeyPath simultaneously, NNI will try passwd. + * __passphrase__ __passphrase__ is used to protect ssh key, which could be empty if users don't have passphrase. * __kubeflowConfig__: - + * __operator__ - + __operator__ specify the kubeflow's operator to be used, NNI support __tf-operator__ in current version. - + * __storage__ - + __storage__ specify the storage type of kubeflow, including {__nfs__, __azureStorage__}. This field is optional, and the default value is __nfs__. If the config use azureStorage, this field must be completed. - + * __nfs__ - + __server__ is the host of nfs server __path__ is the mounted path of nfs - + * __keyVault__ - + If users want to use azure kubernetes service, they should set keyVault to storage the private key of your azure storage account. Refer: https://docs.microsoft.com/en-us/azure/key-vault/key-vault-manage-with-cli2 * __vaultName__ - __vaultName__ is the value of ```--vault-name``` used in az command. + __vaultName__ is the value of `--vault-name` used in az command. * __name__ - __name__ is the value of ```--name``` used in az command. + __name__ is the value of `--name` used in az command. * __azureStorage__ - + If users use azure kubernetes service, they should set azure storage account to store code files. * __accountName__ - + __accountName__ is the name of azure storage account. * __azureShare__ - + __azureShare__ is the share of the azure file storage. * __paiConfig__ * __userName__ - + __userName__ is the user name of your pai account. * __password__ - + __password__ is the password of the pai account. - + * __host__ - + __host__ is the host of pai. - - - + ## Examples + * __local mode__ If users want to run trial jobs in local machine, and use annotation to generate search space, could use the following config: -``` -authorName: test -experimentName: test_experiment -trialConcurrency: 3 -maxExecDuration: 1h -maxTrialNum: 10 -#choice: local, remote, pai, kubeflow -trainingServicePlatform: local -#choice: true, false -useAnnotation: true -tuner: - #choice: TPE, Random, Anneal, Evolution - builtinTunerName: TPE - classArgs: - #choice: maximize, minimize - optimize_mode: maximize - gpuNum: 0 -trial: - command: python3 mnist.py - codeDir: /nni/mnist - gpuNum: 0 -``` - - Could add assessor configuration in config file if set assessor. - -``` -authorName: test -experimentName: test_experiment -trialConcurrency: 3 -maxExecDuration: 1h -maxTrialNum: 10 -#choice: local, remote, pai, kubeflow -trainingServicePlatform: local -searchSpacePath: /nni/search_space.json -#choice: true, false -useAnnotation: false -tuner: - #choice: TPE, Random, Anneal, Evolution - builtinTunerName: TPE - classArgs: - #choice: maximize, minimize - optimize_mode: maximize - gpuNum: 0 -assessor: - #choice: Medianstop - builtinAssessorName: Medianstop - classArgs: - #choice: maximize, minimize - optimize_mode: maximize - gpuNum: 0 -trial: - command: python3 mnist.py - codeDir: /nni/mnist - gpuNum: 0 -``` - - Or you could specify your own tuner and assessor file as following: - -``` -authorName: test -experimentName: test_experiment -trialConcurrency: 3 -maxExecDuration: 1h -maxTrialNum: 10 -#choice: local, remote, pai, kubeflow -trainingServicePlatform: local -searchSpacePath: /nni/search_space.json -#choice: true, false -useAnnotation: false -tuner: - codeDir: /nni/tuner - classFileName: mytuner.py - className: MyTuner - classArgs: - #choice: maximize, minimize - optimize_mode: maximize - gpuNum: 0 -assessor: - codeDir: /nni/assessor - classFileName: myassessor.py - className: MyAssessor - classArgs: - #choice: maximize, minimize - optimize_mode: maximize - gpuNum: 0 -trial: - command: python3 mnist.py - codeDir: /nni/mnist - gpuNum: 0 -``` + ```yaml + authorName: test + experimentName: test_experiment + trialConcurrency: 3 + maxExecDuration: 1h + maxTrialNum: 10 + #choice: local, remote, pai, kubeflow + trainingServicePlatform: local + #choice: true, false + useAnnotation: true + tuner: + #choice: TPE, Random, Anneal, Evolution + builtinTunerName: TPE + classArgs: + #choice: maximize, minimize + optimize_mode: maximize + gpuNum: 0 + trial: + command: python3 mnist.py + codeDir: /nni/mnist + gpuNum: 0 + ``` + + You can add assessor configuration. + + ```yaml + authorName: test + experimentName: test_experiment + trialConcurrency: 3 + maxExecDuration: 1h + maxTrialNum: 10 + #choice: local, remote, pai, kubeflow + trainingServicePlatform: local + searchSpacePath: /nni/search_space.json + #choice: true, false + useAnnotation: false + tuner: + #choice: TPE, Random, Anneal, Evolution + builtinTunerName: TPE + classArgs: + #choice: maximize, minimize + optimize_mode: maximize + gpuNum: 0 + assessor: + #choice: Medianstop + builtinAssessorName: Medianstop + classArgs: + #choice: maximize, minimize + optimize_mode: maximize + gpuNum: 0 + trial: + command: python3 mnist.py + codeDir: /nni/mnist + gpuNum: 0 + ``` + + Or you could specify your own tuner and assessor file as following, + + ```yaml + authorName: test + experimentName: test_experiment + trialConcurrency: 3 + maxExecDuration: 1h + maxTrialNum: 10 + #choice: local, remote, pai, kubeflow + trainingServicePlatform: local + searchSpacePath: /nni/search_space.json + #choice: true, false + useAnnotation: false + tuner: + codeDir: /nni/tuner + classFileName: mytuner.py + className: MyTuner + classArgs: + #choice: maximize, minimize + optimize_mode: maximize + gpuNum: 0 + assessor: + codeDir: /nni/assessor + classFileName: myassessor.py + className: MyAssessor + classArgs: + #choice: maximize, minimize + optimize_mode: maximize + gpuNum: 0 + trial: + command: python3 mnist.py + codeDir: /nni/mnist + gpuNum: 0 + ``` * __remote mode__ -If run trial jobs in remote machine, users could specify the remote mahcine information as fllowing format: - -``` -authorName: test -experimentName: test_experiment -trialConcurrency: 3 -maxExecDuration: 1h -maxTrialNum: 10 -#choice: local, remote, pai, kubeflow -trainingServicePlatform: remote -searchSpacePath: /nni/search_space.json -#choice: true, false -useAnnotation: false -tuner: - #choice: TPE, Random, Anneal, Evolution - builtinTunerName: TPE - classArgs: - #choice: maximize, minimize - optimize_mode: maximize - gpuNum: 0 -trial: - command: python3 mnist.py - codeDir: /nni/mnist - gpuNum: 0 -#machineList can be empty if the platform is local -machineList: - - ip: 10.10.10.10 - port: 22 - username: test - passwd: test - - ip: 10.10.10.11 - port: 22 - username: test - passwd: test - - ip: 10.10.10.12 - port: 22 - username: test - sshKeyPath: /nni/sshkey - passphrase: qwert -``` + If run trial jobs in remote machine, users could specify the remote mahcine information as fllowing format: + + ```yaml + authorName: test + experimentName: test_experiment + trialConcurrency: 3 + maxExecDuration: 1h + maxTrialNum: 10 + #choice: local, remote, pai, kubeflow + trainingServicePlatform: remote + searchSpacePath: /nni/search_space.json + #choice: true, false + useAnnotation: false + tuner: + #choice: TPE, Random, Anneal, Evolution + builtinTunerName: TPE + classArgs: + #choice: maximize, minimize + optimize_mode: maximize + gpuNum: 0 + trial: + command: python3 mnist.py + codeDir: /nni/mnist + gpuNum: 0 + #machineList can be empty if the platform is local + machineList: + - ip: 10.10.10.10 + port: 22 + username: test + passwd: test + - ip: 10.10.10.11 + port: 22 + username: test + passwd: test + - ip: 10.10.10.12 + port: 22 + username: test + sshKeyPath: /nni/sshkey + passphrase: qwert + ``` * __pai mode__ -``` -authorName: test -experimentName: nni_test1 -trialConcurrency: 1 -maxExecDuration:500h -maxTrialNum: 1 -#choice: local, remote, pai, kubeflow -trainingServicePlatform: pai -searchSpacePath: search_space.json -#choice: true, false -useAnnotation: false -tuner: - #choice: TPE, Random, Anneal, Evolution, BatchTuner - #SMAC (SMAC should be installed through nnictl) - builtinTunerName: TPE - classArgs: - #choice: maximize, minimize - optimize_mode: maximize -trial: - command: python3 main.py - codeDir: . - gpuNum: 4 - cpuNum: 2 - memoryMB: 10000 - #The docker image to run NNI job on pai - image: msranni/nni:latest - #The hdfs directory to store data on pai, format 'hdfs://host:port/directory' - dataDir: hdfs://10.11.12.13:9000/test - #The hdfs directory to store output data generated by NNI, format 'hdfs://host:port/directory' - outputDir: hdfs://10.11.12.13:9000/test -paiConfig: - #The username to login pai - userName: test - #The password to login pai - passWord: test - #The host of restful server of pai - host: 10.10.10.10 -``` - -* __kubeflow mode__ - -kubeflow use nfs as storage. - -``` -authorName: default -experimentName: example_mni -trialConcurrency: 1 -maxExecDuration: 1h -maxTrialNum: 1 -#choice: local, remote, pai, kubeflow -trainingServicePlatform: kubeflow -searchSpacePath: search_space.json -#choice: true, false -useAnnotation: false -tuner: - #choice: TPE, Random, Anneal, Evolution - builtinTunerName: TPE - classArgs: - #choice: maximize, minimize - optimize_mode: maximize -trial: - codeDir: . - worker: - replicas: 1 - command: python3 mnist.py - gpuNum: 0 - cpuNum: 1 - memoryMB: 8192 + ```yaml + authorName: test + experimentName: nni_test1 + trialConcurrency: 1 + maxExecDuration:500h + maxTrialNum: 1 + #choice: local, remote, pai, kubeflow + trainingServicePlatform: pai + searchSpacePath: search_space.json + #choice: true, false + useAnnotation: false + tuner: + #choice: TPE, Random, Anneal, Evolution, BatchTuner + #SMAC (SMAC should be installed through nnictl) + builtinTunerName: TPE + classArgs: + #choice: maximize, minimize + optimize_mode: maximize + trial: + command: python3 main.py + codeDir: . + gpuNum: 4 + cpuNum: 2 + memoryMB: 10000 + #The docker image to run NNI job on pai image: msranni/nni:latest -kubeflowConfig: - operator: tf-operator - nfs: - server: 10.10.10.10 - path: /var/nfs/general -``` + #The hdfs directory to store data on pai, format 'hdfs://host:port/directory' + dataDir: hdfs://10.11.12.13:9000/test + #The hdfs directory to store output data generated by NNI, format 'hdfs://host:port/directory' + outputDir: hdfs://10.11.12.13:9000/test + paiConfig: + #The username to login pai + userName: test + #The password to login pai + passWord: test + #The host of restful server of pai + host: 10.10.10.10 + ``` -kubeflow use azure storage +* __kubeflow mode__ -``` -authorName: default -experimentName: example_mni -trialConcurrency: 1 -maxExecDuration: 1h -maxTrialNum: 1 -#choice: local, remote, pai, kubeflow -trainingServicePlatform: kubeflow -searchSpacePath: search_space.json -#choice: true, false -useAnnotation: false -#nniManagerIp: 10.10.10.10 -tuner: - #choice: TPE, Random, Anneal, Evolution - builtinTunerName: TPE - classArgs: - #choice: maximize, minimize - optimize_mode: maximize -assessor: - builtinAssessorName: Medianstop - classArgs: - optimize_mode: maximize - gpuNum: 0 -trial: - codeDir: . - worker: - replicas: 1 - command: python3 mnist.py + kubeflow with nfs storage. + + ```yaml + authorName: default + experimentName: example_mni + trialConcurrency: 1 + maxExecDuration: 1h + maxTrialNum: 1 + #choice: local, remote, pai, kubeflow + trainingServicePlatform: kubeflow + searchSpacePath: search_space.json + #choice: true, false + useAnnotation: false + tuner: + #choice: TPE, Random, Anneal, Evolution + builtinTunerName: TPE + classArgs: + #choice: maximize, minimize + optimize_mode: maximize + trial: + codeDir: . + worker: + replicas: 1 + command: python3 mnist.py + gpuNum: 0 + cpuNum: 1 + memoryMB: 8192 + image: msranni/nni:latest + kubeflowConfig: + operator: tf-operator + nfs: + server: 10.10.10.10 + path: /var/nfs/general + ``` + + kubeflow with azure storage + + ```yaml + authorName: default + experimentName: example_mni + trialConcurrency: 1 + maxExecDuration: 1h + maxTrialNum: 1 + #choice: local, remote, pai, kubeflow + trainingServicePlatform: kubeflow + searchSpacePath: search_space.json + #choice: true, false + useAnnotation: false + #nniManagerIp: 10.10.10.10 + tuner: + #choice: TPE, Random, Anneal, Evolution + builtinTunerName: TPE + classArgs: + #choice: maximize, minimize + optimize_mode: maximize + assessor: + builtinAssessorName: Medianstop + classArgs: + optimize_mode: maximize gpuNum: 0 - cpuNum: 1 - memoryMB: 4096 - image: msranni/nni:latest -kubeflowConfig: - operator: tf-operator - keyVault: - vaultName: Contoso-Vault - name: AzureStorageAccountKey - azureStorage: - accountName: storage - azureShare: share01 -``` + trial: + codeDir: . + worker: + replicas: 1 + command: python3 mnist.py + gpuNum: 0 + cpuNum: 1 + memoryMB: 4096 + image: msranni/nni:latest + kubeflowConfig: + operator: tf-operator + keyVault: + vaultName: Contoso-Vault + name: AzureStorageAccountKey + azureStorage: + accountName: storage + azureShare: share01 + ``` diff --git a/docs/cifar10_examples.md b/docs/cifar10_examples.md index 489db31f36..703f9473f1 100644 --- a/docs/cifar10_examples.md +++ b/docs/cifar10_examples.md @@ -6,7 +6,7 @@ ### **Goals** -As we all know, the choice of model optimizer is directly affects the performance of the final matrix. The goal of this tutorial is to **tune a better performace optimizer** to train a relatively small convolutional neural network (CNN) for recognizing images. +As we all know, the choice of model optimizer is directly affects the performance of the final metrics. The goal of this tutorial is to **tune a better performace optimizer** to train a relatively small convolutional neural network (CNN) for recognizing images. In this example, we have selected the following common deep learning optimizer: @@ -65,12 +65,12 @@ code directory: [examples/trials/cifar10_pytorch/config_pai.yml][7] *The complete examples we have implemented: [examples/trials/cifar10_pytorch/][1]* -#### Lauch the experiment +#### Launch the experiment We are ready for the experiment, let's now **run the config.yml file from your command line to start the experiment**. - ```bash - nnictl create --config nni/examples/trials/cifar10_pytorch/config.yml +```bash +nnictl create --config nni/examples/trials/cifar10_pytorch/config.yml ``` [1]: https://github.com/Microsoft/nni/tree/master/examples/trials/cifar10_pytorch diff --git a/docs/sdk_reference.rst b/docs/sdk_reference.rst index 5767ac33c6..658fc534f0 100644 --- a/docs/sdk_reference.rst +++ b/docs/sdk_reference.rst @@ -2,7 +2,7 @@ Python API Reference ########################### -API for trial code +Trial ------------------------ .. autofunction:: nni.get_next_parameter .. autofunction:: nni.get_current_parameter @@ -11,7 +11,7 @@ API for trial code .. autofunction:: nni.get_sequence_id -API for tuners +Tuner ------------------------ .. autoclass:: nni.tuner.Tuner :members: @@ -28,7 +28,7 @@ API for tuners .. autoclass:: nni.smac_tuner.smac_tuner.SMACTuner :members: -API for assessors +Assessor ------------------------ .. autoclass:: nni.assessor.Assessor :members: @@ -40,6 +40,6 @@ API for assessors :members: -API for Advisors +Advisor ------------------------ .. autoclass:: nni.hyperband_advisor.hyperband_advisor.Hyperband \ No newline at end of file diff --git a/docs/training_services.rst b/docs/training_services.rst index e573c677aa..482a74d873 100644 --- a/docs/training_services.rst +++ b/docs/training_services.rst @@ -4,6 +4,6 @@ Introduction to NNI Training Services .. toctree:: Local Remote - PAI + OpenPAI Kubeflow - FrameworkController Mode \ No newline at end of file + FrameworkController \ No newline at end of file diff --git a/docs/tuners.rst b/docs/tuners.rst index f4be4e5a72..c7f9bebadc 100644 --- a/docs/tuners.rst +++ b/docs/tuners.rst @@ -4,7 +4,7 @@ Tuners NNI provides an easy way to adopt an approach to set up parameter tuning algorithms, we call them **Tuner**. -Tuner receives the result from `Trial` as a matrix to evaluate the performance of a specific parameters/architecture configures. And tuner sends next hyper-parameter or architecture configure to Trial. +Tuner receives metrics from `Trial` to evaluate the performance of a specific parameters/architecture configures. And tuner sends next hyper-parameter or architecture configure to Trial. In NNI, we support two approaches to set the tuner: first is directly use builtin tuner provided by nni sdk, second is customize a tuner file by yourself. We also have Advisor that combines the functinality of Tuner & Assessor. From cc95fef863380dc850dbbd407d5eb3fb024809ea Mon Sep 17 00:00:00 2001 From: chicm-ms <38930155+chicm-ms@users.noreply.github.com> Date: Wed, 30 Jan 2019 15:34:00 +0800 Subject: [PATCH 13/22] Fix db init log and log format issue (#686) --- src/nni_manager/common/log.ts | 2 +- src/nni_manager/core/nniDataStore.ts | 2 ++ src/nni_manager/rest_server/restHandler.ts | 1 - 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/nni_manager/common/log.ts b/src/nni_manager/common/log.ts index c36a506687..3df2fad901 100644 --- a/src/nni_manager/common/log.ts +++ b/src/nni_manager/common/log.ts @@ -138,7 +138,7 @@ class Logger { private log(level: string, param: any[]): void { const buffer: WritableStreamBuffer = new WritableStreamBuffer(); buffer.write(`[${(new Date()).toISOString()}] ${level} `); - buffer.write(format(null, param)); + buffer.write(format(param)); buffer.write('\n'); buffer.end(); this.bufferSerialEmitter.feed(buffer.getContents()); diff --git a/src/nni_manager/core/nniDataStore.ts b/src/nni_manager/core/nniDataStore.ts index f41d66b323..20de9f0f33 100644 --- a/src/nni_manager/core/nniDataStore.ts +++ b/src/nni_manager/core/nniDataStore.ts @@ -49,6 +49,7 @@ class NNIDataStore implements DataStore { if(isNewExperiment()) { mkDirP(databaseDir).then(() => { this.db.init(true, databaseDir).then(() => { + this.log.info('Datastore initialization done'); this.initTask.resolve(); }).catch((err: Error) => { this.initTask.reject(err); @@ -58,6 +59,7 @@ class NNIDataStore implements DataStore { }); } else { this.db.init(false, databaseDir).then(() => { + this.log.info('Datastore initialization done'); this.initTask.resolve(); }).catch((err: Error) => { this.initTask.reject(err); diff --git a/src/nni_manager/rest_server/restHandler.ts b/src/nni_manager/rest_server/restHandler.ts index 01f27c8dff..8127f631f9 100644 --- a/src/nni_manager/rest_server/restHandler.ts +++ b/src/nni_manager/rest_server/restHandler.ts @@ -115,7 +115,6 @@ class NNIRestHandler { const ds: DataStore = component.get(DataStore); ds.init().then(() => { res.send(this.nniManager.getStatus()); - this.log.info('Datastore initialization done'); }).catch(async (err: Error) => { this.handle_error(err, res); this.log.error(err.message); From cba227239e2672a30b0085c2a5fb866fef4abd29 Mon Sep 17 00:00:00 2001 From: Yan Ni Date: Wed, 30 Jan 2019 18:34:19 +0800 Subject: [PATCH 14/22] fix deadlink for trials.md (#688) --- docs/Trials.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Trials.md b/docs/Trials.md index 93f11bc913..ffca0c32ef 100644 --- a/docs/Trials.md +++ b/docs/Trials.md @@ -48,7 +48,7 @@ nni.report_intermediate_result(metrics) ```python nni.report_final_result(metrics) ``` -`metrics` also could be any python object. If users use NNI built-in tuner/assessor, `metrics` follows the same format rule as that in `report_intermediate_result`, the number indicates the model's performance, for example, the model's accuracy, loss etc. This `metrics` is reported to [tuner](tuners.md). +`metrics` also could be any python object. If users use NNI built-in tuner/assessor, `metrics` follows the same format rule as that in `report_intermediate_result`, the number indicates the model's performance, for example, the model's accuracy, loss etc. This `metrics` is reported to [tuner](Builtin_Tuner.md). ### Step 3 - Enable NNI API From a656bba5161b32080d2dc71c2ff331f34e183485 Mon Sep 17 00:00:00 2001 From: Chi Song Date: Thu, 31 Jan 2019 16:33:54 +0800 Subject: [PATCH 15/22] Doc fix: fix typo, rewording and correct format. (#697) Change pai to OpenPAI reformat for translation fix some typo. rewording. --- README.md | 2 +- docs/NNICTLDOC.md | 2 +- docs/Overview.md | 4 +-- docs/PAIMode.md | 2 +- docs/QuickStart.md | 10 +++--- docs/RELEASE.md | 8 ++--- docs/SQuAD_evolution_examples.md | 52 ++++++++++++++++-------------- docs/SearchSpaceSpec.md | 50 +++++++++++----------------- docs/WebUI.md | 2 +- docs/gbdt_example.md | 29 +++++++++-------- docs/sklearn_examples.md | 36 ++++++++++++++------- examples/trials/ga_squad/README.md | 10 +++--- 12 files changed, 107 insertions(+), 100 deletions(-) diff --git a/README.md b/README.md index 743696d1a2..cb331a6527 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ The tool dispatches and runs trial jobs generated by tuning algorithms to search
    • Remote Servers
    • OpenPAI
    • Kubeflow
    • -
    • FrameworkController on K8S (AKS etc.)
    • +
    • FrameworkController on K8S (AKS etc.)
    diff --git a/docs/NNICTLDOC.md b/docs/NNICTLDOC.md index e5b410cde7..1f94efd58a 100644 --- a/docs/NNICTLDOC.md +++ b/docs/NNICTLDOC.md @@ -131,7 +131,7 @@ nnictl support commands: * Description - You can use this command to update an experiment's concurrency. + You can use this command to update an experiment's duration. * Usage diff --git a/docs/Overview.md b/docs/Overview.md index a004ffabf9..ef46498865 100644 --- a/docs/Overview.md +++ b/docs/Overview.md @@ -3,7 +3,7 @@ NNI (Neural Network Intelligence) is a toolkit to help users design and tune machine learning models (e.g., hyperparameters), neural network architectures, or complex system's parameters, in an efficient and automatic way. NNI has several appealing properties: easy-to-use, scalability, flexibility, and efficiency. * **Easy-to-use**: NNI can be easily installed through python pip. Only several lines need to be added to your code in order to use NNI's power. You can use both commandline tool and WebUI to work with your experiments. -* **Scalability**: Tuning hyperparameters or neural architecture often demands large amount of computation resource, while NNI is designed to fully leverage different computation resources, such as remote machines, training platforms (e.g., PAI, Kubernetes). Thousands of trials could run in parallel by depending on the capacity of your configured training platforms. +* **Scalability**: Tuning hyperparameters or neural architecture often demands large amount of computation resource, while NNI is designed to fully leverage different computation resources, such as remote machines, training platforms (e.g., OpenPAI, Kubernetes). Hundreds of trials could run in parallel by depending on the capacity of your configured training platforms. * **Flexibility**: Besides rich built-in algorithms, NNI allows users to customize various hyperparameter tuning algorithms, neural architecture search algorithms, early stopping algorithms, etc. Users could also extend NNI with more training platforms, such as virtual machines, kubernetes service on the cloud. Moreover, NNI can connect to external environments to tune special applications/models on them. * **Efficiency**: We are intensively working on more efficient model tuning from both system level and algorithm level. For example, leveraging early feedback to speedup tuning procedure. @@ -27,7 +27,7 @@ The figure below shows high-level architecture of NNI. * *Assessor*: Assessor analyzes trial's intermediate results (e.g., periodically evaluated accuracy on test dataset) to tell whether this trial can be early stopped or not. -* *Training Platform*: It means where trials are executed. Depending on your experiment's configuration, it could be your local machine, or remote servers, or large-scale training platform (e.g., PAI, Kubernetes). +* *Training Platform*: It means where trials are executed. Depending on your experiment's configuration, it could be your local machine, or remote servers, or large-scale training platform (e.g., OpenPAI, Kubernetes). Basically, an experiment runs as follows: Tuner receives search space and generates configurations. These configurations will be submitted to training platforms, such as local machine, remote machines, or training clusters. Their performances are reported back to Tuner. Then, new configurations are generated and submitted. diff --git a/docs/PAIMode.md b/docs/PAIMode.md index 997c6eff33..a962e5f8fb 100644 --- a/docs/PAIMode.md +++ b/docs/PAIMode.md @@ -61,7 +61,7 @@ Once complete to fill NNI experiment config file and save (for example, save as nnictl create --config exp_pai.yml ``` to start the experiment in pai mode. NNI will create OpenPAI job for each trial, and the job name format is something like `nni_exp_{experiment_id}_trial_{trial_id}`. -You can see the pai jobs created by NNI in your OpenPAI cluster's web portal, like: +You can see jobs created by NNI in the OpenPAI cluster's web portal, like: ![](./img/nni_pai_joblist.jpg) Notice: In pai mode, NNIManager will start a rest server and listen on a port which is your NNI WebUI's port plus 1. For example, if your WebUI port is `8080`, the rest server will listen on `8081`, to receive metrics from trial job running in Kubernetes. So you should `enable 8081` TCP port in your firewall rule to allow incoming traffic. diff --git a/docs/QuickStart.md b/docs/QuickStart.md index 985eeab11c..71f905a8f0 100644 --- a/docs/QuickStart.md +++ b/docs/QuickStart.md @@ -24,15 +24,15 @@ Here is an example script to train a CNN on MNIST dataset **without NNI**: def run_trial(params): # Input data mnist = input_data.read_data_sets(params['data_dir'], one_hot=True) - # Build MNIST network + # Build network mnist_network = MnistNetwork(channel_1_num=params['channel_1_num'], channel_2_num=params['channel_2_num'], conv_size=params['conv_size'], hidden_size=params['hidden_size'], pool_size=params['pool_size'], learning_rate=params['learning_rate']) mnist_network.build_network() test_acc = 0.0 with tf.Session() as sess: - # Train MNIST network + # Train network mnist_network.train(sess, mnist) - # Evaluate MNIST network + # Evaluate network test_acc = mnist_network.evaluate(mnist) if __name__ == '__main__': @@ -104,7 +104,7 @@ If you want to use NNI to automatically train your model and find the optimal hy *Implemented code directory: [mnist.py](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist/mnist.py)* -**Step 3**: Define a `config` file in YAML, which declare the `path` to search space and trial, also give `other information` such as tuning algorithm, max trial number and max runtime arguments. +**Step 3**: Define a `config` file in YAML, which declare the `path` to search space and trial, also give `other information` such as tuning algorithm, max trial number and max duration arguments. ```yaml authorName: default @@ -209,7 +209,7 @@ Click the tab "Trial Duration" to see the bar graph. Below is the status of the all trials. Specifically: * Trial detail: trial's id, trial's duration, start time, end time, status, accuracy and search space file. -* If you run a pai experiment, you can also see the hdfsLogPath. +* If you run on the OpenPAI platform, you can also see the hdfsLogPath. * Kill: you can kill a job that status is running. * Support to search for a specific trial. diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 707c5ed020..af59e810a9 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -20,7 +20,7 @@ #### User Experience improvements -* A better trial logging support for NNI experiments in PAI, Kubeflow and FrameworkController mode: +* A better trial logging support for NNI experiments in OpenPAI, Kubeflow and FrameworkController mode: * An improved logging architecture to send stdout/stderr of trials to NNI manager via Http post. NNI manager will store trial's stdout/stderr messages in local log file. * Show the link for trial log file on WebUI. * Support to show final result's all key-value pairs. @@ -83,9 +83,9 @@ * Docker file update, add pytorch library * Refactor 'nnictl stop' process, send SIGTERM to nni manager process, rather than calling stop Rest API. * OpenPAI training service bug fix - * Support NNI Manager IP configuration(nniManagerIp) in PAI cluster config file, to fix the issue that user’s machine has no eth0 device + * Support NNI Manager IP configuration(nniManagerIp) in OpenPAI cluster config file, to fix the issue that user’s machine has no eth0 device * File number in codeDir is capped to 1000 now, to avoid user mistakenly fill root dir for codeDir - * Don’t print useless ‘metrics is empty’ log int PAI job’s stdout. Only print useful message once new metrics are recorded, to reduce confusion when user checks PAI trial’s output for debugging purpose + * Don’t print useless ‘metrics is empty’ log in OpenPAI job’s stdout. Only print useful message once new metrics are recorded, to reduce confusion when user checks OpenPAI trial’s output for debugging purpose * Add timestamp at the beginning of each log entry in trial keeper. ## Release 0.3.0 - 11/2/2018 @@ -146,7 +146,7 @@ ### Major Features -* Support [OpenPAI](https://github.com/Microsoft/pai) (aka pai) Training Service (See [here](./PAIMode.md) for instructions about how to submit NNI job in pai mode) +* Support [OpenPAI](https://github.com/Microsoft/pai) Training Platform (See [here](./PAIMode.md) for instructions about how to submit NNI job in pai mode) * Support training services on pai mode. NNI trials will be scheduled to run on OpenPAI cluster * NNI trial's output (including logs and model file) will be copied to OpenPAI HDFS for further debugging and checking * Support [SMAC](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) tuner (See [here](Builtin_Tuner.md) for instructions about how to use SMAC tuner) diff --git a/docs/SQuAD_evolution_examples.md b/docs/SQuAD_evolution_examples.md index 9d3cf72213..c428f6969f 100644 --- a/docs/SQuAD_evolution_examples.md +++ b/docs/SQuAD_evolution_examples.md @@ -25,7 +25,7 @@ Also we have another version which time cost is less and performance is better. Execute the following command to download needed files using the downloading script: -``` +```bash chmod +x ./download.sh ./download.sh ``` @@ -34,14 +34,14 @@ Or Download manually 1. download "dev-v1.1.json" and "train-v1.1.json" in https://rajpurkar.github.io/SQuAD-explorer/ -``` +```bash wget https://rajpurkar.github.io/SQuAD-explorer/dataset/train-v1.1.json wget https://rajpurkar.github.io/SQuAD-explorer/dataset/dev-v1.1.json ``` 2. download "glove.840B.300d.txt" in https://nlp.stanford.edu/projects/glove/ -``` +```bash wget http://nlp.stanford.edu/data/glove.840B.300d.zip unzip glove.840B.300d.zip ``` @@ -49,7 +49,7 @@ unzip glove.840B.300d.zip ### 2.2 Update configuration Modify `nni/examples/trials/ga_squad/config.yml`, here is the default configuration: -``` +```yaml authorName: default experimentName: example_ga_squad trialConcurrency: 1 @@ -75,7 +75,7 @@ In the "trial" part, if you want to use GPU to perform the architecture search, ### 2.3 submit this job -``` +```bash nnictl create --config ~/nni/examples/trials/ga_squad/config.yml ``` @@ -84,9 +84,10 @@ nnictl create --config ~/nni/examples/trials/ga_squad/config.yml Due to the memory limitation of upload, we only upload the source code and complete the data download and training on OpenPAI. This experiment requires sufficient memory that `memoryMB >= 32G`, and the training may last for several hours. ### 3.1 Update configuration + Modify `nni/examples/trials/ga_squad/config_pai.yml`, here is the default configuration: -``` +```yaml authorName: default experimentName: example_ga_squad trialConcurrency: 1 @@ -110,18 +111,18 @@ trial: gpuNum: 0 cpuNum: 1 memoryMB: 32869 - #The docker image to run nni job on pai + #The docker image to run nni job on OpenPAI image: msranni/nni:latest - #The hdfs directory to store data on pai, format 'hdfs://host:port/directory' + #The hdfs directory to store data on OpenPAI, format 'hdfs://host:port/directory' dataDir: hdfs://10.10.10.10:9000/username/nni #The hdfs directory to store output data generated by nni, format 'hdfs://host:port/directory' outputDir: hdfs://10.10.10.10:9000/username/nni paiConfig: - #The username to login pai + #The username to login OpenPAI userName: username - #The password to login pai + #The password to login OpenPAI passWord: password - #The host of restful server of pai + #The host of restful server of OpenPAI host: 10.10.10.10 ``` @@ -133,13 +134,14 @@ In the "trial" part, if you want to use GPU to perform the architecture search, ### 3.2 submit this job -``` +```bash nnictl create --config ~/nni/examples/trials/ga_squad/config_pai.yml ``` ## 4. Technical details about the trial ### 4.1 How does it works + The evolution-algorithm based architecture for question answering has two different parts just like any other examples: the trial and the tuner. ### 4.2 The trial @@ -157,7 +159,7 @@ Among those files, `trial.py` and `graph_to_tf.py` are special. `graph_to_tf.py` has a function named as `graph_to_network`, here is its skeleton code: -``` +```python def graph_to_network(input1, input2, input1_lengths, @@ -190,13 +192,13 @@ def graph_to_network(input1, As we can see, this function is actually a compiler, that converts the internal model DAG configuration (which will be introduced in the `Model configuration format` section) `graph`, to a Tensorflow computation graph. -``` +```python topology = graph.is_topology() ``` performs topological sorting on the internal graph representation, and the code inside the loop: -``` +```python for _, topo_i in enumerate(topology): ``` @@ -206,7 +208,7 @@ performs actually conversion that maps each layer to a part in Tensorflow comput The tuner is much more simple than the trial. They actually share the same `graph.py`. Besides, the tuner has a `customer_tuner.py`, the most important class in which is `CustomerTuner`: -``` +```python class CustomerTuner(Tuner): # ...... @@ -235,13 +237,13 @@ class CustomerTuner(Tuner): indiv.mutation() graph = indiv.config temp = json.loads(graph_dumps(graph)) - + # ...... ``` As we can see, the overloaded method `generate_parameters` implements a pretty naive mutation algorithm. The code lines: -``` +```python if self.population[0].result > self.population[1].result: self.population[0] = self.population[1] indiv = copy.deepcopy(self.population[0]) @@ -253,7 +255,7 @@ controls the mutation process. It will always take two random individuals in the Here is an example of the model configuration, which is passed from the tuner to the trial in the architecture search procedure. -``` +```json { "max_layer_num": 50, "layers": [ @@ -300,9 +302,9 @@ Here is an example of the model configuration, which is passed from the tuner to Every model configuration will have a "layers" section, which is a JSON list of layer definitions. The definition of each layer is also a JSON object, where: - * `type` is the type of the layer. 0, 1, 2, 3, 4 corresponds to attention, self-attention, RNN, input and output layer respectively. - * `size` is the length of the output. "x", "y" correspond to document length / question length, respectively. - * `input_size` is the number of inputs the layer has. - * `input` is the indices of layers taken as input of this layer. - * `output` is the indices of layers use this layer's output as their input. - * `is_delete` means whether the layer is still available. +* `type` is the type of the layer. 0, 1, 2, 3, 4 corresponds to attention, self-attention, RNN, input and output layer respectively. +* `size` is the length of the output. "x", "y" correspond to document length / question length, respectively. +* `input_size` is the number of inputs the layer has. +* `input` is the indices of layers taken as input of this layer. +* `output` is the indices of layers use this layer's output as their input. +* `is_delete` means whether the layer is still available. diff --git a/docs/SearchSpaceSpec.md b/docs/SearchSpaceSpec.md index d5360926e7..fbaa0b221f 100644 --- a/docs/SearchSpaceSpec.md +++ b/docs/SearchSpaceSpec.md @@ -8,7 +8,7 @@ To define a search space, users should define the name of variable, the type of * A example of search space definition as follow: -```python +```yaml { "dropout_rate":{"_type":"uniform","_value":[0.1,0.5]}, "conv_size":{"_type":"choice","_value":[2,3,5,7]}, @@ -19,59 +19,47 @@ To define a search space, users should define the name of variable, the type of ``` - -Take the first line as an example. ```dropout_rate``` is defined as a variable whose priori distribution is a uniform distribution of a range from ```0.1``` and ```0.5```. +Take the first line as an example. `dropout_rate` is defined as a variable whose priori distribution is a uniform distribution of a range from `0.1` and `0.5`. ## Types All types of sampling strategies and their parameter are listed here: * {"_type":"choice","_value":options} - * Which means the variable value is one of the options, which should be a list. The elements of options can themselves be [nested] stochastic expressions. In this case, the stochastic choices that only appear in some of the options become conditional parameters. -
    + * Which means the variable value is one of the options, which should be a list. The elements of options can themselves be [nested] stochastic expressions. In this case, the stochastic choices that only appear in some of the options become conditional parameters. * {"_type":"randint","_value":[upper]} - * Which means the variable value is a random integer in the range [0, upper). The semantics of this distribution is that there is no more correlation in the loss function between nearby integer values, as compared with more distant integer values. This is an appropriate distribution for describing random seeds for example. If the loss function is probably more correlated for nearby integer values, then you should probably use one of the "quantized" continuous distributions, such as either quniform, qloguniform, qnormal or qlognormal. Note that if you want to change lower bound, you can use `quniform` for now. -
    + * Which means the variable value is a random integer in the range [0, upper). The semantics of this distribution is that there is no more correlation in the loss function between nearby integer values, as compared with more distant integer values. This is an appropriate distribution for describing random seeds for example. If the loss function is probably more correlated for nearby integer values, then you should probably use one of the "quantized" continuous distributions, such as either quniform, qloguniform, qnormal or qlognormal. Note that if you want to change lower bound, you can use `quniform` for now. * {"_type":"uniform","_value":[low, high]} - * Which means the variable value is a value uniformly between low and high. - * When optimizing, this variable is constrained to a two-sided interval. -
    + * Which means the variable value is a value uniformly between low and high. + * When optimizing, this variable is constrained to a two-sided interval. * {"_type":"quniform","_value":[low, high, q]} - * Which means the variable value is a value like round(uniform(low, high) / q) * q - * Suitable for a discrete value with respect to which the objective is still somewhat "smooth", but which should be bounded both above and below. If you want to uniformly choose integer from a range [low, high], you can write `_value` like this: `[low, high, 1]`. -
    + * Which means the variable value is a value like round(uniform(low, high) / q) * q + * Suitable for a discrete value with respect to which the objective is still somewhat "smooth", but which should be bounded both above and below. If you want to uniformly choose integer from a range [low, high], you can write `_value` like this: `[low, high, 1]`. * {"_type":"loguniform","_value":[low, high]} - * Which means the variable value is a value drawn from a range [low, high] according to a loguniform distribution like exp(uniform(log(low), log(high))), so that the logarithm of the return value is uniformly distributed. - * When optimizing, this variable is constrained to be positive. -
    + * Which means the variable value is a value drawn from a range [low, high] according to a loguniform distribution like exp(uniform(log(low), log(high))), so that the logarithm of the return value is uniformly distributed. + * When optimizing, this variable is constrained to be positive. * {"_type":"qloguniform","_value":[low, high, q]} - * Which means the variable value is a value like round(loguniform(low, high)) / q) * q - * Suitable for a discrete variable with respect to which the objective is "smooth" and gets smoother with the size of the value, but which should be bounded both above and below. -
    + * Which means the variable value is a value like round(loguniform(low, high)) / q) * q + * Suitable for a discrete variable with respect to which the objective is "smooth" and gets smoother with the size of the value, but which should be bounded both above and below. * {"_type":"normal","_value":[label, mu, sigma]} - * Which means the variable value is a real value that's normally-distributed with mean mu and standard deviation sigma. When optimizing, this is an unconstrained variable. -
    + * Which means the variable value is a real value that's normally-distributed with mean mu and standard deviation sigma. When optimizing, this is an unconstrained variable. * {"_type":"qnormal","_value":[label, mu, sigma, q]} - * Which means the variable value is a value like round(normal(mu, sigma) / q) * q - * Suitable for a discrete variable that probably takes a value around mu, but is fundamentally unbounded. -
    + * Which means the variable value is a value like round(normal(mu, sigma) / q) * q + * Suitable for a discrete variable that probably takes a value around mu, but is fundamentally unbounded. * {"_type":"lognormal","_value":[label, mu, sigma]} - * Which means the variable value is a value drawn according to exp(normal(mu, sigma)) so that the logarithm of the return value is normally distributed. When optimizing, this variable is constrained to be positive. -
    + * Which means the variable value is a value drawn according to exp(normal(mu, sigma)) so that the logarithm of the return value is normally distributed. When optimizing, this variable is constrained to be positive. * {"_type":"qlognormal","_value":[label, mu, sigma, q]} - * Which means the variable value is a value like round(exp(normal(mu, sigma)) / q) * q - * Suitable for a discrete variable with respect to which the objective is smooth and gets smoother with the size of the variable, which is bounded from one side. -
    - + * Which means the variable value is a value like round(exp(normal(mu, sigma)) / q) * q + * Suitable for a discrete variable with respect to which the objective is smooth and gets smoother with the size of the variable, which is bounded from one side. ## Search Space Types Supported by Each Tuner @@ -87,7 +75,7 @@ All types of sampling strategies and their parameter are listed here: | Hyperband Advisor | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Metis Tuner | ✓ | ✓ | ✓ | ✓ | | | | | | | -Note that In GridSearch Tuner, for users' convenience, the definition of `quniform` and `qloguniform` change, where q here specifies the number of values that will be sampled. Details about them are listed as follows +Note that In Grid Search Tuner, for users' convenience, the definition of `quniform` and `qloguniform` change, where q here specifies the number of values that will be sampled. Details about them are listed as follows * Type 'quniform' will receive three values [low, high, q], where [low, high] specifies a range and 'q' specifies the number of values that will be sampled evenly. Note that q should be at least 2. It will be sampled in a way that the first sampled value is 'low', and each of the following values is (high-low)/q larger that the value in front of it. * Type 'qloguniform' behaves like 'quniform' except that it will first change the range to [log(low), log(high)] and sample and then change the sampled value back. diff --git a/docs/WebUI.md b/docs/WebUI.md index baf34d0a37..0f866ad0f0 100644 --- a/docs/WebUI.md +++ b/docs/WebUI.md @@ -41,7 +41,7 @@ Click the tab "Trials Detail" to see the status of the all trials. Specifically: ![](./img/webui-img/detail-local.png) -* If you run a pai or kubeflow experiment, you can also see the hdfsLog. +* If you run on OpenPAI or Kubeflow platform, you can also see the hdfsLog. ![](./img/webui-img/detail-pai.png) diff --git a/docs/gbdt_example.md b/docs/gbdt_example.md index 56c8d17a51..8a3004d74a 100644 --- a/docs/gbdt_example.md +++ b/docs/gbdt_example.md @@ -5,7 +5,6 @@ Gradient boosting decision tree has many popular implementations, such as [light NNI is a great platform for tuning hyper-parameters, you could try various builtin search algorithm in nni and run multiple trials concurrently. - ## 1. Search Space in GBDT There are many hyper-parameters in GBDT, but what kind of parameters will affect the performance or speed? Based on some practical experience, some suggestion here(Take lightgbm as example): @@ -13,7 +12,7 @@ There are many hyper-parameters in GBDT, but what kind of parameters will affect * `learning_rate`. The range of `learning rate` could be [0.001, 0.9]. * `num_leaves`. `num_leaves` is related to `max_depth`, you don't have to tune both of them. - + * `bagging_freq`. `bagging_freq` could be [1, 2, 4, 8, 10] * `num_iterations`. May larger if underfitting. @@ -22,7 +21,7 @@ There are many hyper-parameters in GBDT, but what kind of parameters will affect * `bagging_fraction`. The range of `bagging_fraction` could be [0.7, 1.0]. * `feature_fraction`. The range of `feature_fraction` could be [0.6, 1.0]. - + * `max_bin`. > * To avoid overfitting @@ -37,19 +36,19 @@ There are many hyper-parameters in GBDT, but what kind of parameters will affect * `num_leaves`. Reference link: -[lightgbm](https://lightgbm.readthedocs.io/en/latest/Parameters-Tuning.html) and -[autoxgoboost](https://github.com/ja-thomas/autoxgboost/blob/master/poster_2018.pdf) +[lightgbm](https://lightgbm.readthedocs.io/en/latest/Parameters-Tuning.html) and [autoxgoboost](https://github.com/ja-thomas/autoxgboost/blob/master/poster_2018.pdf) ## 2. Task description -Now we come back to our example "auto-gbdt" which run in lightgbm and nni. The data including [train data](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/data/regression.train) and [test data](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/data/regression.train). +Now we come back to our example "auto-gbdt" which run in lightgbm and nni. The data including [train data](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/data/regression.train) and [test data](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/data/regression.train). Given the features and label in train data, we train a GBDT regression model and use it to predict. ## 3. How to run in nni ### 3.1 Prepare your trial code + You need to prepare a basic code as following: -``` python +```python ... def get_default_parameters(): @@ -75,7 +74,7 @@ def run(lgb_train, lgb_eval, params, X_test, y_test): # predict y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration) - # eval + # eval rmse = mean_squared_error(y_test, y_pred) ** 0.5 print('The rmse of prediction is:', rmse) @@ -88,9 +87,9 @@ if __name__ == '__main__': ``` ### 3.2 Prepare your search space. -If you like to tune `num_leaves`, `learning_rate`, `bagging_fraction` and `bagging_freq`, -you could write a [search_space.json](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/search_space.json) as follow: -``` +If you like to tune `num_leaves`, `learning_rate`, `bagging_fraction` and `bagging_freq`, you could write a [search_space.json](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/search_space.json) as follow: + +```json { "num_leaves":{"_type":"choice","_value":[31, 28, 24, 20]}, "learning_rate":{"_type":"choice","_value":[0.01, 0.05, 0.1, 0.2]}, @@ -102,6 +101,7 @@ you could write a [search_space.json](https://github.com/Microsoft/nni/blob/mast More support variable type you could reference [here](https://github.com/Microsoft/nni/blob/master/docs/SearchSpaceSpec.md). ### 3.3 Add SDK of nni into your code. + ```diff +import nni ... @@ -129,7 +129,7 @@ def run(lgb_train, lgb_eval, params, X_test, y_test): # predict y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration) - # eval + # eval rmse = mean_squared_error(y_test, y_pred) ** 0.5 print('The rmse of prediction is:', rmse) + nni.report_final_result(rmse) @@ -147,6 +147,7 @@ if __name__ == '__main__': ``` ### 3.4 Write a config file and run it. + In the config file, you could set some settings including: * Experiment setting: `trialConcurrency`, `maxExecDuration`, `maxTrialNum`, `trial gpuNum`, etc. @@ -155,6 +156,7 @@ In the config file, you could set some settings including: * Algorithm setting: select `tuner` algorithm, `tuner optimize_mode`, etc. An config.yml as follow: + ```yaml authorName: default experimentName: example_auto-gbdt @@ -180,6 +182,7 @@ trial: ``` Run this experiment with command as follow: -``` + +```bash nnictl create --config ./config.yml ``` \ No newline at end of file diff --git a/docs/sklearn_examples.md b/docs/sklearn_examples.md index 6f2b68d933..ade42d0b9b 100644 --- a/docs/sklearn_examples.md +++ b/docs/sklearn_examples.md @@ -1,50 +1,61 @@ # Scikit-learn in NNI + [Scikit-learn](https://github.com/scikit-learn/scikit-learn) is a pupular meachine learning tool for data mining and data analysis. It supports many kinds of meachine learning models like LinearRegression, LogisticRegression, DecisionTree, SVM etc. How to make the use of scikit-learn more efficiency is a valuable topic. NNI supports many kinds of tuning algorithms to search the best models and/or hyper-parameters for scikit-learn, and support many kinds of environments like local machine, remote servers and cloud. - + ## 1. How to run the example + To start using NNI, you should install the nni package, and use the command line tool `nnictl` to start an experiment. For more information about installation and preparing for the environment, please [refer](QuickStart.md). After you installed NNI, you could enter the corresponding folder and start the experiment using following commands: -``` + +```bash nnictl create --config ./config.yml ``` ## 2. Description of the example - ### 2.1 classification + This example uses the dataset of digits, which is made up of 1797 8x8 images, and each image is a hand-written digit, the goal is to classify these images into 10 classes. In this example, we use SVC as the model, and choose some parameters of this model, including `"C", "keral", "degree", "gamma" and "coef0"`. For more information of these parameters, please [refer](https://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html). - ### 2.2 regression + This example uses the Boston Housing Dataset, this dataset consists of price of houses in various places in Boston and the information such as Crime (CRIM), areas of non-retail business in the town (INDUS), the age of people who own the house (AGE) etc to predict the house price of boston. In this example, we tune different kinds of regression models including `"LinearRegression", "SVR", "KNeighborsRegressor", "DecisionTreeRegressor"` and some parameters like `"svr_kernel", "knr_weights"`. You could get more details about these models from [here](https://scikit-learn.org/stable/supervised_learning.html#supervised-learning). ## 3. How to write sklearn code using nni + It is easy to use nni in your sklearn code, there are only a few steps. -* __step 1__ - Prepare a search_space.json to storage your choose spaces. + +* __step 1__ + + Prepare a search_space.json to storage your choose spaces. For example, if you want to choose different models, you may try: - ``` + + ```json { "model_name":{"_type":"choice","_value":["LinearRegression", "SVR", "KNeighborsRegressor", "DecisionTreeRegressor"]} } ``` + If you want to choose different models and parameters, you could put them together in a search_space.json file. - ``` + + ```json { "model_name":{"_type":"choice","_value":["LinearRegression", "SVR", "KNeighborsRegressor", "DecisionTreeRegressor"]}, "svr_kernel": {"_type":"choice","_value":["linear", "poly", "rbf"]}, "knr_weights": {"_type":"choice","_value":["uniform", "distance"]} } ``` + Then you could read these values as a dict from your python code, please get into the step 2. * __step 2__ At the beginning of your python code, you should `import nni` to insure the packages works normally. First, you should use `nni.get_next_parameter()` function to get your parameters given by nni. Then you could use these parameters to update your code. For example, if you define your search_space.json like following format: - ``` + + ```json { "C": {"_type":"uniform","_value":[0.1, 1]}, "keral": {"_type":"choice","_value":["linear", "rbf", "poly", "sigmoid"]}, @@ -53,8 +64,10 @@ It is easy to use nni in your sklearn code, there are only a few steps. "coef0 ": {"_type":"uniform","_value":[0.01, 0.1]} } ``` + You may get a parameter dict like this: - ``` + + ```python params = { 'C': 1.0, 'keral': 'linear', @@ -63,7 +76,8 @@ It is easy to use nni in your sklearn code, there are only a few steps. 'coef0': 0.01 } ``` + Then you could use these variables to write your scikit-learn code. * __step 3__ - After you finished your training, you could get your own score of the model, like your percision, recall or MSE etc. NNI needs your score to tuner algorithms and generate next group of parameters, please report the score back to NNI and start next trial job. + After you finished your training, you could get your own score of the model, like your percision, recall or MSE etc. NNI needs your score to tuner algorithms and generate next group of parameters, please report the score back to NNI and start next trial job. You just need to use `nni.report_final_result(score)` to communitate with NNI after you process your scikit-learn code. Or if you have multiple scores in the steps of training, you could also report them back to NNI using `nni.report_intemediate_result(score)`. Note, you may not report intemediate result of your job, but you must report back your final result. diff --git a/examples/trials/ga_squad/README.md b/examples/trials/ga_squad/README.md index b05952c4fa..2c5907e524 100644 --- a/examples/trials/ga_squad/README.md +++ b/examples/trials/ga_squad/README.md @@ -114,18 +114,18 @@ trial: gpuNum: 0 cpuNum: 1 memoryMB: 32869 - #The docker image to run NNI job on pai + #The docker image to run NNI job on OpenPAI image: msranni/nni:latest - #The hdfs directory to store data on pai, format 'hdfs://host:port/directory' + #The hdfs directory to store data on OpenPAI, format 'hdfs://host:port/directory' dataDir: hdfs://10.10.10.10:9000/username/nni #The hdfs directory to store output data generated by NNI, format 'hdfs://host:port/directory' outputDir: hdfs://10.10.10.10:9000/username/nni paiConfig: - #The username to login pai + #The username to login OpenPAI userName: username - #The password to login pai + #The password to login OpenPAI passWord: password - #The host of restful server of pai + #The host of restful server of OpenPAI host: 10.10.10.10 ``` From b38c043113ce0608bf5fa0f2d66ea9d7612e0136 Mon Sep 17 00:00:00 2001 From: QuanluZhang Date: Thu, 31 Jan 2019 17:47:52 +0800 Subject: [PATCH 16/22] release related doc/note modification (#699) release related doc/note modification for v0.5.1 --- README.md | 6 +++--- deployment/docker/README.md | 6 ++++-- docs/RELEASE.md | 14 ++++++++++++++ docs/conf.py | 2 +- src/webui/src/components/SlideBar.tsx | 2 +- 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index cb331a6527..8e7e6890b5 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ NNI (Neural Network Intelligence) is a toolkit to help users run automated machine learning (AutoML) experiments. The tool dispatches and runs trial jobs generated by tuning algorithms to search the best neural architecture and/or hyper-parameters in different environments like local machine, remote servers and cloud. -### **NNI [v0.5](https://github.com/Microsoft/nni/releases) has been released!** +### **NNI [v0.5.1](https://github.com/Microsoft/nni/releases) has been released!**

    @@ -112,7 +112,7 @@ Note: * We support Linux (Ubuntu 16.04 or higher), MacOS (10.14.1) in our current stage. * Run the following commands in an environment that has `python >= 3.5`, `git` and `wget`. ```bash - git clone -b v0.5 https://github.com/Microsoft/nni.git + git clone -b v0.5.1 https://github.com/Microsoft/nni.git cd nni source install.sh ``` @@ -124,7 +124,7 @@ For the system requirements of NNI, please refer to [Install NNI](docs/Installat The following example is an experiment built on TensorFlow. Make sure you have **TensorFlow installed** before running it. * Download the examples via clone the source code. ```bash - git clone -b v0.5 https://github.com/Microsoft/nni.git + git clone -b v0.5.1 https://github.com/Microsoft/nni.git ``` * Run the mnist example. ```bash diff --git a/deployment/docker/README.md b/deployment/docker/README.md index 491cbe5334..e8bc85e3ae 100644 --- a/deployment/docker/README.md +++ b/deployment/docker/README.md @@ -6,13 +6,13 @@ This is the Dockerfile of NNI project. It includes serveral popular deep learnin ``` CUDA 9.0, CuDNN 7.0 numpy 1.14.3,scipy 1.1.0 -TensorFlow 1.10.0 +TensorFlow-gpu 1.10.0 Keras 2.1.6 PyTorch 0.4.1 scikit-learn 0.20.0 pandas 0.23.4 lightgbm 2.2.2 -NNI v0.5 +NNI v0.5.1 ``` You can take this Dockerfile as a reference for your own customized Dockerfile. @@ -26,6 +26,8 @@ __Run the docker image__ ``` docker run -it nni/nni ``` +Note that if you want to use tensorflow, please uninstall tensorflow-gpu and install tensorflow in this docker container. Or modify `Dockerfile` to install tensorflow (without gpu) and build docker image. + * If use GPU in docker container, make sure you have installed [NVIDIA Container Runtime](https://github.com/NVIDIA/nvidia-docker), then run the following command ``` nvidia-docker run -it nni/nni diff --git a/docs/RELEASE.md b/docs/RELEASE.md index af59e810a9..8a0ab2dbea 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -1,5 +1,19 @@ # ChangeLog +## Release 0.5.1 - 1/31/2018 +### Improvements +* Making [log directory](https://github.com/Microsoft/nni/blob/v0.5.1/docs/ExperimentConfig.md) configurable +* Support [different levels of logs](https://github.com/Microsoft/nni/blob/v0.5.1/docs/ExperimentConfig.md), making it easier for debugging + +### Documentation +* Reorganized documentation & New Homepage Released: https://nni.readthedocs.io/en/latest/ + +### Bug Fixes and Other Changes +* Fix the bug of installation in python virtualenv, and refactor the installation logic +* Fix the bug of HDFS access failure on PAI mode after PAI is upgraded. +* Fix the bug that sometimes in-place flushed stdout makes experiment crash + + ## Release 0.5.0 - 01/14/2019 ### Major Features diff --git a/docs/conf.py b/docs/conf.py index 739b347379..929a7e2587 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -28,7 +28,7 @@ # The short X.Y version version = '' # The full version, including alpha/beta/rc tags -release = 'v0.5' +release = 'v0.5.1' # -- General configuration --------------------------------------------------- diff --git a/src/webui/src/components/SlideBar.tsx b/src/webui/src/components/SlideBar.tsx index 6a57bb9e24..7b758ebd27 100644 --- a/src/webui/src/components/SlideBar.tsx +++ b/src/webui/src/components/SlideBar.tsx @@ -221,7 +221,7 @@ class SlideBar extends React.Component<{}, SliderState> { Download - + NNI github issue Date: Thu, 31 Jan 2019 18:55:18 +0800 Subject: [PATCH 17/22] add Chinese translation (#661) --- README.md | 2 + docs/RELEASE.md | 4 +- zh_CN/README.Makefile.md | 82 ++ zh_CN/README.md | 220 +++++ zh_CN/deployment/docker/README.md | 48 ++ zh_CN/deployment/pypi/README.md | 42 + zh_CN/docs/.gitignore | 3 + zh_CN/docs/AdvancedNAS.md | 104 +++ zh_CN/docs/AnnotationSpec.md | 68 ++ zh_CN/docs/Builtin_Assessors.md | 72 ++ zh_CN/docs/Builtin_Tuner.md | 313 ++++++++ zh_CN/docs/CONTRIBUTING.md | 44 + zh_CN/docs/Contribution.rst | 8 + zh_CN/docs/Customize_Advisor.md | 40 + zh_CN/docs/Customize_Assessor.md | 60 ++ zh_CN/docs/Customize_Tuner.md | 112 +++ zh_CN/docs/Examples.rst | 12 + zh_CN/docs/ExperimentConfig.md | 750 ++++++++++++++++++ zh_CN/docs/FAQ.md | 42 + zh_CN/docs/FrameworkControllerMode.md | 105 +++ zh_CN/docs/HowToDebug.md | 3 + zh_CN/docs/Installation.md | 66 ++ zh_CN/docs/KubeflowMode.md | 205 +++++ zh_CN/docs/Makefile | 19 + zh_CN/docs/NNICTLDOC.md | 469 +++++++++++ zh_CN/docs/Overview.md | 59 ++ zh_CN/docs/PAIMode.md | 81 ++ zh_CN/docs/QuickStart.md | 232 ++++++ zh_CN/docs/RELEASE.md | 187 +++++ zh_CN/docs/Reference.rst | 10 + zh_CN/docs/RemoteMachineMode.md | 65 ++ zh_CN/docs/SQuAD_evolution_examples.md | 312 ++++++++ zh_CN/docs/SearchSpaceSpec.md | 93 +++ zh_CN/docs/SetupNNIDeveloperEnvironment.md | 60 ++ zh_CN/docs/Trials.md | 141 ++++ zh_CN/docs/Tutorials.rst | 12 + zh_CN/docs/WebUI.md | 53 ++ zh_CN/docs/advanced.rst | 6 + zh_CN/docs/assessors.rst | 17 + zh_CN/docs/cifar10_examples.md | 74 ++ zh_CN/docs/conf.py | 194 +++++ zh_CN/docs/gbdt_example.md | 195 +++++ zh_CN/docs/img/3_steps.jpg | Bin 0 -> 79533 bytes zh_CN/docs/img/Assessor.png | Bin 0 -> 122219 bytes zh_CN/docs/img/QuickStart1.png | Bin 0 -> 166032 bytes zh_CN/docs/img/QuickStart2.png | Bin 0 -> 69220 bytes zh_CN/docs/img/QuickStart3.png | Bin 0 -> 94429 bytes zh_CN/docs/img/QuickStart4.png | Bin 0 -> 298514 bytes zh_CN/docs/img/QuickStart5.png | Bin 0 -> 73213 bytes zh_CN/docs/img/QuickStart6.png | Bin 0 -> 121123 bytes zh_CN/docs/img/QuickStart7.png | Bin 0 -> 37560 bytes zh_CN/docs/img/accuracy.png | Bin 0 -> 29489 bytes zh_CN/docs/img/experiment_process.jpg | Bin 0 -> 941089 bytes zh_CN/docs/img/highlevelarchi.png | Bin 0 -> 33968 bytes zh_CN/docs/img/hyperPara.png | Bin 0 -> 87109 bytes zh_CN/docs/img/intermediate.png | Bin 0 -> 36797 bytes zh_CN/docs/img/kubeflow_training_design.png | Bin 0 -> 44723 bytes zh_CN/docs/img/nni_arch_overview.png | Bin 0 -> 126232 bytes zh_CN/docs/img/nni_logo.png | Bin 0 -> 23931 bytes zh_CN/docs/img/nni_logo_dark.png | Bin 0 -> 22693 bytes zh_CN/docs/img/nni_pai_joblist.jpg | Bin 0 -> 85854 bytes zh_CN/docs/img/nni_trial_hdfs_output.jpg | Bin 0 -> 74687 bytes zh_CN/docs/img/nni_webui_joblist.jpg | Bin 0 -> 133522 bytes zh_CN/docs/img/over1.png | Bin 0 -> 64843 bytes zh_CN/docs/img/over2.png | Bin 0 -> 28819 bytes zh_CN/docs/img/overview.svg | 1 + zh_CN/docs/img/table_openrow.png | Bin 0 -> 40171 bytes zh_CN/docs/img/trial_detail.png | Bin 0 -> 59843 bytes zh_CN/docs/img/trial_duration.png | Bin 0 -> 32930 bytes zh_CN/docs/img/webui-img/detail-local.png | Bin 0 -> 56321 bytes zh_CN/docs/img/webui-img/detail-pai.png | Bin 0 -> 29592 bytes zh_CN/docs/img/webui-img/over1.png | Bin 0 -> 68754 bytes zh_CN/docs/img/webui-img/over2.png | Bin 0 -> 36101 bytes zh_CN/docs/img/webui_overview_page.png | Bin 0 -> 90287 bytes zh_CN/docs/img/webui_trialdetail_page.png | Bin 0 -> 96051 bytes zh_CN/docs/img/weight_sharing.png | Bin 0 -> 71354 bytes zh_CN/docs/index.rst | 21 + zh_CN/docs/mnist_examples.md | 68 ++ zh_CN/docs/multiPhase.md | 43 + zh_CN/docs/requirements.txt | 7 + zh_CN/docs/sdk_reference.rst | 45 ++ zh_CN/docs/sklearn_examples.md | 80 ++ zh_CN/docs/training_services.rst | 9 + zh_CN/docs/tuners.rst | 16 + zh_CN/docs/tutorial_1_CR_exp_local_api.md | 166 ++++ zh_CN/examples/assessors/README.md | 61 ++ zh_CN/examples/trials/README.md | 281 +++++++ .../examples/trials/cifar10_pytorch/README.md | 3 + zh_CN/examples/trials/ga_squad/README.md | 305 +++++++ zh_CN/examples/trials/ga_squad/ga_squad.png | Bin 0 -> 30340 bytes .../examples/trials/kaggle-tgs-salt/README.md | 50 ++ .../trials/network_morphism/README.md | 108 +++ zh_CN/examples/tuners/enas_nni/README.md | 5 + .../tuners/ga_customer_tuner/README.md | 14 + .../ga_customer_tuner/README.md | 14 + zh_CN/src/sdk/pynni/README.md | 15 + .../pynni/nni/curvefitting_assessor/README.md | 78 ++ .../example_of_curve_fitting.PNG | Bin 0 -> 90033 bytes .../curvefitting_assessor/expression_xi.gif | Bin 0 -> 804 bytes .../nni/curvefitting_assessor/f_comb.gif | Bin 0 -> 1201 bytes .../curvefitting_assessor/learning_curve.PNG | Bin 0 -> 292574 bytes .../sdk/pynni/nni/hyperband_advisor/README.md | 56 ++ .../pynni/nni/networkmorphism_tuner/README.md | 199 +++++ zh_CN/src/sdk/pynni/nni/smac_tuner/README.md | 1 + zh_CN/src/webui/README.md | 32 + zh_CN/src/webui/public/icon.png | Bin 0 -> 30656 bytes zh_CN/src/webui/src/static/img/icon/1.png | Bin 0 -> 626 bytes zh_CN/src/webui/src/static/img/icon/10.png | Bin 0 -> 2634 bytes zh_CN/src/webui/src/static/img/icon/11.png | Bin 0 -> 1039 bytes zh_CN/src/webui/src/static/img/icon/2.png | Bin 0 -> 323 bytes zh_CN/src/webui/src/static/img/icon/3.png | Bin 0 -> 324 bytes zh_CN/src/webui/src/static/img/icon/4.png | Bin 0 -> 400 bytes zh_CN/src/webui/src/static/img/icon/5.png | Bin 0 -> 647 bytes zh_CN/src/webui/src/static/img/icon/6.png | Bin 0 -> 326 bytes zh_CN/src/webui/src/static/img/icon/7.png | Bin 0 -> 538 bytes zh_CN/src/webui/src/static/img/icon/8.png | Bin 0 -> 313 bytes zh_CN/src/webui/src/static/img/icon/9.png | Bin 0 -> 712 bytes .../webui/src/static/img/icon/download.png | Bin 0 -> 376 bytes zh_CN/src/webui/src/static/img/icon/issue.png | Bin 0 -> 1026 bytes zh_CN/src/webui/src/static/img/icon/max.png | Bin 0 -> 834 bytes zh_CN/src/webui/src/static/img/icon/min.png | Bin 0 -> 898 bytes zh_CN/src/webui/src/static/img/logo.png | Bin 0 -> 4102 bytes zh_CN/src/webui/src/static/img/logo2.png | Bin 0 -> 2372 bytes zh_CN/test/naive_test/README.md | 20 + zh_CN/tools/README.md | 57 ++ zh_CN/tools/nni_annotation/README.md | 55 ++ 126 files changed, 6492 insertions(+), 2 deletions(-) create mode 100644 zh_CN/README.Makefile.md create mode 100644 zh_CN/README.md create mode 100644 zh_CN/deployment/docker/README.md create mode 100644 zh_CN/deployment/pypi/README.md create mode 100644 zh_CN/docs/.gitignore create mode 100644 zh_CN/docs/AdvancedNAS.md create mode 100644 zh_CN/docs/AnnotationSpec.md create mode 100644 zh_CN/docs/Builtin_Assessors.md create mode 100644 zh_CN/docs/Builtin_Tuner.md create mode 100644 zh_CN/docs/CONTRIBUTING.md create mode 100644 zh_CN/docs/Contribution.rst create mode 100644 zh_CN/docs/Customize_Advisor.md create mode 100644 zh_CN/docs/Customize_Assessor.md create mode 100644 zh_CN/docs/Customize_Tuner.md create mode 100644 zh_CN/docs/Examples.rst create mode 100644 zh_CN/docs/ExperimentConfig.md create mode 100644 zh_CN/docs/FAQ.md create mode 100644 zh_CN/docs/FrameworkControllerMode.md create mode 100644 zh_CN/docs/HowToDebug.md create mode 100644 zh_CN/docs/Installation.md create mode 100644 zh_CN/docs/KubeflowMode.md create mode 100644 zh_CN/docs/Makefile create mode 100644 zh_CN/docs/NNICTLDOC.md create mode 100644 zh_CN/docs/Overview.md create mode 100644 zh_CN/docs/PAIMode.md create mode 100644 zh_CN/docs/QuickStart.md create mode 100644 zh_CN/docs/RELEASE.md create mode 100644 zh_CN/docs/Reference.rst create mode 100644 zh_CN/docs/RemoteMachineMode.md create mode 100644 zh_CN/docs/SQuAD_evolution_examples.md create mode 100644 zh_CN/docs/SearchSpaceSpec.md create mode 100644 zh_CN/docs/SetupNNIDeveloperEnvironment.md create mode 100644 zh_CN/docs/Trials.md create mode 100644 zh_CN/docs/Tutorials.rst create mode 100644 zh_CN/docs/WebUI.md create mode 100644 zh_CN/docs/advanced.rst create mode 100644 zh_CN/docs/assessors.rst create mode 100644 zh_CN/docs/cifar10_examples.md create mode 100644 zh_CN/docs/conf.py create mode 100644 zh_CN/docs/gbdt_example.md create mode 100644 zh_CN/docs/img/3_steps.jpg create mode 100644 zh_CN/docs/img/Assessor.png create mode 100644 zh_CN/docs/img/QuickStart1.png create mode 100644 zh_CN/docs/img/QuickStart2.png create mode 100644 zh_CN/docs/img/QuickStart3.png create mode 100644 zh_CN/docs/img/QuickStart4.png create mode 100644 zh_CN/docs/img/QuickStart5.png create mode 100644 zh_CN/docs/img/QuickStart6.png create mode 100644 zh_CN/docs/img/QuickStart7.png create mode 100644 zh_CN/docs/img/accuracy.png create mode 100644 zh_CN/docs/img/experiment_process.jpg create mode 100644 zh_CN/docs/img/highlevelarchi.png create mode 100644 zh_CN/docs/img/hyperPara.png create mode 100644 zh_CN/docs/img/intermediate.png create mode 100644 zh_CN/docs/img/kubeflow_training_design.png create mode 100644 zh_CN/docs/img/nni_arch_overview.png create mode 100644 zh_CN/docs/img/nni_logo.png create mode 100644 zh_CN/docs/img/nni_logo_dark.png create mode 100644 zh_CN/docs/img/nni_pai_joblist.jpg create mode 100644 zh_CN/docs/img/nni_trial_hdfs_output.jpg create mode 100644 zh_CN/docs/img/nni_webui_joblist.jpg create mode 100644 zh_CN/docs/img/over1.png create mode 100644 zh_CN/docs/img/over2.png create mode 100644 zh_CN/docs/img/overview.svg create mode 100644 zh_CN/docs/img/table_openrow.png create mode 100644 zh_CN/docs/img/trial_detail.png create mode 100644 zh_CN/docs/img/trial_duration.png create mode 100644 zh_CN/docs/img/webui-img/detail-local.png create mode 100644 zh_CN/docs/img/webui-img/detail-pai.png create mode 100644 zh_CN/docs/img/webui-img/over1.png create mode 100644 zh_CN/docs/img/webui-img/over2.png create mode 100644 zh_CN/docs/img/webui_overview_page.png create mode 100644 zh_CN/docs/img/webui_trialdetail_page.png create mode 100644 zh_CN/docs/img/weight_sharing.png create mode 100644 zh_CN/docs/index.rst create mode 100644 zh_CN/docs/mnist_examples.md create mode 100644 zh_CN/docs/multiPhase.md create mode 100644 zh_CN/docs/requirements.txt create mode 100644 zh_CN/docs/sdk_reference.rst create mode 100644 zh_CN/docs/sklearn_examples.md create mode 100644 zh_CN/docs/training_services.rst create mode 100644 zh_CN/docs/tuners.rst create mode 100644 zh_CN/docs/tutorial_1_CR_exp_local_api.md create mode 100644 zh_CN/examples/assessors/README.md create mode 100644 zh_CN/examples/trials/README.md create mode 100644 zh_CN/examples/trials/cifar10_pytorch/README.md create mode 100644 zh_CN/examples/trials/ga_squad/README.md create mode 100644 zh_CN/examples/trials/ga_squad/ga_squad.png create mode 100644 zh_CN/examples/trials/kaggle-tgs-salt/README.md create mode 100644 zh_CN/examples/trials/network_morphism/README.md create mode 100644 zh_CN/examples/tuners/enas_nni/README.md create mode 100644 zh_CN/examples/tuners/ga_customer_tuner/README.md create mode 100644 zh_CN/examples/tuners/weight_sharing/ga_customer_tuner/README.md create mode 100644 zh_CN/src/sdk/pynni/README.md create mode 100644 zh_CN/src/sdk/pynni/nni/curvefitting_assessor/README.md create mode 100644 zh_CN/src/sdk/pynni/nni/curvefitting_assessor/example_of_curve_fitting.PNG create mode 100644 zh_CN/src/sdk/pynni/nni/curvefitting_assessor/expression_xi.gif create mode 100644 zh_CN/src/sdk/pynni/nni/curvefitting_assessor/f_comb.gif create mode 100644 zh_CN/src/sdk/pynni/nni/curvefitting_assessor/learning_curve.PNG create mode 100644 zh_CN/src/sdk/pynni/nni/hyperband_advisor/README.md create mode 100644 zh_CN/src/sdk/pynni/nni/networkmorphism_tuner/README.md create mode 100644 zh_CN/src/sdk/pynni/nni/smac_tuner/README.md create mode 100644 zh_CN/src/webui/README.md create mode 100644 zh_CN/src/webui/public/icon.png create mode 100644 zh_CN/src/webui/src/static/img/icon/1.png create mode 100644 zh_CN/src/webui/src/static/img/icon/10.png create mode 100644 zh_CN/src/webui/src/static/img/icon/11.png create mode 100644 zh_CN/src/webui/src/static/img/icon/2.png create mode 100644 zh_CN/src/webui/src/static/img/icon/3.png create mode 100644 zh_CN/src/webui/src/static/img/icon/4.png create mode 100644 zh_CN/src/webui/src/static/img/icon/5.png create mode 100644 zh_CN/src/webui/src/static/img/icon/6.png create mode 100644 zh_CN/src/webui/src/static/img/icon/7.png create mode 100644 zh_CN/src/webui/src/static/img/icon/8.png create mode 100644 zh_CN/src/webui/src/static/img/icon/9.png create mode 100644 zh_CN/src/webui/src/static/img/icon/download.png create mode 100644 zh_CN/src/webui/src/static/img/icon/issue.png create mode 100644 zh_CN/src/webui/src/static/img/icon/max.png create mode 100644 zh_CN/src/webui/src/static/img/icon/min.png create mode 100644 zh_CN/src/webui/src/static/img/logo.png create mode 100644 zh_CN/src/webui/src/static/img/logo2.png create mode 100644 zh_CN/test/naive_test/README.md create mode 100644 zh_CN/tools/README.md create mode 100644 zh_CN/tools/nni_annotation/README.md diff --git a/README.md b/README.md index 8e7e6890b5..3b280c75dd 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ [![Pull Requests](https://img.shields.io/github/issues-pr-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/pulls?q=is%3Apr+is%3Aopen) [![Version](https://img.shields.io/github/release/Microsoft/nni.svg)](https://github.com/Microsoft/nni/releases) [![Join the chat at https://gitter.im/Microsoft/nni](https://badges.gitter.im/Microsoft/nni.svg)](https://gitter.im/Microsoft/nni?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[简体中文](zh_CN/README.md) + NNI (Neural Network Intelligence) is a toolkit to help users run automated machine learning (AutoML) experiments. The tool dispatches and runs trial jobs generated by tuning algorithms to search the best neural architecture and/or hyper-parameters in different environments like local machine, remote servers and cloud. diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 8a0ab2dbea..1ce2028351 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -79,8 +79,8 @@ * [Kubeflow Training service](./KubeflowMode.md) * Support tf-operator * [Distributed trial example](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-distributed/dist_mnist.py) on Kubeflow -* [Grid search tuner](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/README.md#Grid) -* [Hyperband tuner](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/README.md#Hyperband) +* [Grid search tuner](Builtin_Tuner.md#GridSearch) +* [Hyperband tuner](Builtin_Tuner.md#Hyperband) * Support launch NNI experiment on MAC * WebUI * UI support for hyperband tuner diff --git a/zh_CN/README.Makefile.md b/zh_CN/README.Makefile.md new file mode 100644 index 0000000000..954edcf63c --- /dev/null +++ b/zh_CN/README.Makefile.md @@ -0,0 +1,82 @@ +# Makefile 文件和安装配置 + +NNI 使用 GNU 来生成和安装。 + +`Makefile` 提供标准的目标 `生成`、`安装` 和 `卸载`, 以及不同设置的安装对象: + +* `easy-install`: 针对非专家用户,自动处理所有内容; +* `dev-easy-install`: 针对专家用户,自动处理所有内容; +* `install`: 针对 NNI 普通用户,通过复制文件来安装 NNI; +* `dev-install`: 针对 NNI 贡献者,通过创建 symlinks 而不是复制文件来安装 NNI; +* `pip-install`: 针对使用 `setup.py` 安装的情况; + +下文会有更详细的介绍。 + +## 依赖项 + +NNI 依赖于 Node.js, Yarn, 和 pip 来生成,推荐安装 TypeScript。 + +NNI 需要 Node.js 以及运行所需要的所有库。 需要的 Node.js 库 (包括 TypeScript) 可以通过 Yarn 来安装, 需要的 Python 库可以通过 setuptools 或者 PIP 来安装。 + +NNI *用户*可以用 `make install-dependencies` 来安装 Node.js 和 Yarn。 Node.js 会被安装到 NNI 的安装目录,Yarn 会被安装到 `/tmp/nni-yarn`。 安装过程需要 wget。 + +NNI *开发人员*推荐手工安装 Node.js 和 Yarn。 可浏览相应的官方文档了解安装过程。 + +## 生成 NNI + +当依赖项安装好后,运行 `make` 即可。 + +## 安装 + +### 目录层次 + +NNI 项目主要由两个 Node.js 模块 (`nni_manager`, `webui`) 以及两个 Python 包 (`nni`, `nnictl`) 所组成。 + +默认情况下,Node.js 模块可以为所有用户安装在 `/usr/share/nni` 目录下,也可为只安装在当前用户的 `~/.local/nni` 目录下。 + +Python 包使用 setuptools 安装,所以安装路径依赖于 Python 配置。 如果为没有权限的用户安装,并且没有虚拟环境的时候,要加上 `--user` 参数。 + +此外,`nnictl` 是一个 bash 脚本,会被安装在 `/usr/share/bash-completion/completions` 或 `~/.bash_completion.d` 目录下。 + +在某些配置情况下,NNI 也会将 Node.js 安装到 `/usr/share/nni` 目录下。 + +以上所有目录都可以配置。 可参考下一章节。 + +### 配置 + +`Makefile` 中可以用环境变量来替换默认设置。 + +支持的变量如下: + +| 名称 | 说明 | 普通用户下的默认值 | root 下的默认值 | +| ------------------ | ------------------------------ | ---------------------------------- | ----------------------------------------------- | +| `BIN_PATH` | 执行文件路径 | `~/.local/bin` | `/usr/bin` | +| `INSTALL_PREFIX` | Node.js 模块的路径 (最后会加上 `nni`) | `~/.local` | `/usr/share` | +| `BASH_COMP_SCRIPT` | Bash 自动完成脚本的路径 | `~/.bash_completion.d/nnictl` | `/usr/share/bash-completion/completions/nnictl` | +| `PIP_MODE` | `python3 setup.py install` 的参数 | 如果 `VIRTUAL_ENV` 没有设置,会加上 `--user` | (无) | +| `NODE_PATH` | Node.js 运行时的路径 | `$INSTALL_PREFIX/nni/node` | `$INSTALL_PREFIX/nni/node` | +| `YARN_PATH` | Yarn 的安装路径 | `/tmp/nni-yarn` | `/tmp/nni-yarn` | +| `NODE` | Node.js 命令 | 参考源代码 | 参考源代码 | +| `YARN` | Yarn 命令 | 参考源代码 | 参考源代码 | + +注意,这些变量不仅会影响安装路径,也会影响申城的 `nnictl` 和 `nnimanager` 脚本。 如果复制文件的路径和运行时的不一样(例如,创建发行版本包时),需要手工编辑 `nnictl` 和 `nnimanager`。 + +### 目标 + +安装目标的流程如下: + +| 目标 | 流程 | +| ------------------ | ------------------------------------------------ | +| `easy-install` | 安装依赖项,生成,安装 NNI,并编辑 `~/.bashrc` | +| `dev-easy-install` | 安装依赖项,生成,将 NNI 作为 symlinks 来安装,并编辑 `~/.bashrc` | +| `install` | 安装 Python 包,Node.js 模块,NNI 脚本和样例 | +| `dev-install` | 将 Python 和 Node.js 模块作为 symlinks 安装,然后安装 scripts | +| `pip-install` | 安装依赖项,生成,安装 NNI,但不安装 Python 包 | + +## TODO + +* `clean` 目标 +* `test` 目标 +* `lint` 目标 +* 每个目标的测试用例 +* 评审变量 \ No newline at end of file diff --git a/zh_CN/README.md b/zh_CN/README.md new file mode 100644 index 0000000000..1837c5eb22 --- /dev/null +++ b/zh_CN/README.md @@ -0,0 +1,220 @@ +

    + +

    + +* * * + +[![MIT 许可证](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/Microsoft/nni/blob/master/LICENSE) [![生成状态](https://msrasrg.visualstudio.com/NNIOpenSource/_apis/build/status/Microsoft.nni)](https://msrasrg.visualstudio.com/NNIOpenSource/_build/latest?definitionId=6) [![问题](https://img.shields.io/github/issues-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen) [![Bug](https://img.shields.io/github/issues/Microsoft/nni/bug.svg)](https://github.com/Microsoft/nni/issues?q=is%3Aissue+is%3Aopen+label%3Abug) [![拉取请求](https://img.shields.io/github/issues-pr-raw/Microsoft/nni.svg)](https://github.com/Microsoft/nni/pulls?q=is%3Apr+is%3Aopen) [![版本](https://img.shields.io/github/release/Microsoft/nni.svg)](https://github.com/Microsoft/nni/releases) [![进入 https://gitter.im/Microsoft/nni 聊天室提问](https://badges.gitter.im/Microsoft/nni.svg)](https://gitter.im/Microsoft/nni?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +[English](../README.md) + +NNI (Neural Network Intelligence) 是自动机器学习(AutoML)的工具包。 它通过多种调优的算法来搜索最好的神经网络结构和(或)超参,并支持单机、本地多机、云等不同的运行环境。 + +### **NNI [v0.5](https://github.com/Microsoft/nni/releases) 已发布!** + +

    + +

    + + + + + + + + + + + + + + + +
    + 支持的框架 + + + 调优算法 + + + 训练服务 + +
    +
      +
    • PyTorch
    • +
    • TensorFlow
    • +
    • Keras
    • +
    • MXNet
    • +
    • Caffe2
    • +
    • CNTK (Python 语言)
    • +
    • Chainer
    • +
    • Theano
    • +
    +
    + Tuner(调参器) + + Assessor(评估器) + + + +
    + +## **使用场景** + +* 在本地 Trial 不同的自动机器学习算法来训练模型。 +* 在分布式环境中加速自动机器学习(如:远程 GPU 工作站和云服务器)。 +* 定制自动机器学习算法,或比较不同的自动机器学习算法。 +* 在自己的机器学习平台中支持自动机器学习。 + +## 相关项目 + +以开发和先进技术为目标,[Microsoft Research (MSR)](https://www.microsoft.com/en-us/research/group/systems-research-group-asia/) 发布了一些开源项目。 + +* [OpenPAI](https://github.com/Microsoft/pai):作为开源平台,提供了完整的 AI 模型训练和资源管理能力,能轻松扩展,并支持各种规模的私有部署、云和混合环境。 +* [FrameworkController](https://github.com/Microsoft/frameworkcontroller):开源的通用 Kubernetes Pod 控制器,通过单个控制器来编排 Kubernetes 上所有类型的应用。 +* [MMdnn](https://github.com/Microsoft/MMdnn):一个完成、跨框架的解决方案,能够转换、可视化、诊断深度神经网络模型。 MMdnn 中的 "MM" 表示model management(模型管理),而 "dnn" 是 deep neural network(深度神经网络)的缩写。 我们鼓励研究人员和学生利用这些项目来加速 AI 开发和研究。 + +## **安装和验证** + +**通过 pip 命令安装** + +* 当前支持 Linux 和 MacOS。测试并支持的版本包括:Ubuntu 16.04 及更高版本,MacOS 10.14.1。 在 `python >= 3.5` 的环境中,只需要运行 `pip install` 即可完成安装。 + +```bash + python3 -m pip install --upgrade nni +``` + +注意: + +* 如果需要将 NNI 安装到自己的 home 目录中,可使用 `--user`,这样也不需要任何特殊权限。 +* 如果遇到如`Segmentation fault` 这样的任何错误请参考[常见问题](docs/FAQ.md)。 + +**通过源代码安装** + +* 当前支持 Linux(Ubuntu 16.04 及更高版本) 和 MacOS(10.14.1)。 +* 在 `python >= 3.5` 的环境中运行命令: `git` 和 `wget`,确保安装了这两个组件。 + +```bash + git clone -b v0.5 https://github.com/Microsoft/nni.git + cd nni + source install.sh +``` + +参考[安装 NNI](docs/Installation.md) 了解系统需求。 + +**验证安装** + +以下示例 Experiment 依赖于 TensorFlow 。 在运行前确保安装了 **TensorFlow**。 + +* 通过克隆源代码下载示例。 + +```bash + git clone -b v0.5 https://github.com/Microsoft/nni.git +``` + +* 运行 mnist 示例。 + +```bash + nnictl create --config nni/examples/trials/mnist/config.yml +``` + +* 在命令行中等待输出 `INFO: Successfully started experiment!`。 此消息表明 Experiment 已成功启动。 通过命令行输出的 `Web UI url` 来访问 Experiment 的界面。 + + ``` + INFO: Starting restful server... + INFO: Successfully started Restful server! + INFO: Setting local config... + INFO: Successfully set local config! + INFO: Starting experiment... + INFO: Successfully started experiment! + ----------------------------------------------------------------------- + The experiment id is egchD4qy + The Web UI urls are: http://223.255.255.1:8080 http://127.0.0.1:8080 + ----------------------------------------------------------------------- + + You can use these commands to get more information about the experiment + ----------------------------------------------------------------------- + commands description + + 1. nnictl experiment show show the information of experiments + 2. nnictl trial ls list all of trial jobs + 3. nnictl top monitor the status of running experiments + 4. nnictl log stderr show stderr log content + 5. nnictl log stdout show stdout log content + 6. nnictl stop stop an experiment + 7. nnictl trial kill kill a trial job by id + 8. nnictl --help get help information about nnictl + ----------------------------------------------------------------------- + + +* 在浏览器中打开 `Web UI url`,可看到下图的 Experiment 详细信息,以及所有的 Trial 任务。 查看[这里的](docs/WebUI.md)更多页面示例。 + + + + +
    drawingdrawing
    + +## **文档** + +* [NNI 概述](docs/Overview.md) +* [快速入门](docs/QuickStart.md) + +## **入门** + +* [安装 NNI](docs/Installation.md) +* [使用命令行工具 nnictl](docs/NNICTLDOC.md) +* [使用 NNIBoard](docs/WebUI.md) +* [如何定义搜索空间](docs/SearchSpaceSpec.md) +* [如何定义一次 Trial](docs/Trials.md) +* [如何选择 Tuner、搜索算法](docs/Builtin_Tuner.md) +* [配置 Experiment](docs/ExperimentConfig.md) +* [如何使用 Annotation](docs/Trials.md#nni-python-annotation) + +## **教程** + +* [在本机运行 Experiment (支持多 GPU 卡)](docs/tutorial_1_CR_exp_local_api.md) +* [在多机上运行 Experiment](docs/RemoteMachineMode.md) +* [在 OpenPAI 上运行 Experiment](docs/PAIMode.md) +* [在 Kubeflow 上运行 Experiment。](docs/KubeflowMode.md) +* [尝试不同的 Tuner](docs/tuners.rst) +* [尝试不同的 Assessor](docs/assessors.rst) +* [实现自定义 Tuner](docs/Customize_Tuner.md) +* [实现自定义 Assessor](examples/assessors/README.md) +* [使用进化算法为阅读理解任务找到好模型](examples/trials/ga_squad/README.md) + +## **贡献** + +欢迎贡献代码或提交建议,可在 [GitHub issues](https://github.com/Microsoft/nni/issues) 跟踪需求和 Bug。 + +推荐新贡献者从标有 **good first issue** 的简单需求开始。 + +如要安装 NNI 开发环境,参考: [配置 NNI 开发环境](docs/SetupNNIDeveloperEnvironment.md)。 + +在写代码之前,请查看并熟悉 NNI 代码贡献指南:[贡献](docs/CONTRIBUTING.md)。 + +我们正在编写 [如何调试](docs/HowToDebug.md) 的页面,欢迎提交建议和问题。 + +## **许可协议** + +整个代码库遵循 [MIT 许可协议](https://github.com/Microsoft/nni/blob/master/LICENSE) \ No newline at end of file diff --git a/zh_CN/deployment/docker/README.md b/zh_CN/deployment/docker/README.md new file mode 100644 index 0000000000..3aa59ebe58 --- /dev/null +++ b/zh_CN/deployment/docker/README.md @@ -0,0 +1,48 @@ +# Dockerfile + +## 1. 说明 + +这是 NNI 项目的 Dockerfile 文件。 其中包含了 NNI 以及多个流行的深度学习框架。 在 `Ubuntu 16.04 LTS` 上进行过测试: + + CUDA 9.0, CuDNN 7.0 + numpy 1.14.3,scipy 1.1.0 + TensorFlow 1.10.0 + Keras 2.1.6 + PyTorch 0.4.1 + scikit-learn 0.20.0 + pandas 0.23.4 + lightgbm 2.2.2 + NNI v0.5 + + +此 Dockerfile 可作为定制的参考。 + +## 2.如何生成和运行 + +**使用 `nni/deployment/docker` 的下列命令来生成 docker 映像。** + + docker build -t nni/nni . + + +**运行 docker 映像** + +* 如果 docker 容器中没有 GPU,运行下面的命令 + + docker run -it nni/nni + + +* 如果 docker 容器中有 GPU,确保安装了 [NVIDIA 容器运行包](https://github.com/NVIDIA/nvidia-docker),然后运行下面的命令 + + nvidia-docker run -it nni/nni + + +或者 + + docker run --runtime=nvidia -it nni/nni + + +## 3.拉取 docker 映像 + +使用下列命令从 docker Hub 中拉取 NNI docker 映像。 + + docker pull msranni/nni:latest \ No newline at end of file diff --git a/zh_CN/deployment/pypi/README.md b/zh_CN/deployment/pypi/README.md new file mode 100644 index 0000000000..cd336a867d --- /dev/null +++ b/zh_CN/deployment/pypi/README.md @@ -0,0 +1,42 @@ +# 用于 NNI 的 python 包索引 (pypi) + +## 1. 说明 + +这是用于 NNI 项目的 PyPI 生成和上传的工具。 + +## 2.准备环境 + +在生成和上传 NNI 包之前,确保使用了下列环境。 + + Ubuntu 16.04 LTS + make + wget + Python >= 3.5 + Pip + Node.js + Yarn + + +## 2.如何生成 + +```bash +make +``` + +## 3.如何上传 + +### 上传测试包 + +```bash +TWINE_REPOSITORY_URL=https://test.pypi.org/legacy/ make upload +``` + +上传过程中,可能需要输入 https://test.pypi.org 的用户和密码。 + +### 上传发布包 + +```bash +make upload +``` + +上传过程中,可能需要输入 https://pypi.org 的用户和密码。 \ No newline at end of file diff --git a/zh_CN/docs/.gitignore b/zh_CN/docs/.gitignore new file mode 100644 index 0000000000..515c79da3c --- /dev/null +++ b/zh_CN/docs/.gitignore @@ -0,0 +1,3 @@ +_build +_static +_templates \ No newline at end of file diff --git a/zh_CN/docs/AdvancedNAS.md b/zh_CN/docs/AdvancedNAS.md new file mode 100644 index 0000000000..f77ef2fa1c --- /dev/null +++ b/zh_CN/docs/AdvancedNAS.md @@ -0,0 +1,104 @@ +# 高级神经网络架构搜索教程 + +目前,许多 NAS(Neural Architecture Search,神经网络架构搜索)算法都在 Trial 上使用了 **权重共享(weight sharing)** 的方法来加速训练过程。 例如,[ENAS](https://arxiv.org/abs/1802.03268) 与以前的 [NASNet](https://arxiv.org/abs/1707.07012) 算法相比,通过'*子模型间的参数共享(parameter sharing between child models)*'提高了 1000 倍的效率。 而例如 [DARTS](https://arxiv.org/abs/1806.09055), [Network Morphism](https://arxiv.org/abs/1806.10282), 和 [Evolution](https://arxiv.org/abs/1703.01041) 等算法也利用或者隐式的利用了权重共享。 + +本教程介绍了如何使用权重共享。 + +## 权重共享 + +推荐通过 NFS (Network File System)进行权重共享,它是轻量、相对高效的多机共享文件方案。 欢迎社区来共享更多高效的技术。 + +### 通过 NFS 文件使用权重共享 + +使用 NFS 配置(见下文),Trial 代码可以通过读写文件来共享模型权重。 建议使用 Tuner 的存储路径: + +```yaml +tuner: + codeDir: path/to/customer_tuner + classFileName: customer_tuner.py + className: CustomerTuner + classArgs: + ... + save_dir_root: /nfs/storage/path/ +``` + +并让 Tuner 来决定在什么路径读写权重文件,通过 `nni.get_next_parameters()` 来获取路径: + +drawing + +例如,在 Tensorflow 中: + +```python +# 保存 models +saver = tf.train.Saver() +saver.save(sess, os.path.join(params['save_path'], 'model.ckpt')) +# 读取 models +tf.init_from_checkpoint(params['restore_path']) +``` + +超参中的 `'save_path'` 和 `'restore_path'` 可以通过 Tuner 来管理。 + +### NFS 配置 + +NFS 使用了客户端/服务器架构。通过一个 NFS 服务器来提供物理存储,远程计算机上的 Trial 使用 NFS 客户端来读写文件,操作上和本地文件相同。 + +#### NFS 服务器 + +如果有足够的存储空间,并能够让 NNI 的 Trial 通过**远程机器**来连接,NFS 服务可以安装在任何计算机上。 通常,可以选择一台远程服务器作为 NFS 服务。 + +在 Ubuntu 上,可通过 `apt-get` 安装 NFS 服务: + +```bash +sudo apt-get install nfs-kernel-server +``` + +假设 `/tmp/nni/shared` 是物理存储位置,然后运行: + +```bash +mkdir -p /tmp/nni/shared +sudo echo "/tmp/nni/shared *(rw,sync,no_subtree_check,no_root_squash)" >> /etc/exports +sudo service nfs-kernel-server restart +``` + +可以通过命令 `sudo showmount -e localhost` 来检查上述目录是否通过 NFS 成功导出了 + +#### NFS 客户端 + +为了通过 NFS 访问远程共享文件,需要安装 NFS 客户端。 例如,在 Ubuntu 上运行: + +```bash +sudo apt-get install nfs-common +``` + +然后创建并装载上共享目录: + +```bash +mkdir -p /mnt/nfs/nni/ +sudo mount -t nfs 10.10.10.10:/tmp/nni/shared /mnt/nfs/nni +``` + +实际使用时,IP `10.10.10.10` 需要替换为 NFS 服务器的真实地址。 + +## Trial 依赖控制的异步调度模式 + +多机间启用权重的 Trial,一般是通过**先写后读**的方式来保持一致性。 子节点在父节点的 Trial 完成训练前,不应该读取父节点模型。 要解决这个问题,要通过 `multiThread: true` 来启用**异步调度模式**。在 `config.yml` 中,每次收到 `NEW_TRIAL` 请求,分派一个新的 Trial 时,Tuner 线程可以决定是否阻塞当前线程。 例如: + +```python + def generate_parameters(self, parameter_id): + self.thread_lock.acquire() + indiv = # 新 Trial 的配置 + self.events[parameter_id] = threading.Event() + self.thread_lock.release() + if indiv.parent_id is not None: + self.events[indiv.parent_id].wait() + + def receive_trial_result(self, parameter_id, parameters, reward): + self.thread_lock.acquire() + # 处理 Trial 结果的配置 + self.thread_lock.release() + self.events[parameter_id].set() +``` + +## 样例 + +详细内容参考:[简单的参数共享样例](https://github.com/Microsoft/nni/tree/master/test/async_sharing_test)。 基于上一个 [ga_squad](https://github.com/Microsoft/nni/tree/master/examples/trials/ga_squad) 样例,还提供了新的 [样例](https://github.com/Microsoft/nni/tree/master/examples/trials/weight_sharing/ga_squad)。 \ No newline at end of file diff --git a/zh_CN/docs/AnnotationSpec.md b/zh_CN/docs/AnnotationSpec.md new file mode 100644 index 0000000000..968f7f4490 --- /dev/null +++ b/zh_CN/docs/AnnotationSpec.md @@ -0,0 +1,68 @@ +# NNI Annotation + +## 概述 + +为了获得良好的用户体验并减少对以后代码的影响,NNI 设计了通过 Annotation(标记)来使用的语法。 通过 Annotation,只需要在代码中加入一些注释字符串,就能启用 NNI,完全不影响代码原先的执行逻辑。 + +样例如下: + +```python +'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)''' +learning_rate = 0.1 +``` + +此样例中,NNI 会从 (0.1, 0.01, 0.001) 中选择一个值赋给 learning_rate 变量。 第一行就是 NNI 的 Annotation,是 Python 中的一个字符串。 接下来的一行需要是赋值语句。 NNI 会根据 Annotation 行的信息,来给这一行的变量赋上相应的值。 + +通过这种方式,不需要修改任何代码,代码既可以直接运行,又可以使用 NNI 来调参。 + +## Annotation 的类型: + +NNI 中,有 4 种类型的 Annotation; + +### 1. 变量 + +`'''@nni.variable(sampling_algo, name)'''` + +`@nni.variable` 用来标记变量。 + +**参数** + +- **sampling_algo**: 指定搜索空间的采样算法。 可将其换成 NNI 支持的其它采样函数,函数要以 `nni.` 开头。例如,`choice` 或 `uniform`,详见 [SearchSpaceSpec](SearchSpaceSpec.md)。 +- **name**: 将被赋值的变量名称。 注意,此参数应该与下面一行等号左边的值相同。 + +例如: + +```python +'''@nni.variable(nni.choice(0.1, 0.01, 0.001), name=learning_rate)''' +learning_rate = 0.1 +``` + +### 2. 函数 + +`'''@nni.function_choice(*functions, name)'''` + +`@nni.function_choice` 可以从几个函数中选择一个来执行。 + +**参数** + +- **\*functions**: 可选择的函数。 注意,必须是包括参数的完整函数调用。 例如 `max_pool(hidden_layer, pool_size)`。 +- **name**: 将被替换的函数名称。 + +例如: + +```python +"""@nni.function_choice(max_pool(hidden_layer, pool_size), avg_pool(hidden_layer, pool_size), name=max_pool)""" +h_pooling = max_pool(hidden_layer, pool_size) +``` + +### 3. 中间结果 + +`'''@nni.report_intermediate_result(metrics)'''` + +`@nni.report_intermediate_result` 用来返回中间结果,这和 中的 `nni.report_intermediate_result` 用法一样。 + +### 4. 最终结果 + +`'''@nni.report_final_result(metrics)'''` + +`@nni.report_final_result` 用来返回当前 Trial 的最终结果,这和 中的 `nni.report_final_result` 用法一样。 \ No newline at end of file diff --git a/zh_CN/docs/Builtin_Assessors.md b/zh_CN/docs/Builtin_Assessors.md new file mode 100644 index 0000000000..46ebef8e84 --- /dev/null +++ b/zh_CN/docs/Builtin_Assessors.md @@ -0,0 +1,72 @@ +# 内置 Assessor + +NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 Assessor 的介绍: + +| Assessor | 算法简介 | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **Medianstop** [(用法)](#MedianStop) | Medianstop 是一种简单的提前终止策略,可参考[论文](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46180.pdf)。 如果 Trial X 的在步骤 S 的最好目标值比所有已完成 Trial 的步骤 S 的中位数值明显要低,就会停止运行 Trial X。 | +| [Curvefitting](../src/sdk/pynni/nni/curvefitting_assessor/README.md) [(用法)](#Curvefitting) | Curve Fitting Assessor 是一个 LPA (learning, predicting, assessing,即学习、预测、评估) 的算法。 如果预测的 Trial X 在 step S 比性能最好的 Trial要差,就会提前终止它。 此算法中采用了 12 种曲线来拟合精度。 | + +## 用法 + +要使用 NNI 内置的 Assessor,需要在 `config.yml` 文件中添加 **builtinAssessorName** 和 **classArgs**。 这一节会介绍推荐的场景、参数等详细用法以及样例。 + +注意:参考样例中的格式来创建新的 `config.yml` 文件。 + + + +![](https://placehold.it/15/1589F0/000000?text=+) `Median Stop Assessor` + +> 名称:**Medianstop** + +**建议场景** + +适用于各种性能曲线,可用到各种场景中来加速优化过程。 + +**参数** + +* **optimize_mode** (*maximize 或 minimize, 可选, 默认值为 maximize*) - 如果为 'maximize', Assessor 会在结果小于期望值时**终止** Trial。 如果为 'minimize',Assessor 会在结果大于期望值时**终止** Trial。 +* **start_step** (*int, 可选, 默认值为 0*) - 只有收到 start_step 个中间结果后,才开始判断是否一个 Trial 应该被终止。 + +**使用样例:** + +```yaml +# config.yml +assessor: + builtinAssessorName: Medianstop + classArgs: + optimize_mode: maximize + start_step: 5 +``` + +
    + + + +![](https://placehold.it/15/1589F0/000000?text=+) `Curve Fitting Assessor` + +> 名称:**Curvefitting** + +**建议场景** + +适用于各种性能曲线,可用到各种场景中来加速优化过程。 更好的是,它能够处理并评估性能类似的曲线。 + +**参数** + +* **epoch_num** (*int, **必需***) - epoch 的总数。 需要此数据来决定需要预测点的总数。 +* **optimize_mode** (*maximize 或 minimize, 可选, 默认值为 maximize*) - 如果为 'maximize', Assessor 会在结果小于期望值时**终止** Trial。 如果为 'minimize',Assessor 会在结果大于期望值时**终止** Trial。 +* **start_step** (*int, 可选, 默认值为 6*) - 只有收到 start_step 个中间结果后,才开始判断是否一个 Trial 应该被终止。 +* **threshold** (*float, 可选, 默认值为 0.95*) - 用来确定提前终止较差结果的阈值。 例如,如果 threshold = 0.95, optimize_mode = maximize,最好的历史结果是 0.9,那么会在 Trial 的预测值低于 0.95 * 0.9 = 0.855 时停止。 + +**使用样例:** + +```yaml +# config.yml +assessor: + builtinAssessorName: Curvefitting + classArgs: + epoch_num: 20 + optimize_mode: maximize + start_step: 6 + threshold: 0.95 +``` \ No newline at end of file diff --git a/zh_CN/docs/Builtin_Tuner.md b/zh_CN/docs/Builtin_Tuner.md new file mode 100644 index 0000000000..b0d205cabb --- /dev/null +++ b/zh_CN/docs/Builtin_Tuner.md @@ -0,0 +1,313 @@ +# 内置 Tuner + +NNI 提供了先进的调优算法,使用上也很简单。 下面是内置 Tuner 的简单介绍: + +| Tuner | 算法简介 | +| ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | +| **TPE** [(用法)](#TPE) | Tree-structured Parzen Estimator (TPE) 是一种 sequential model-based optimization(SMBO,即基于序列模型优化)的方法。 SMBO 方法根据历史指标数据来按顺序构造模型,来估算超参的性能,随后基于此模型来选择新的超参。 | +| **Random Search** [(用法)](#Random) | 在超参优化时,随机搜索算法展示了其惊人的简单和效果。 建议当不清楚超参的先验分布时,采用随机搜索作为基准。 | +| **Anneal** [(用法)](#Anneal) | 这种简单的退火算法从先前的采样开始,会越来越靠近发现的最佳点取样。 此算法是随机搜索的简单变体,利用了反应曲面的平滑性。 退火率不是自适应的。 | +| **Naive Evolution** [(用法)](#Evolution) | 朴素进化算法来自于大规模图像分类进化。 它会基于搜索空间随机生成一个种群。 在每一代中,会选择较好的结果,并对其下一代进行一些变异(例如,改动一个超参,增加或减少一层)。 进化算法需要很多次 Trial 才能有效,但它也非常简单,也很容易扩展新功能。 | +| **SMAC** [(用法)](#SMAC) | SMAC 基于 Sequential Model-Based Optimization (SMBO,即序列的基于模型优化方法)。 它会利用使用过的结果好的模型(高斯随机过程模型),并将随机森林引入到 SMBO 中,来处理分类参数。 SMAC 算法包装了 Github 的 SMAC3。 | +| **Batch tuner** [(用法)](#Batch) | Batch Tuner 能让用户简单的提供几组配置(如,超参选项的组合)。 当所有配置都执行完后,Experiment 即结束。 Batch Tuner 仅支持 choice 类型。 | +| **Grid Search** [(用法)](#GridSearch) | 网格搜索会穷举定义在搜索空间文件中的所有超参组合。 网格搜索可以使用的类型有 choice, quniform, qloguniform。 quniform 和 qloguniform 中的数值 q 具有特别的含义(不同于搜索空间文档中的说明)。 它表示了在最高值与最低值之间采样的值的数量。 | +| [Hyperband](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperband_advisor) [(用法)](#Hyperband) | Hyperband 试图用有限的资源来探索尽可能多的组合,并发现最好的结果。 它的基本思路是生成大量的配置,并运行少量的步骤来找到有可能好的配置,然后继续训练找到其中更好的配置。 | +| [Network Morphism](../src/sdk/pynni/nni/networkmorphism_tuner/README.md) [(用法)](#NetworkMorphism) | Network Morphism 提供了深度学习模型的自动架构搜索功能。 每个子网络都继承于父网络的知识和形态,并变换网络的不同形态,包括深度,宽度,跨层连接(skip-connection)。 然后使用历史的架构和指标,来估计子网络的值。 最后会选择最有希望的模型进行训练。 | +| **Metis Tuner** [(用法)](#MetisTuner) | 大多数调参工具仅仅预测最优配置,而 Metis 的优势在于有两个输出:(a) 最优配置的当前预测结果, 以及 (b) 下一次 Trial 的建议。 它不进行随机取样。 大多数工具假设训练集没有噪声数据,但 Metis 会知道是否需要对某个超参重新采样。 | + +
    + +## 用法 + +要使用 NNI 内置的 Tuner,需要在 `config.yml` 文件中添加 **builtinTunerName** 和 **classArgs**。 这一节会介绍推荐的场景、参数等详细用法以及样例。 + +注意:参考样例中的格式来创建新的 `config.yml` 文件。 + + + +![](https://placehold.it/15/1589F0/000000?text=+) `TPE` + +> 名称:**TPE** + +**建议场景** + +TPE 是一种黑盒优化方法,可以使用在各种场景中,通常情况下都能得到较好的结果。 特别是在计算资源有限,只能运行少量 Trial 的情况。 大量的实验表明,TPE 的性能远远优于随机搜索。 + +**参数** + +* **optimize_mode** (*maximize 或 minimize,可选,默认值为 maximize*) - 如果为 'maximize',Tuner 会给出有可能产生较大值的参数组合。 如果为 'minimize',Tuner 会给出有可能产生较小值的参数组合。 + +**使用样例:** + +```yaml +# config.yml +tuner: + builtinTunerName: TPE + classArgs: + optimize_mode: maximize +``` + +
    + + + +![](https://placehold.it/15/1589F0/000000?text=+) `Random Search` + +> 名称:**Random** + +**建议场景** + +在每个 Trial 运行时间不长(例如,能够非常快的完成,或者很快的被 Assessor 终止),并有充足计算资源的情况下。 或者需要均匀的探索搜索空间。 随机搜索可作为搜索算法的基准线。 + +**参数** + +* **optimize_mode** (*maximize 或 minimize,可选,默认值为 maximize*) - 如果为 'maximize',Tuner 会给出有可能产生较大值的参数组合。 如果为 'minimize',Tuner 会给出有可能产生较小值的参数组合。 + +**使用样例:** + +```yaml +# config.yml +tuner: + builtinTunerName: Random + classArgs: + optimize_mode: maximize +``` + +
    + + + +![](https://placehold.it/15/1589F0/000000?text=+) `Anneal` + +> 名称:**Anneal** + +**建议场景** + +当每个 Trial 的时间不长,并且有足够的计算资源时使用(与随机搜索基本相同)。 或者搜索空间的变量能从一些先验分布中采样。 + +**参数** + +* **optimize_mode** (*maximize 或 minimize,可选,默认值为 maximize*) - 如果为 'maximize',Tuner 会给出有可能产生较大值的参数组合。 如果为 'minimize',Tuner 会给出有可能产生较小值的参数组合。 + +**使用样例:** + +```yaml +# config.yml +tuner: + builtinTunerName: Anneal + classArgs: + optimize_mode: maximize +``` + +
    + + + +![](https://placehold.it/15/1589F0/000000?text=+) `Naive Evolution` + +> 名称:**Evolution** + +**建议场景** + +此算法对计算资源的需求相对较高。 需要非常大的初始种群,以免落入局部最优中。 如果 Trial 时间很短,或者利用了 Assessor,就非常适合此算法。 如果 Trial 代码支持权重迁移,即每次 Trial 会从上一轮继承已经收敛的权重,建议使用此算法。 这会大大提高训练速度。 + +**参数** + +* **optimize_mode** (*maximize 或 minimize,可选,默认值为 maximize*) - 如果为 'maximize',Tuner 会给出有可能产生较大值的参数组合。 如果为 'minimize',Tuner 会给出有可能产生较小值的参数组合。 + +**使用样例:** + +```yaml +# config.yml +tuner: + builtinTunerName: Evolution + classArgs: + optimize_mode: maximize +``` + +
    + + + +![](https://placehold.it/15/1589F0/000000?text=+) `SMAC` + +> 名称:**SMAC** + +**建议场景** + +与 TPE 类似,SMAC 也是一个可以被用在各种场景中的黑盒 Tuner。在计算资源有限时,也可以使用。 此算法为离散超参而优化,因此,如果大部分超参是离散值时,建议使用此算法。 + +**参数** + +* **optimize_mode** (*maximize 或 minimize,可选,默认值为 maximize*) - 如果为 'maximize',Tuner 会给出有可能产生较大值的参数组合。 如果为 'minimize',Tuner 会给出有可能产生较小值的参数组合。 + +**使用样例:** + +```yaml +# config.yml +tuner: + builtinTunerName: SMAC + classArgs: + optimize_mode: maximize +``` + +
    + + + +![](https://placehold.it/15/1589F0/000000?text=+) `Batch Tuner` + +> 名称:BatchTuner + +**建议场景** + +如果 Experiment 配置已确定,可通过 Batch Tuner 将它们罗列到搜索空间中运行即可。 + +**使用样例:** + +```yaml +# config.yml +tuner: + builtinTunerName: BatchTuner +``` + +
    + +注意 Batch Tuner 支持的搜索空间文件如下例: + +```json +{ + "combine_params": + { + "_type" : "choice", + "_value" : [{"optimizer": "Adam", "learning_rate": 0.00001}, + {"optimizer": "Adam", "learning_rate": 0.0001}, + {"optimizer": "Adam", "learning_rate": 0.001}, + {"optimizer": "SGD", "learning_rate": 0.01}, + {"optimizer": "SGD", "learning_rate": 0.005}, + {"optimizer": "SGD", "learning_rate": 0.0002}] + } +} +``` + +搜索空间文件使用了键 `combine_params`。 参数类型必须是 `choice` ,并且 `values` 要包含所有需要 Experiment 的参数组合。 + + + +![](https://placehold.it/15/1589F0/000000?text=+) `Grid Search` + +> 名称:**Grid Search** + +**建议场景** + +注意,搜索空间仅支持 `choice`, `quniform`, `qloguniform`。 `quniform` 和 `qloguniform` 中的 **数字 `q` 有不同的含义(与[搜索空间](./SearchSpaceSpec.md)说明不同)。 在这里意味着会在 `low` 和 `high` 之间均匀取值的数量。

    + +当搜索空间比较小,能够遍历整个搜索空间。 + +**使用样例:** + +```yaml +# config.yml +tuner: + builtinTunerName: GridSearch +``` + +
    + + + +![](https://placehold.it/15/1589F0/000000?text=+) `Hyperband` + +> 名称:**Hyperband** + +**建议场景** + +当搜索空间很大,但计算资源有限时建议使用。 中间结果能够很好的反映最终结果的情况下,此算法会非常有效。 + +**参数** + +* **optimize_mode** (*maximize 或 minimize,可选,默认值为 maximize*) - 如果为 'maximize',Tuner 会给出有可能产生较大值的参数组合。 如果为 'minimize',Tuner 会给出有可能产生较小值的参数组合。 +* **R** (*int, 可选, 默认为 60*) - 能分配给 Trial 的最大 STEPS (可以是 mini-batches 或 epochs 的数值)。 Trial 需要用 STEPS 来控制运行时间。 +* **eta** (*int, 可选, 默认为 3*) - `(eta-1)/eta` 是丢弃 Trial 的比例。 + +**使用样例:** + +```yaml +# config.yml +advisor: + builtinAdvisorName: Hyperband + classArgs: + optimize_mode: maximize + R: 60 + eta: 3 +``` + +
    + + + +![](https://placehold.it/15/1589F0/000000?text=+) `Network Morphism` + +> 名称:**NetworkMorphism** + +**安装** + +必须先安装 [pyTorch](https://pytorch.org/get-started/locally)。 + +**建议场景** + +需要将深度学习方法应用到自己的任务(自己的数据集)上,但不清楚该如何选择或设计网络。 可修改[样例](https://github.com/Microsoft/nni/tree/master/examples/trials/network_morphism/cifar10/cifar10_keras.py)来适配自己的数据集和数据增强方法。 也可以修改批处理大小,学习率或优化器。 它可以为不同的任务找到好的网络架构。 当前,此 Tuner 仅支持视觉领域。 + +**参数** + +* **optimize_mode** (*maximize 或 minimize,可选,默认值为 maximize*) - 如果为 'maximize',Tuner 会给出有可能产生较大值的参数组合。 如果为 'minimize',Tuner 会给出有可能产生较小值的参数组合。 +* **task** (*('cv'), 可选, 默认为 'cv'*) - 实验的领域,当前仅支持视觉(cv)。 +* **input_width** (*int, 可选, 默认为 = 32*) - 输入图像的宽度 +* **input_channel** (*int, 可选, 默认为 3*) - 输入图像的通道数 +* **n_output_node** (*int, 可选, 默认为 10*) - 输出分类的数量 + +**使用样例:** + +```yaml +# config.yml +tuner: + builtinTunerName: NetworkMorphism + classArgs: + optimize_mode: maximize + task: cv + input_width: 32 + input_channel: 3 + n_output_node: 10 +``` + +
    + + + +![](https://placehold.it/15/1589F0/000000?text=+) `Metis Tuner` + +> 名称:**MetisTuner** + +注意,搜索空间仅支持 `choice`, `quniform`, `uniform` 和 `randint`。 + +**安装** + +Metis Tuner 需要先安装 [sklearn](https://scikit-learn.org/)。 可通过 `pip3 install sklearn` 命令来安装。 + +**建议场景** + +与 TPE 和 SMAC 类似,Metis 是黑盒 Tuner。 如果系统需要很长时间才能完成一次 Trial,Metis 就比随机搜索等其它方法要更合适。 此外,Metis 还为接下来的 Trial 提供了候选。 如何使用 Metis 的[样例](https://github.com/Microsoft/nni/tree/master/examples/trials/auto-gbdt/search_space_metis.json)。 通过调用 NNI 的 SDK,用户只需要发送 `精度` 这样的最终结果给 Tuner。 + +**参数** + +* **optimize_mode** (*maximize 或 minimize,可选,默认值为 maximize*) - 如果为 'maximize',Tuner 会给出有可能产生较大值的参数组合。 如果为 'minimize',Tuner 会给出有可能产生较小值的参数组合。 + +**使用样例:** + +```yaml +# config.yml +tuner: + builtinTunerName: MetisTuner + classArgs: + optimize_mode: maximize +``` \ No newline at end of file diff --git a/zh_CN/docs/CONTRIBUTING.md b/zh_CN/docs/CONTRIBUTING.md new file mode 100644 index 0000000000..011c822271 --- /dev/null +++ b/zh_CN/docs/CONTRIBUTING.md @@ -0,0 +1,44 @@ +# 改进 Neural Network Intelligence (NNI) + +欢迎!! 我们非常欢迎贡献者,特别是代码贡献者。 + +首先,如果有什么不确定的事情,可随时提交问题或拉取请求。 不会有人因此而抱怨。:) 最有可能的是,会有礼貌的请求你修改一些内容。 我们会感激任何形式的贡献,不想用一堆规则来阻止这些贡献。 + +不管怎样,如果想要更有效的贡献代码,可以阅读以下内容。 本文档包括了所有在贡献中需要注意的要点,会加快合并代码、解决问题的速度。 + +查看[快速入门](./QuickStart.md)来初步了解。 + +下面是一些简单的贡献指南。 + +## 提交问题 + +在提出问题时,请说明以下事项: + +- 按照问题模板的内容来填写安装的细节,以便评审者检查。 +- 出现问题的场景 (尽量详细,以便重现问题)。 +- 错误和日志消息。 +- 其它可能有用的细节信息。 + +## 提交新功能建议 + +- 在适配使用场景时,总会需要一些新的功能。 可以加入新功能的讨论,也可以直接提交新功能的拉取请求。 + +- 在自己的 github 账户下 fork 存储库。 在 fork 后, 对于 add, commit, push, 或 squash (如需要) 等改动都需要详细的提交消息。 然后就可以提交拉取请求了。 + +## 参与源代码和 Bug 修复 + +拉取请求需要选好正确的标签,表明是 Bug 修复还是功能改进。 所有代码都需要遵循正确的命名约定和代码风格。 + +参考[如何配置 NNI 的开发环境](./SetupNNIDeveloperEnvironment.md),来安装开发环境。 + +与[快速入门](QuickStart.md)类似。 其它内容,参考[NNI 文档](http://nni.readthedocs.io)。 + +## 处理现有问题 + +查看[问题列表](https://github.com/Microsoft/nni/issues),找到需要贡献的问题。 可以找找有 'good-first-issue' 或 'help-wanted' 标签的来开始贡献。 + +修改问题的注释和指派人来表明此问题已经开始跟进。 如果上述问题在一周内没有拉取请求或更新状态,这个问题会重新开放给所有人。 高优先级的 Bug 和回归问题需在一天内响应。 + +## 代码风格和命名约定 + +NNI 遵循 [PEP8](https://www.python.org/dev/peps/pep-0008/) 的 Python 代码命名约定。在提交拉取请求时,请尽量遵循此规范。 可通过`flake8`或`pylint`的提示工具来帮助遵循规范。 \ No newline at end of file diff --git a/zh_CN/docs/Contribution.rst b/zh_CN/docs/Contribution.rst new file mode 100644 index 0000000000..9c236f8634 --- /dev/null +++ b/zh_CN/docs/Contribution.rst @@ -0,0 +1,8 @@ +############################### +为 NNI 做贡献 +############################### + +.. toctree:: + 设置开发环境 + 贡献指南 + 如何调试 \ No newline at end of file diff --git a/zh_CN/docs/Customize_Advisor.md b/zh_CN/docs/Customize_Advisor.md new file mode 100644 index 0000000000..be77598203 --- /dev/null +++ b/zh_CN/docs/Customize_Advisor.md @@ -0,0 +1,40 @@ +# **指南** - 自定义 advisor + +*Advisor 用于同时需要 Tuner 和 Assessor 方法的自动机器学习算法。 Advisor 与 Tuner 类似,它接收 Trial 的参数请求、最终结果,并生成 Trial 的参数。 另外,它也能像 Assessor 一样接收中间结果、Trial 的最终状态,并可以发送终止 Trial 的命令。 注意,在使用 Advisor 时,不能同时使用 Tuner 和 Assessor。* + +如果要自定义 Advisor,需要: + +1. 从 MsgDispatcherBase 类继承并创建新的 Advisor 类 +2. 实现所有除了 `handle_request` 外的,以 `handle_` 前缀开始的方法 +3. 在 Experiment 的 YAML 文件中配置好自定义的 Advisor + +样例如下: + +**1) 从 MsgDispatcherBase 类继承并创建新的 Advisor 类** + +```python +from nni.msg_dispatcher_base import MsgDispatcherBase + +class CustomizedAdvisor(MsgDispatcherBase): + def __init__(self, ...): + ... +``` + +**2) 实现所有除了 `handle_request` 外的,以 `handle_` 前缀开始的方法** + +参考 Hyperband 的实现 ([src/sdk/pynni/nni/hyperband_advisor/hyperband_advisor.py](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperband_advisor/hyperband_advisor.py)) 来学习如何实现这些方法。 + +**3) 在 Experiment 的 YAML 文件中配置好自定义的 Advisor** + +与 Tuner 和 Assessor 类似。 NNI 需要定位到自定义的 Advisor 类,并实例化它,因此需要指定自定义 Advisor 类的文件位置,并将参数值传给 \_\_init__ 构造函数。 + +```yaml +advisor: + codeDir: /home/abc/myadvisor + classFileName: my_customized_advisor.py + className: CustomizedAdvisor + # 任何传入 __init__ 构造函数的参数 + # 都需要声明在 classArgs 字段中,如: + classArgs: + arg1: value1 +``` \ No newline at end of file diff --git a/zh_CN/docs/Customize_Assessor.md b/zh_CN/docs/Customize_Assessor.md new file mode 100644 index 0000000000..d163b92efd --- /dev/null +++ b/zh_CN/docs/Customize_Assessor.md @@ -0,0 +1,60 @@ +# 自定义 Assessor + +NNI 支持自定义 Assessor。 + +实现自定义的 Assessor,需要如下几步: + +1. 继承 Assessor 基类 +2. 实现 assess_trial 函数 +3. 在 Experiment 的 YAML 文件中配置好自定义的 Assessor + +**1. 继承 Assessor 基类** + +```python +from nni.assessor import Assessor + +class CustomizedAssessor(Assessor): + def __init__(self, ...): + ... +``` + +**2. 实现 assess_trial 函数** + +```python +from nni.assessor import Assessor, AssessResult + +class CustomizedAssessor(Assessor): + def __init__(self, ...): + ... + + def assess_trial(self, trial_history): + """ + 确定是否要停止该 Trial。 必须重载。 + trial_history: 中间结果列表对象。 + 返回 AssessResult.Good 或 AssessResult.Bad。 + """ + # 代码实现于此处。 + ... +``` + +**3. 在 Experiment 的 YAML 文件中配置好自定义的 Assessor** + +NNI 需要定位到自定义的 Assessor 类,并实例化它,因此需要指定自定义 Assessor 类的文件位置,并将参数值传给 \_\_init__ 构造函数。 + +```yaml +assessor: + codeDir: /home/abc/myassessor + classFileName: my_customized_assessor.py + className: CustomizedAssessor + # 任何传入 __init__ 构造函数的参数, + # 都需要在 classArgs 字段中指定,如 + classArgs: + arg1: value1 +``` + +注意在 **2** 中, `trial_history` 对象与 Trial 通过 `report_intermediate_result` 函数返回给 Assessor 的对象完全一致。 + +更多样例,可参考: + +> - [medianstop-assessor](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/medianstop_assessor) +> - [curvefitting-assessor](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/curvefitting_assessor) \ No newline at end of file diff --git a/zh_CN/docs/Customize_Tuner.md b/zh_CN/docs/Customize_Tuner.md new file mode 100644 index 0000000000..ee08b99a28 --- /dev/null +++ b/zh_CN/docs/Customize_Tuner.md @@ -0,0 +1,112 @@ +# 自定义 Tuner + +## 自定义 Tuner + +NNI 在内置的 Tuner 中提供了最新的调优算法。 NNI 同时也支持自定义 Tuner。 + +通过自定义 Tuner,可实现自己的调优算法。主要有三步: + +1. 继承 Tuner 基类 +2. 实现 receive_trial_result 和 generate_parameter 函数 +3. 在 Experiment 的 YAML 文件中配置好自定义的 Tuner + +样例如下: + +**1. 继承 Tuner 基类** + +```python +from nni.tuner import Tuner + +class CustomizedTuner(Tuner): + def __init__(self, ...): + ... +``` + +**2. 实现 receive_trial_result 和 generate_parameter 函数** + +```python +from nni.tuner import Tuner + +class CustomizedTuner(Tuner): + def __init__(self, ...): + ... + + def receive_trial_result(self, parameter_id, parameters, value): + ''' + 接收 Trial 的最终结果。 + parameter_id: int + parameters: 'generate_parameters()' 所创建的对象 + value: Trial 的最终指标结果 + ''' + # 实现代码 + ... + + def generate_parameters(self, parameter_id): + ''' + 返回 Trial 的超参组合的序列化对象 + parameter_id: int + ''' + # 代码实现位置 + return your_parameters + ... +``` + +`receive_trial_result` 从输入中会接收 `parameter_id, parameters, value` 参数。 Tuner 会收到 Trial 进程发送的完全一样的 `value` 值。 + +`generate_parameters` 函数返回的 `your_parameters`,会被 NNI SDK 打包为 json。 然后 SDK 会将 json 对象解包给 Trial 进程。因此,Trial 进程会收到来自 Tuner 的完全相同的 `your_parameters`。 + +例如: 如下实现了 `generate_parameters`: + +```python +def generate_parameters(self, parameter_id): + ''' + 返回 Trial 的超参组合的序列化对象 + parameter_id: int + ''' + # 代码实现位置 + return {"dropout": 0.3, "learning_rate": 0.4} + +``` + +这表示 Tuner 会一直生成超参组合 `{"dropout": 0.3, "learning_rate": 0.4}`。 而 Trial 进程也会在调用 API `nni.get_next_parameter()` 时得到 `{"dropout": 0.3, "learning_rate": 0.4}`。 Trial 结束后的返回值(通常是某个指标),通过调用 API `nni.report_final_result()` 返回给 Tuner。如: `nni.report_final_result(0.93)`。 而 Tuner 的 `receive_trial_result` 函数会收到如下结果: + +```python +parameter_id = 82347 +parameters = {"dropout": 0.3, "learning_rate": 0.4} +value = 0.93 +``` + +**注意** 如果需要存取自定义的 Tuner 目录里的文件 (如, `data.txt`),不能使用 `open('data.txt', 'r')`。 要使用: + +```python +_pwd = os.path.dirname(__file__) +_fd = open(os.path.join(_pwd, 'data.txt'), 'r') +``` + +这是因为自定义的 Tuner 不是在自己的目录里执行的。(即,`pwd` 返回的目录不是 Tuner 的目录)。 + +**3. 在 Experiment 的 YAML 文件中配置好自定义的 Tuner** + +NNI 需要定位到自定义的 Tuner 类,并实例化它,因此需要指定自定义 Tuner 类的文件位置,并将参数值传给 \_\_init__ 构造函数。 + +```yaml +tuner: + codeDir: /home/abc/mytuner + classFileName: my_customized_tuner.py + className: CustomizedTuner + # 任何传入 __init__ 构造函数的参数 + # 都需要声明在 classArgs 字段中,如: + classArgs: + arg1: value1 + +``` + +更多样例,可参考: + +> - [evolution-tuner](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/evolution_tuner) +> - [hyperopt-tuner](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/hyperopt_tuner) +> - [evolution-based-customized-tuner](https://github.com/Microsoft/nni/tree/master/examples/tuners/ga_customer_tuner) + +### 实现更高级的自动机器学习算法 + +上述内容足够写出通用的 Tuner。 但有时可能需要更多的信息,例如,中间结果, Trial 的状态等等,从而能够实现更强大的自动机器学习算法。 因此,有另一个叫做 `advisor` 的类,直接继承于 `MsgDispatcherBase`,它位于 [`src/sdk/pynni/nni/msg_dispatcher_base.py`](https://github.com/Microsoft/nni/tree/master/src/sdk/pynni/nni/msg_dispatcher_base.py)。 参考[这里](Customize_Advisor.md)来了解如何实现自定义的 advisor。 \ No newline at end of file diff --git a/zh_CN/docs/Examples.rst b/zh_CN/docs/Examples.rst new file mode 100644 index 0000000000..0e4e0bccb2 --- /dev/null +++ b/zh_CN/docs/Examples.rst @@ -0,0 +1,12 @@ +###################### +样例 +###################### + +.. toctree:: + :maxdepth: 2 + + MNIST + Cifar10 + Scikit-learn + EvolutionSQuAD + GBDT diff --git a/zh_CN/docs/ExperimentConfig.md b/zh_CN/docs/ExperimentConfig.md new file mode 100644 index 0000000000..13578280b2 --- /dev/null +++ b/zh_CN/docs/ExperimentConfig.md @@ -0,0 +1,750 @@ +# Experiment(实验)配置参考 + +创建 Experiment 时,需要给 nnictl 命令提供配置文件的路径。 配置文件是 YAML 格式,需要保证其格式正确。 本文介绍了配置文件的内容,并提供了一些示例和模板。 + +* [模板](#Template) (配置文件的模板) +* [配置说明](#Configuration) (配置文件每个项目的说明) +* [样例](#Examples) (配置文件样例) + + + +## 模板 + +* **简化版(不包含 Annotation(标记)和 Assessor)** + +```yaml +authorName: +experimentName: +trialConcurrency: +maxExecDuration: +maxTrialNum: +#可选项: local, remote, pai, kubeflow +trainingServicePlatform: +searchSpacePath: +#可选项: true, false +useAnnotation: +tuner: + #可选项: TPE, Random, Anneal, Evolution + builtinTunerName: + classArgs: + #可选项: maximize, minimize + optimize_mode: + gpuNum: +trial: + command: + codeDir: + gpuNum: +#在本地使用时,machineList 可为空 +machineList: + - ip: + port: + username: + passwd: +``` + +* **使用 Assessor** + +```yaml +authorName: +experimentName: +trialConcurrency: +maxExecDuration: +maxTrialNum: +#可选项: local, remote, pai, kubeflow +trainingServicePlatform: +searchSpacePath: +#可选项: true, false +useAnnotation: +tuner: + #可选项: TPE, Random, Anneal, Evolution + builtinTunerName: + classArgs: + #可选项: maximize, minimize + optimize_mode: + gpuNum: +assessor: + #可选项: Medianstop + builtinAssessorName: + classArgs: + #可选项: maximize, minimize + optimize_mode: + gpuNum: +trial: + command: + codeDir: + gpuNum: +#在本地使用时,machineList 可为空 +machineList: + - ip: + port: + username: + passwd: +``` + +* **使用 Annotation** + +```yaml +authorName: +experimentName: +trialConcurrency: +maxExecDuration: +maxTrialNum: +#可选项: local, remote, pai, kubeflow +trainingServicePlatform: +#可选项: true, false +useAnnotation: +tuner: + #可选项: TPE, Random, Anneal, Evolution + builtinTunerName: + classArgs: + #可选项: maximize, minimize + optimize_mode: + gpuNum: +assessor: + #可选项: Medianstop + builtinAssessorName: + classArgs: + #可选项: maximize, minimize + optimize_mode: + gpuNum: +trial: + command: + codeDir: + gpuNum: +#在本地使用时,machineList 可为空 +machineList: + - ip: + port: + username: + passwd: +``` + + + +## 说明 + +* **authorName** + + * 说明 + + **authorName** 是创建 Experiment 的作者。 待定: 增加默认值 + +* **experimentName** + + * 说明 + + **experimentName** 是 Experiment 的名称。 + 待实现:增加默认值 + +* **trialConcurrency** + + * 说明 + + **trialConcurrency** 定义了并发尝试任务的最大数量。 + + 注意:如果 trialGpuNum 大于空闲的 GPU 数量,并且并发的 Trial 任务数量还没达到 trialConcurrency,Trial 任务会被放入队列,等待分配 GPU 资源。 + +* **maxExecDuration** + + * 说明 + + **maxExecDuration** 定义 Experiment 执行的最长时间。时间单位:{**s**, **m**, **h**, **d**},分别代表:{*seconds*, *minutes*, *hours*, *days*}。 + + 注意:maxExecDuration 设置的是 Experiment 执行的时间,不是 Trial 的。 如果 Experiment 达到了设置的最大时间,Experiment 不会停止,但不会再启动新的 Trial 作业。 + +* **maxTrialNum** + + * 说明 + + **maxTrialNum** 定义了 Trial 任务的最大数量,成功和失败的都计算在内。 + +* **trainingServicePlatform** + + * 说明 + + **trainingServicePlatform** 定义运行 Experiment 的平台,包括:{**local**, **remote**, **pai**, **kubeflow**}. + + * **local** 在本机的 ubuntu 上运行 Experiment。 + + * **remote** 将任务提交到远程的 Ubuntu 上,必须用 **machineList** 来指定远程的 SSH 连接信息。 + + * **pai** 提交任务到微软开源的 [OpenPAI](https://github.com/Microsoft/pai) 上。 更多 OpenPAI 配置,参考 [pai 模式](./PAIMode.md)。 + + * **kubeflow** 提交任务至 [Kubeflow](https://www.kubeflow.org/docs/about/kubeflow/)。 NNI 支持基于 Kubeflow 的 Kubenetes,以及[Azure Kubernetes](https://azure.microsoft.com/en-us/services/kubernetes-service/)。 + +* **searchSpacePath** + + * 说明 + + **searchSpacePath** 定义搜索空间文件的路径,此文件必须在运行 nnictl 的本机。 + + 注意: 如果设置了 useAnnotation=True,searchSpacePath 字段必须被删除。 + +* **useAnnotation** + + * 说明 + + **useAnnotation** 定义使用标记来分析代码并生成搜索空间。 + + 注意: 如果设置了 useAnnotation=True,searchSpacePath 字段必须被删除。 + +* **nniManagerIp** + + * 说明 + + **nniManagerIp** 设置 NNI 管理器运行的 IP 地址。 此字段为可选项,如果没有设置,则会使用 eth0 的 IP 地址。 + + 注意: 可在 NNI 管理器机器上运行 ifconfig 来检查 eth0 是否存在。 如果不存在,推荐显式设置 nnimanagerIp。 + +* **logDir** + + * 说明 + + **logDir** 配置存储日志和数据的目录。 默认值是 `/nni/experiment` + +* **logLevel** + + * 说明 + + **logLevel** 为 Experiment 设置日志级别,支持的日志级别有:`trace, debug, info, warning, error, fatal`。 默认值是 `info`。 + +* **Tuner** + + * 说明 + + **tuner** 指定了 Experiment 的 Tuner 算法。有两种方法可设置 Tuner。 一种方法是使用 SDK 提供的 Tuner,需要设置 **builtinTunerName** 和 **classArgs**。 另一种方法,是使用用户自定义的 Tuner,需要设置 **codeDirectory**,**classFileName**,**className** 和 **classArgs**。 + + * **builtinTunerName** 和 **classArgs** + + * **builtinTunerName** + + **builtinTunerName** 指定了系统 Tuner 的名字,NNI SDK 提供了多种 Tuner,如:{**TPE**, **Random**, **Anneal**, **Evolution**, **BatchTuner**, **GridSearch**}。 + + * **classArgs** + + **classArgs** 指定了 Tuner 算法的参数。 如果 **builtinTunerName** 是{**TPE**, **Random**, **Anneal**, **Evolution**},用户需要设置 **optimize_mode**。 + + * **codeDir**, **classFileName**, **className** 和 **classArgs** + + * **codeDir** + + **codeDir** 指定 Tuner 代码的目录。 + + * **classFileName** + + **classFileName** 指定 Tuner 文件名。 + + * **className** + + **className** 指定 Tuner 类名。 + + * **classArgs** + + **classArgs** 指定了 Tuner 算法的参数。 + + * **gpuNum** + + **gpuNum** 指定了运行 Tuner 进程的 GPU 数量。 此字段的值必须是正整数。 + + 注意: 只能使用一种方法来指定 Tuner,例如:设置{tunerName, optimizationMode} 或 {tunerCommand, tunerCwd},不能同时设置。 + +* **Assessor** + + * 说明 + + **assessor** 指定了 Experiment 的 Assessor 算法。有两种方法可设置 Assessor。 一种方法是使用 SDK 提供的 Assessor,需要设置 **builtinAssessorName** 和 **classArgs**。 另一种方法,是使用用户自定义的 Assessor,需要设置 **codeDirectory**,**classFileName**,**className** 和 **classArgs**。 + + * **builtinAssessorName** 和 **classArgs** + + * **builtinAssessorName** + + **builtinAssessorName** 指定了系统 Assessor 的名称, NNI 内置的 Assessor 有 {**Medianstop**,等等}。 + + * **classArgs** + + **classArgs** 指定了 Assessor 算法的参数。 + + * **codeDir**, **classFileName**, **className** 和 **classArgs** + + * **codeDir** + + **codeDir** 指定 Assessor 代码的目录。 + + * **classFileName** + + **classFileName** 指定 Assessor 文件名。 + + * **className** + + **className** 指定 Assessor 类名。 + + * **classArgs** + + **classArgs** 指定了 Assessor 算法的参数。 + + * **gpuNum** + + **gpuNum** 指定了运行 Assessor 进程的 GPU 数量。 此字段的值必须是正整数。 + + 注意: 只能使用一种方法来指定评估器,例如:设置 {assessorName, optimizationMode} 或 {assessorCommand, assessorCwd},不能同时设置。如果不需要使用评估器,可将其置为空。 + +* **trial (local, remote)** + + * **command** + + **command** 指定了运行 Trial 进程的命令行。 + + * **codeDir** + + **codeDir** 指定了 Trial 代码文件的目录。 + + * **gpuNum** + + **gpuNum** 指定了运行 Trial 进程的 GPU 数量。 默认值为 0。 + +* **trial (pai)** + + * **command** + + **command** 指定了运行 Trial 进程的命令行。 + + * **codeDir** + + **codeDir** 指定了 Trial 代码文件的目录。 + + * **gpuNum** + + **gpuNum** 指定了运行 Trial 进程的 GPU 数量。 默认值为 0。 + + * **cpuNum** + + **cpuNum** 指定了 OpenPAI 容器中使用的 CPU 数量。 + + * **memoryMB** + + **memoryMB** 指定了 OpenPAI 容器中使用的内存数量。 + + * **image** + + **image** 指定了 OpenPAI 中使用的 docker 映像。 + + * **dataDir** + + **dataDir** 是 HDFS 中用到的数据目录变量。 + + * **outputDir** + + **outputDir** 是 HDFS 中用到的输出目录变量。在 OpenPAI 中,stdout 和 stderr 文件会在作业完成后,存放在此目录中。 + +* **trial (kubeflow)** + + * **codeDir** + + **codeDir** 指定了代码文件的本机路径。 + + * **ps (可选)** + + **ps** 是 Kubeflow 的 Tensorflow-operator 配置。 + + * **replicas** + + **replicas** 是 **ps** 角色的副本数量。 + + * **command** + + **command** 是在 **ps** 的容器中运行的脚本命令。 + + * **gpuNum** + + **gpuNum** 是在 **ps** 容器中使用的 GPU 数量。 + + * **cpuNum** + + **cpuNum** 是在 **ps** 容器中使用的 CPU 数量。 + + * **memoryMB** + + **memoryMB** 指定了容器中使用的内存数量。 + + * **image** + + **iamge** 设置了 **ps** 使用的 docker 映像。 + + * **worker** + + **worker** 是 Kubeflow 的 Tensorflow-operator 配置。 + + * **replicas** + + **replicas** 是 **worker** 角色的副本数量。 + + * **command** + + **command** 是在 **worker** 的容器中运行的脚本命令。 + + * **gpuNum** + + **gpuNum** 是在 **worker** 容器中使用的 GPU 数量。 + + * **cpuNum** + + **cpuNum** 是在 **worker** 容器中使用的 CPU 数量。 + + * **memoryMB** + + **memoryMB** 指定了容器中使用的内存数量。 + + * **image** + + **image** 设置了 **worker** 使用的 docker 映像。 + +* **machineList** + + 如果 **trainingServicePlatform** 为 remote,则需要设置 **machineList**。否则应将其置为空。 + + * **ip** + + **ip** 是远程计算机的 ip 地址。 + + * **port** + + **端口** 是用于连接远程计算机的 ssh 端口。 + + 注意:如果 port 设为空,则为默认值 22。 + + * **username** + + **username** 是远程计算机的用户名。 + + * **passwd** + + **passwd** 指定了账户的密码。 + + * **sshKeyPath** + + 如果要使用 ssh 密钥登录远程计算机,则需要设置 **sshKeyPath**。 **sshKeyPath** 为有效的 ssh 密钥文件路径。 + + 注意:如果同时设置了 passwd 和 sshKeyPath,NNI 会使用 passwd。 + + * **passphrase** + + **passphrase** 用于保护 ssh 密钥,如果没有使用,可为空。 + +* **kubeflowConfig**: + + * **operator** + + **operator** 指定了 kubeflow 使用的 operator,NNI 当前版本支持 **tf-operator**。 + + * **存储** + + **storage** 指定了 kubeflow 的存储类型,包括 {**nfs**,**azureStorage**}。 此字段可选,默认值为 **nfs**。 如果使用了 azureStorage,此字段必须填写。 + + * **nfs** + + **server** 是 NFS 服务器的地址 + + **path** 是 NFS 挂载的路径 + + * **keyVault** + + 如果用户使用 Azure Kubernetes Service,需要设置 keyVault 来使用 Azure 存储账户的私钥。 参考: https://docs.microsoft.com/en-us/azure/key-vault/key-vault-manage-with-cli2 + + * **vaultName** + + **vaultName** 是 az 命令中 `--vault-name` 的值。 + + * **name** + + **name** 是 az 命令中 `--name` 的值。 + + * **azureStorage** + + 如果用户使用了 Azure Kubernetes Service,需要设置 Azure 存储账户来存放代码文件。 + + * **accountName** + + **accountName** 是 Azure 存储账户的名称。 + + * **azureShare** + + **azureShare** 是 Azure 文件存储的共享参数。 + +* **paiConfig** + + * **userName** + + **userName** 是 OpenPAI 的用户名。 + + * **password** + + **password** 是 OpenPAI 用户的密码。 + + * **host** + + **host** 是 OpenPAI 的主机地址。 + + + +## 样例 + +* **本机模式** + + 如果要在本机运行 Trial 任务,并使用标记来生成搜索空间,可参考下列配置: + + ```yaml + authorName: test + experimentName: test_experiment + trialConcurrency: 3 + maxExecDuration: 1h + maxTrialNum: 10 + #可选项: local, remote, pai, kubeflow + trainingServicePlatform: local + #可选项: true, false + useAnnotation: true + tuner: + #可选项: TPE, Random, Anneal, Evolution + builtinTunerName: TPE + classArgs: + #可选项: maximize, minimize + optimize_mode: maximize + gpuNum: 0 + trial: + command: python3 mnist.py + codeDir: /nni/mnist + gpuNum: 0 + ``` + + 增加 Assessor 配置 + + ```yaml + authorName: test + experimentName: test_experiment + trialConcurrency: 3 + maxExecDuration: 1h + maxTrialNum: 10 + #可选项: local, remote, pai, kubeflow + trainingServicePlatform: local + searchSpacePath: /nni/search_space.json + #可选项: true, false + useAnnotation: false + tuner: + #可选项: TPE, Random, Anneal, Evolution + builtinTunerName: TPE + classArgs: + #可选项: maximize, minimize + optimize_mode: maximize + gpuNum: 0 + assessor: + #可选项: Medianstop + builtinAssessorName: Medianstop + classArgs: + #可选项: maximize, minimize + optimize_mode: maximize + gpuNum: 0 + trial: + command: python3 mnist.py + codeDir: /nni/mnist + gpuNum: 0 + ``` + + 或者可以指定自定义的 Tuner 和 Assessor: + + ```yaml + authorName: test + experimentName: test_experiment + trialConcurrency: 3 + maxExecDuration: 1h + maxTrialNum: 10 + #可选项: local, remote, pai, kubeflow + trainingServicePlatform: local + searchSpacePath: /nni/search_space.json + #可选项: true, false + useAnnotation: false + tuner: + codeDir: /nni/tuner + classFileName: mytuner.py + className: MyTuner + classArgs: + #可选项: maximize, minimize + optimize_mode: maximize + gpuNum: 0 + assessor: + codeDir: /nni/assessor + classFileName: myassessor.py + className: MyAssessor + classArgs: + #choice: maximize, minimize + optimize_mode: maximize + gpuNum: 0 + trial: + command: python3 mnist.py + codeDir: /nni/mnist + gpuNum: 0 + ``` + +* **远程模式** + + 如果在远程服务器上运行 Trial 任务,需要增加服务器信息: + + ```yaml + authorName: test + experimentName: test_experiment + trialConcurrency: 3 + maxExecDuration: 1h + maxTrialNum: 10 + #可选项: local, remote, pai, kubeflow + trainingServicePlatform: remote + searchSpacePath: /nni/search_space.json + #可选项: true, false + useAnnotation: false + tuner: + #可选项: TPE, Random, Anneal, Evolution + builtinTunerName: TPE + classArgs: + #可选项: maximize, minimize + optimize_mode: maximize + gpuNum: 0 + trial: + command: python3 mnist.py + codeDir: /nni/mnist + gpuNum: 0 + # 如果是本地 Experiment,machineList 可为空。 + machineList: + + - ip: 10.10.10.10 + port: 22 + username: test + passwd: test + - ip: 10.10.10.11 + port: 22 + username: test + passwd: test + - ip: 10.10.10.12 + port: 22 + username: test + sshKeyPath: /nni/sshkey + passphrase: qwert + ``` + +* **pai 模式** + + ```yaml + authorName: test + experimentName: nni_test1 + trialConcurrency: 1 + maxExecDuration:500h + maxTrialNum: 1 + #可选项: local, remote, pai, kubeflow + trainingServicePlatform: pai + searchSpacePath: search_space.json + #可选项: true, false + useAnnotation: false + tuner: + #可选项: TPE, Random, Anneal, Evolution, BatchTuner + #SMAC (SMAC 需要使用 nnictl package 单独安装) + builtinTunerName: TPE + classArgs: + #可选项: maximize, minimize + optimize_mode: maximize + trial: + command: python3 main.py + codeDir: . + gpuNum: 4 + cpuNum: 2 + memoryMB: 10000 + # 在 OpenPAI 上用来运行 Nni 作业的 docker 映像 + image: msranni/nni:latest + # 在 OpenPAI 的 hdfs 上存储数据的目录,如:'hdfs://host:port/directory' + dataDir: hdfs://10.11.12.13:9000/test + # 在 OpenPAI 的 hdfs 上存储输出的目录,如:'hdfs://host:port/directory' + outputDir: hdfs://10.11.12.13:9000/test + paiConfig: + # OpenPAI 用户名 + userName: test + # OpenPAI 密码 + passWord: test + # OpenPAI 服务器 Ip + host: 10.10.10.10 + ``` + +* **Kubeflow 模式** + + 使用 NFS 存储。 + + ```yaml + authorName: default + experimentName: example_mni + trialConcurrency: 1 + maxExecDuration: 1h + maxTrialNum: 1 + #可选项: local, remote, pai, kubeflow + trainingServicePlatform: kubeflow + searchSpacePath: search_space.json + #可选项: true, false + useAnnotation: false + tuner: + #可选项: TPE, Random, Anneal, Evolution + builtinTunerName: TPE + classArgs: + #可选项: maximize, minimize + optimize_mode: maximize + trial: + codeDir: . + worker: + replicas: 1 + command: python3 mnist.py + gpuNum: 0 + cpuNum: 1 + memoryMB: 8192 + image: msranni/nni:latest + kubeflowConfig: + operator: tf-operator + nfs: + server: 10.10.10.10 + path: /var/nfs/general + ``` + + 使用 Azure 存储。 + + ```yaml + authorName: default + experimentName: example_mni + trialConcurrency: 1 + maxExecDuration: 1h + maxTrialNum: 1 + #可选项: local, remote, pai, kubeflow + trainingServicePlatform: kubeflow + searchSpacePath: search_space.json + #可选项: true, false + useAnnotation: false + #nniManagerIp: 10.10.10.10 + tuner: + #可选项: TPE, Random, Anneal, Evolution + builtinTunerName: TPE + classArgs: + #可选项: maximize, minimize + optimize_mode: maximize + assessor: + builtinAssessorName: Medianstop + classArgs: + optimize_mode: maximize + gpuNum: 0 + trial: + codeDir: . + worker: + replicas: 1 + command: python3 mnist.py + gpuNum: 0 + cpuNum: 1 + memoryMB: 4096 + image: msranni/nni:latest + kubeflowConfig: + operator: tf-operator + keyVault: + vaultName: Contoso-Vault + name: AzureStorageAccountKey + azureStorage: + accountName: storage + azureShare: share01 + ``` \ No newline at end of file diff --git a/zh_CN/docs/FAQ.md b/zh_CN/docs/FAQ.md new file mode 100644 index 0000000000..be4fc71c18 --- /dev/null +++ b/zh_CN/docs/FAQ.md @@ -0,0 +1,42 @@ +# 常见问答 + +此页为常见问题 + +### tmp 目录没空间了 + +nnictl 在执行时,使用 tmp 目录作为临时目录来复制 codeDir 下的文件。 当遇到下列错误时,先试试清空 **tmp** 目录。 + +> OSError: [Errno 28] No space left on device + +### OpenPAI 模式下无法获得 Trial 的数据 + +在 OpenPAI 的训练模式下,NNI 管理器会在端口 51189 启动一个 RESTful 服务,来接收 OpenPAI 集群中 Trial 任务的指标数据。 如果在 OpenPAI 模式下的网页中不能看到任何指标,需要检查 51189 端口是否在防火墙规则中已打开。 + +### 安装时出现 Segmentation Fault (core dumped) + +> make: *** [install-XXX] Segmentation fault (core dumped) + +可依次试试以下方法: + +* 更新或重新安装 Python 中的 pip: `python3 -m pip install -U pip` +* 在安装 NNI 时,添加 `--no-cache-dir` 参数:`python3 -m pip install nni --no-cache-dir` + +### Job management error: getIPV4Address() failed because os.networkInterfaces().eth0 is undefined. + +计算机没有 eth0 设备,需要在配置中设置 [nniManagerIp](ExperimentConfig.md)。 + +### 运行时间超过了 MaxDuration ,但没有停止 + +当 Experiment 到达最长运行时间时,nniManager 不会创建新的 Trial ,但除非手动停止 Experiment,运行中的 Trial 会继续运行直到结束。 + +### 使用 `nnictl stop` 无法停止 Experiment + +如果在实验运行时,升级了 nni 或删除了一些配置文件,会因为丢失配置文件而出现这类错误。 可以使用 `ps -ef | grep node` 命令来找到 Experiment 的 pid,并用 `kill -9 {pid}` 命令来停止 Experiment 进程。 + +### 无法在虚拟机的 NNI 网页中看到 `指标数据` + +将虚拟机的网络配置为桥接模式来让虚拟机能被网络访问,并确保虚拟机的防火墙没有禁止相关端口。 + +### 帮助改进 + +在创建新问题前,请在 https://github.com/Microsoft/nni/issues 查看是否有人已经报告了相似的问题。 \ No newline at end of file diff --git a/zh_CN/docs/FrameworkControllerMode.md b/zh_CN/docs/FrameworkControllerMode.md new file mode 100644 index 0000000000..412579e1fd --- /dev/null +++ b/zh_CN/docs/FrameworkControllerMode.md @@ -0,0 +1,105 @@ +# **在 FrameworkController 上运行 Experiment** + +NNI 支持使用 [FrameworkController](https://github.com/Microsoft/frameworkcontroller),来运行 Experiment,称之为 frameworkcontroller 模式。 FrameworkController 构建于 Kubernetes 上,用于编排各种应用。这样,可以不用为某个深度学习框架安装 Kubeflow 的 tf-operator 的 pytorch-operator 等。 而直接用 frameworkcontroller 作为 NNI Experiment 的训练服务。 + +## 私有部署的 Kubernetes 的准备工作 + +1. 采用 Kubernetes 1.8 或更高版本。 根据[指南](https://kubernetes.io/docs/setup/)来安装 Kubernetes。 +2. 配置 **kubeconfig** 文件,NNI 将使用此配置与 Kubernetes API 服务交互。 默认情况下,NNI 管理器会使用 $(HOME)/.kube/config 作为 kubeconfig 文件的路径。 也可以通过环境变量 **KUBECONFIG** 来指定其它 kubeconfig 文件。 根据[指南](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig)了解更多 kubeconfig 的信息。 +3. 如果 NNI Trial 作业需要 GPU 资源,需按照[指南](https://github.com/NVIDIA/k8s-device-plugin)来配置 **Kubernetes 下的 Nvidia 插件**。 +4. 准备 **NFS 服务器** 并导出通用的装载 (mount),推荐将 NFS 服务器路径映射到 `root_squash 选项`,否则可能会在 NNI 复制文件到 NFS 时出现权限问题。 参考[页面](https://linux.die.net/man/5/exports),来了解关于 root_squash 选项,或 **Azure File Storage**。 +5. 在安装 NNI 并运行 nnictl 的计算机上安装 **NFS 客户端**。 运行此命令安装 NFSv4 客户端: ```apt-get install nfs-common``` + +6. 参考[指南](QuickStart.md)安装 **NNI**。 + +## Azure 部署的 Kubernetes 的准备工作 + +1. NNI 支持基于 Azure Kubernetes Service 的 Kubeflow,参考[指南](https://azure.microsoft.com/en-us/services/kubernetes-service/)来设置 Azure Kubernetes Service。 +2. 安装 [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest) 和 **kubectl**。 使用 `az login` 命令来设置 Azure 账户吗,并将 kubectl 客户端连接到 AKS,参考此[指南](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough#connect-to-the-cluster)。 +3. 参考此[指南](https://docs.microsoft.com/en-us/azure/storage/common/storage-quickstart-create-account?tabs=portal)来创建 Azure 文件存储账户。 NNI 需要 Azure Storage Service 来存取代码和输出文件。 +4. NNI 需要访问密钥来连接 Azure 存储服务,NNI 使用 [Azure Key Vault](https://azure.microsoft.com/en-us/services/key-vault/) 服务来保护私钥。 设置 Azure Key Vault 服务,并添加密钥到 Key Vault 中来存取 Azure 存储账户。 参考[指南](https://docs.microsoft.com/en-us/azure/key-vault/quick-create-cli)来存储访问密钥。 + +## 安装 FrameworkController + +参考[指南](https://github.com/Microsoft/frameworkcontroller/tree/master/example/run)来在 Kubernetes 集群中配置 Frameworkcontroller。NNI 通过 statefulset 模式来 支持 Frameworkcontroller。 + +## 设计 + +参考[Kubeflow 训练服务](./KubeflowMode.md),Frameworkcontroller 服务管道非常类似。 + +## 样例 + +Frameworkcontroller 配置文件的格式如下: + + authorName: default + experimentName: example_mnist + trialConcurrency: 1 + maxExecDuration: 10h + maxTrialNum: 100 + #可选项: local, remote, pai, kubeflow, frameworkcontroller + trainingServicePlatform: frameworkcontroller + searchSpacePath: ~/nni/examples/trials/mnist/search_space.json + #可选项: true, false + useAnnotation: false + tuner: + #可选项: TPE, Random, Anneal, Evolution + builtinTunerName: TPE + classArgs: + #可选项: maximize, minimize + optimize_mode: maximize + assessor: + builtinAssessorName: Medianstop + classArgs: + optimize_mode: maximize + gpuNum: 0 + trial: + codeDir: ~/nni/examples/trials/mnist + taskRoles: + + - name: worker + taskNum: 1 + command: python3 mnist.py + gpuNum: 1 + cpuNum: 1 + memoryMB: 8192 + image: msranni/nni:latest + frameworkAttemptCompletionPolicy: + minFailedTaskCount: 1 + minSucceededTaskCount: 1 + frameworkcontrollerConfig: + storage: nfs + nfs: + server: {your_nfs_server} + path: {your_nfs_server_exported_path} + + +如果使用了 Azure Kubernetes Service,需要在 YAML 文件中如下设置 `frameworkcontrollerConfig`: + + frameworkcontrollerConfig: + storage: azureStorage + keyVault: + vaultName: {your_vault_name} + name: {your_secert_name} + azureStorage: + accountName: {your_storage_account_name} + azureShare: {your_azure_share_name} + + +注意:如果用 FrameworkController 模式运行,需要在 YAML 文件中显式设置 `trainingServicePlatform: frameworkcontroller`。 + +FrameworkController 模式的 Trial 配置格式,是 FrameworkController 官方配置的简化版。参考 [frameworkcontroller 的 tensorflow 样例](https://github.com/Microsoft/frameworkcontroller/blob/master/example/framework/scenario/tensorflow/cpu/tensorflowdistributedtrainingwithcpu.yaml) 了解详情。 +frameworkcontroller 模式中的 Trial 配置使用以下主键: + +* taskRoles: 配置文件中可以设置多个任务角色,每个任务角色都是在 Kubernetes 集群中的基本执行单元。 + * name: 任务角色的名字,例如,"worker", "ps", "master"。 + * taskNum: 任务角色的实例数量。 + * command: 在容器中要执行的用户命令。 + * gpuNum: 容器要使用的 GPU 数量。 + * cpuNum: 容器中要使用的 CPU 数量。 + * memoryMB: 容器的内存限制。 + * image: 用来创建 pod,并运行程序的 Docker 映像。 + * frameworkAttemptCompletionPolicy: 运行框架的策略,参考[用户手册](https://github.com/Microsoft/frameworkcontroller/blob/master/doc/user-manual.md#frameworkattemptcompletionpolicy)了解更多信息。 这些策略可以用来控制 pod,例如,如果 worker 任务停止了,但 ps 没有停止,CompletionPolicy 策略可以停止 ps。 + +## 如何运行示例 + +准备好配置文件后,通过运行 nnictl 来启动 Experiment。 在 Frameworkcontroller 上开始 Experiment 的方法与 Kubeflow 类似,可参考[指南](./KubeflowMode.md)了解更多信息。 \ No newline at end of file diff --git a/zh_CN/docs/HowToDebug.md b/zh_CN/docs/HowToDebug.md new file mode 100644 index 0000000000..3a247d60c1 --- /dev/null +++ b/zh_CN/docs/HowToDebug.md @@ -0,0 +1,3 @@ +# **在 NNI 中调试代码** + +*编写中……* \ No newline at end of file diff --git a/zh_CN/docs/Installation.md b/zh_CN/docs/Installation.md new file mode 100644 index 0000000000..48d42dc6de --- /dev/null +++ b/zh_CN/docs/Installation.md @@ -0,0 +1,66 @@ +# 安装 NNI + +当前仅支持 Linux 和 Mac。 + +## **安装** + +* **通过 pip 命令安装 NNI** + + 先决条件:`python >= 3.5` + + ```bash + python3 -m pip install --upgrade nni + ``` + +* **通过源代码安装 NNI** + + 先决条件:`python >=3.5, git, wget` + + ```bash + git clone -b v0.5.1 https://github.com/Microsoft/nni.git + cd nni + ./install.sh + ``` + +* **在 docker 映像中安装 NNI** + + 也可将 NNI 安装到 docker 映像中。 参考[这里](../deployment/docker/README.md)来生成 NNI 的 Docker 映像。 也可通过此命令从 Docker Hub 中直接拉取 NNI 的映像 `docker pull msranni/nni:latest`。 + +## **系统需求** + +以下是 NNI 在 Linux 下的最低配置。 由于程序变更,NNI 的最低配置会有所更改。 + +| | 最低配置 | 推荐配置 | +| -------- | ------------------------------------- | ----------------------------------------- | +| **操作系统** | Ubuntu 16.04 或以上版本 | Ubuntu 16.04 或以上版本 | +| **CPU** | Intel® Core™ i3 或 AMD Phenom™ X3 8650 | Intel® Core™ i5 或 AMD Phenom™ II X3 或更高配置 | +| **GPU** | NVIDIA® GeForce® GTX 460 | NVIDIA® GeForce® GTX 660 或更高配置 | +| **内存** | 4 GB | 6 GB | +| **存储** | 30 GB 可用的磁盘空间 | | +| **网络** | 宽带连接 | | +| **分辨率** | 1024 x 768 以上 | | + +以下是 NNI 在 MacOS 下的最低配置。 由于程序变更,NNI 的最低配置会有所更改。 + +| | 最低配置 | 推荐配置 | +| -------- | -------------------------------------------------- | ------------------------ | +| **操作系统** | macOS 10.14.1 (最新版本) | macOS 10.14.1 (最新版本) | +| **CPU** | Intel® Core™ i5-760 或更高 | Intel® Core™ i7-4770 或更高 | +| **GPU** | NVIDIA® GeForce® GT 750M 或 AMD Radeon™ R9 M290 或更高 | AMD Radeon™ R9 M395X 或更高 | +| **内存** | 4 GB | 8 GB | +| **存储** | 70GB 可用空间及 7200 RPM 硬盘 | 70GB 可用空间 SSD 硬盘 | +| **网络** | 宽带连接 | | +| **分辨率** | 1024 x 768 以上 | | + +## 更多 + +* [概述](Overview.md) +* [使用命令行工具 nnictl](NNICTLDOC.md) +* [使用 NNIBoard](WebUI.md) +* [定制搜索空间](SearchSpaceSpec.md) +* [配置 Experiment](ExperimentConfig.md) +* [如何在本机运行 Experiment (支持多 GPU 卡)?](tutorial_1_CR_exp_local_api.md) +* [如何在多机上运行 Experiment?](RemoteMachineMode.md) +* [如何在 OpenPAI 上运行 Experiment?](PAIMode.md) +* [如何通过 Kubeflow 在 Kubernetes 上运行 Experiment?](KubeflowMode.md) +* [如何通过 FrameworkController 在 Kubernetes 上运行 Experiment?](FrameworkControllerMode.md) \ No newline at end of file diff --git a/zh_CN/docs/KubeflowMode.md b/zh_CN/docs/KubeflowMode.md new file mode 100644 index 0000000000..a32860564e --- /dev/null +++ b/zh_CN/docs/KubeflowMode.md @@ -0,0 +1,205 @@ +# **在 Kubeflow 上运行 Experiment** + +NNI 支持在 [Kubeflow](https://github.com/kubeflow/kubeflow)上运行,称为 kubeflow 模式。 在开始使用 NNI 的 kubeflow 模式前,需要有一个 kubernetes 集群,可以是私有部署的,或者是 [Azure Kubernetes Service(AKS)](https://azure.microsoft.com/en-us/services/kubernetes-service/),并需要一台配置好 [kubeconfig](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/) 的 Ubuntu 计算机连接到此 kubernetes 集群。 如果不熟悉 Kubernetes,可先浏览[这里](https://kubernetes.io/docs/tutorials/kubernetes-basics/)。 在 kubeflow 模式下,每个 Trial 程序会在 Kubernetes 集群中作为一个 kubeflow 作业来运行。 + +## 私有部署的 Kubernetes 的准备工作 + +1. 采用 Kubernetes 1.8 或更高版本。 根据[指南](https://kubernetes.io/docs/setup/)来安装 Kubernetes。 +2. 在 Kubernetes 集群中下载、安装、部署 **Kubelow**。 根据[指南](https://www.kubeflow.org/docs/started/getting-started/)安装 Kubeflow。 +3. 配置 **kubeconfig** 文件,NNI 将使用此配置与 Kubernetes API 服务交互。 默认情况下,NNI 管理器会使用 $(HOME)/.kube/config 作为 kubeconfig 文件的路径。 也可以通过环境变量 **KUBECONFIG** 来指定其它 kubeconfig 文件。 根据[指南](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig)了解更多 kubeconfig 的信息。 +4. 如果 NNI Trial 作业需要 GPU 资源,需按照[指南](https://github.com/NVIDIA/k8s-device-plugin)来配置 **Kubernetes 下的 Nvidia 插件**。 +5. 准备 **NFS 服务器** 并导出通用的装载 (mount),推荐将 NFS 服务器路径映射到 `root_squash 选项`,否则可能会在 NNI 复制文件到 NFS 时出现权限问题。 参考[页面](https://linux.die.net/man/5/exports),来了解关于 root_squash 选项,或 **Azure File Storage**。 +6. 在安装 NNI 并运行 nnictl 的计算机上安装 **NFS 客户端**。 运行此命令安装 NFSv4 客户端: + + apt-get install nfs-common + + +7. 参考[指南](QuickStart.md)安装 **NNI**。 + +## Azure 部署的 Kubernetes 的准备工作 + +1. NNI 支持基于 Azure Kubernetes Service 的 Kubeflow,参考[指南](https://azure.microsoft.com/en-us/services/kubernetes-service/)来设置 Azure Kubernetes Service。 +2. 安装 [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest) 和 **kubectl**。 使用 `az login` 命令来设置 Azure 账户吗,并将 kubectl 客户端连接到 AKS,参考此[指南](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough#connect-to-the-cluster)。 +3. 在 Azure Kubernetes Service 上部署 Kubeflow,参考此[指南](https://www.kubeflow.org/docs/started/getting-started/)。 +4. 参考此[指南](https://docs.microsoft.com/en-us/azure/storage/common/storage-quickstart-create-account?tabs=portal)来创建 Azure 文件存储账户。 NNI 需要 Azure Storage Service 来存取代码和输出文件。 +5. NNI 需要访问密钥来连接 Azure 存储服务,NNI 使用 [Azure Key Vault](https://azure.microsoft.com/en-us/services/key-vault/) 服务来保护私钥。 设置 Azure Key Vault 服务,并添加密钥到 Key Vault 中来存取 Azure 存储账户。 参考[指南](https://docs.microsoft.com/en-us/azure/key-vault/quick-create-cli)来存储访问密钥。 + +## 设计 + +![](./img/kubeflow_training_design.png) Kubeflow 训练服务会实例化一个 kubernetes 客户端来与 Kubernetes 集群的 API 服务器交互。 + +对于每个 Trial,会上传本机 codeDir 路径(在 nni_config.yml 中配置)中的所有文件,包括 parameter.cfg 这样的生成的文件到存储卷中。 当前支持两种存储卷:[nfs](https://en.wikipedia.org/wiki/Network_File_System) 和 [Azure 文件存储](https://azure.microsoft.com/en-us/services/storage/files/),需要在 NNI 的 YAML 文件中进行配置。 当文件准备好后,Kubeflow 训练服务会调用 Kubernetes 的 API 来创建 Kubeflow 作业 ([tf-operator](https://github.com/kubeflow/tf-operator) 作业或 [pytorch-operator](https://github.com/kubeflow/pytorch-operator) 作业) ,并将存储卷挂载到作业的 pod 中。 Kubeflow 作业的输出文件,例如 stdout, stderr, trial.log 以及模型文件,也会被复制回存储卷。 NNI 会在网页中显示每个 Trial 的存储卷的 URL,以便浏览日志和输出文件。 + +## 支持的操作符(operator) + +NNI 仅支持 kubeflow 的 tf-operator 和 pytorch-operator,其它操作符未经测试。 可以在配置文件中设置操作符类型。 这是 tf-operator 的设置: + + kubeflowConfig: + operator: tf-operator + + +这是 pytorch-operator 的设置: + + kubeflowConfig: + operator: pytorch-operator + + +如果要使用 tf-operator,需要在 Trial 配置中设置 `ps` 和 `worker`。如果要使用 pytorch-operator,需要在 Trial 配置中设置 `master` 和 `worker`。 + +## 支持的存储类型 + +NNI 支持使用 NFS 和 Azure 存储来存储代码和输出文件,可在配置文件进行相应的配置。 +NFS 存储配置如下: + + kubeflowConfig: + storage: nfs + nfs: + # NFS 服务器 IP, 如 10.10.10.10 + server: {your_nfs_server_ip} + # NFS 服务器的导出路径,如 /var/nfs/nni + path: {your_nfs_server_export_path} + + +如果使用了 Azure 存储,需要在 YAML 文件中如下设置 `kubeflowConfig`: + + kubeflowConfig: + storage: azureStorage + keyVault: + vaultName: {your_vault_name} + name: {your_secert_name} + azureStorage: + accountName: {your_storage_account_name} + azureShare: {your_azure_share_name} + + +## 运行 Experiment + +以 `examples/trials/mnist` 为例。 这是一个 TensorFlow 作业,使用了 Kubeflow 的 tf-operator。 NNI 的 YAML 配置文件如下: + + authorName: default + experimentName: example_mnist + trialConcurrency: 2 + maxExecDuration: 1h + maxTrialNum: 20 + #可选项: local, remote, pai, kubeflow + trainingServicePlatform: kubeflow + searchSpacePath: search_space.json + #可选项: true, false + useAnnotation: false + tuner: + #可选项: TPE, Random, Anneal, Evolution + builtinTunerName: TPE + classArgs: + #可选项: maximize, minimize + optimize_mode: maximize + assessor: + builtinAssessorName: Medianstop + classArgs: + optimize_mode: maximize + gpuNum: 0 + trial: + codeDir: . + worker: + replicas: 2 + command: python3 dist_mnist.py + gpuNum: 1 + cpuNum: 1 + memoryMB: 8196 + image: msranni/nni:latest + ps: + replicas: 1 + command: python3 dist_mnist.py + gpuNum: 0 + cpuNum: 1 + memoryMB: 8196 + image: msranni/nni:latest + kubeflowConfig: + operator: tf-operator + apiVersion: v1alpha2 + storage: nfs + nfs: + # NFS 服务器 IP,如 10.10.10.10 + server: {your_nfs_server_ip} + # NFS 服务器的导出路径,如 /var/nfs/nni + path: {your_nfs_server_export_path} + + +注意:如果用 Kubeflow 模式运行,需要在 YAML 文件中显式设置 `trainingServicePlatform: kubeflow`。 + +如果要运行 Pytorch 作业,需要如下配置: + + authorName: default + experimentName: example_mnist_distributed_pytorch + trialConcurrency: 1 + maxExecDuration: 1h + maxTrialNum: 10 + #可选项: local, remote, pai, kubeflow + trainingServicePlatform: kubeflow + searchSpacePath: search_space.json + #可选项: true, false + useAnnotation: false + tuner: + #可选项: TPE, Random, Anneal, Evolution + builtinTunerName: TPE + classArgs: + #可选项: maximize, minimize + optimize_mode: minimize + trial: + codeDir: . + master: + replicas: 1 + command: python3 dist_mnist.py + gpuNum: 1 + cpuNum: 1 + memoryMB: 2048 + image: msranni/nni:latest + worker: + replicas: 1 + command: python3 dist_mnist.py + gpuNum: 0 + cpuNum: 1 + memoryMB: 2048 + image: msranni/nni:latest + kubeflowConfig: + operator: pytorch-operator + apiVersion: v1alpha2 + nfs: + # NFS 服务器 IP,如 10.10.10.10 + server: {your_nfs_server_ip} + # NFS 服务器导出路径,如 /var/nfs/nni + path: {your_nfs_server_export_path} + + +Kubeflow 模式的配置有下列主键: + +* codeDir + * 代码目录,存放训练代码和配置文件 +* worker (必填)。 此部分用于配置 TensorFlow 的 worker 角色 + * replicas + * 必填。 需要运行的 TensorFlow woker 角色的数量,必须为正数。 + * command + * 必填。 用来运行 Trial 作业的命令,例如: ```python mnist.py``` + * memoryMB + * 必填。 Trial 程序的内存需求,必须为正数。 + * cpuNum + * gpuNum + * image + * 必填。 在 kubeflow 模式中,Kubernetes 会安排 Trial 程序在 [Pod](https://kubernetes.io/docs/concepts/workloads/pods/pod/) 中执行。 此键用来指定 Trial 程序的 pod 使用的 Docker 映像。 + * [Docker Hub](https://hub.docker.com/) 上有预制的 NNI Docker 映像 [msranni/nni](https://hub.docker.com/r/msranni/nni/)。 它包含了用来启动 NNI Experiment 所依赖的所有 Python 包,Node 模块和 JavaScript。 生成此 Docker 映像的文件在[这里](https://github.com/Microsoft/nni/tree/master/deployment/Dockerfile.build.base)。 可以直接使用此映像,或参考它来生成自己的映像。 + * apiVersion + * 必填。 Kubeflow 的 API 版本。 +* ps (可选)。 此部分用于配置 TensorFlow 的 parameter 服务器角色。 +* master (可选)。 此部分用于配置 PyTorch 的 parameter 服务器角色。 + +完成并保存 NNI Experiment 配置文件后(例如可保存为:exp_kubeflow.yml),运行以下命令: + + nnictl create --config exp_kubeflow.yml + + +来在 Kubeflow 模式下启动 Experiment。 NNI 会为每个 Trial 创建 Kubeflow tfjob 或 pytorchjob,作业名称的格式为 `nni_exp_{experiment_id}_trial_{trial_id}`。 可以在 Kubernetes 面板中看到创建的 Kubeflow tfjob。 + +注意:Kubeflow 模式下,NNIManager 会启动 RESTful 服务,监听端口为 NNI 网页服务器的端口加1。 例如,如果网页端口为`8080`,那么 RESTful 服务器会监听在 `8081`端口,来接收运行在 Kubernetes 中的 Trial 作业的指标。 因此,需要在防火墙中启用端口 `8081` 的 TCP 协议,以允许传入流量。 + +当一个 Trial 作业完成后,可以在 NNI 网页的概述页面(如:http://localhost:8080/oview)中查看 Trial 的信息。 + +如果在使用 Kubeflow 模式时遇到任何问题,请到 [NNI Github](https://github.com/Microsoft/nni) 中创建问题。 \ No newline at end of file diff --git a/zh_CN/docs/Makefile b/zh_CN/docs/Makefile new file mode 100644 index 0000000000..298ea9e213 --- /dev/null +++ b/zh_CN/docs/Makefile @@ -0,0 +1,19 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/zh_CN/docs/NNICTLDOC.md b/zh_CN/docs/NNICTLDOC.md new file mode 100644 index 0000000000..d42e715d6e --- /dev/null +++ b/zh_CN/docs/NNICTLDOC.md @@ -0,0 +1,469 @@ +# nnictl + +## 介绍 + +**nnictl** 是一个命令行工具,用来控制 NNI Experiment,如启动、停止、继续 Experiment,启动、停止 NNIBoard 等等。 + +## 命令 + +nnictl 支持的命令: + +* [nnictl create](#create) +* [nnictl resume](#resume) +* [nnictl stop](#stop) +* [nnictl update](#update) +* [nnictl trial](#trial) +* [nnictl top](#top) +* [nnictl experiment show](#experiment) +* [nnictl config](#config) +* [nnictl log](#log) +* [nnictl webui](#webui) +* [nnictl tensorboard](#tensorboard) +* [nnictl package](#package) +* [nnictl --version](#version) + +### 管理 Experiment + + + +* **nnictl create** + + * 说明 + + 此命令使用参数中的配置文件,来创建新的 Experiment。 + + 此命令成功完成后,上下文会被设置为此 Experiment。这意味着如果不显式改变上下文(暂不支持),输入的以下命令,都作用于此 Experiment。 + + * 用法 + + ```bash + nnictl create [OPTIONS] + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ------------ | ----- | --- | ---------------------- | + | --config, -c | True | | Experiment 的 YAML 配置文件 | + | --port, -p | False | | RESTful 服务的端口 | + + + +* **nnictl resume** + + * 说明 + + 使用此命令恢复已停止的 Experiment。 + + * 用法 + + ```bash + nnictl resume [OPTIONS] + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ---------- | ----- | --- | -------------------------------- | + | id | False | | 要恢复的 Experiment 标识 | + | --port, -p | False | | 要恢复的 Experiment 使用的 RESTful 服务端口 | + + + +* **nnictl stop** + + * 说明 + + 使用此命令来停止正在运行的单个或多个 Experiment。 + + * 用法 + + ```bash + nnictl stop [id] + ``` + + * 详细说明 + + 1. 如果指定了 id,并且此 id 匹配正在运行的 Experiment,nnictl 会停止相应的 Experiment,否则会输出错误信息。 + 2. 如果没有指定 id,并且当前有运行的 Experiment,则会停止该 Experiment,否则会输出错误信息。 + 3. 如果 id 以 * 结尾,nnictl 会停止所有匹配此通配符的 Experiment。 + 4. 如果 id 不存在,但匹配了某个Experiment 的 id 前缀,nnictl 会停止匹配的Experiment 。 + 5. 如果 id 不存在,但匹配多个 Experiment id 的前缀,nnictl 会输出这些 id 的信息。 + 6. 可使用 'nnictl stop all' 来停止所有的 Experiment。 + + + +* **nnictl update** + + * **nnictl update searchspace** + + * 说明 + + 可以用此命令来更新 Experiment 的搜索空间。 + + * 用法 + + ```bash + nnictl update searchspace [OPTIONS] + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | -------------- | ----- | --- | --------------------- | + | id | False | | 需要设置的 Experiment 的 id | + | --filename, -f | True | | 新的搜索空间文件名 | + + * **nnictl update concurrency** + + * 说明 + + 可以用此命令来更新 Experiment 的并发设置。 + + * 用法 + + ```bash + nnictl update concurrency [OPTIONS] + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ----------- | ----- | --- | --------------------- | + | id | False | | 需要设置的 Experiment 的 id | + | --value, -v | True | | 允许同时运行的 Trial 的数量 | + + * **nnictl update duration** + + * 说明 + + 可以用此命令来更新 Experiment 的运行时间。 + + * 用法 + + ```bash + nnictl update duration [OPTIONS] + ``` + + * 选项 + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ----------- | ----- | --- | ----------------------------------------------------------------------- | + | id | False | | 需要设置的 Experiment 的 id | + | --value, -v | True | | Experiment 持续时间如没有单位,则为秒。 后缀可以为 's' 即秒 (默认值), 'm' 即分钟, 'h' 即小时或 'd' 即天。 | + + * **nnictl update trialnum** + + * 说明 + + 可以用此命令来更新 Experiment 的最大 Trial 数量。 + + * 用法 + + ```bash + nnictl update trialnum [OPTIONS] + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ----------- | ----- | --- | --------------------- | + | id | False | | 需要设置的 Experiment 的 id | + | --value, -v | True | | 需要设置的 maxtrialnum 的数量 | + + + +* **nnictl trial** + + * **nnictl trial ls** + + * 说明 + + 使用此命令来查看 Trial 的信息。 + + * 用法 + + ```bash + nnictl trial ls + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ----- | ----- | --- | --------------------- | + | id | False | | 需要设置的 Experiment 的 id | + + * **nnictl trial kill** + + * 说明 + + 此命令用于终止 Trial。 + + * 用法 + + ```bash + nnictl trial kill [OPTIONS] + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ------------- | ----- | --- | --------------------- | + | id | False | | 需要设置的 Experiment 的 id | + | --trialid, -t | True | | 需要终止的 Trial 的 id。 | + + + +* **nnictl top** + + * 说明 + + 查看正在运行的 Experiment。 + + * 用法 + + ```bash + nnictl top + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ---------- | ----- | --- | ------------------------------------ | + | id | False | | 需要设置的 Experiment 的 id | + | --time, -t | False | | 刷新 Experiment 状态的时间间隔,单位为秒,默认值为 3 秒。 | + + + +### 管理 Experiment 信息 + +* **nnictl experiment show** + + * 说明 + + 显示 Experiment 的信息。 + + * 用法 + + ```bash + nnictl experiment show + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ----- | ----- | --- | --------------------- | + | id | False | | 需要设置的 Experiment 的 id | + +* **nnictl experiment status** + + * 说明 + + 显示 Experiment 的状态。 + + * 用法 + + ```bash + nnictl experiment status + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ----- | ----- | --- | --------------------- | + | id | False | | 需要设置的 Experiment 的 id | + +* **nnictl experiment list** + + * 说明 + + 显示正在运行的 Experiment 的信息 + + * 用法 + + ```bash + nnictl experiment list + ``` + + + +* **nnictl config show** + + * 说明 + + 显示当前上下文信息。 + + * 用法 + + ```bash + nnictl config show + ``` + + + +### 管理日志 + +* **nnictl log stdout** + + * 说明 + + 显示 stdout 日志内容。 + + * 用法 + + ```bash + nnictl log stdout [options] + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ---------- | ----- | --- | --------------------- | + | id | False | | 需要设置的 Experiment 的 id | + | --head, -h | False | | 显示 stdout 开始的若干行 | + | --tail, -t | False | | 显示 stdout 结尾的若干行 | + | --path, -p | False | | 显示 stdout 文件的路径 | + +* **nnictl log stderr** + + * 说明 + + 显示 stderr 日志内容。 + + * 用法 + + ```bash + nnictl log stderr [options] + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ---------- | ----- | --- | --------------------- | + | id | False | | 需要设置的 Experiment 的 id | + | --head, -h | False | | 显示 stderr 开始的若干行 | + | --tail, -t | False | | 显示 stderr 结尾的若干行 | + | --path, -p | False | | 显示 stderr 文件的路径 | + +* **nnictl log trial** + + * 说明 + + 显示 Trial 日志的路径。 + + * 用法 + + ```bash + nnictl log trial [options] + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ----- | ----- | --- | ---------- | + | id | False | | Trial 的 id | + + + +### 管理网页 + +* **nnictl webui url** + + + +### 管理 tensorboard + +* **nnictl tensorboard start** + + * 说明 + + 启动 tensorboard 进程。 + + * 用法 + + ```bash + nnictl tensorboard start + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | --------- | ----- | ---- | --------------------- | + | id | False | | 需要设置的 Experiment 的 id | + | --trialid | False | | Trial 的 id | + | --port | False | 6006 | tensorboard 进程的端口 | + + * 详细说明 + + 1. NNICTL 当前仅支持本机和远程平台的 tensorboard,其它平台暂不支持。 + 2. 如果要使用 tensorboard,需要将 tensorboard 日志输出到环境变量 [NNI_OUTPUT_DIR] 路径下。 + 3. 在 local 模式中,nnictl 会直接设置 --logdir=[NNI_OUTPUT_DIR] 并启动 tensorboard 进程。 + 4. 在 remote 模式中,nnictl 会创建一个 ssh 客户端来将日志数据从远程计算机复制到本机临时目录中,然后在本机开始 tensorboard 进程。 需要注意的是,nnictl 只在使用此命令时复制日志数据,如果要查看最新的 tensorboard 结果,需要再次执行 nnictl tensorboard 命令。 + 5. 如果只有一个 Trial 任务,不需要设置 trialid。 如果有多个运行的 Trial 作业,需要设置 trialid,或使用 [nnictl tensorboard start --trialid all] 来将 --logdir 映射到所有 Trial 的路径。 + +* **nnictl tensorboard stop** + + * 说明 + + 停止所有 tensorboard 进程。 + + * 用法 + + ```bash + nnictl tensorboard stop + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ----- | ----- | --- | ----------- | + | id | False | | 需要设置的实验的 id | + + + +### 管理安装包 + +* **nnictl package install** + + * 说明 + + 安装 NNI 实验所需要的包。 + + * 用法 + + ```bash + nnictl package install [OPTIONS] + ``` + + * 选项 + + | 参数及缩写 | 是否必需 | 默认值 | 说明 | + | ------ | ---- | --- | ------- | + | --name | True | | 要安装的包名称 | + +* **nnictl package show** + + * 说明 + + 列出支持的安装包 + + * 用法 + + ```bash + nnictl package show + ``` + + + +### 检查 NNI 版本 + +* **nnictl --version** + + * 说明 + + 显示当前安装的 NNI 的版本。 + + * 用法 + + ```bash + nnictl --version + ``` \ No newline at end of file diff --git a/zh_CN/docs/Overview.md b/zh_CN/docs/Overview.md new file mode 100644 index 0000000000..f256254180 --- /dev/null +++ b/zh_CN/docs/Overview.md @@ -0,0 +1,59 @@ +# 概述 + +NNI (Neural Network Intelligence) 是一个工具包,可有效的帮助用户设计并调优机器学习模型的神经网络架构,复杂系统的参数(如超参)等。 NNI 的特性包括:易于使用,可扩展,灵活,高效。 + +* **易于使用**:NNI 可通过 pip 安装。 只需要在代码中添加几行,就可以利用 NNI 来调优参数。 可使用命令行工具或 Web 界面来查看实验过程。 +* **可扩展**:调优超参或网络结构通常需要大量的计算资源。NNI 在设计时就支持了多种不同的计算资源,如远程服务器组,训练平台(如:OpenPAI,Kubernetes),等等。 通过训练平台,可拥有同时运行数百个 Trial 的能力。 +* **灵活**:除了内置的算法,NNI 中还可以轻松集成自定义的超参调优算法,神经网络架构搜索算法,提前终止算法等等。 还可以将 NNI 连接到更多的训练平台上,如云中的虚拟机集群,Kubernetes 服务等等。 此外,NNI 还可以连接到外部环境中的特殊应用和模型上。 +* **高效**:NNI 在系统及算法级别上不停的优化。 例如:通过 Trial 早期的反馈来加速调优过程。 + +下图显示了 NNI 的体系结构。 + +

    +drawing +

    + +## 主要概念 + +* *Experiment(实验)*:实验是一次找到模型的最佳超参组合,或最好的神经网络架构的任务。 它由 Trial 和自动机器学习算法所组成。 + +* *搜索空间*:是模型调优的范围。 例如,超参的取值范围。 + +* *Configuration(配置)*:配置是来自搜索空间的一个参数实例,每个超参都会有一个特定的值。 + +* *Trial*: Trial 是一次尝试,它会使用某组配置(例如,一组超参值,或者特定的神经网络架构)。 Trial 会基于提供的配置来运行。 + +* *Tuner*: Tuner 是一个自动机器学习算法,会为下一个 Trial 生成新的配置。 新的 Trial 会使用这组配置来运行。 + +* *Assessor*:Assessor 分析 Trial 的中间结果(例如,测试数据集上定期的精度),来确定 Trial 是否应该被提前终止。 + +* *训练平台*:是 Trial 的执行环境。 根据 Experiment 的配置,可以是本机,远程服务器组,或其它大规模训练平台(如,OpenPAI,Kubernetes)。 + +Experiment 的运行过程为:Tuner 接收搜索空间并生成配置。 这些配置将被提交到训练平台,如本机,远程服务器组或训练集群。 执行的性能结果会被返回给 Tuner。 然后,再生成并提交新的配置。 + +每次 Experiment 执行时,用户只需要定义搜索空间,改动几行代码,就能利用 NNI 内置的 Tuner/Assessor 和训练服务来搜索最好的超参组合以及神经网络结构。 基本上分为三步: + +> 第一步:[定义搜索空间](SearchSpaceSpec.md) +> +> 第二步:[改动模型代码](Trials.md) +> +> 第三步:[定义 Experiment 配置](ExperimentConfig.md) + +

    +drawing +

    + +更多 Experiment 运行的详情,参考[快速入门](QuickStart.md)。 + +## 了解更多信息 + +* [开始使用](QuickStart.md) +* [如何为 NNI 调整代码?](Trials.md) +* [NNI 支持哪些 Tuner?](Builtin_Tuner.md) +* [如何自定义 Tuner?](Customize_Tuner.md) +* [NNI 支持哪些 Assessor?](Builtin_Assessors.md) +* [如何自定义 Assessor?](Customize_Assessor.md) +* [如何在本机上运行 Experiment?](tutorial_1_CR_exp_local_api.md) +* [如何在多机上运行 Experiment?](RemoteMachineMode.md) +* [如何在 OpenPAI 上运行 Experiment?](PAIMode.md) +* [样例](mnist_examples.md) \ No newline at end of file diff --git a/zh_CN/docs/PAIMode.md b/zh_CN/docs/PAIMode.md new file mode 100644 index 0000000000..05beaa1a47 --- /dev/null +++ b/zh_CN/docs/PAIMode.md @@ -0,0 +1,81 @@ +# **在 OpenPAI 上运行 Experiment** + +NNI 支持在 [OpenPAI](https://github.com/Microsoft/pai) (简称 pai)上运行 Experiment,即 pai 模式。 在使用 NNI 的 pai 模式前, 需要有 [OpenPAI](https://github.com/Microsoft/pai) 群集的账户。 如果没有 OpenPAI 账户,参考[这里](https://github.com/Microsoft/pai#how-to-deploy)来进行部署。 在 pai 模式中,会在 Docker 创建的容器中运行 Trial 程序。 + +## 设置环境 + +参考[指南](QuickStart.md)安装 NNI。 + +## 运行 Experiment + +以 `examples/trials/mnist-annotation` 为例。 NNI 的 YAML 配置文件如下: + +```yaml +authorName: your_name +experimentName: auto_mnist +# 并发运行的 Trial 数量 +trialConcurrency: 2 +# Experiment 的最长持续运行时间 +maxExecDuration: 3h +# 空表示一直运行 +maxTrialNum: 100 +# 可选项: local, remote, pai +trainingServicePlatform: pai +# 可选项: true, false +useAnnotation: true +tuner: + builtinTunerName: TPE + classArgs: + optimize_mode: maximize +trial: + command: python3 mnist.py + codeDir: ~/nni/examples/trials/mnist-annotation + gpuNum: 0 + cpuNum: 1 + memoryMB: 8196 + image: openpai/pai.example.tensorflow + dataDir: hdfs://10.1.1.1:9000/nni + outputDir: hdfs://10.1.1.1:9000/nni +# 配置访问的 OpenPAI 集群 +paiConfig: + userName: your_pai_nni_user + passWord: your_pai_password + host: 10.1.1.1 +``` + +注意:如果用 pai 模式运行,需要在 YAML 文件中设置 `trainingServicePlatform: pai`。 + +与本机模式,以及[远程计算机模式](RemoteMachineMode.md)相比,pai 模式的 Trial 有额外的配置: + +* cpuNum + * 必填。 Trial 程序的 CPU 需求,必须为正数。 +* memoryMB + * 必填。 Trial 程序的内存需求,必须为正数。 +* image + * 必填。 在 pai 模式中,Trial 程序由 OpenPAI 在 [Docker 容器](https://www.docker.com/)中安排运行。 此键用来指定 Trial 程序的容器使用的 Docker 映像。 + * [Docker Hub](https://hub.docker.com/) 上有预制的 NNI Docker 映像 [nnimsra/nni](https://hub.docker.com/r/msranni/nni/)。 它包含了用来启动 NNI Experiment 所依赖的所有 Python 包,Node 模块和 JavaScript。 生成此 Docker 映像的文件在[这里](https://github.com/Microsoft/nni/tree/master/deployment/Dockerfile.build.base)。 可以直接使用此映像,或参考它来生成自己的映像。 +* dataDir + * 可选。 指定了 Trial 用于下载数据的 HDFS 数据目录。 格式应为 hdfs://{your HDFS host}:9000/{数据目录} +* outputDir + * 可选。 指定了 Trial 的 HDFS 输出目录。 Trial 在完成(成功或失败)后,Trial 的 stdout, stderr 会被 NNI 自动复制到此目录中。 格式应为 hdfs://{your HDFS host}:9000/{输出目录} + +完成并保存 NNI Experiment 配置文件后(例如可保存为:exp_pai.yml),运行以下命令: + + nnictl create --config exp_pai.yml + + +来在 pai 模式下启动 Experiment。 NNI 会为每个 Trial 创建 OpenPAI 作业,作业名称的格式为 `nni_exp_{experiment_id}_trial_{trial_id}`。 可以在 OpenPAI 集群的网站中看到 NNI 创建的作业,例如: ![](./img/nni_pai_joblist.jpg) + +注意:pai 模式下,NNIManager 会启动 RESTful 服务,监听端口为 NNI 网页服务器的端口加1。 例如,如果网页端口为`8080`,那么 RESTful 服务器会监听在 `8081`端口,来接收运行在 Kubernetes 中的 Trial 作业的指标。 因此,需要在防火墙中启用端口 `8081` 的 TCP 协议,以允许传入流量。 + +当一个 Trial 作业完成后,可以在 NNI 网页的概述页面(如:http://localhost:8080/oview)中查看 Trial 的信息。 + +在 Trial 列表页面中展开 Trial 信息,点击如下的 logPath: ![](./img/nni_webui_joblist.jpg) + +接着将会打开 HDFS 的 WEB 界面,并浏览到 Trial 的输出文件: ![](./img/nni_trial_hdfs_output.jpg) + +在输出目录中可以看到三个文件:stderr, stdout, 以及 trial.log + +如果希望将 Trial 的模型数据等其它输出保存到HDFS中,可在 Trial 代码中使用 `NNI_OUTPUT_DIR` 来自己保存输出文件,NNI SDK会从 Trial 的容器中将 `NNI_OUTPUT_DIR` 中的文件复制到 HDFS 中。 + +如果在使用 pai 模式时遇到任何问题,请到 [NNI Github](https://github.com/Microsoft/nni) 中创建问题。 \ No newline at end of file diff --git a/zh_CN/docs/QuickStart.md b/zh_CN/docs/QuickStart.md new file mode 100644 index 0000000000..c5ebc99868 --- /dev/null +++ b/zh_CN/docs/QuickStart.md @@ -0,0 +1,232 @@ +# 快速入门 + +## 安装 + +当前支持 Linux 和 MacOS。测试并支持的版本包括:Ubuntu 16.04 及更高版本,MacOS 10.14.1。 在 `python >= 3.5` 的环境中,只需要运行 `pip install` 即可完成安装。 + +```bash + python3 -m pip install --upgrade nni +``` + +注意: + +* 如果需要将 NNI 安装到自己的 home 目录中,可使用 `--user`,这样也不需要任何特殊权限。 +* 如果遇到如`Segmentation fault` 这样的任何错误请参考[常见问题](FAQ.md)。 +* 参考[安装 NNI](Installation.md),来了解`系统需求`。 + +## MNIST 上的 "Hello World" + +NNI 是一个能进行自动机器学习实验的工具包。 它可以自动进行获取超参、运行 Trial,测试结果,调优超参的循环。 下面会展示如何使用 NNI 来找到最佳超参组合。 + +这是还**没有 NNI** 的样例代码,用 CNN 在 MNIST 数据集上训练: + +```python +def run_trial(params): + # 输入数据 + mnist = input_data.read_data_sets(params['data_dir'], one_hot=True) + # 构建网络 + mnist_network = MnistNetwork(channel_1_num=params['channel_1_num'], channel_2_num=params['channel_2_num'], conv_size=params['conv_size'], hidden_size=params['hidden_size'], pool_size=params['pool_size'], learning_rate=params['learning_rate']) + mnist_network.build_network() + + test_acc = 0.0 + with tf.Session() as sess: + # 训练网络 + mnist_network.train(sess, mnist) + # 评估网络 + test_acc = mnist_network.evaluate(mnist) + +if __name__ == '__main__': + params = {'data_dir': '/tmp/tensorflow/mnist/input_data', 'dropout_rate': 0.5, 'channel_1_num': 32, 'channel_2_num': 64, 'conv_size': 5, 'pool_size': 2, 'hidden_size': 1024, 'learning_rate': 1e-4, 'batch_num': 2000, 'batch_size': 32} + run_trial(params) +``` + +注意:完整实现请参考 [examples/trials/mnist/mnist_before.py](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist/mnist_before.py) + +上面的代码一次只能尝试一组参数,如果想要调优学习率,需要手工改动超参,并一次次尝试。 + +NNI 就是用来帮助调优工作的。它的工作流程如下: + + 输入: 搜索空间, Trial 代码, 配置文件 + 输出: 一组最佳的超参配置 + + 1: For t = 0, 1, 2, ..., maxTrialNum, + 2: hyperparameter = 从搜索空间选择一组参数 + 3: final result = run_trial_and_evaluate(hyperparameter) + 4: 返回最终结果给 NNI + 5: If 时间达到上限, + 6: 停止实验 + 7: return 最好的实验结果 + + +如果需要使用 NNI 来自动训练模型,找到最佳超参,需要如下三步: + +**使用 NNI 时的三个步骤** + +**第一步**:定义 JSON 格式的`搜索空间`文件,包括所有需要搜索的超参的`名称`和`分布`(离散和连续值均可)。 + +```diff +- params = {'data_dir': '/tmp/tensorflow/mnist/input_data', 'dropout_rate': 0.5, 'channel_1_num': 32, 'channel_2_num': 64, +- 'conv_size': 5, 'pool_size': 2, 'hidden_size': 1024, 'learning_rate': 1e-4, 'batch_num': 2000, 'batch_size': 32} ++ { ++ "dropout_rate":{"_type":"uniform","_value":[0.5, 0.9]}, ++ "conv_size":{"_type":"choice","_value":[2,3,5,7]}, ++ "hidden_size":{"_type":"choice","_value":[124, 512, 1024]}, ++ "batch_size": {"_type":"choice", "_value": [1, 4, 8, 16, 32]}, ++ "learning_rate":{"_type":"choice","_value":[0.0001, 0.001, 0.01, 0.1]} ++ } +``` + +*实现代码:[search_space.json](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist/search_space.json)* + +**第二步**:修改 `Trial` 代码来从 NNI 获取超参,并返回 NNI 最终结果。 + +```diff ++ import nni + + def run_trial(params): + mnist = input_data.read_data_sets(params['data_dir'], one_hot=True) + + mnist_network = MnistNetwork(channel_1_num=params['channel_1_num'], channel_2_num=params['channel_2_num'], conv_size=params['conv_size'], hidden_size=params['hidden_size'], pool_size=params['pool_size'], learning_rate=params['learning_rate']) + mnist_network.build_network() + + with tf.Session() as sess: + mnist_network.train(sess, mnist) + test_acc = mnist_network.evaluate(mnist) + ++ nni.report_final_result(acc) + + if __name__ == '__main__': + +- params = {'data_dir': '/tmp/tensorflow/mnist/input_data', 'dropout_rate': 0.5, 'channel_1_num': 32, 'channel_2_num': 64, +- 'conv_size': 5, 'pool_size': 2, 'hidden_size': 1024, 'learning_rate': 1e-4, 'batch_num': 2000, 'batch_size': 32} ++ params = nni.get_next_parameter() + run_trial(params) +``` + +*实现代码:[mnist.py](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist/mnist.py)* + +**第三步**:定义 YAML 格式的`配置`文件,其中声明了搜索空间和 Trial 文件的`路径`,以及`其它信息`,如调优算法,最大尝试次数,最大运行时间等等。 + +```yaml +authorName: default +experimentName: example_mnist +trialConcurrency: 1 +maxExecDuration: 1h +maxTrialNum: 10 +trainingServicePlatform: local +# 搜索空间文件 +searchSpacePath: search_space.json +useAnnotation: false +tuner: + builtinTunerName: TPE +# 运行的命令,以及 Trial 代码的路径 +trial: + command: python3 mnist.py + codeDir: . + gpuNum: 0 +``` + +*实现代码:[config.yml](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist/config.yml)* + +上面的代码都已准备好,并保存在 [examples/trials/mnist/](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist)。 + +上述步骤完成后,**从命令行运行 config.yml 文件来开始 Experiment**。 + +```bash + nnictl create --config nni/examples/trials/mnist/config.yml +``` + +注意:**nnictl** 是一个命令行工具,用来控制 NNI Experiment,如启动、停止、继续 Experiment,启动、停止 NNIBoard 等等。 查看[这里](NNICTLDOC.md),了解 `nnictl` 更多用法。 + +在命令行中等待输出 `INFO: Successfully started experiment!`。 此消息表明 Experiment 已成功启动。 期望的输出如下: + + INFO: Starting restful server... + INFO: Successfully started Restful server! + INFO: Setting local config... + INFO: Successfully set local config! + INFO: Starting experiment... + INFO: Successfully started experiment! + ----------------------------------------------------------------------- + The experiment id is egchD4qy + The Web UI urls are: [Your IP]:8080 + ----------------------------------------------------------------------- + + You can use these commands to get more information about the experiment + ----------------------------------------------------------------------- + commands description + + 1. nnictl experiment show show the information of experiments + 2. nnictl trial ls list all of trial jobs + 3. nnictl top monitor the status of running experiments + 4. nnictl log stderr show stderr log content + 5. nnictl log stdout show stdout log content + 6. nnictl stop stop an experiment + 7. nnictl trial kill kill a trial job by id + 8. nnictl --help get help information about nnictl + ----------------------------------------------------------------------- + + +如果根据上述步骤准备好了相应 `Trial`, `搜索空间` 和 `配置`,并成功创建的 NNI 任务。NNI 会自动开始通过配置的搜索空间来运行不同的超参集合,搜索最好的超参。 通过 Web 界面可看到 NNI 的进度。 + +## Web 界面 + +启动 Experiment 后,可以在命令行界面找到如下的 `Web 界面地址`: + + The Web UI urls are: [IP 地址]:8080 + + +在浏览器中打开 `Web 界面地址`(即:`[IP 地址]:8080`),就可以看到 Experiment 的详细信息,以及所有的 Trial 任务。 + +#### 查看概要页面 + +点击标签 "Overview"。 + +Experiment 相关信息会显示在界面上,配置和搜索空间等。 可通过 **Download** 按钮来`下载信息和参数`。 可以在运行中或结束后,随时下载 Experiment 的结果。 + +![](./img/QuickStart1.png) + +前 10 个 Trial 结果也会列在 Overview 页面中,可以在 "Trials Detail" 部分浏览所有的 Trial。 + +![](./img/QuickStart2.png) + +#### 查看 Trial 详情页面 + +点击 "Default Metric" 来查看所有 Trial 的点图。 悬停鼠标来查看默认指标和搜索空间信息。 + +![](./img/QuickStart3.png) + +点击 "Hyper Parameter" 标签查看图像。 + +* 可选择百分比查看最好的 Trial。 +* 选择两个轴来交换位置。 + +![](./img/QuickStart4.png) + +点击 "Trial Duration" 标签来查看柱状图。 + +![](./img/QuickStart5.png) + +下面是所有 Trial 的状态。 包括: + +* Trial 详情:Trial 的 id,持续时间,开始时间,结束时间,状态,精度和搜索空间。 +* 如果在 OpenPAI 平台上运行,还可以看到 hdfsLog。 +* Kill: 可终止正在运行的任务。 +* 支持搜索某个特定的 Trial。 + +![](./img/QuickStart6.png) + +* 中间结果图 + +![](./img/QuickStart7.png) + +## 相关主题 + +* [尝试不同的 Tuner](Builtin_Tuner.md) +* [尝试不同的 Assessor](Builtin_Assessors.md) +* [使用命令行工具 nnictl](NNICTLDOC.md) +* [如何编写 Trial 代码](Trials.md) +* [如何在本机运行 Experiment (支持多 GPU 卡)?](tutorial_1_CR_exp_local_api.md) +* [如何在多机上运行 Experiment?](RemoteMachineMode.md) +* [如何在 OpenPAI 上运行 Experiment?](PAIMode.md) +* [如何通过 Kubeflow 在 Kubernetes 上运行 Experiment?](KubeflowMode.md) +* [如何通过 FrameworkController 在 Kubernetes 上运行 Experiment?](FrameworkControllerMode.md) \ No newline at end of file diff --git a/zh_CN/docs/RELEASE.md b/zh_CN/docs/RELEASE.md new file mode 100644 index 0000000000..ba1f76e21a --- /dev/null +++ b/zh_CN/docs/RELEASE.md @@ -0,0 +1,187 @@ +# 更改日志 + +## 发布 0.5.0 - 01/14/2019 + +### 主要功能 + +#### 支持新的 Tuner 和 Assessor + +* 支持 [Metis tuner](./HowToChooseTuner.md#MetisTuner) 作为 NNI 的 Tuner。 **在线**超参调优的场景下,Metis 算法已经被证明非常有效。 +* 支持 [ENAS customized tuner](https://github.com/countif/enas_nni)。由 GitHub 社区用户所贡献。它是神经网络的搜索算法,能够通过强化学习来学习神经网络架构,比 NAS 的性能更好。 +* 支持 [Curve fitting (曲线拟合)Assessor](./HowToChooseTuner.md#Curvefitting),通过曲线拟合的策略来实现提前终止 Trial。 +* 进一步支持 [Weight Sharing(权重共享)](./AdvancedNAS.md):为 NAS Tuner 通过 NFS 来提供权重共享。 + +#### 改进训练平台 + +* [FrameworkController 训练服务](./FrameworkControllerMode.md): 支持使用在 Kubernetes 上使用 FrameworkController。 + * FrameworkController 是 Kubernetes 上非常通用的控制器(Controller),能用来运行基于各种机器学习框架的分布式作业,如 TensorFlow,Pytorch, MXNet 等。 + * NNI 为作业定义了统一而简单的规范。 + * 如何使用 FrameworkController 的 MNIST 样例。 + +#### 改进用户体验 + +* 为 OpenPAI, Kubeflow 和 FrameworkController 模式提供更好的日志支持。 + * 改进后的日志架构能将尝试的 stdout/stderr 通过 HTTP POST 方式发送给 NNI 管理器。 NNI 管理器将 Trial 的 stdout/stderr 消息存储在本地日志文件中。 + * 在 WEB 界面上显示 Trial 日志的链接。 +* 支持将最终结果显示为键值对。 + +## 发布 0.4.1 - 12/14/2018 + +### 主要功能 + +#### 支持新的 Tuner + +* 支持新 Tuner [network morphism](./HowToChooseTuner.md#NetworkMorphism) + +#### 改进训练平台 + +* 将[Kubeflow 训练服务](KubeflowMode.md)的依赖从 kubectl CLI 迁移到 [Kubernetes API](https://kubernetes.io/docs/concepts/overview/kubernetes-api/) 客户端。 +* Kubeflow 训练服务支持 [Pytorch-operator](https://github.com/kubeflow/pytorch-operator)。 +* 改进将本地代码文件上传到 OpenPAI HDFS 的性能。 +* 修复 OpenPAI 在 WEB 界面的 Bug:当 OpenPAI 认证过期后,Web 界面无法更新 Trial 作业的状态。 + +#### 改进 NNICTL + +* 在 nnictl 和 WEB 界面中显示 NNI 的版本信息。 可使用 **nnictl -v** 来显示安装的 NNI 版本。 + +#### 改进 WEB 界面 + +* 在 Experiment 运行中可修改并发数量 +* 增加指向 NNI Github 的反馈链接,可直接创建问题 +* 可根据指标,定制选择(最大或最小)的前 10 个 Trial。 +* 为 dispatcher 和 nnimanager 提供下载日志的功能 +* 为指标数值图提供自动缩放的数轴 +* 改进 Annotation,支持在搜索空间中显示实际的选项 + +### 新样例 + +* [FashionMnist](https://github.com/Microsoft/nni/tree/master/examples/trials/network_morphism),使用 network morphism Tuner +* 使用 PyTorch 的[分布式 MNIST 样例](https://github.com/Microsoft/nni/tree/master/examples/trials/mnist-distributed-pytorch) + +## 发布 0.4 - 12/6/2018 + +### 主要功能 + +* [Kubeflow 训练服务](./KubeflowMode.md) + * 支持 tf-operator + * Kubeflow 上的[分布式 Trial 样例](../examples/trials/mnist-distributed/dist_mnist.py) +* [网格搜索 Tuner](Builtin_Tuner.md#GridSearch) +* [Hyperband Tuner](Builtin_Tuner.md#Hyperband) +* 支持在 MAC 上运行 NNI Experiment +* WebUI + * 支持 hyperband Tuner + * 移除 tensorboard 按钮 + * 显示 Experiment 的错误消息 + * 显示搜索空间和 Trial 配置的行号 + * 支持通过指定的 Trial id 来搜索 + * 显示 Trial 的 hdfsLogPath + * 下载 Experiment 参数 + +### 其它 + +* 异步调度 +* 更新 Docker 文件,增加 pytorch 库 +* 重构 'nnictl stop' 过程,发送 SIGTERM 给 NNI 管理器进程,而不是调用停止 Restful API. +* 修复 OpenPAI 训练服务的 Bug + * 在 NNI 管理器中为 OpenPAI 集群配置文件支持 IP 配置(nniManagerIp),来修复用户计算机没有 eth0 设备的问题。 + * codeDir 中的文件数量上限改为1000,避免用户无意中填写了 root 目录。 + * 移除 OpenPAI 作业的 stdout 日志中无用的 ‘metrics is empty’。 在新指标被记录时,仅输出有用的消息,来减少用户检查 OpenPAI Trial 输出时的困惑。 + * 在 Trial keeper 的开始增加时间戳。 + +## 发布 0.3.0 - 11/2/2018 + +### NNICTL 的新功能和更新 + +* 支持同时运行多个 Experiment。 + + 在 v0.3 以前,NNI 仅支持一次运行一个 Experiment。 此版本开始,用户可以同时运行多个 Experiment。 每个 Experiment 都需要一个唯一的端口,第一个 Experiment 会像以前版本一样使用默认端口。 需要为其它 Experiment 指定唯一端口: + + ```bash + nnictl create --port 8081 --config + ``` + +* 支持更新最大 Trial 的数量。 使用 `nnictl update --help` 了解详情。 或参考 [NNICTL 说明](NNICTLDOC.md)来查看完整帮助。 + +### API 的新功能和更新 + +* 不兼容的改动:nn.get_parameters() 改为 nni.get_next_parameter。 所有以前版本的样例将无法在 v0.3 上运行,需要重新克隆 NNI 代码库获取新样例。 如果在自己的代码中使用了 NNI,也需要相应的更新。 + +* 新 API **nni.get_sequence_id()**。 每个 Trial 任务都会被分配一个唯一的序列数字,可通过 nni.get_sequence_id() API 来获取。 + + ```bash + git clone -b v0.3 https://github.com/Microsoft/nni.git + ``` + +* **nni.report_final_result(result)** API 对结果参数支持更多的数据类型。 + + 可用类型: + + * int + * float + * 包含有 'default' 键值的 dict,'default' 的值必须为 int 或 float。 dict 可以包含任何其它键值对。 + +### 支持新的 Tuner + +* **Batch Tuner(批处理调参器)** 会执行所有超参组合,可被用来批量提交 Trial 任务。 + +### 新样例 + +* 公共的 NNI Docker 映像: + + ```bash + docker pull msranni/nni:latest + ``` + +* 新的尝试样例: [NNI Sklearn 样例](https://github.com/Microsoft/nni/tree/master/examples/trials/sklearn) + +* 新的竞赛样例:[Kaggle Competition TGS Salt](https://github.com/Microsoft/nni/tree/master/examples/trials/kaggle-tgs-salt) + +### 其它 + +* 界面重构,参考[网页文档](WebUI.md),了解如何使用新界面。 +* 持续集成:NNI 已切换到 Azure pipelines。 +* [0.3.0 的已知问题](https://github.com/Microsoft/nni/labels/nni030knownissues)。 + +## 发布 0.2.0 - 9/29/2018 + +### 主要功能 + +* 支持 [OpenPAI](https://github.com/Microsoft/pai) (又称 pai) 训练平台 (参考[这里](./PAIMode.md)来了解如何在 pai 模式下提交 NNI 任务) + * 支持 pai 模式的训练服务。 NNI Trial 可发送至 OpenPAI 集群上运行 + * NNI Trial 输出 (包括日志和模型文件) 会被复制到 OpenPAI 的 HDFS 中。 +* 支持 [SMAC](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) Tuner (参考[这里](HowToChooseTuner.md),了解如何使用 SMAC Tuner) + * [SMAC](https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf) 基于 Sequential Model-Based Optimization (SMBO). 它会利用使用过的结果好的模型(高斯随机过程模型),并将随机森林引入到 SMBO 中,来处理分类参数。 NNI 的 SMAC 通过包装 [SMAC3](https://github.com/automl/SMAC3) 来支持。 +* 支持将 NNI 安装在 [conda](https://conda.io/docs/index.html) 和 Python 虚拟环境中。 +* 其它 + * 更新 ga squad 样例与相关文档 + * 用户体验改善及 Bug 修复 + +### 已知问题 + +[0.2.0 的已知问题](https://github.com/Microsoft/nni/labels/nni020knownissues)。 + +## 发布 0.1.0 - 9/10/2018 (首个版本) + +首次发布 Neural Network Intelligence (NNI)。 + +### 主要功能 + +* 安装和部署 + * 支持 pip 和源代码安装 + * 支持本机(包括多 GPU 卡)训练和远程多机训练模式 +* Tuner ,Assessor 和 Trial + * 支持的自动机器学习算法包括: hyperopt_tpe, hyperopt_annealing, hyperopt_random, 和 evolution_tuner。 + * 支持 Assessor(提前终止)算法包括:medianstop。 + * 提供 Python API 来自定义 Tuner 和 Assessor + * 提供 Python API 来包装 Trial 代码,以便能在 NNI 中运行 +* Experiment + * 提供命令行工具 'nnictl' 来管理 Experiment + * 提供网页界面来查看并管理 Experiment +* 持续集成 + * 使用 Ubuntu 的 [travis-ci](https://github.com/travis-ci) 来支持持续集成 +* 其它 + * 支持简单的 GPU 任务调度 + +### 已知问题 + +[0.1.0 的已知问题](https://github.com/Microsoft/nni/labels/nni010knownissues)。 \ No newline at end of file diff --git a/zh_CN/docs/Reference.rst b/zh_CN/docs/Reference.rst new file mode 100644 index 0000000000..fa3131778d --- /dev/null +++ b/zh_CN/docs/Reference.rst @@ -0,0 +1,10 @@ +参考 +================== + +.. toctree:: + :maxdepth: 3 + + 命令行 + Annotation + 配置 + 搜索空间 \ No newline at end of file diff --git a/zh_CN/docs/RemoteMachineMode.md b/zh_CN/docs/RemoteMachineMode.md new file mode 100644 index 0000000000..87039ddf8a --- /dev/null +++ b/zh_CN/docs/RemoteMachineMode.md @@ -0,0 +1,65 @@ +# 在多机上运行 Experiment + +NNI 支持通过 SSH 通道在多台计算机上运行 Experiment,称为 `remote` 模式。 NNI 需要这些计算机的访问权限,并假定已配置好了深度学习训练环境。 + +例如:有三台服务器,登录账户为 `bob`(注意:账户不必在各台计算机上一致): + +| IP | 用户名 | 密码 | +| -------- | --- | ------ | +| 10.1.1.1 | bob | bob123 | +| 10.1.1.2 | bob | bob123 | +| 10.1.1.3 | bob | bob123 | + +## 设置 NNI 环境 + +按照[指南](QuickStart.md)在每台计算机上安装 NNI。 + +## 运行 Experiment + +在另一台计算机,或在其中任何一台上安装 NNI,并运行 nnictl 工具。 + +以 `examples/trials/mnist-annotation` 为例。 `cat ~/nni/examples/trials/mnist-annotation/config_remote.yml` 来查看详细配置: + +```yaml +authorName: default +experimentName: example_mnist +trialConcurrency: 1 +maxExecDuration: 1h +maxTrialNum: 10 +#可选项: local, remote, pai +trainingServicePlatform: remote +#可选项: true, false +useAnnotation: true +tuner: + #可选项: TPE, Random, Anneal, Evolution, BatchTuner + #SMAC (SMAC 需要通过 nnictl 安装) + builtinTunerName: TPE + classArgs: + #可选项: maximize, minimize + optimize_mode: maximize +trial: + command: python3 mnist.py + codeDir: . + gpuNum: 0 +#local 模式下 machineList 可为空 +machineList: + - ip: 10.1.1.1 + username: bob + passwd: bob123 + #使用默认端口 22 时,该配置可跳过 + #port: 22 + - ip: 10.1.1.2 + username: bob + passwd: bob123 + - ip: 10.1.1.3 + username: bob + passwd: bob123 +``` + +填好 `machineList` 部分,然后运行: + +```bash +nnictl create --config ~/nni/examples/trials/mnist-annotation/config_remote.yml +``` + +来启动 Experiment。 \ No newline at end of file diff --git a/zh_CN/docs/SQuAD_evolution_examples.md b/zh_CN/docs/SQuAD_evolution_examples.md new file mode 100644 index 0000000000..536ca217d0 --- /dev/null +++ b/zh_CN/docs/SQuAD_evolution_examples.md @@ -0,0 +1,312 @@ +# 在阅读理解上使用自动模型架构搜索 + +该样例展示了如何使用遗传算法为阅读理解任务找到好的模型架构。 + +## 1. 搜索空间 + +对于阅读理解项目,注意力和循环神经网络(RNN)已经被证明非常有效。 使用的搜索空间如下: + +1. IDENTITY (Effectively 表示继续训练)。 +2. INSERT-RNN-LAYER (插入 LSTM。 在 Experiment 中比较了 GRU 和 LSTM 的性能后,我们决定在这里采用 LSTM。) +3. REMOVE-RNN-LAYER +4. INSERT-ATTENTION-LAYER (插入注意力层。) +5. REMOVE-ATTENTION-LAYER +6. ADD-SKIP (在随机层之间一致). +7. REMOVE-SKIP (移除随机跳过). + +![](https://github.com/Microsoft/nni/tree/master/examples/trials/ga_squad/ga_squad.png) + +### 新版本 + +另一个时间更快,性能更好的版本正在开发中。 很快将发布。 + +## 2. 如何在本机运行此样例? + +### 2.1 使用下载脚本来下载数据 + +执行下列命令来下载所需要的数据: + +```bash +chmod +x ./download.sh +./download.sh +``` + +或手动下载 + +1. 在 https://rajpurkar.github.io/SQuAD-explorer/ 下载 "dev-v1.1.json" 和 "train-v1.1.json"。 + +```bash +wget https://rajpurkar.github.io/SQuAD-explorer/dataset/train-v1.1.json +wget https://rajpurkar.github.io/SQuAD-explorer/dataset/dev-v1.1.json +``` + +2. 在 https://nlp.stanford.edu/projects/glove/ 下载 "glove.840B.300d.txt"。 + +```bash +wget http://nlp.stanford.edu/data/glove.840B.300d.zip +unzip glove.840B.300d.zip +``` + +### 2.2 更新配置 + +修改 `nni/examples/trials/ga_squad/config.yml`,以下是默认配置: + +```yaml +authorName: default +experimentName: example_ga_squad +trialConcurrency: 1 +maxExecDuration: 1h +maxTrialNum: 1 +#可选项: local, remote +trainingServicePlatform: local +#可选项: true, false +useAnnotation: false +tuner: + codeDir: ~/nni/examples/tuners/ga_customer_tuner + classFileName: customer_tuner.py + className: CustomerTuner + classArgs: + optimize_mode: maximize +trial: + command: python3 trial.py + codeDir: ~/nni/examples/trials/ga_squad + gpuNum: 0 +``` + +在 "Trial" 部分中,如果需要使用 GPU 来进行架构搜索,可将 `gpuNum` 从 `0` 改为 `1`。 根据训练时长,可以增加 `maxTrialNum` 和 `maxExecDuration`。 + +### 2.3 提交任务 + +```bash +nnictl create --config ~/nni/examples/trials/ga_squad/config.yml +``` + +## 3 在 OpenPAI 上运行此样例 + +根据上传大小的限制,仅上传源代码,并在训练过程中下载数据。 本 Experiment 需要的内存 `memoryMB >= 32G`,训练过程可能需要数小时。 + +### 3.1 更新配置 + +修改 `nni/examples/trials/ga_squad/config_pai.yml`,以下是默认配置: + +```yaml +authorName: default +experimentName: example_ga_squad +trialConcurrency: 1 +maxExecDuration: 1h +maxTrialNum: 10 +#可选项: local, remote, pai +trainingServicePlatform: pai +#可选项: true, false +useAnnotation: false +# nni_manager 的 ip +nniManagerIp: 10.10.10.10 +tuner: + codeDir: ../../tuners/ga_customer_tuner + classFileName: customer_tuner.py + className: CustomerTuner + classArgs: + optimize_mode: maximize +trial: + command: chmod +x ./download.sh && ./download.sh && python3 trial.py + codeDir: https://github.com/Microsoft/nni/tree/master/examples/tuners/ga_customer_tuner + gpuNum: 0 + cpuNum: 1 + memoryMB: 32869 + #在 OpenPAI 上运行 NNI 任务的 Docker 映像 + image: msranni/nni:latest + #在 OpenPAI 的 hdfs 目录上存储数据的目录,如:'hdfs://host:port/directory' + dataDir: hdfs://10.10.10.10:9000/username/nni + #在 OpenPAI 的 hdfs 目录上存储输出的目录,如:'hdfs://host:port/directory' + outputDir: hdfs://10.10.10.10:9000/username/nni +paiConfig: + #登录 OpenPAI 的用户名 + userName: username + #登录 OpenPAI 的密码 + passWord: password + # OpenPAI 的 RESTful 服务器地址 + host: 10.10.10.10 +``` + +将默认值改为个人账户和服务器信息。 包括 `nniManagerIp`, `dataDir`, `outputDir`, `userName`, `passWord` 和 `host`。 + +在 "trial" 部分中,如果需要使用 GPU 来进行架构搜索,可将 `gpuNum` 从 `0` 改为 `1`。 根据训练时长,可以增加 `maxTrialNum` 和 `maxExecDuration`。 + +`trialConcurrency` 是并发运行的 Trial 的数量。如果将 `gpuNum` 设置为 1,则需要与 GPU 数量一致。 + +### 3.2 提交任务 + +```bash +nnictl create --config ~/nni/examples/trials/ga_squad/config_pai.yml +``` + +## 4. 代码实现 + +### 4.1 实现方法 + +基于进化算法架构的问答和其它样例一样,有两个部分:Trial 和 Tuner。 + +### 4.2 Trial + +Trial 有大量的文件、函数和类。 这里只简单介绍最重要的文件: + +* `attention.py` 包含了 Tensorflow 注意力算法的实现。 +* `data.py` 包含了数据处理函数。 +* `evaluate.py` 包含了评估脚本。 +* `graph.py` 包含了计算图的定义。 +* `rnn.py` 包含了 TensorFlow 的 GRU 实现。 +* `train_model.py` 是整个文档模型的封装。 + +这些文件中,`trial.py` 和 `graph_to_tf.py` 非常特别。 + +`graph_to_tf.py` 有一个叫做 `graph_to_network`的函数,其框架代码如下: + +```python +def graph_to_network(input1, + input2, + input1_lengths, + input2_lengths, + graph, + dropout_rate, + is_training, + num_heads=1, + rnn_units=256): + topology = graph.is_topology() + layers = dict() + layers_sequence_lengths = dict() + num_units = input1.get_shape().as_list()[-1] + layers[0] = input1*tf.sqrt(tf.cast(num_units, tf.float32)) + \ + positional_encoding(input1, scale=False, zero_pad=False) + layers[1] = input2*tf.sqrt(tf.cast(num_units, tf.float32)) + layers[0] = dropout(layers[0], dropout_rate, is_training) + layers[1] = dropout(layers[1], dropout_rate, is_training) + layers_sequence_lengths[0] = input1_lengths + layers_sequence_lengths[1] = input2_lengths + for _, topo_i in enumerate(topology): + if topo_i == '|': + continue + if graph.layers[topo_i].graph_type == LayerType.input.value: + # ...... + elif graph.layers[topo_i].graph_type == LayerType.attention.value: + # ...... + # 处理更多层 +``` + +正如我们看到的,这个函数实际上是个编译器。它将内部模型的 DAG 配置`图`(在`模型配置格式`章节介绍)转换为 Tensorflow 的计算图。 + +```python +topology = graph.is_topology() +``` + +将内部图表示进行拓扑排序,代码在下列循环中: + +```python +for _, topo_i in enumerate(topology): +``` + +执行实际转换,将每层映射为 TensorFlow 计算图中的一部分。 + +### 4.3 Tuner + +Tuner 比 Trial 代码简单很多。 它们共用了同样的 `graph.py`。 此外,Tuner 有 `customer_tuner.py`,其中最重要的类是 `CustomerTuner`: + +```python +class CustomerTuner(Tuner): + # ...... + + def generate_parameters(self, parameter_id): + """将一组 Trial 图配置作为序列化对象返回。 + parameter_id : int + """ + if len(self.population) <= 0: + logger.debug("the len of poplution lower than zero.") + raise Exception('The population is empty') + pos = -1 + for i in range(len(self.population)): + if self.population[i].result == None: + pos = i + break + if pos != -1: + indiv = copy.deepcopy(self.population[pos]) + self.population.pop(pos) + temp = json.loads(graph_dumps(indiv.config)) + else: + random.shuffle(self.population) + if self.population[0].result > self.population[1].result: + self.population[0] = self.population[1] + indiv = copy.deepcopy(self.population[0]) + self.population.pop(1) + indiv.mutation() + graph = indiv.config + temp = json.loads(graph_dumps(graph)) + + # ...... +``` + +重载函数 `generate_parameters` 实现了简单的变异算法。 代码如下: + +```python + if self.population[0].result > self.population[1].result: + self.population[0] = self.population[1] + indiv = copy.deepcopy(self.population[0]) +``` + +控制突变过程。 它会在种群中随机取出两个个体,对更好结果的一个保留数据,并突变另一个。 + +### 4.4 模型配置格式 + +这是模型配置的样例,在架构搜索过程中,从 Tuner 传入 Trial 的代码。 + +```json +{ + "max_layer_num": 50, + "layers": [ + { + "input_size": 0, + "type": 3, + "output_size": 1, + "input": [], + "size": "x", + "output": [4, 5], + "is_delete": false + }, + { + "input_size": 0, + "type": 3, + "output_size": 1, + "input": [], + "size": "y", + "output": [4, 5], + "is_delete": false + }, + { + "input_size": 1, + "type": 4, + "output_size": 0, + "input": [6], + "size": "x", + "output": [], + "is_delete": false + }, + { + "input_size": 1, + "type": 4, + "output_size": 0, + "input": [5], + "size": "y", + "output": [], + "is_delete": false + }, + {"Comment": "实际图会有更多层。"} + ] +} +``` + +每个模型配置都有一个 "layers" 部分,这是层定义的 JSON 列表。 每层的定义也是一个 JSON 对象: + +* `type` 是层的类型。 0, 1, 2, 3, 4 对应注意力、自注意力、RNN、输入和输出层。 +* `size` 是输出的长度。 "x", "y" 对应文档长度和问题长度。 +* `input_size` 是该层的输入数量。 +* `input` 表示输入层的索引。 +* `output` 是输出层的索引,该层会作为这些层的输入。 +* `is_delete` 表示此层是否可用。 \ No newline at end of file diff --git a/zh_CN/docs/SearchSpaceSpec.md b/zh_CN/docs/SearchSpaceSpec.md new file mode 100644 index 0000000000..7a793e6173 --- /dev/null +++ b/zh_CN/docs/SearchSpaceSpec.md @@ -0,0 +1,93 @@ +# 搜索空间 + +## 概述 + +在 NNI 中,Tuner 会根据搜索空间来取样生成参数和网络架构。搜索空间通过 JSON 文件来定义。 + +要定义搜索空间,需要定义变量名称、采样策略的类型及其参数。 + +* 搜索空间样例如下: + +```yaml +{ + "dropout_rate":{"_type":"uniform","_value":[0.1,0.5]}, + "conv_size":{"_type":"choice","_value":[2,3,5,7]}, + "hidden_size":{"_type":"choice","_value":[124, 512, 1024]}, + "batch_size":{"_type":"choice","_value":[50, 250, 500]}, + "learning_rate":{"_type":"uniform","_value":[0.0001, 0.1]} +} + +``` + +将第一行作为样例。 `dropout_rate` 定义了一个变量,先验分布为均匀分布,范围从 `0.1` 到 `0.5`。 + +## 类型 + +所有采样策略和参数如下: + +* {"_type":"choice","_value":options} + + * 这表示变量值应该是列表中的选项之一。 选项的元素也可以是 [nested](嵌套的)随机表达式。 在这种情况下,随机选项仅会在条件满足时出现。 + +* {"_type":"randint","_value":[upper]} + + * 此变量为范围 [0, upper) 之间的随机整数。 这种分布的语义,在较远整数与附近整数之间的损失函数无太大关系, 这是用来描述随机种子的较好分布。 如果损失函数与较近的整数更相关,则应该使用某个"quantized"的连续分布,如quniform, qloguniform, qnormal 或 qlognormal。 注意,如果需要改动数字下限,可以使用 `quniform`。 + +* {"_type":"uniform","_value":[low, high]} + + * 变量是 low 和 high 之间均匀分布的值。 + * 当优化时,此变量值会在两侧区间内。 + +* {"_type":"quniform","_value":[low, high, q]} + + * 这表示变量值会类似于 round(uniform(low, high) / q) * q + * 适用于离散,同时反映了某种"平滑"的数值,但上下限都有限制。 如果需要从范围 [low, high] 中均匀选择整数,可以如下定义 `_value`:`[low, high, 1]`。 + +* {"_type":"loguniform","_value":[low, high]} + + * 变量值在范围 [low, high] 中是 loguniform 分布,如 exp(uniform(log(low), log(high))),因此返回值是对数均匀分布的。 + * 当优化时,此变量必须是正数。 + +* {"_type":"qloguniform","_value":[low, high, q]} + + * 这表示变量值会类似于 round(loguniform(low, high)) / q) * q + * 适用于值是“平滑”的离散变量,但上下限均有限制。 + +* {"_type":"normal","_value":[label, mu, sigma]} + + * 变量值为实数,且为正态分布,均值为 mu,标准方差为 sigma。 优化时,此变量不受约束。 + +* {"_type":"qnormal","_value":[label, mu, sigma, q]} + + * 这表示变量值会类似于 round(normal(mu, sigma) / q) * q + * 适用于在 mu 周围的离散变量,且没有上下限限制。 + +* {"_type":"lognormal","_value":[label, mu, sigma]} + + * 变量值为 exp(normal(mu, sigma)) 分布,范围值是对数的正态分布。 当优化时,此变量必须是正数。 + +* {"_type":"qlognormal","_value":[label, mu, sigma, q]} + + * 这表示变量值会类似于 round(exp(normal(mu, sigma)) / q) * q + * 适用于值是“平滑”的离散变量,但某一边有界。 + +## 每种 Tuner 支持的搜索空间类型 + +| | choice | randint | uniform | quniform | loguniform | qloguniform | normal | qnormal | lognormal | qlognormal | +|:-------------------:|:--------:|:--------:|:--------:|:--------:|:----------:|:-----------:|:--------:|:--------:|:---------:|:----------:| +| TPE Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Random Search Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Anneal Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Evolution Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| SMAC Tuner | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | | +| Batch Tuner | ✓ | | | | | | | | | | +| Grid Search Tuner | ✓ | | | ✓ | | ✓ | | | | | +| Hyperband Advisor | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Metis Tuner | ✓ | ✓ | ✓ | ✓ | | | | | | | + +注意,在 Grid Search Tuner 中,为了使用方便 `quniform` 和 `qloguniform` 的定义也有所改变,其中的 q 表示采样值的数量。 详情如下: + +* 类型 'quniform' 接收三个值 [low, high, q], 其中 [low, high] 指定了范围,而 'q' 指定了会被均匀采样的值的数量。 注意 q 至少为 2。 它的第一个采样值为 'low',每个采样值都会比前一个大 (high-low)/q 。 +* 类型 'qloguniform' 的行为与 'quniform' 类似,不同处在于首先将范围改为 [log(low), log(high)] 采样后,再将数值还原。 + +注意 Metis Tuner 当前仅支持在 `choice` 中使用数值。 \ No newline at end of file diff --git a/zh_CN/docs/SetupNNIDeveloperEnvironment.md b/zh_CN/docs/SetupNNIDeveloperEnvironment.md new file mode 100644 index 0000000000..e243be2a11 --- /dev/null +++ b/zh_CN/docs/SetupNNIDeveloperEnvironment.md @@ -0,0 +1,60 @@ +**设置 NNI 开发环境** + +=== + +## 调试 NNI 源代码的最佳实践 + +要调试 NNI 源代码,需要 Ubuntu 16.04 或更高版本系统的开发环境,并需要安装 Python 3.x 以及 pip3,然后遵循以下步骤。 + +**1. 克隆源代码** + +运行命令 + + git clone https://github.com/Microsoft/nni.git + + +来克隆源代码 + +**2. 准备调试环境并安装依赖项** + +将目录切换到源码目录,然后运行命令 + + make install-dependencies + + +来安装环境的依赖项工具 + +**3. 生成源代码** + +运行命令 + + make build + + +来生成源代码 + +**4. 将 NNI 安装到开发环境中** + +运行命令 + + make dev-install + + +来安装分发内容到开发环境,并创建 cli 脚本 + +**5. 检查环境是否正确** + +Trial 启动 Experiment 来检查环境。 例如,运行命令 + + nnictl create --config ~/nni/examples/trials/mnist/config.yml + + +并打开网页界面查看 + +**6. 重新部署** + +代码改动后,用**第 3 步**来重新生成代码,改动会立即生效。 + +* * * + +最后,希望一切顺利。 参考[贡献](./CONTRIBUTING.md)文档,来了解更多创建拉取请求或问题的指南。 \ No newline at end of file diff --git a/zh_CN/docs/Trials.md b/zh_CN/docs/Trials.md new file mode 100644 index 0000000000..0df81cf319 --- /dev/null +++ b/zh_CN/docs/Trials.md @@ -0,0 +1,141 @@ +# 实现 NNI 的 Trial(尝试)代码 + +**Trial(尝试)**是将一组参数组合(例如,超参)在模型上独立的一次尝试。 + +定义 NNI 的 Trial,需要首先定义参数组,并更新模型代码。 NNI 有两种方法来实现 Trial:[NNI API](#nni-api) 以及 [NNI Python annotation](#nni-annotation)。 参考[这里的](#more-examples)更多 Trial 样例。 + + + +## NNI API + +### 第一步:准备搜索空间参数文件。 + +样例如下: + +```json +{ + "dropout_rate":{"_type":"uniform","_value":[0.1,0.5]}, + "conv_size":{"_type":"choice","_value":[2,3,5,7]}, + "hidden_size":{"_type":"choice","_value":[124, 512, 1024]}, + "learning_rate":{"_type":"uniform","_value":[0.0001, 0.1]} +} +``` + +参考 [SearchSpaceSpec.md](./SearchSpaceSpec.md) 进一步了解搜索空间。 Tuner 会根据搜索空间来生成配置,即从每个超参的范围中选一个值。 + +### 第二步:更新模型代码 + +* Import NNI + + 在 Trial 代码中加上 `import nni`。 + +* 从 Tuner 获得参数值 + +```python +RECEIVED_PARAMS = nni.get_next_parameter() +``` + +`RECEIVED_PARAMS` 是一个对象,如: `{"conv_size": 2, "hidden_size": 124, "learning_rate": 0.0307, "dropout_rate": 0.2029}`. + +* 定期返回指标数据(可选) + +```python +nni.report_intermediate_result(metrics) +``` + +`指标`可以是任意的 Python 对象。 如果使用了 NNI 内置的 Tuner/Assessor,`指标`只可以是两种类型:1) 数值类型,如 float、int, 2) dict 对象,其中必须由键名为 `default`,值为数值的项目。 `指标`会发送给[Assessor](Builtin_Assessors.md)。 通常,`指标`是损失值或精度。 + +* 返回配置的最终性能 + +```python +nni.report_final_result(metrics) +``` + +`指标`也可以是任意的 Python 对象。 如果使用了内置的 Tuner/Assessor,`指标`格式和 `report_intermediate_result` 中一样,这个数值表示模型的性能,如精度、损失值等。 `指标`会发送给 [Tuner](Builtin_Tuner.md)。 + +### 第三步:启用 NNI API + +要启用 NNI 的 API 模式,需要将 useAnnotation 设置为 *false*,并提供搜索空间文件的路径(即第一步中定义的文件): + +```yaml +useAnnotation: false +searchSpacePath: /path/to/your/search_space.json +``` + +参考 [这里](ExperimentConfig.md) 进一步了解如何配置实验。 + +*参考[这里](sdk_reference.md),了解更多 NNI API (例如:`nni.get_sequence_id()`)。 + + + +## NNI Annotation + +另一种实现 Trial 的方法是使用 Python 注释来标记 NNI。 就像其它 Python Annotation,NNI 的 Annotation 和代码中的注释一样。 不需要在代码中做大量改动。 只需要添加一些 NNI Annotation,就能够: + +* 标记需要调整的参数变量 +* 指定变量的搜索空间范围 +* 标记哪个变量需要作为中间结果范围给 `Assessor` +* 标记哪个变量需要作为最终结果(例如:模型精度)返回给 `Tuner`。 + +同样以 MNIST 为例,只需要两步就能用 NNI Annotation 来实现 Trial 代码。 + +### 第一步:在代码中加入 Annotation + +下面是加入了 Annotation 的 TensorFlow 代码片段,高亮的 4 行 Annotation 用于: + +1. 调优 batch\_size 和 dropout\_rate +2. 每执行 100 步返回 test\_acc +3. 最后返回 test\_acc 作为最终结果。 + +新添加的代码都是注释,不会影响以前的执行逻辑。因此这些代码仍然能在没有安装 NNI 的环境中运行。 + +```diff +with tf.Session() as sess: + sess.run(tf.global_variables_initializer()) ++ """@nni.variable(nni.choice(50, 250, 500), name=batch_size)""" + batch_size = 128 + for i in range(10000): + batch = mnist.train.next_batch(batch_size) ++ """@nni.variable(nni.choice(1, 5), name=dropout_rate)""" + dropout_rate = 0.5 + mnist_network.train_step.run(feed_dict={mnist_network.images: batch[0], + mnist_network.labels: batch[1], + mnist_network.keep_prob: dropout_rate}) + if i % 100 == 0: + test_acc = mnist_network.accuracy.eval( + feed_dict={mnist_network.images: mnist.test.images, + mnist_network.labels: mnist.test.labels, + mnist_network.keep_prob: 1.0}) ++ """@nni.report_intermediate_result(test_acc)""" + + test_acc = mnist_network.accuracy.eval( + feed_dict={mnist_network.images: mnist.test.images, + mnist_network.labels: mnist.test.labels, + mnist_network.keep_prob: 1.0}) + ++ """@nni.report_final_result(test_acc)""" +``` + +**注意**: + +* `@nni.variable` 会对它的下面一行进行修改,左边被赋值变量必须在 `@nni.variable` 的 `name` 参数中指定。 +* `@nni.report_intermediate_result`/`@nni.report_final_result` 会将数据发送给 Assessor、Tuner。 + +Annotation 的语法和用法等,参考 [Annotation](AnnotationSpec.md)。 + +### 第二步:启用 Annotation + +在 YAML 配置文件中设置 *useAnnotation* 为 true 来启用 Annotation: + + useAnnotation: true + + + + +## 更多 Trial 的样例 + +* [MNIST 样例](mnist_examples.md) +* [为 CIFAR 10 分类找到最佳的 optimizer](cifar10_examples.md) +* [如何在 NNI 调优 SciKit-learn 的参数](sklearn_examples.md) +* [在阅读理解上使用自动模型架构搜索。](SQuAD_evolution_examples.md) +* [如何在 NNI 上调优 GBDT](gbdt_example.md) \ No newline at end of file diff --git a/zh_CN/docs/Tutorials.rst b/zh_CN/docs/Tutorials.rst new file mode 100644 index 0000000000..6cb0b392dc --- /dev/null +++ b/zh_CN/docs/Tutorials.rst @@ -0,0 +1,12 @@ +###################### +教程 +###################### + +.. toctree:: + 安装 + 实现 Trial + Tuner + Assessor + Web 界面 + 训练平台 + 高级功能 \ No newline at end of file diff --git a/zh_CN/docs/WebUI.md b/zh_CN/docs/WebUI.md new file mode 100644 index 0000000000..fe103da21c --- /dev/null +++ b/zh_CN/docs/WebUI.md @@ -0,0 +1,53 @@ +# Web 界面 + +## 查看概要页面 + +点击标签 "Overview"。 + +* 查看 Experiment 的配置和搜索空间内容。 +* 支持下载 Experiment 结果。 + +![](./img/webui-img/over1.png) + +* 查看最好结果的 Trial。 + +![](./img/webui-img/over2.png) + +## 查看任务默认指标 + +点击 "Default Metric" 来查看所有 Trial 的点图。 悬停鼠标来查看默认指标和搜索空间信息。 + +![](./img/accuracy.png) + +## 查看超参 + +点击 "Hyper Parameter" 标签查看图像。 + +* 可选择百分比查看最好的 Trial。 +* 选择两个轴来交换位置。 + +![](./img/hyperPara.png) + +## 查看 Trial 运行时间 + +点击 "Trial Duration" 标签来查看柱状图。 + +![](./img/trial_duration.png) + +## 查看 Trial 状态 + +点击 "Trials Detail" 标签查看所有 Trial 的状态。 特别是: + +* Trial 详情:Trial 的 id,持续时间,开始时间,结束时间,状态,精度和搜索空间。 + +![](./img/webui-img/detail-local.png) + +* 如果在 OpenPAI 或 Kubeflow 平台上运行,还可以看到 hdfsLog。 + +![](./img/webui-img/detail-pai.png) + +* Kill: 可终止正在运行的任务。 +* 支持搜索某个特定的 Trial。 +* 中间结果图。 + +![](./img/intermediate.png) \ No newline at end of file diff --git a/zh_CN/docs/advanced.rst b/zh_CN/docs/advanced.rst new file mode 100644 index 0000000000..7a227ab00e --- /dev/null +++ b/zh_CN/docs/advanced.rst @@ -0,0 +1,6 @@ +高级功能 +===================== + +.. toctree:: + 多阶段 + 高级网络架构搜索(AdvancedNAS) \ No newline at end of file diff --git a/zh_CN/docs/assessors.rst b/zh_CN/docs/assessors.rst new file mode 100644 index 0000000000..ed134bc079 --- /dev/null +++ b/zh_CN/docs/assessors.rst @@ -0,0 +1,17 @@ +Assessor(评估器) +============== +为了节省计算资源,在 NNI 中可通过创建 **Assessor**,来配置提前终止策略。 + +Assessor 从 Trial 中接收中间结果,并通过指定的算法决定此 Trial 是否应该终止。 一旦 Trial 满足了提前终止策略(这表示 Assessor 认为最终结果不会太好),Assessor 会终止此 Trial,并将其状态标志为 `"EARLY_STOPPED"`。 + +这是 MNIST 在使用了 'Curvefitting' Assessor 的 'maximize' 模式后的实验结果,可以看到 Assessor 成功的将大量最终结果不好的 Trial **提前结束**了。 使用 Assessor,能在相同的计算资源下,得到更好的结果。 + +*实现代码:config_assessor.yml * + +.. image:: ./img/Assessor.png + +与 Tuner 类似,可使用内置的 Assessor,也可以自定义 Assessor。 参考下列教程,获取详细信息: + +.. toctree:: + 内置 Assessor + 自定义 Assessor diff --git a/zh_CN/docs/cifar10_examples.md b/zh_CN/docs/cifar10_examples.md new file mode 100644 index 0000000000..382eaf2592 --- /dev/null +++ b/zh_CN/docs/cifar10_examples.md @@ -0,0 +1,74 @@ +# CIFAR-10 样例 + +## 概述 + +[CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html) 分类是机器学习中常用的基准问题。 CIFAR-10 数据集是图像的集合。 它也是机器学习领域最常用的数据集之一,包含 60000 万张 32x32 的图像,共有 10 个分类。 因此以 CIFAR-10 分类为例来介绍 NNI 的用法。 + +### **目标** + +总所周知,模型 optimizer (优化器)的选择直接影响了最终指标的性能。 本教程的目标是**调优出性能更好的优化器**,从而为图像识别训练出一个相对较小的卷积网络(CNN)。 + +本例中,选择了以下常见的深度学习优化器: + +> "SGD", "Adadelta", "Adagrad", "Adam", "Adamax" + +### **实验** + +#### 准备 + +此样例需要安装 PyTorch。 PyTorch 安装包需要选择所基于的 Python 和 CUDA 版本。 + +这是环境 python==3.5 且 cuda == 8.0 的样例,然后用下列命令来安装 [ PyTorch](https://pytorch.org/): + +```bash +python3 -m pip install http://download.pytorch.org/whl/cu80/torch-0.4.1-cp35-cp35m-linux_x86_64.whl +python3 -m pip install torchvision +``` + +#### NNI 与 CIFAR-10 + +**搜索空间** + +正如本文目标,要为 CIFAR-10 找到最好的`优化器`。 使用不同的优化器时,还要相应的调整`学习率`和`网络架构`。 因此,选择这三个参数作为超参,并创建如下的搜索空间。 + +```json +{ + "lr":{"_type":"choice", "_value":[0.1, 0.01, 0.001, 0.0001]}, + "optimizer":{"_type":"choice", "_value":["SGD", "Adadelta", "Adagrad", "Adam", "Adamax"]}, + "model":{"_type":"choice", "_value":["vgg", "resnet18", "googlenet", "densenet121", "mobilenet", "dpn92", "senet18"]} +} +``` + +*实现代码:[search_space.json](https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/search_space.json)* + +**Trial(尝试)** + +这是超参集合的训练代码,关注以下几点: + +* 使用 `nni.get_next_parameter()` 来获取下一组训练的超参组合。 +* 使用 `nni.report_intermediate_result(acc)` 在每个 epoch 结束时返回中间结果。 +* 使用 `nni.report_intermediate_result(acc)` 在每个 Trial 结束时返回最终结果。 + +*实现代码:[main.py](https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/main.py)* + +也可以直接使用以前的代码来修改,参考:[如何编写 Trial](./Trials.md)。 + +**配置** + +这是在本机运行 Experiment 的样例(多GPU): + +代码:[examples/trials/cifar10_pytorch/config.yml](https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/config.yml) + +这是在 OpenPAI 上运行 Experiment 的样例: + +代码:[examples/trials/cifar10_pytorch/config_pai.yml](https://github.com/Microsoft/nni/blob/master/examples/trials/cifar10_pytorch/config_pai.yml) + +*完整样例:[examples/trials/cifar10_pytorch/](https://github.com/Microsoft/nni/tree/master/examples/trials/cifar10_pytorch)* + +#### 运行 Experiment + +以上即为 Experiment 的代码介绍,**从命令行运行 config.yml 文件来开始 Experiment**。 + +```bash +nnictl create --config nni/examples/trials/cifar10_pytorch/config.yml +``` \ No newline at end of file diff --git a/zh_CN/docs/conf.py b/zh_CN/docs/conf.py new file mode 100644 index 0000000000..739b347379 --- /dev/null +++ b/zh_CN/docs/conf.py @@ -0,0 +1,194 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + +from recommonmark.parser import CommonMarkParser +from recommonmark.transform import AutoStructify + +# -- Project information --------------------------------------------------- + +project = 'Neural Network Intelligence' +copyright = '2019, Microsoft' +author = 'Microsoft' + +# The short X.Y version +version = '' +# The full version, including alpha/beta/rc tags +release = 'v0.5' + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.mathjax', + 'sphinx_markdown_tables', + 'sphinxarg.ext', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +source_parsers = { + '.md': CommonMarkParser +} + +source_suffix = ['.rst', '.md'] + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + 'logo_only': True, +} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + +html_logo = './img/nni_logo_dark.png' + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'NeuralNetworkIntelligencedoc' + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'NeuralNetworkIntelligence.tex', 'Neural Network Intelligence Documentation', + 'Microsoft', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'neuralnetworkintelligence', 'Neural Network Intelligence Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'NeuralNetworkIntelligence', 'Neural Network Intelligence Documentation', + author, 'NeuralNetworkIntelligence', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + + +# -- Extension configuration ------------------------------------------------- +github_doc_root = 'https://github.com/Microsoft/nni/tree/master/doc/' +def setup(app): + app.add_config_value('recommonmark_config', { + 'url_resolver': lambda url: github_doc_root + url if url.startswith('..') else url, + 'enable_auto_toc_tree': False, + }, True) + app.add_transform(AutoStructify) diff --git a/zh_CN/docs/gbdt_example.md b/zh_CN/docs/gbdt_example.md new file mode 100644 index 0000000000..e5ddf02873 --- /dev/null +++ b/zh_CN/docs/gbdt_example.md @@ -0,0 +1,195 @@ +# GBDT + +梯度提升是机器学习中回归和分类问题的一种方法。它由一组弱分类模型所组成,决策树是其中的典型。 像其它提升方法一样,它也分步来构建模型,并使用可微分的损失函数来优化。 + +梯度决策树(gradient boosting decision tree,GBDT)有很多流行的实现,如:[LightGBM](https://github.com/Microsoft/LightGBM), [xgboost](https://github.com/dmlc/xgboost), 和 [catboost](https://github.com/catboost/catboost),等等。 GBDT 是解决经典机器学习问题的重要工具。 GBDT 也是一种鲁棒的算法,可以使用在很多领域。 GBDT 的超参越好,就能获得越好的性能。 + +NNI 是用来调优超参的平台,可以在 NNI 中尝试各种内置的搜索算法,并行运行多个 Trial。 + +## 1. GBDT 的搜索空间 + +GBDT 有很多超参,但哪些才会影响性能或计算速度呢? 基于实践经验,建议如下(以 lightgbm 为例): + +> * 获得更好的精度 + +* `learning_rate`. `学习率`的范围应该是 [0.001, 0.9]。 + +* `num_leaves`. `num_leaves` 与 `max_depth` 有关,不必两个值同时调整。 + +* `bagging_freq`. `bagging_freq` 可以是 [1, 2, 4, 8, 10]。 + +* `num_iterations`. 如果达到期望的拟合精度,可以调整得大一些。 + +> * 加速 + +* `bagging_fraction`. `bagging_fraction` 的范围应该是 [0.7, 1.0]。 + +* `feature_fraction`. `feature_fraction` 的范围应该是 [0.6, 1.0]。 + +* `max_bin`. + +> * 避免过拟合 + +* `min_data_in_leaf`. 取决于数据集。 + +* `min_sum_hessian_in_leaf`. 取决于数据集。 + +* `lambda_l1` 和 `lambda_l2`. + +* `min_gain_to_split`. + +* `num_leaves`. + +更多信息可参考: [lightgbm](https://lightgbm.readthedocs.io/en/latest/Parameters-Tuning.html) 和 [autoxgoboost](https://github.com/ja-thomas/autoxgboost/blob/master/poster_2018.pdf) + +## 2. 任务描述 + +"auto-gbdt" 基于 LightGBM 和 NNI。 数据集有[训练数据](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/data/regression.train)和[测试数据](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/data/regression.train)。 根据数据中的特征和标签,训练一个 GBDT 回归模型,用来做预测。 + +## 3. 如何运行 NNI + +### 3.1 准备 Trial 代码 + +基础代码如下: + +```python +... + +def get_default_parameters(): + ... + return params + + +def load_data(train_path='./data/regression.train', test_path='./data/regression.test'): + ''' + 读取或创建数据集 + ''' + ... + + return lgb_train, lgb_eval, X_test, y_test + +def run(lgb_train, lgb_eval, params, X_test, y_test): + # 训练 + gbm = lgb.train(params, + lgb_train, + num_boost_round=20, + valid_sets=lgb_eval, + early_stopping_rounds=5) + # 预测 + y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration) + + # 评估 + rmse = mean_squared_error(y_test, y_pred) ** 0.5 + print('The rmse of prediction is:', rmse) + +if __name__ == '__main__': + lgb_train, lgb_eval, X_test, y_test = load_data() + + PARAMS = get_default_parameters() + # train + run(lgb_train, lgb_eval, PARAMS, X_test, y_test) +``` + +### 3.2 准备搜索空间 + +如果要调优 `num_leaves`, `learning_rate`, `bagging_fraction` 和 `bagging_freq`, 可创建一个 [search_space.json](https://github.com/Microsoft/nni/blob/master/examples/trials/auto-gbdt/search_space.json) 文件: + +```json +{ + "num_leaves":{"_type":"choice","_value":[31, 28, 24, 20]}, + "learning_rate":{"_type":"choice","_value":[0.01, 0.05, 0.1, 0.2]}, + "bagging_fraction":{"_type":"uniform","_value":[0.7, 1.0]}, + "bagging_freq":{"_type":"choice","_value":[1, 2, 4, 8, 10]} +} +``` + +参考[这里](./SearchSpaceSpec.md),了解更多变量类型。 + +### 3.3 在代码中使用 NNI SDK + +```diff ++import nni +... + +def get_default_parameters(): + ... + return params + + +def load_data(train_path='./data/regression.train', test_path='./data/regression.test'): + ''' + 读取或创建数据集 + ''' + ... + + return lgb_train, lgb_eval, X_test, y_test + +def run(lgb_train, lgb_eval, params, X_test, y_test): + # 训练 + gbm = lgb.train(params, + lgb_train, + num_boost_round=20, + valid_sets=lgb_eval, + early_stopping_rounds=5) + # 预测 + y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration) + + # 评估 + rmse = mean_squared_error(y_test, y_pred) ** 0.5 + print('The rmse of prediction is:', rmse) + ++ nni.report_final_result(rmse) + +if __name__ == '__main__': + lgb_train, lgb_eval, X_test, y_test = load_data() + ++ RECEIVED_PARAMS = nni.get_next_parameter() + PARAMS = get_default_parameters() ++ PARAMS.update(RECEIVED_PARAMS) + PARAMS = get_default_parameters() + PARAMS.update(RECEIVED_PARAMS) + + # 训练 + run(lgb_train, lgb_eval, PARAMS, X_test, y_test) +``` + +### 3.4 编写配置文件并运行 + +在配置文件中,可以设置如下内容: + +* Experiment 设置:`trialConcurrency`, `maxExecDuration`, `maxTrialNum`, `trial gpuNum`, 等等。 +* 平台设置:`trainingServicePlatform`,等等。 +* 路径设置:`searchSpacePath`, `trial codeDir`,等等。 +* 算法设置:选择 `Tuner` 算法,`优化方向`,等等。 + +config.yml 样例: + +```yaml +authorName: default +experimentName: example_auto-gbdt +trialConcurrency: 1 +maxExecDuration: 10h +maxTrialNum: 10 +#可选项: local, remote, pai +trainingServicePlatform: local +searchSpacePath: search_space.json +#可选项: true, false +useAnnotation: false +tuner: + #可选项: TPE, Random, Anneal, Evolution, BatchTuner + #SMAC (SMAC 需要先通过 nnictl 来安装) + builtinTunerName: TPE + classArgs: + #可选项: maximize, minimize + optimize_mode: minimize +trial: + command: python3 main.py + codeDir: . + gpuNum: 0 +``` + +使用下面的命令启动 Experiment: + +```bash +nnictl create --config ./config.yml +``` \ No newline at end of file diff --git a/zh_CN/docs/img/3_steps.jpg b/zh_CN/docs/img/3_steps.jpg new file mode 100644 index 0000000000000000000000000000000000000000..291ea3ba2a5fa4cfc3cf294b0d9f9adc246e9340 GIT binary patch literal 79533 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≤znyLR!k{QBA52Ke-7*DiMcy<0cUgB=%`Y|yFoFKjlH^=fC3{lK_~ z9ITv54WN*R^(>N#$!k}r#dqdh;ddMMHC5v+ohm%Pcs6{0_`>n-O+!h3-NPqt9eHp~ z_x!QLhbHx(zPz=cPfvT#v(KxSC$aM@A)4-PAa{3nC4KZ_>KK5m&a?3AaRUVf39HGm zMRs#&`~AG1xKH`(eb=eodP08{o?f^C-}_g=WS=-^-v4;s?8@i)>;1;@_xOMICB8>M z9~LX9bVB>!`IpE3`RnaQyjucq1Gr~KD9zu$gbZ}@=!*Or{x4j2F1aGk$5 zPH6k_#x&~hjW5M_oX+R@d*i#piIRFk|D@x0gSYCUR!OS=Lfx<05QDN-6h2+iCnGV3 zx!`VF@$mNOIu*l4XNPakeGQ&YpFsV6w3jiU|45c+mp*K+zfdh*C7^&9Mjx-9w<@!T zyJv@pUMB{ND$D%axYIEE*bumxjm_K-0F;qASZbFV#N1w=ukjox`d1*w}SRwq5*= z7HI&4VK^{1+2)>2a*)y#)~plEnZ#sw59Sp00mx$;R7s1iCI0{sl^^4J7NtjX;;1e3Mp#aqI?-(si%u1yrnfyl1Cbq_Lz@jC{e|5JGKl9RdJDd1ZCGP$kC zW2yqo8(4A;IPXkyniK!YMmmv{43+r(q(vOz2Xv^*3G-pbf~A9XO{W7T zYkuSx%F}X1=9ko#zW>Nk|1g3Hxvg&%A(9dIxBZoV@VDHYl$s|oVd37~M-xS~F!mP7 zh@X@9mS#GPulA1K=#^c{#}%;$yQmG*5ITD+n}JA`FqRo$TYl|5EMz!+DHPNL zyVJD#V`*f&zX(tGQG@qe)nLx+@Xk->81%+NVQ@UWFNf7Xu11dI5*{2Q?HFOelPcX| z;x>nw^MDl3(g2b3v~1JEA2cHCO$o%^{wZHtOBX#AxQYq=d@YU~B ziw2^Q-C_k{&R7Cb z2V0EU9M;Xzx0^bs*-%lNa0tC^$$11tn5n{7kiQ?wo)&X~SJj$Ax3%Qf5kyqMWjnZw zFMw{@NKj(YS)_(-WgUOk+;Y>#xY9Shj7^CD#v7+$e_@(<_j)MP(6Lt60vq!Ux+sB zxCsI|qQOz&J5Gqlb4ZINVMQGA9?^Lq@(K`Dg0L;K3TKuB5HPj1W$u+W!@m!U`ZcT& zxLrXIc_&T-YP8HTBSZ5qcs1|-Icj-TnJI<=ZAzFTHrSr9Z7vyFB|{fZ3xK?qrmnaL ze@Rtk(I(T{YVneJStSl-_@E6VmAvLs zc<_*xv7!3BBoqO~v?guU`!D^ZJ7FLqtIcAyKknJ zy*LVH{Q7M+>wC*K9q!nB(ssa94oa&FV4XHh&pwyqn z(Ot{muolVlxgCR69&_5DQAC;tf>#naSc*SEWw9ADOCe!9HkdxJx=hoDe90!A(h+a# z;?B#6pCC3_qMOxIxQ0wk{Z#2$YMJ4Tflh+9na%mHw~oN*Knq*+@EB{P0k@a~o;=O; zh@d|4{@bkD_Zj})OqyYhiRp6glyMNr5E(wxnH)Ns?tbF8A^e+~d3j8h_*;+n7Z?Vt zR^>1aBrQwsB3Vp2X{g^=3w8#eelm;y?@ivW{AXX0<0k!^6R0gK_8%R&e>1B8^E}P} zT>?9;|I0Cd|HS0K3jfDmdXnm2?)$FWPffZ0D!f1V|6mZXnQ=ziZDxy%Trq3Fh;hySi|FG}!P@h!Ue!+p#M@)|88fZ{v&)s^IshyIMsE zkDm7F!uN7id+>Uz&yUVuw!s zuKm2}l6k~rR2(?*z&XCR_5TvNa&Z|%akCLYLt=h&Gl!be2`96?hPJ`(x8#O&oBn~x zz9H~+G$BBlRT#~W+PA1&*0jDp3T{SPf6XF4Xmf_qrHu{9z~HtgPTc2>7A(S;JVHw} zY5r?^Fh6rjJ}#p5Fb584>Ca9ZQ8Ub8B8=88n}{I3FM|8)5EJ~;Okf7o{Z@eDM({s? z;v12CBT*MCiZbm{0Zawl-4rEgbTbj_gA*B|KHRP)O z2SKbtSV%GG(C-C!FqMn%c!b)(`%&H7-i>)?T$cgLYP#vcP9>?jM4GzC#MI-r8s%($ z29Gtny*N=5XSTMFJBxdC%Pn;4MK5Tk^Yr3qjsD`|BJu5$jZih>K(STR`If}^2>tVz zwm-$8buVXT5jK<~cQ{_B<6_Npv3T9HTneGqi@h__9Xvp_#w3WlU6>UE<2g)F+hIDn+r9d;1piX!6B$TbY)VHQ|wyX3{ z4jyi4ucL(sV&@YN@$F&hfFm5JzJD0QbUo7(u3Be3Z;qQLDdz++ezb1ff=?%(Uh#{R zzMnu(4`EfE+D~L2bvPW6teP$Y2)&ue+Tr5PB3uEUVDs|vr3-ttGov&_bo@mEYUjpq zBv~dPNS#LN6x(SyjLQtk76-N(JWEx*Z=qpd(4Ls=sXBsSC6*T1*p_YzXl9wZ51#7= z2cwHJ@+j0flktSPH%YgvpWLa;7I<9t-CWLlTcmh=E^XzkWzSIc-Sh%!58#_DmLbiY zZ$;4-{Gqr&Meu_dqeo)O`+Ig-kqdF=Nb6L@+fdfIIz0UGk)=YHm%=GWUA|?@73SyP z=HfZG99h5Mss{NKu=L|f-4On1h?9W=VrH&r^Mj5C^S(lV-s_c%kn@7u3?458;3CpaZ#m2`DyJt!TkkZvtkRiEX+M=TEez63ggx3)65<;YDh3m3a01uyBJr}b5^bU z9mR;#2aVKz0OsPz?99zKg#;;}_UuKQ3mmNw(JT$jifwbXttTMQO(dzl^B>4ZT^rNz zNQjE@9H<0$$`9Db0s7+R5mHu{9KS2m6>P9P4MPq6=_PNJW{VdJEnYXhSn%0Nl@nOx ze-6H@0KG3~4yVcaY>pyhu7g&lZj-Nh^?qV>ma|8(L7R^|<`iZY927@T?xs$QrTSvU z-j+31DfKh@KN=eG8V}0W)MPzeC1DeK9}RL zbLqfN%*?C0o9e+~1s5(!D37mwXnyCs9X=&yeXL^BvYMqPax&qEFo$f zgxenr$jSmtL$mujW7f!B>Au4OX)UD7{9oqCYjuH3Y9-zsJ6YTNbBYb(d&AHiS=N3= zh4<%na$!$}eAEWwvUkC=j^e%??T z2q@9(r`i+@vQ(1^vADv;&$|^+=Y|8sUi5;`2S?fHOL`2O6@JfB1$IjKOFN+#cD!Wb z3+x@uO0i;5DRFz9x~*(Rv;oHQbr3%%diWO&9~9j*(o}4{{G}yjF(8AV!KwsP)SdDR zevJQVfltM}^C3r5cOOUlsaZ>3QU?-zbGF<}+sh&B++O zIZH^-InPQFa0*btnNb3g8D8(-a@27xT2zXLt9$2<Rvif%Ur_6RT|h#G=tam_&9!ihV$%(1}6yc^*Y4Mn4Lt}{T2$7 z8@euPImi`KEaufRudy-YMLlv-9k@579Dk5hpWV1yGfNJ4CRH`}vN0|~ce%ngovNlx z@)bx7g?@Q1no5>H{SiQJfd#!k)zPSgTTE5OsUOIWnt-^6Ix?qS!%JGkft4D%92;u3 znIGpq5%?mdJ0r=zz9x%fmFW2ES$^GX97RD3yj0OkkN`XSet+7e`Gg2F(B08q=E+S_ zk1}e+2P|A_i1Or?e12{402fyclpX%(Y>R;RZn?%=!dq0hj6%os0wH>^vDwRTwn@z_ z`|H^37uVM`w?AEsAB0c7%Rt3IF{LbbqSplp$VEu`&x0~5{@JW!w{O&UeS5=DX6}Dw zccz|}ITMuoJbs{4J=R_?s#g+tgbHY+-zq=Vv7rp8!grXw-A7hS#kkH6edYKc-tq5D z-Mda1!lw_O+mI+U6$`(x@m8mxfs9Wt%=pTU)nMax)(5W8QRoFEwLokJVd!ZtY0C6ZJK;m6^tkK=SI?J z#r=_B${D8Gte2XZD|X;Qjj;Z#9zN zqT$Gd(AdFj$7{;l9P429u-^4Kbh^IoI_XinY1=_UeK@O~_;n`h%~O+(tz{BI4RfA0 zm2|*&<(=*KBj1{GoRd{oLe@0Un>(>?@WlF@&tVb#m(yn@^mk7gwz1FEL#<#seQKW$6&X_#@Lf=uDOJo`9k+toEue%%B2k86*^ z*jM^O?$fn0>57eoF{!q~9~}XRfWl0DxXb0}BQkXk`(C~#6(Wv3NeIzFGn9QnI?!L6 zSOhQ%X^TEB6Qug(x!cb+Rde_>IIcfiALN+WW4v7P6`=N&mLRS-Hryth1t9wyL9ykS zbftwLeIdzf0Gzz+;&Jn*94H}P%fIKa$iLu@^xi~x;I7rz{{g+|zOHLCC}?{96q5Vj z@k)B{@z7!E_q$B~J80=@S9Xol=s6t0bNJN%WT>>j{p@Y;Kdziwt%eoPYTxz9Py2rW zR{zf~$Nne5?*E^eV3tCgwxX>zl@lnn;E#_XEO?4pdis2)se*QVp^zzWOr2#CHI9Lp|e!n03 z$+A!>*gUC^o-+wyx70hQI~e$W0(KYME?YKjiawnhC|=a>CePj>a-Aaq_71yQ-W3O$ zn2u`7aywN$?Z~RDVU{TQr~R~)Vzpeb5E1G&ZDW{Rn>Js>mdom0|DpV3;wfc*9(J1E zi$^Z{&~^~lMYMD#_jaBw#_WxhY&fz)9{2_*UY%a_oR@qbd#r-5R9>=4@~m}-pbtt$ z-+m$Otd?!=?OEnDs*Sx|L@e>O=t7>&i=v-69E;4(*cQM%n0(m89P;!5s39i9JJtG` zEr)%WvnX5+z($iRKqNGxhFhZBZwmsY+=}{O2cVw)0pLOO_FdtMeJk0P!LB zmxQq~jdvwAuapCKvcBRgDHc-J=y6p4{TP3euW9F=e52hE%uzez;Pv%7i<-r>hjplT ztw#x6hY#iR=;K$(xf4~@ zEF8}S$MSJZckB#lcgu{F4w0~6mr_%-Lc7w`^j+G{ao~-QLksbzoOgwh52VmEcI1tJ z%wb~c<)w_Rg^+PnDn9~0*hB1SwUj`pY_%(_5JZqXx@_gY z1(iO*XdQLg>oSDXYucLow3PW$U3_aj$BsNu=~h8gb@Cph37(`vt9X{(X)JcjLyJ1T zpFL`u!X^p2rj#U{zmf^%$dEYtPT$Z;+iGTB-FlHt(ADig)R2HqZF+@zyP%#>Qn}yg zjT|qynZ?Y`sCRE0Y);TgEEs+=R@cmOcv>ZN?UPb#JI9}QD`E4TDZ46}Quol4IUFuv z|4|_~cIAwJik;2^^VRX`Fq>_h((ut#Nqlgx;4!y-R3)<96A4U4HyI3XXi!;0SGhiT z@ENI~=TN(jxAv;xBT#w0Y=PjMRTq?z;OhA0I@ee$MX4~mXg(CYbeuRL?=af<=-Cyv zZThq-Vc&TENzk=6z$b>0XfPqD46KJlak7IS2A0=Tk zOXA6@d7Hu=YoNKEuhJI>KLPFOgNJM|4?^B5C8>%#@3*9+@kR{$GQK@}rx-r%a9Zhy zyxtJ!#8%siGiM+rNojU@2JJ8Frw?1%RC`b#Xvmd@laxA?%K;=t_Q`dwkJCSvR-kV{lHxg+=a81>oX% zNoRg^mV@A;a~xk&)%{X_RB`EB83p)`$l+Nwwws;mJ#Y`2DXbW4cU_23qbtdWjBNQwbNC+R|J zgK7RH%T`WKxeCas{(#FVSbp1@6(K-6Bg$%hL#$L)YpLxpPK%g&GOB7tcA6M8LImj6 z(u?YR--X&yxvdBpKiJH^!8^X6ialaMpYEKLV?Nh7WpE&3)o~O9h5lq7s0tt(QTfuu zwTH}@D7x#+(ho3I*NNgjlW9Q!_SwCx?~lfi$G@fukmC!oku7CxUplm|9XK+9$?~yD z6m5{6I_J2^YvF0ACLd%FORbME{uvN3jk49c=MZJAe!!i@q&ZKI6Vr|5oHUw7&0Mqh z28_Rnq|L>5`{|H*)2L7NcStSDTa4f|@p-MKcn!HG;{>C@QH|9^%va+Q46H;Oy+rs=!w2?x99}CEOH%5e_0O%wNXI@0}@gaP(o#6FO)I zGJvl;4dJwA`qSpOwOxi+mG)xCUC}-dM^ccMwXU_vz!C4rJI0>ify^ax3RU5_TH}C* zL2eT!0^sFR+z?ALp?i(XPNxlRXA(opm~o9;Kd%oILfm<_!qpb2osr|Xy3#8%n*FmH zfAohwuPQX!37Z$7ghBJb#+{WH{djt^FoK&o@#lplThDRy?eMXDoL%y)&gZK;pb;0- z+PRMo2@zMzi}>yDVdeW|}32ka;XH0=Cpp2GE2Qv{eeIJe> z1pa{T!M?qQ)3b)id?s8465;qxEiid?7~B=(N|KZ8N^M#6+$zwouudJ-becmcO^GR> z{Vuy%o~ff4GO&{_vurm3VE2f4VmN823pGMOH@G238@ubn#0ESI$mfh&LCSjMu*P;2 z*P`B*BLi(fq-N$+3GBbz1rc4e@!-vw2)ln2^3^>Yb9BYA38*vFRo}LN*ddJ;ak{P; zRv0gLTJYbQ;*-fL3JS?dF172fyujc$eu)L@xB_J6|2Sz_5UX%+$=z#;pQ%BpX%3Gp z8>2wVMA13JiHQU{eL{ie2)Lij+$qtRwR1~be+nWhlB8?{yTXM*bsohI8=KL|_DYmZ z8F#zEk1M6oM`~503LGmWO-_NpSme@Maw~?1I#KT={ z1l)nqG^o4df)6Yt+$L;GIb?#|N-4sUN2M~@91qn>VrP#As!(m53H9iBKL*4!@ zDEd@pja(S7iCqmiE+-F7?U-#k>m<@s>zH6k`I>4)^|r*qX>McELWE>Z41`zwhzHi* zed{qx8bJW!@k6E$Gp%c9mQ1kTlJk`#MEXO32A-Y~>>eSIo#i&|i4w)_nqs ziNLOr*;!4+fSe%ShOeO6HELZ8yKDj3lQgt-fhKTDJPXpN#SQob0wf3INH(KE?x7@b z4l>$ODU_gOS5s4a8iejbI&RAqn~B-6!xtF7QHs7?1XBzB=#wO4aR22hh@rT%~&qiK4Wa~2u`y1 z2#{IY*Be%aoTLkdvsWW+i@KNx!dJMG&XKLaz9S7218n zDkiu%n@$o}@&9r6@w<~fUtVxEUBCYBqfg1b>G0ad9MY2GRqm7wdOn*;73!4O3cJ+O zc;iX>aYCM+oFi~Y{&Isa{*a@hcB+Dh>Co*)O{m-=IF^Q;2AzdD@kEuiWNztew7sHd z?Hd9>QiX`>1YklE;OUpPsU$sa^BNi20mTO&`#R$d_E0-E8^NO?L8wJ8TxcMKsTM3P z?Vh#fakRu<~ zhHc!@f@=m-#LN7{RhB6?;%SI1RPI*8VN^At!Ri2#j1Y6>i(=0HGJUk zbtHI}kvpzX<@;b(0;og%KEI4RUj*47INbWJJS1peq*{NcEAQb4`?7|9KB41Z19a|A zf_vO;*&BmRL)DG^a^bw!sO7_OOCOSXX%VQa@%GL&ZCPUE%GhU%*>q|E`dG+}GWfR?2)R@~O=2IZke zILblFZKhYa;M+((QOoydr`-g)N*ZC>)?ICH#PHvpq)z>Q1g$ZmO#-N(t#n9sDo{UU zK_a23dRSOA!i5n3hJzVgkBAnW*CHGF3`}h@`oQt3g7M7>!PKY{?%|d{(&?+k&@%J& zTE3dv(U$IDLGTGBtl!An+LHDimFz3^(*8Q7LFqG#=_g46V&O}@cycSUG%PFko@P|; zypl8azT~oXWjOC%-HxpTNU<-66%NFoJ3di1E!LBMe0wx#lSsoclv(Jz#*l_%no?Cf zs})Vgv~;H$i&(eu4>WuTefbTGemjzG*2xfir1CDQ@oIbZ&Kdu$SND@QAmsY7>OLo9 z73r!f;+^f~<)Jt1^&|q*&2g|0t=OFg&ndjPS++3dKDzVu%r#lMc5klUiGCxBH6L05ohPr4ezyoSm=Na!$64-Y@qI-A52j28l2GS%AGgz?%D z(+jV&l|#GfjRZ4=uGy!joX_@}1$u#MSeIBpgw;A=3tB2j=Aj#ltzpM{J!#=KCEfR_ zl`V{K{l_GWJh0=0akD6yfI}!5vHI*#^0L-zV01a%E{;0zot`4ceA^qs124G37CI$ShQdvCtwKQ*b0%cuD%be{rQuybdImU69FFEuC|Y6uPQRZZv%MZ zwE#w^M0u#GYp>~$GHm2qs#dyYn^{Cjzj9P$NPmfBeN@~^j*HlO!^+^~NwW9BR<)=X z#~Z^>HWDB16OLx6M?iU7hBL3tYZ1?9oAOGXKBkpr`cQ}j_K6bmYsNS(mWW*H0US5z z+yXqOo&*R~`2#4ldGDNM3`P!>ljYIch8))bZVJBzdGvtdu!fS%^`vQ8wfV4*yu8rT zO)Wcrq?5aiNa(A{3DE3k^4vkRB$6(mMYnHLY*9e>Hr3RXc=9h6Qn+>n;i ziZt4`u22;{lLp$W2h-Muzc``TXWGVmaL^Z}>;cW6a(a+ICTfs!v~nf3Lei?h;9~g0 zsp@h2X%RjmVnpxDkP}oW^k72pD1p#)JxXTt{Lhl44BpQvpFz*OjGXyc84|$h70~A= zu6B`WGPi>A*MYQcBUE5&QlsU&brFgs8i)1`vxJ9Mgzhc{^bt)u$ARELqfbj}yogCutq!`apu`G1Px?ZyxVWi#D4h2R zk@wl+u@#**h8DYJP(KF0z7G^~I<#Jy`suP@)9rMcBN=>yn6E)nkya}G)25ct-)XAv z)Ff<=Bw(4MIO^G*73a}^u5FHtz{Yp(Oe^D`jL!_geHak$I@)-Wq$WnD9!S@Nz12SG z6320syg%m0fs~(Wq2QFg4sX_B=JP41L)X`D=T#TRNwQq80B?F&P8BWajb++al^Qx! zq~UTr2L>&ItR7cA2`btK(k?$X^J97{{`}dSmn*rzpi}9sXVR;AzeI!0J+uNz zMV8Y_vjD+)QvzACCb)u0h{U*wKCfVLKsw5`9h^BpId^ABBV}n&A$jTE06*fs{sX)B z$OKQzPQ@C^BPRm~AG?}9G@3tOI+`O7Az}v|tNoF2BZTlO2QNOE!3$L-_XLI*>*F5= zq}&7s^2>x7nT2aJzFj4#QTjlpS8Z{r+N`wxBBQ%3aJv;-ZO`NI8g?VtDMgc^2?4@E zX;ustv4-Ocx4=eDa)YN|qDlS`L?iaa?V?dHO==?&Kkt2QJ^a$cK?%jWZ2ZU*kQ1&MrDvz+BDp6ft$y1L%8=S`)UprKBt+ zQf}AI@H3n`xzevsolDXQn9WGeLC)Xb01s~{tiRTI;Jje?igPB_G+W~qEkp|=mXHZL zun{^GTTA)Mz^Ix?tIjXYGV6m^^n841Vety{1FRl0(MJ+B^dvgqvA8>vfFhH^#TtB% zZ)JlH%;dJTrO!Z%455&O0azq)l_98^?D{5neAd6BLWTl zjTd@AIBfS3?6`f(hz<2(Sn#IT<>g~;rc(W$OTPVqV~ zW>zT$%5@~Q?nnhp(RQWOxXf;Q9hXbFzYS}VQ`XLnSW+WT{&=^}SLqmA=YH*up85JB&{XOytE@ z{8wvsLoSU=vAC};djVCT<%_R)OUEFWd>yH?H0W)J+Lz|K8n>YiyiRN8T#!QPy|`%< zdFWHGQm+AN?+$saoMu{6tnYAse$ILRvPXWLUtSLYwBLnu*t)fUFj>+Hb-tbJ zukU$?`nycjt=$Sga8i=K{xhv<|F4j%V|V^aW;%6^)58tU$(v81LH|Fy263_lDy{{M2 z2n}pL5Ha&i%E!hL^6S3I54 zg}=}~Ub{Qz?Sr>kNvfCsG4?4XJ)u)?%8zco-1lN9_g@COPkC?h(&w|-r87Tx^NkMe z`*V7Q`*MzvPdN)NA3AhkO9yVYXSd0je+C;81~_387aM-Z zYraqW_kKeLNkv8E0xwgW^v+IEk8SJ#u;TWiQ$TiPjAihYnW|4L1dXFBWtc;f`HU*3HkvDQjfQ0-fcNqSgMSDSCK z3H5Nvr|{&gwC=ff_Jfo8W8C<0a@7@o`Z+1WJHqzT4fkKcca$*1>z`#g<{8GfFyS?2 z(nD)%i|d?Vyk&?*-ImsVE!@Sd|v z)B6t}&*wROd-woE_Uy<9hOk{ewWn-F8d|`BZsmqA4~u0aDEdxv{a%Wj!VbQs-(I+8 zY(tVWj5dnfAjfStPtqc$zPLVj2 zvwaJFFDYIpemYrIaPXr&#)t8c`9-3pz@rzJh)eTpK|8s#MEv!NY-%qFuIV1Q=Dp-T z5NHAE&COt-gi|+g6?Tp*~UE~>aDgCR2P;*)z#A30W?t>8=fKMG~jDONDUE%E%+)Gg!%AYaG zFJKfVPt!{#H67oZaB@rL)QBb9K6mg!v`Cm%+3cuo4XCYc&Jx)$2AR^HQp`K82WviA zyBqp3eRb0|4B8qxF5*A_^&WD=>ALX~5FR=9F_e){>$GXg`L88n-Lf*a8qs*Rha6br zmLYS38&v*U2E)mqJks*iMsZBe!c62ylIq^0wr3>zQHF5A*9XuUh`S>O7GgmoH#$7* z%4~{-`zS$F|1{?$)xx^&ffx&|A-3?5g?A?dX&)8KnD5+59Lx6dqnrimzuohvrd|8Z zYCE3b)G%Mi!Dpj3INJTWOzJx#HTea0U68iZH8OUUA;karT12?zh^$*>r*PToY5Cn@ zz$@{$5FBHUUw((!YbK3{yI5(js#4jk;B;`1646 zY=yBl?o;Iz;y~%F$Cf@m$i}@bF5`=yC8bu_*P7(j5dbT9yESN?6K`;k@Kmc06|mNr zzIr)~&wt#6!$VcW>?Vn|#wopWyvipSxogHchiE9Mq@Vq%x2bAy4lSl#CfN2%8CA|y zY0Z&3!;3APhfbTkmAP-htTyPk+>enC79{gm_-X!P=oor%#_V)R!%g4@b3q2UVf9EH zkWu~ps{X9^xhB^`hxMU(QWwKBhXqCPiz%w)TF-Y4J5iCjylR8&c>XK~$-h(Z?Ke(_ zq9y8)EyHhWIUvsuKA9=s zBtB=O)jvkorg@~jM&e-W0euoNJK&uk8ya5q@%-YCrY$LJLRR`=rDqAq(==Xsl&QNm z_b-mbe8h*azgv7WYK?yT(5M_Q;AWX^LeBRZt&;xH==V#_i`j_--x@+;o!$IN5y&R2 zW~u&#T=K)u!HrF(h3?Z?Ye#ES1?9Cii@#+bu+UU;0Nw85*9&0Wd1`h~DN?qeC4rw1ZHS)xcig*kb=#C&h>j^~@{xUHJHitR5$csOn8R;2=W+D0-C>H^#X(R3t93Pct}dTap>P zQn~Z+s0(#NPl(LDn0TDbzrC`jb?X}|u|wv~UPh`%h6c2?Ke=dr;XV{Eg~>{@mzYI9`eY+s~1g5AY}AbwXRq*&$A#qj(%MnUB1}; zX~XAp*GH;kld~^9s+C53y3ksT@6DZYJIm_vLaM3UnZk7jjFX?Lv z(CklYD^}R*y%I*UXMJ%QXap>|FDVBMsL9Com$84!a=*FE!@_jXw9(@zw zMf)n2q3%*DP-{bH`p1Sp@YUK{kwQ;qW=+y}n#WlDBA%-YXAQ5{Wy-q02;UrzTG~I^B)+rU$_U^DvYgbSl`*G5C_`uFP(I)(BRT9Q%VYsYj(dra( zW~^q5a@q_#3-k4>lAJxd77ZV4V7iUd^%5zp5Qi5l1jhz%U!)Gbdwr>ekmpLe!>D0o zshO56zEXmiFlwv4NDV(US1Qcf)&^;r>y%V7o}aWC;AJ8fRQr>>;xSq|8{uHvAEctv zGlau&Z87$3Qf;82S z*h9@3h|rd>heCJ82{`ybvDTdCAs^cC! z%0bOC-@}GiXfmu~4K|^G!}txW7~E=KX+J6WLIU{IPwBgTE?nZWFNL8f@#Jw$)FL8n zTt}=mo$J#9Mzg21WaTOF2$Ab4fjM3W*ngWF$09eR38c5TNx0Y z$X~s3ql#zK|3^*-fmg$*EFXtBLEh?MhDS*Q9Xlu0b#^tYaVNN;Xh{^vFz;BLRc~30U$ophw`_-IX zAV99+YpPv+A2fVB)VPku9Dc)XdW1-EF(7Y zB2aVlnEc^6$FPP%{Te%-(3Ww=lIBh+(QyPm3OLY}=4Q=SkW*LbE^s7tj^W?M5{cIW zKpp`@hTyh0!po$M0;7e^D5RCa!z{r!!f~GY>C|L3nV%?_hMKY+ylTGkfQ+MgzmeLa zVyWhn5!eteNN#cQ3PQf;3pvbf7$~$grYXX;-kC}0_EDOP5Mtt7Ucof;21G7X1Ip*q z9D|!PS>nH?#GpmdhcN3pF0u}AHJ+1M!73g-U)K@vma~5E%XN-EF@kAd!^^D6Isnl2 z;XRO>JNNTZd7bsL*~S+;wjK(Yc5W*1L;=KW#eq*z$~L7c8)G)lj%uZoif_8voT!K@ zeGM?BSoQa*EQQo*_rN1eA8;QAE7xKcXnN7PdayXX?v>;}?s#%s?WpAK(ePYsr`n|v za)VHU_s^+Ishm6)pb;Q*#;7HeeZPS;?X@OI%bIPpI`K46Knqz3b7@tB8V;)l^nch~ zt1Kzx0U8O>B!-v$BdNML;f4NwZ00$Ry_{d!v)^|?4<ObX`pR-v9cDRwq7>Xg1#A*c0|)c zvJyozfAy-JqUF)R6b5XQ%v7HufDV z+~7K56$0ZhOIMEc%f_2KlDueHF zYtc8)jiAK_G@!!naE*Ns*CY8)vxfa+gi)vSJkGzoli7;!G+X)Dop71?&$ChfR~vUd z>T|O5)vV*os2O|eh7`6dYy2LcXTXVgQ!SAKqME+Ln!0rconbw_6O;XWcA^YuUJjlG zb82fIroN=ANP6(IX2qa8a@L2ptmv`B*P?~RMi3KFv{XHDC(qY5pdMJi=sZ8C7RApI8` z9#uQvjIH6c2#qbWp%Cj55RGPsn&Tv1vsNtp$L=5ghr@d9<#(A2xDcC4kpk{%=QH_n zwCFJU(DPrpBVVE6SxJAFE;3YV$1*xTBboV1)ZJdXoXb(7K70d0*$OBLu&a4I5Wl8thDuuLOywo@J$ta_ zPm8H7VZ3wm+3W<}MavZx*SdBCYA%O)6-YYz27`BZ7qP4h6Yt3BD`bGX9!UbF!}4N- z&{mlQhA_E(iC$^sT?N);+OxrrKP7PAu*9jHy@+nQQ@UG0N|t1kUDgq7{rx*tey^Lu z2=sCF_a@IS@_Q+p6u06)lm@VGi6rGK%RDAsNVRE!pl+NO#G1CHD1>bs^A>m`q$jlb z*Z%8m#jp5F0#W{#E>cly&NFvXCUNT9*pp)L+c9!70_h%>Q43*-ckMPz$*;#pA)O8l z@i63jQE+|zsA4H&5OVxX5#FPVC0YJ81f+ZY*GUn_)BR#%H1s%b{5$*4vw*@XU2f=! zj>bum=^0KuIbDAaf4P)MDsuw%+&;AeyI9DM_9t7>`yGo+b=>2(!K(Q3@Z2Jl%PX=e zMcL_rhm7M%RJNRilDjjA2u5*jF}Qe2>?0h_Qfg^3amH!QgL^?C2j72*~y6GQuLvsx{mA zVW}Mv9}?xLUmtjb?NwOinc+BEtxK39f4E*})8tpi_l>?sw(Oj387a-9XLG`88@o~Z z`u}6^y`!2;|GZ)BV}qH&hP1IFBA`+Np{a;S?;u@7K)RF=LW_<9f)te!dJlonL`r}J zP>~Lan1r4nA_)WtLI|Pfz0sN3`Td^ryu17EzWeNX&T~z{}aK}@AKOo>>w6+Nx`nT${}{Xp=`Jg_E?6msvn1>RpASMjRwNMLL?mNvIH1 zu}SNhU+6OBatp||#>^_-5g|zb6Zd0!CLg$pgEqOqr&5!cF=f9J5WA|^y}YkU7#4ZQ zdfTj)NaU2-h)5gSv^9|Gea{s#mv8yi8_iKFFHNKxGISpRfSP7npCn|sdW?C3=x6mj zgEhN*A`9vQv@KS_9eon?YN@3#PD#k)RC|{U8LKM;YQhQik<|o{WO|~pOIfBgs}DB@ ze}L(=a>;%H+$@>P$xpy<*w;EjS_#+*LHLpF15^C*Zv_1`X_fdfgdgT@mrmR8kHCHjN;g1aH8IHidv*)z!4693-}e?L2lE9K_~>O41BE3gdMSXly< z8L`xMVJB@?ZjIF9a>ha)==`k2liNfzNoIkzlLLOEm74WNa#f)wjJF?|mhlnO} zondVnfG-tMvMbxCEw+e3{e~B$m$pcmByhjwJD*G<^y;pbW~|yEPrf&Ahf2#%+*h-A z+CG|taMyeU){WZ>4ca;6lG-MX_VqV0nt%1AHjIoY2Hg+yplh@@?OsIL1})jY#6T1Q zFI}g3d`c8kl^O6PHCCyT&q%|FC!ZLjMimPe%{KGjSaDQDn(c#mGiui25u@rEjkJx6 zUkZ7>N5Ax@r_Q&l^}{`sXELNOI2M}#5Jsl;z|2-X(|oxC4Co&2AWEjIVk?~}O zq`(3{!y7XExJ$yL`J!8N6mu?nuwY%(zM_)=XJ$D*Nc=}gIM$%p(YM%oF17~kDcd6L zbRzz507Y@Ya*!x#oWPmtO*^wzCET=;m>2NMLduO}QD*h#UgX7@h9wBM?5m=GTMh|! z_ni?`I(G&EshcjM%5bm+w5Q7u`+?P!Q}|;-1E2tExjk__Gk}`LzTSPV)r<1!v*cK{ zuCcaoMM`CSF*9G7R+;s2;CSyDs0hlt$$YtsNmmU#@5balLZdk;<0EXZ_QNtug$+su z3`f6p3v=QA<8!ny=`134VI=O}KLFqu9|?%ZT3iXT$^3g?>!GZjxnFYo`kXk%i=g;X z6ci_u!3#UjUsj$Jy4;<=)^<$1zwG%MNpNdwEYA%KfXMX_b$Y&S(7N1w068>zI>Ik2 z{X_MeLr~g+n|%(CB6`!Jx0;Zl%^O^1qC^;dc<|&*zhod)XN zxdp%6!sWbxDqiSjTj+-%f7}PJiR{8g+MY7ikRibqKh_(4P{k*~nXqz8fI1M}uxVbc zGuFfnxXt6of`~sk*T>c6f4z(sAeSAq1L^shbG5xg?DEf0@VCW*8@)<31Bn3Y5#~1m z?@K)Sr`9yWX`{kEswJnPguXYzsr``&K>?SDxRs#kOrlv+gITA60<=-F37?jAKqkU{ zia^}K4v|}ODbH^4c`>a?OvR?WOYgAT;CP`k`$m$Qa@4@j+6KAOVg?rO&i5ORm3tdk zH`}XZLePO9nzAKGUq{NRRX$C$3NJ%V19(42LA$3HsBp6i1w=QrOQ4{cw>uJOC(X<) z&L4OV*jo{72&F>Soh-ZQtd3;#fHP(0c3Ic>5WU&A@++q5NabXA&s^DVaq|GhiPTxU z{AN>WLtBJWnso*)Cw5_mfAxH&Pr#H9&e)|TEpZ0pX8 z^|j=>lkWqTBc2G!hOoHPG?}t5&w1HPn&c&_vfjn#ML79_!wYqoRA<$RS^C|0a8uF8 zrSH)RW*huoZ$ng_fYOv9PUC74@(s(o4oS~y_KxLs@YWt&q~`BqNqGRw>j z?Al(^_da`YA-NL^YJUinRvn9$0I2S5zFB*Q5eI9*i(2@3mJMSkCj3h%HeRYer+m`; z4j}c%fs;n|9dK+UB{P3M%@?-0avz)m7GT-aj$w$y3fWZ_l%A8adO=?;dnclQh ztg~spLLg-H_P!bO*>Q+??a8rQU9#Q@+$#6Cr4#z*LoH^}LF&d&scnb0+?q~1$(Ush zp1VSM8y6mZv&-!GShsUsHmdf})rlVN#Z}jnwkozxoPuKt%)nnHN5^A9+uOhHznaxC zP;v8QF38jB1*OCx2U-;n;C8fZnMWEr4u%lk_18!xeP~_ww*xuapvt zw2G+9m~2asqZ#FyvO&XFzhI&o9d1y(iv7Gwj-__PADmcw?YPMed{@tvMB#Q=#=wdl zTXhO+M8$a3Kqomf$u@p9lTSfBZ#}CtbS;NMkYlw z9<7jE|K>n_z9VXHZ@y~En6*?hajHU-`z*^=sSE7PiE$-5dZC$qx?yI4f;s}GI{bFp&(xKWN)$DlDRe?p z=k4fqed9tFqh1{l8Occ-LHu#TXNR+o_McNP_9K|;ZFb%u`!5%9?liOsm8fcL!uB@eJLk2FrE_RYIq#0Agv@Zi+a!<}qbA%RCiv1}?Pr zEnht}i#Nl=u=PxWtY?(BLBRZF_oJt>v$qIa4k~szZ(~D?iKvNnhFSA`-P+CxWcZ&| zegOh3*8pw12xM2v=)rJS38H16IK7ji%I0P3v@lwnj7y`8M*_vYX~vz-Ev8Qb$^;j9 zL9j?oONoCxw^rUDB(GDZKg}T>GA2DRwU4%(AUgI%u&GlZj3C`J2VclNPblv@;)fOY zlb?!=51qmj@vfIoUnyZ-qXro;OuQVsHeYmG&hq`S7kHQ6RIP`{ z-+%XO);D96{b6_p;}|#!sHh`@Z_|^nz0|x&diW_zK^|R5o=kHy$fM4NX+R3+H{X0D z2r#oN#zl7WUI+xToIZ^hw0J$CSM!YOPp_8eSK$c|AUdf(AcwlTKz4s|CxiRO{}!ezes~5$dUW?Vj5ZjwtCB(29E;c7+VajFqn2xf)Z{D%>xJ zjYuGRJ)u)g_0-V7;Og1+2h9Q5ewxuW!V3|6Zez&-b4rL&G1UM@3N_` ze4ShozmoM5Yem-6lJ#Dy%oUrFL7y4uRS0I^&Ks)B@~oN8lpFbZOFA zrnl_&t-b#~S!N-r`w-08Y-(;%;7IgRY*L39Xa0((QS8Y8*{21c6kXi`CevlBCS1Rs zv9o=g8Av!3uWQkIysz5c0^5wwu84SR-f3Yho7eUy?xT9i_FdI=ed}y6*Q;RI4 z_!Vi%&G!5&Jf=`}B{5c(qb_y%*;4EFW7xWeJ_;52vB)gD<5W(F#4r2+bxMJ24x z#+#lUDBC_>-^&Fc@xKVG_2sRt9TT4KmKQKkcZox!O{}SLEq}vRj|Bo>TUmcQllo zVNlk;b)`3LSx09w$%xM5fE33h{h^U4u}(=t|@MvJQZ zuyNDjVz}w}@94ohSr1~Zr(OT15!ZYB{@Ue>X258T3Eg244`%SGxlO?fF7I_RU)V3xOc^)LT=>?P@4|fZjd^G7t`&==;HxvP ziC69kR}mVqUxp!D4UzhqNZN|_i!(JuAOuM})U)}c)1>gLS=K18mb|~ut8N8##I{bz z7d76?EgGF)kXws|>HAS6_Fn_L*vj9p_%;sENFmPYgg2}9d(>L3YG$*p>halH)JCvi z;G76V0==tqxqc2{gr)#l)a4l4;wp8e0FvAKOJa0*Oo9+#6)gX*3@9|#JRWQ|E;#>K zlAd|*%T33{7x$*=q*YzGSIry&GRGY}c5-1nvWA`~FbcWR{2I}?c#DEE%{n2b81iip z6C`^Dr=>&~dg;xW2^y2-(qm>R?Qyk=2p1AI@)nayd?iHhoLeJ>F>R+IT>{XIxBecg zQ%O}?7yfg2q!B<&c_+e>f$J-nT2qW3Y$;R}bK|@6F+Tz+BUgOsOXd<;!trV{n0n>i zx?4u$lfuZ2FMS%tPmC>!wv`|FKaZtbpKXS4D}VY?peM!M&?_2mj# z$&WE+&&jiM!+xP-_b^A?1Q>fj|2kuIk6>?NUVC}9{=|TdL%(OY8B|GB6A$+2h<}+e z{=6SvYz&TInx22?Gzx{5#!m zQcQ$?yW17GFkYEI7v(UG#P67^>|U)h+8oYOYD1U>gnyE-_%f;IZ?O?zha0yaK=A_j zmU;84GKAIS1)#Jq(kClIR=-IK|CB5ZB0T7B08~m56(Nyd zmGT?htot|2t*^2-7JOSq4n8nvw}Ug4(=5?_qmJjTi~XhrJ*!!b!=qG=f@VN70&*{% z!kVV9jj6W;^6$Lu8+Pr;{#jd@oI(xf(530L5rs=d)_7g{Y2y`(-EPBKKoBSW2aOjcUl@n524W7+2*Bu+ z{Ss>1=whFJmV%b#y$o1qhi(=4{(Sn);Wr4d!E8UxgxM83JGw`1sHK%$>q^1Up1%do z1jl9j$LH`^ndm>2E?x(b`VIn?#S| zId@Y}tNFA?4YNEirItTi%}WjPy)*yfi1SLdOLFnr^RKJ^7qipLwVbmCd15}9r2tGG z6<)0^j9=J%66Jm2Dr+kNh8`sq#EHmk+%I966QKG$DxR(-m_GMsle?o|NuF^ov&d4r^jym55^MDicrar=>?Q=kbR5>XG_ zwEGgfC-y{l-$8&a%0G}O)CW=^bfZ$TlQRFG;IvEwQa^opMA$J%-~FXuR_5JN7BdC_ zechYA?G#avTn^TL@?g&fcp{@Ox_)aqrAMV8w8?d-AQ9|77oruqz8M(+&@apT1<<4+ zS8v6lGuC`hdn`6^N=*xzr+(nV2Q=2&w7;4Jxh7oPTq7B`GoXN>VZx*?QNCj+Rm?S|{L_w77)`+aXWcp)BB{eZ2W=F}c<04JW5y514T{)po%pgloNskEbYK?-9iLZL*taQr9SuhH0I4{DgydL+ z&t#|?tf!f-j`k$3r++7c&cn9llmMRwqT-Nxr)E0UfySyXCbZb`M`vX{mIoxnwB`TR zqe?;WH`%OuYgs3zv)+{!^DsZ11~MwXTdhCTPu{hQKRb0soPv8pNCX;XH-A5~LTl z<;M|H&lma!BY*s|2jGhZM~yamvX{7{ZLpGE4|R1K`>@WPukz59jwvgf`{ zqK?!g;Czj+&2HpZN0m%12apx(-scFpGJBEuT?gYDg7@1tm$v9>va{;P&dG^YSFAVS z+xdKIKi4%?vH~{Kc;~BG{iS?XQsMzK$$Pz53!PpWGXh&o$>IV;d67#TbHfyG>QyfEzI)3@_xH$chr3e{Rd%M!h zmV}~y)8rmA8`+~|ODGcri_U!-seoZhm?pZQ4A$t`!X&3UnRtu!oqIZr=9=9KLusbI zgYKEbFj|E5$2%A=@qj`LGMpv+#becHP7RTPc{k`ZS30emZeFIscr&kRkDf7shM-JX zfen06H>cqc&jDcQ(lQH^s0Gg;VP1XKPH{#7$@aB6WBk^*v-W z%x*;d-3!CRlRpj&J9v6X;P0!%!;`4`H#f~lU%sZ8hvA*~`qBTqWdE&7g^wC?=^OpzIa;nCHcI}h`_3CH$i&c?{q~a1#HD zD$nC4BKA`(##z;Phxm5gZe@;3t+ye(LgrV1`ufwGBoOP-7a9*>Q!WF62sPqn^M;{X z;4HtM*1y2_@SuKz>DQOxXsk6a9tP5wlE*)0-R4l17=Q7 zylm8%eu`cDp`ES5H^S@sQBZPo^(wJ6v?G<4+Sqyid?+sP3+u!dW_DyV8n1AU#PKf_ zPqS0q!DD#yKSGYob$R~bW;ysy!i60+To?WwTid^Tl?cC@R$EyJCn^J*uSCjUg17B3 zlK0UF*=BqeCga+FRnF5UrIJ*vI%j+9mv7OJ4h2u{K3v;$8oRHz-q!9E|0l-%i|)S$ zj|E~ntr#bAgJ(W)J`El1b&v*Tp2(-S*E;FsrF5cQo|v3vM|jB8!+dK@ru@_C;>fxM z8_%lAKB&KQymu22)m@9<6JUa^?oPf&IIms&jqY%buGXw>D`epejMVE zE*ULiXdrk_f+r^s;LZKUZ&tavkC25=h|K)iC@CTcVJtr2v@eM?-gj%eVWMT`FVjJY zCCd&Vy{KzqMi#bQ_;Ds$;+-))Cm>4(;TReO@*KSc%e%$FTcOsoeyaBp+P-Q!lL=b| zaEbLY^Ke^>Yu6w9$RBvqCq2JyO(`dqxq;_Ae-22V1hmcqwU;3$4vfwvf{&9it-_qb zDzRQ+hGL@K&-X8ij*fS}a_o5Ze#DxtYvSvD6e^u*;jcaJ0G03wqjm#p6;u`dSo@0o{v546n)86k9Uj$ za0?5ry4xZfvd@rB=qFwJ0`|z2iA0K`Eo%T;7dbUkVNx$3&n+Pxj@)*NT>5n|CjUW%BU-@sOcaTIDDgf>Jq_-1~PT(82EVT-_UZvw6j_|GU{KT zar^rHMD0w7%TXd^4n<0R4Oo?c^}>{WSJ}bJrMhqJk9j^K1<6B)UCn#5uiLC9e>>Z~ z#tZ#%NvU^?7<2p*gr;IqJ}qrl?4|jH!8&~htC~sp`uAM7u*GRUUunoatV@9q?<`~M_@r9Q9UH6F zhkn-(e8a51(eVu8IlGQSw#Fyy`g{u~^FU$c!P9kK0pyt;G1@{|b{X|d;}Ah?TZ&pe z*#kU|GN@ugdN6rH8h$kq9ObtY)~a1de<%K~hb635)%THL!3)=M$?^@n#KUu>s1lfN z;2&b&$lwTD*x$uf|D}psGDZO})*WOpJ)}@P-okw`-)ya^e&b0y8ZtIY81e!x3|2d}H6%Knr8)QQB4whvtd~Fg!D38}^B`bg=$2c1T)+9X9Rp0l^Nko| z9rRnb4=L)ba+hr#_3Fwvyf*GA+Q4E>Y2ua77fzqOOps}5uZJ%;yjAc7p!ChE-cYsW zD8FX>Yq1{O@JO%!Ja;{Q%T{fP)~!li7m;aEoi*2e; z4%i1#O5g1vTVZT}`C{j3UA?RG>&3Lj*{1nmQ<|nz7yX77gEGadn2;SP_4g;b}|8VvLOk><@8sRwH2=mDYIM zbhEE1R`T=y&(m!knggT%KiE>NLS{)<8rd7pjcb#N>{bwS^du=NQ*sR!l2%&^b3pW0 z+v?+4>>1~b#-OuCvx7d%Xy#x|qEFM-r&0SHlF#yu24C~}K!oU>fSZTgd*{AXL1qe- z?4`Zr2SmwRpL2J|+-W!B)cU!x(W!S4jeOnI*7vJw(jEby4*jh ziAUYS=%AoiRR~StaD9imGUIkh-L9SCG2N2xK%)JkZ-$a`4erWSp}30a!(*GmC7+hw zxS|(%`|iW1)nKp^ti?5)^2rAuH{NC`@w6H0M_S3u57fx?26ncb4#0uToPNQ&*!e$; zT|FUc_lx0rla$cVboVLSZONq$1ov*=Jbqd4dFQ8Vwq7D$mo}Isq@o4c=ZN`QkYGkCF@0y z)qCyNE37nKICLXHalqImU}a+8Wk!bR`Bb(&{L2h=sC?Ipp}{1urvJvx=ZqO^f1LEl z-<=3g2E1LrjqV|PDHmbf2^Scp{O$i>KskIyg@WhWTMy-l_0FMi{?{ZCJ>O<_xs41J z52&u0D;bQepD^ui2;!*X77Hu5$@fsf?8z)CvX|o2Vdy+|{Tn7I*a_vh%)W2MEQ7K2vR^NIX77_aXGAj z<=M}`bh7g9lej=5J*Bzok?OU#PEb3gk=|-d2@XgK$>yXw3_!m6t%nGaB)q*q7)rtM zfF-5)Qvqu+=I}%u;a$07(D;7uwfyfS|K-CY)t>1H2%OZMq=IbzAUz`cbo4yodRAts z$?A7AcWfRA=g`rdt1axpmyt@fGou3Xecs2%jsx7I0jTBMA;E}DW3ft1JeD38EDB(@ zi*2w&cBk$a@-NKy?z-zSd52LT?LG^u8D)7QGt>^kUa9|bw~pSjfZ*LKI40uiq}M~q zM`7P#5b-bliW4T3X=iIK8fyplA2Esp-t7t%#7Ag``dg>T3==vpJ0J*=xpNXILjxyu zsx1b}VFRnXyVJIa$K^hI`zfod*{iD=AOeO|l6zz~;6L#=y1b<9M(69TfT&Ww=;*iEim1c4!Jys)RA z6rl(jPZ(`Pom0dojIfI-P5#IMahFk_oy5x391DCLdk6?e9$`PP&t^0YiOxh;Z83!+ zJYz%i?zyl7LWEqlb^#>DCWcWx^RCf0NL;n&YhT6e$>o3cq2y+i_GjF_>1STqSN=`b z)xnb1l2lJ`OR3mP=NrgR6YIVzbhR@R54iA*XBImzR?+VY-@1PrpgVj(>U($(j~(E7bWi5r zXCXP-{ueJ`pI&pl!X^p<>a$%Kfh|P9ZL`6nsqNOA=;gz~pF0ES$_h`$0>FrYp+%Zi zh4~&PXCQd?h;&I<69|7T+Z?4UrdZa4j8ow=DBCjivssU`H-^q8@10P4ws>640f|4p zT#yWctR#?D*S2Pi6j5i_+ATVLG{yfgG+Z~|<+kE@c24Nxg(J){6rfdiYnVN({R|vT zyXg`2<*<)-QU@T{X%k)n6iyR{jJjanUJLfxV&Y<(xL>kq$(j*nbjM|VV9Y^AONGX< zpglf@wT(PiR3oHx_wqHCmoo&w&@REBKQmid=6O9oNs8j$e}Hdg0(FTLL%U8KQ-ra@I+f_PXG zUHIN5=MDn#`}Tj(FZ`am!qOPyb_va^i+C)*dDwjcW>0>zvd=544+^YTFH@Z%9aKrHF|V$u>PRio5<%Sp2P<4eSj_Si;IY0JcC$C%$dg=?J%2EE@t*lF;zX>y_0_MrG_Ho( z($%%4fU3RoUx(I3SxXuHr|HT{@9O9jf#=4k{wxD_mtxt$#<9(d_IGIm0`wU39=1XI zedejTZgWOy4eK0xjw3qkS=B!zcE8Bj1=Tp26X&7w^Huu=7IURdH2gLZj4Oo*d&0`0Pu0zd-;tNAB2jES;B1KORVhXq#ML$xeE)-D4Tu# zOaOF;I{2nNW@e=1r?(0}!RBv)lHJ!R%b{)vu>@I2|8|PVSn4h}AV%uL;(1>Xoz$sT z@zZO;%_o%_c-VZ%)g~2>Pa2T&witVB=@H5M7sW?a!kC5zCCwZAM^Oo%JtM6dhoYU3vd2$B-GeK{vhqMh@?P3XJY+_-(hW^&Fgd5nY@?ppw5B)tI zjPrR8@^)?#<=){|E|mH;<-`Cuv^B%u%eG>j-au^RthRtX#1Q6;LvCXY2EEn2EC<^7 zWA3ysev=4&7$3Hho!x+e-%DV^LmJPkaqENQa*cSuOLuqPy|hQ?#{h&|V=IZ^^V|L2 zos!{OG8@Jb3xDsE-ROp$Prw_iB8`@QH{rD{h-_n${$iKL+!oqQ$9&e%$rjPXY)(>+ z#Ggn6^IcM4FwgmKzTpK4lY?nt2vWw!Cgu!SRPDpi?-Ofn_z|`{7)QigSE)XzFBmMd zK8c%5Pu9{do;WJAe1#lZ-J;yjzqXbK`--1f>K*8^%LF~yOSsv)DQalO7Lf_TQs?R% zBB-WNx>l%%7q<)DvX(~~op1FE0)>qj{eg(yz4S-!Q5&@`2`nGlPBykLSp$9?2P7VU zh!TAcMs_pny)rUffSB(7R`483A|-YorYy36aCF-CL<9oemWcH+rg|*L6oq19C9c&Wzg&eO5Ku zUci8#PK2Wl5ZA;M(o=0C~0ny);r^cvn zf6q30duKZU3i#TNF#G=_4e5Ua(tiInPxQajc;Va~8+GzX@*kN^o$kd%3gsVW`xadD z-B|It5urQijv^Ts0duNiGG8xaV*?`+@+)>4b#do!SC5vZ$0z= z$?>vSRAB~;JR*{mx=qc^3p*%8Ie2K~UR;UMPisdv^Nc5}3f*3<3bu0fC+ErH!}GDf z7NR;=NA&#;2nJ)HG1oeEle}Ys&YVD%$Po`^SE0>RRD`3KQ`5_`UE9hG6F}N&v;)u} zK8sEe@`#>y%8UyDs$&oR#;4!^V9Q|V{3L+2bCS=9k8fJN4T5+Pp(HcmSJIrIi2??9 zk=Ji?8zlk#_Su&>yW|>rbtJ^YpTW@cJ`0RTmSl-1mc!R~(HaII<7m*^dD^K=$~R#M zNa&TfuYj#etwy7DSVjiounZ~qYhL~NZbyT&kgakKlUy&IZN}NVE;Kj;9O;tY(>9tF z<-rqYg+jYQ!qVBwCDdemB0Fb^-mQzJX=Hk0Qx;clWLt9tJi-~=|d2K!4&C0gC zIN%KTmi+wDr$1WU?aVKlAQ?TJ#m6BaQl>#-yS8Aby zW+oZ|+;pG5p0`82U3GO+OaKHWSN%K#%hZc^eI>k|K5y2jOp$oJYu*Xfky(tE$M$d{ zFE&4fX|GXCS#p?QqfmO|4$DJAp*j>Yv}m102G92zjNy-yiT4EKcGxmw2>Dvw zGtQ&)Q@Z)ygD>@MeZ-Iw!2S56Dp{DpOwINS=)*n%HHo$>;3VTK#+*|vpN9ixOTKTivzco9JF)jSt#B-ZaGJ1VWi~D&Voqk0yM$HFSF)+eL z&>q2nt-3UKcQRF26lFa}^JPUHj2ekC|KU#BcEN*nH~b zdGbiCngyP*S?zOB?GK7yhbZ{6`tW8)Brx93W9!&U#oX3dubXC@1@&7$N@+#7j0~Z_g>N# z{>?xigPyMDFrn0v$DB7Z9u71P=)lMSg$USkeNi0pFj7n>?v%~}Z|_VQz0O9n(MEr} zzSR`aZzbvsISirZb(akzFn&GZXhRB8OIsorz+4v(-*2E0LZ?&q{-z7uY8h^ zcJe;|Wx?Qg5@5HPqsnu7g^TYbRbI73N{R0!agp_UA>K(P!Q^z79k~CIREPs70A_pK z*YygJYjK=G>_QsaSrUmfTf8a5A4xSRq>np~%!p$|eTp6Hh=E3-$8kV8a3s}793llN zY3!5qms)GnIrwKewC&Nb#MDpUe*WV34q&v-4E|!_%&@&T!*WwJ^AG28S@4qr4rehjuetUw1wisskHYnG74l~8TK(+vRYJ?{zK z%ew=JZ#eSk#m?i|Ky8bo64_douMV3-G$qlamgU$cfVDlZ1vA>K_ z-a-e?95f@Qc0a~mt_=dv@(n#|$5wDqxBdH3uhgq~EfuYVPM>R3eo`4Xy>JMR2nebX{Mn&OG8~c__7^9CWBM%3XBUkxUc7a zwYzEoElfTkf(iLa*SiH?%(=_ZTJyUInT_8)O9jhukum|&nG_8CR#Wk1gd{|30Uu zipeFEXf3W1YDoKGF~Dw*s+5G>V|aO+dgiZkkscE;U|i^5@m~CpxHR8;?Ez(;&3S{8 z^zz<|zPgg>(1zCD^4Iptt)?@hVO7jvq!xsWD}T4*Sz#lOq2#X9f;i)IeQ)OTH-|&< z!s7h_9|Tp4Lam2u=52f>|IrR0=<0Qt@d1BqQ(0Bdx*zvi$9-5zjJ~=Ck-^)kyt)uD zs}O7kowe#xu!p-cr41Ph!KZ8$OQ5)JzDr7Z5fik4g`oxrF|*=0D19d04gSq==dIF- zqTmt5njo_7>uzeKllMBoF^CnO_F*&DdAmh;TpCo^Go+Axg;08+(N^_|vfx9|H+Hs% z8D;H2FHR=URmWFJ>|k3o#(^!*A^CJAW}7QY9IZc*WZZsY8%%OC0qC^g)a{cB7(R6Z zD)1`A0J;sXzXXOep9X(j+&A$~VyD~KK=>J@P{o4oCTVq0vt{m*iZZSxeGk6xyG|fO zCR378c4fjNL}&Bye0qHnIKrZ~Afv+hM7f9zu`+nhl#9R** z=Uxlm4r<8cHrKw0;Oe#E`yciv~yuDNEvDNk6<=^Zq zmL73yL6CdxYNL(!ew`RKTzY6K(Hl}R3cF69n;m)wps}_Hxxj_Iw18n(j4S(bHxn07 zo9^mu0Yk!gRp(_|%4a(0%c}}S7SvHMFRYgI>=aZ)eRfHpZ0iCn`-yG)(tCdDlIHgu zl)EQuT}R}lXSRyq62aQ=DEnI1pX&9pp6uM7dE9+E#I>`k|J*N0lq!#B>cucR3HGK< z+%QNUf5l#bUVNTdk+JJm38|9)xhNRlQ<0i%o1078ao}1UQh!6py3;AFIV~CAXZs6F zwds47V$N4WiBL38i;8Gmv;Q}-ns2uy-0v|(R49j=8be|-bTWnLSHvnC88xl?InR87 zM-ntw|FmgBXs46}Jp&9a!Vs~uM=k(WW2=OHUSmT*FBUI$r++ECsb~j0eL`Su_2e21 zsE3%9_Y23l>O3cu7DO?tS0A2ctm_pSdiwu4xVnR@v4&-;bGb`Gh@J5FBCD5sv71H$iYys;2`n9_cU%9I zMd5Ub?}&xVlD6=Ke=P0h>9nd!K)!KdcZ(E6d6$aYLter$BiP)>boLc<-wV39mQo13 z{+tuvFCalu)w@wD^iJ*T#dnIL26qk8af#rzNfiMm$fP*`Ib-C@vFnI8iKiC)KA%01 zuwr*bJ><^hnsQ7XDQZq{-5QYAc(j$1TnCDo0doEQC6hPp`+=A4?w`>V~&f8 zC=F+wNVa1LeH6id36w|MkNCB(ykWRk$xr>8Qkkr&HZx@O+s&<@_{=X(WCEv6V2a2{ zoIZ<6st5MxcriKKEzW&xL5C4X`E++y&3X{Pm5pD5}eLt|7YA1AQ@ouTj9uR7bc)F~+38W|C^B1O$bO0Mt_5 z{7AUlPjm5pYR$*nx;}FNXYckT{_*;d8;t(qYkXE3l$C$d(y^&Cc zUReH+TBX_qwU2kRORKoZ3Y(t>;+o^MUHFujNu6R9KiyVB#c8=z?47f_SVLRW6Z9X# zYMh*Z?WhttN|VBcd|M7!nCtu!hX{*HIj9LvTHExiL*nh&!+wJyl~$qD>h;=@^+So$ zKENlLS=>6Fc@OnndPYbecp^x$cIR^qh};&RsU&_*Nd!9(EH*YY9pK%PU<+<3Xslu; zBreim4^NI^ETq_PQd^fY7fbWaAI3Ubw#od}P2^iMs$H8muNV+qC4KQ#{4v4Q%*qQ8 zx4Gqv|6Q<=G~nv#$0JCXe@m#5{oW&GWgl_bqd=_DPxip5b+uGfv>vrB_{g&`h{qx~ zvr86`tEV+LTvxG-o1s+Y|A2j<>2H)!ZZyAc)6fg61HC}|gwcw^_$UBvE6~mr2LQU~ z-G>NSrXYh6}R(K2!AwSc66~AdF}U{7 zo_+bb!GMYaID?uhUt;F8Ul3rIytUO)$+WA`s=^cpiRSuq6b7+< zQgo(CFON7r{T1n3(@J%kY8wOt%7|K}7DuhgE+Lycs?z@P!jJg!Kf_rBvyI!o8e@h9-OWZG zMA&y-{tKN3+A$M=|AQGus*UA?+~cMQ0V|6p(ZgDH^+go>8n@19VRY%tr-4n(EBZ%) zC&u*0do(GHPs{E5#|!g=2&40_()fo5LT%|2kqXuiZN>&+*f70F=rGK^f1f1c2o|FA z1W==1)e?u`?zO2FHpB;{v;pKtu z{~Epdn8O_}%E#3Q2x?d_))ta|uVFlce*Q|?rIt(>Zut0xYjJMP6en&^@z>YDgbG&A zVN6b?7sYs1w*t+jDSa4PoEU~nDSAJt>>joxrplKM%h3MRn{Pbiqb>N0GD%(4tHb3` z>x%PCZist2C7*W z5&hqrM06vgyuas7DjE>-HhHR`v&;(LfYNZ?^={kM*~LKj@3SYocKuVZl;O2CH`xjg z1r45C6o3X(nQ=k)Y=!azQxP<~%<8dYf-PN*Bp;N8gV!%!MKe2MvbHEm7vW!}G%`5L zXZ1pZQq$IO5}W${#b129aUHg4Rn^y3K)4yhNB=sOZmpu1*$_k&?0ncBtg~hCtZr+L zFJ;DVAiRXi)0`gZAJ76NQ6AoI>U8pF4<2KCt@`-d$@dt}zkE(hyA-eTlC+AYVlC)R zA?6gpS--m#+^hx+4(TV{*uacUc(^1v=8p?mEDf>-0|OK8A=T`ihvlRh9wV)Z?Z?+} z;3$IQ;KUW;Rl;WKoFHjzCT2I!HKRY3`?t`X+)B&Kmm>fF9IqkI5FTF!R2%`o79SLJ`&vXagv-P5v zIVGqnz=(9ybU6pcwOwwj)Hiq6KbtrGBPjZTACg9~EbQ=u?uFkgdvmc7)RB8CA9Ge|i~kRM?;RA?+O7MlCnW|06?qmm7uP&ULJ5n=o=O3ib{9`tMUi%vHlzh7_l}HdK7db^Y>^BU@L)Y z-=!>5_Bpxd{OsB|VnI$d^iJQCH62=~36aa;(U*qa_NWOob47-<3SN^$g`~VeDu!OY z?f59c$5nR!ms>OwX)<0LFaX+f;fEtrQUEHVAD2*| zP6WT~7JLdk)P-!^k2fZolfgl;?+U$BQe1f1_JHAG7lo-tx!GOY^QwYB^^#u~(W)^` z$Y;*QaFH#o3h#f^a={F8x{W5jSn$*Hco0Np@RAsPq3oP^IQdBHAWIlqF-9w(fp$^_47+?k)3mY6wSRGQ5uh+gNQdThDuUiS~jKvvze7Z^RrHV ziwgHA^UHt%PQX;=pT6$t>Aaa5D?fYy`u1`_d7n|_)tdq-!+c`&azy5%Fkk>jx+d1^ zPVeHQFH#~p(Re|9ov#avc@Rmk!;eaJzSD>>Vil$<(Xn?lJ$D z-~B(??@ssmEC41O6~|C5!3V_Cz*o4KciXAyF*RnZ`Aas*LcXZOkS>JLl-fX{O!pVX z$)m@Gv0ywv2{Ovdd}tn_hZ`oTZt&wzi#SCDucs(kM8%}Y~lH@kl2kLTh4kHdC~ zCg%TB4ee|b|MLy);l5_p&y#hiJ*vF$k0=eK6rul@UGnw z`~yC)^ElHs%bkoMmZ!i{LHnJW|3TX;0ET;# z{r~RtoDu5DmH#F7S76?c8-MkRbk1A@M-|>I3a##x1ZF(?4u5+cuY`C@Xhyay=4c92I1CrdBkpX$lxHr5P7ToJcFIQ9m3crXBoWK^;3&(fj+f?KFK_5g`QmT?+!1> zue5eQ1q?5*qP2y)VW9Wn01O^Mg2b##&f4F#NVh6pPUzSA%lC^4tGV#qUq8>x6x?7w zl!}@J?WR>?1+oT;a8e+g!9bw-c~T=&J}Kn=Lyl59z{~LPXy)dT9=gxEe~1lBQ}Cd-Is}LzhI+Y zp>#!1W&99@!8p_}{6Y3x&`EJWT9|iOgcyAKN2;$)oXLr$v%4P}gH zHqrgKXFFcTK@h#uw7$0l`DS{nHs$4?kPV3pJB8pn_o|kqYI>=J0e#(AmIJFVT=)4j;&gTp*1`1mQin7S zBSZH{;>?SPn2V3xUa&y=ZsTr7V<}gKHPC*9*YE7!T{8U4_duLL^#LDYWT>L!NNI~C znKCImyfL7j!hchKo7BGAvS}srWoN!n3(pYT@g7GvSw!bavAcss zKABaSjk()SKS$P!le0PZiWbGkUowRRuVR{Q*(-CKk?^FTwtzZOf?iQKvf5wQESjW( z1@NUbk==@-nG51P%wZCF?2`x5iJzC+m{TEfnH=79xCfkp;22qlyXQ_iUEHdxXC)-1 zQg3i&1TS3|ei3OnU@ZGOzX4q`!WPm{7Zq^QOps9x-xzy+iyX)H`!k1#2A=c~i6#c>+x3yZ3$ zw(n+~t@fEW*p4}p&!YI61iaKgggBlfzK}uL_{_I1co=J&BdQeXaKTt(V<|7)@6daT zeeX>AYqrmaMI8hlVF*c#PY+Ral5B%RKB0=TvM~rv0Zf#M%2UIS+|Rx@sRxDUfH&iG zL!?3WdbU+90pLfBiqE^M%&2`H=;VP={NlZjgo1nFtoI63f?AdmpYO4eL18IPTYAT| z+rJJC$`=-9^=r^Il8Io!br`(>Eif284JeGdJ6c2jcd_uF=&>P!fc@L~IgWb1N!e2VI2 z`Mu<8!;m9>=TpARg&S?}gbXYR8?edeTlow2v+`EGQ3mqTwaN$aFF@ z{))z%_g$uJ0fGhEr+nk8qcbk}4qZzQW7_QPgCSecZk}m4&MEv6ePlO@Q%o+@v}d;@9hwS?sq}`1EN;&K!G7R zR3onX+X!kCQA>Ve7C=o1%}LJRJXO%lH^*yDG}LH2lU&yh%$Ajv9WhIjL1bocurfZI(~KL6V0%dla+v-(vz#nqBk8WdOk-~c0H&3!Ny&?nro zWet(v{J}E^lU>8fTNbKgKZ*0){bgQVJm!e$V1Mui-T!DPNv_A0mK)9~z5z#`2~b^L z21bsK2gFbTc{f#rAz79YcQaTN*IG&%kgwSYS>KIc4Vuf9_9i9nWxH5#dOW$y_Vtye zBU05pj5gu~Q+-EBY;c1s$oVd8l~e|l`t#GNQ$m5SUqhaCjAWH+RnK|3dv_AOnkJ5rk9 z?~aykbxx#7GKXDEXSXdk-eIrrl=w>-onfNMXq~56Bh71DZO@Uhbt9I8U z_eRb2V-v$}K`nZ9PI8A!-6Wg&ZO_}j3mvFU_qmH78BO6xo10VBbDJgVR$7#@@z>6f3j#%x)iGw~$2yzHyyo z;~%x`oUE^5eKx24)O6KHM8dNh0+txToa8uLpPf)iB`dqzaT8jb@xvPg-S=FM7aiEW zLW+b5995Xc#?{KlA4TSZj9}w3Rwh@AZUsU@LJ6U-`B<1=%?WeQ7Ld;1{N3h9=N>Z- zHE4`egjpz5n_kdrtcmc(rZi-n9klehAL85125VoeWp#>-uB=n1innOYXf;*!OMg&yG!LX$XtH`Gfp<)CpABps}>QvQz8wwd?dpFmQ0R zp*z!B4DGmdfAFB>FCXl8tkMWujzDmHTNYkQivaDP58dBizQc|f%JE7YI$fl_n7V6% zj>eM%{^|EI5`iQ&C(0)EqUqHCw-fw6Nfkc^`NCx2Lyu{ESYHrQm6Yo58^l}~cojVa zqJ|Ea^S@u_R`no(fHwq^Vdgwa%z{mzxK+(DCJoUW`r- zTg!jv<0lder>Cb6>I45H{`Uv{*9XcBEfe4PzucvXQ8j#hF^ZqqrN7{iO%wBDoI|({ z7P)|$XA%CG)zTMmpb?B?u#VF4tSI*tV=Nnh+*hhgRE;_7*fo^w4;R?+49vMtaGFJE zo}dvvB=ylGNDfi?$7nNAvd8Q3I(oCAfosu<2k=7(XzXg8=av4Qtf)WA#_W&WZ;Kb{ zj2}p@t7hMj-xocn7*kdFfsNx6_tot(} zYJitP`<`m}6vTHrhY`=>m3_~MCZVYnX*!%(OV)PU&TXm9W)~$1aT$l#^Y68|BTOi8 z*T*>3x3i)_Ewb6Ri=_+$_SB|`eODVIsGZn%gVS8igKY^ZPxRgTy&LQM#jUYg_{?nm zxtn4_W`}5PY&aC18bp?FEMAz)7M{|FM`%VK&4p<|;D@*GV`rtP)4_%mD>WbLK_z!X z;yF)doW+Tz4xW^w;OxJS@lQblGhZ9#pB~c5L92O3B|k<9H5DdbeX*R_7^6_{_w{$nxS6h)h(jEwMl&T{e(;t_=2x!CN3R~n-)W-#cdNbNMPC?mehiUf zWI*it8eU1vCGP6%Q_J4p>NcbrUFFCt3Vz2W4Z4_FJKdA&weCNsfoN;JzUn$L>5n8; z7%-=#zW#vji2pu0tK_cI|KAkj8}eC595!K6QofjJcFdY0iUH!5ZM%0uXIv zF7n>(pAQzKvTi7%XuR2Wgl&qSwy`H?e4Un$U;i@G%R(n=FT%r(8TsJYPcTqZByin> z^|q3Z6q#W8&KZ!@9xKj^s_uEQdUIph9S(|#Lxq~AIzN2@?z15!f3R!N=#0}|gQYIh z_8zipz#oo$5A$3djkK~}@k>FH5(42uIoH=9N~*3Rh?3?YElWkrCaMfIxm~;Z$QkWS zm^(KM<9M$&H_Dbdp(_67by!3d_qtxo?{z#p&RLZlLfDw+0zMXAU1Odj_=od>p^eY_{OEHE9jL9!|2V+2?(KV zroh5Ri7j40s20%7d z%%w`6obZy$dP7VoXYA!Qh18>BD{AqlXjA}KB0o%JQvF#_HsRts``ZCz9!nGk$>48a zpKZoyvy1DRA77KFl~7VhXqbq0D(*Zfulh>GqJefUd&r|-_^t7dZ+<0$149p=P)o&{ z)E=CD-HT(y-8>eWd^(+{`xGdR%r#jt6<8UgM5d(|bfYcQe`hHrG3r=ZE zW~xRzUZL)xRIBa4_S= zZggtIAq)LRDGXy4#O{Y)2)Yk@c7OLaL$in-eSEg71px~EC&vRxpshM;_Ec(fis|bH zX;B9!4#ux|CMm-aza|r;hnr7cquLNs)^h5Y;$`yV2lp2r!;KBJHt_IX=>Dw#fwb-)Fi-L7@?- zd!)|(zM-4#F_iSau{Et0F?8^8HtA`arWbmy`ITPw=Ibp&+tKBxlcm<;_v|iC8aN$P z<&{&g!sC0HhACFT$V5h8U>?6Y5VKQns;1KzZ1LGionf9xNjmo&q^#aqOLl=l9?At~Zi zmq;)c>*Us`sPY1hnp+qO?)!Nk6JIeA3G^B#Z!kMF9reO;D1E1nW+mh}F?yqs}SEpBT*wa%rHWt(sMmZjCNX-VOvi3*OvY9onA}o8VUE zhc04G&NB$FPuMTr8xB}hAnR(nL9{koA6gFa+->fm$9t4=yx z&b!~i_fWkpdk;ZUlGK2#edte9Y!H^;e$R!`e!wrWNVCq3s39%amyux#hT4*H{z{TB z_T=Fpq@mTon%P=b87picBAh2ow6~95C|a^zlEJ#|>Uk{1yN( z)D_$Ga!VA*aX;g#T}Om7?TjZ`IbZFO`v@9YymrU_l&XIb_pm_f6&e*Gop7hA4zt!p zEn&q(wGu#PV`3*3XV7+*P~vf+TbP!iHk@8?bv7vuFo`C=?5dfk`r z1hcFxDS9ziZk*bi*p;**j-n+N{#6dFa@5;dz*RSFC@%%l8L(Vp<=M@IZedzl+|5U}A@TW(_g+kqk42$ijCD=rr>rQQK6R{# z0&b~6x!5N#YS8WlLmsmwXiyx_H|Whx8XrRx^=^RF4_XG?>UW=0+2Yk*cMh|jxF+n= zAL}fs&6+%z<%Vf>f`kMxAKmjoIFfYvFUEuzskreIJ{6F?ep?b2QJ?M2PKsQX>0PWL zt#;kKt@{=mJe6^FQsW15Q_QJ**CXdLPT7gI_%#N8e^6Ti9~^UHE?PoE`VNqdiBBD_ zBF9i7P#?OyKxJ!Sui2@EmBYj7EBZqg#msD7_`bJ0QDZKV9j`5zB%s!hf94g5NOIL} zb~kwTmamHk>iS?5T4YDZgANL530fSPZEM2Bwm0Wz-y*w56o0C|sGoRLHW8K(7JXbm zx*GyXdG;>NjkK05*xY&P$WW3wZgW4#vbl24t%emX5%_D30^>zFfnD7ssjk(7_|jj# zHQ^NrYID2q-jr-i$CXaarOb>KCU6fbI%}jCECDeg-G|#A92KrvjuL9Hd9vI(Ng^~K zAQQKl1WtE{J@;i0o6l>l6yA`p0|2(7jEPfrWahlw zAzrip{>LlNQpnoqz;v8Ko58niq>qD{jEYQRBEK)GTSm2&b0BZgeQAI{4DNeC1eIUV zmyWcGd#|jN_zJ5LPKqAWeZNgCFZTLy7Sy69m3cz^(?n%+|GGu^JNW10Bc(I(2{BFu zt`G>F(arn1qJp^48-WRgkuWtFGX-lgfO2o?>gtR1J2Tu16Y7N#L!Vm?e5k`HQQ?eD zsTKlZi45yj4bAF$yPr+BoN-C@QxXDa@iIdc^j7|HMy>8gB`~*}yzOI;sy}SdD6v3N zJ1y>+*mJ*#3<6p)=hdN0ls*L3+32YGw5 zQFsoo0+J+0jRsfkj?cS#OvB*H*bpsuG04-jU*eT2ZFVR!E-&WOp9H?}2H|acZZ7fd z`^SZh?)#kvN`!UW6aRzs8u~;q5y>EScbbkqla#vNnNwxkBXTWZ^T>V8x1)=iq_4V$ zg!_cUhK-yWdw`^FN8AOC`gz!!W02ehf2oDD^VWSBcJl?se9$Z7j;Va`5|rv3W$N8z zK9bW&0Fh+sf1X(E4{n@4x_+VpEYYtAK^ydL}~LDO88a=<*Zv^nO}pz}b|T zBClaSy20Gj$*r22`JyDA@DDZ%v0ex(DRf?3oaeMlG#GevHUnt*7|x%?@E;ZsK~*~x zxv`E%+N+KdTeY;KF|tzUd{tJEe1^Zh7q$%?{STDX!d6m{10^#Ynswq;{*6r&%A&ZCj}|$t*^o zDjxtwUJYmVrD|$xJ|0!$4*?2;ex*RLKn`KM@^{voFgo0)sLL{mQv*E*34@fCt1ASs z5N5i&<}^k==qxdN9LTQQg3mu%@Zdq|@^?CK%FM}mWcRwWh>!AxG}E2BTV>VyN!hd| zLzb_Cz>sZSmk>F?OV;{lg#aKIqVr>cn1RQQ&Vs=}4%qd?oa2*onk-vadU3o9$}5ay zCG^p>?M9FkoqyR_NQV?PosUL70Z*(mPFypz)xmN^DFFPjEQ|b@b;h)em$%2FXu&K$ zDQ+&E*5^FvzODfc5{`Y!{|Gm+bP#rMn#d$F@H}a@Y36W%44W+Qx~%4Kt9P1**XztMhnShYavbv@9BOn(@ET0IJG~!Sc)A&0F9NZ2B*DQUOTHKmytr`^< zTkOM5=!B@Zv7Xqaw`$l_O!36jK7?!82!2$9(U-AUYYBs+1HeJ^j#oeM%%x4hQJRwX zGNlok6^mRRwN+M*`ZMmX#A|WLzhJ`gB^oF+N8n=0%+B(a)RA42^7QwXp6z7^9FNn? zJ}Hzk4DRbmn2FTy(IeAObzTcD%vYGvBi&{2Owr`STop$T-#>s%*3w2?G6nJUHl<(f z7n-u!o%b}doyy$nB|w#}a%dy--?io(>_+f{v?f852w z6VzJy8rhO*=Tv(q2d>9+KOlOzOCc56xWOMNmF{hAZg^lKgP?!mvf9>OKw@15@RoCu z@V)TRez98*r9toPimA<}*4}S89BK<2&sV9Dm-AEjDi#5{L*vO4O*dxE{000oexq$& zI3GaZI)pfxaqUFL--`(I(n*Q&KmQX;X2gZNZJp-f+m1pR6PpYDhG^agT!F_hHMGup z*p7Njk81^Ggx0n=dtyp8?_wT8;)K(;%+l}}Tmug{vGt<(qaj{C_lRldkhC<$)3 z*>OYs;}j<1-OdeGVkn~rT5xm1M7&0MYW-EdL92O1MY*~q4WeW!6cUD&VQgCTCAM+C zxXy!Ui@w;)tvz4&5U<(c+crEgOfj?iZ7NVrVZ z>uoL`UtcC>u;-?0#c4ga+X7n#o5MN*ndITO8($)t%J1k0cO#3gA-fla^OsQmi)@Y~ z-ZxT0&U~gBr8DeFT^r*>Je|ph<_o&c{5x~Ehex-}+a&yHX!xp(hhx!S)fH|CZu39! z0ScKF@;udGg**w>CPxrs3#h;f*37x@OECc7F+HO98s+tE5ht6fS7D@BsWX7mv!68k zu(xi#bDJ>#cK|eILX#U4MNKEG5PeGp;dfKJ6Rz--=5#1Jk;c#+OMFkab<}!qd1uOFDm{g7ymCR{;yE~e{CwBN-!f|(G|EBbcWlX ztvDDl9>Z#uF(qGY!iGZ`-8Nb7{#FlC^#K9-U-gWbtJmya*Xja*iNRKgVG#0AhQ)JL zkV*!0U#Z0}lw@{e;?xxk(DAMFdsA4mP~RSUTdKLeNaJA>jSL>NP{GFxCh7zG)?sK# z{oB4879YJfSp5c5{cg4OgQc~77PKA1jUHQ?gPO>ye(MjtUc#+#$!kW=!o-QnR>$&q z@(kxjyV`KO7ONira`qo)k*`;`x*`ng4>Pr<#U7>LxnJ~5+YCo;oooEe6r#}DXDCJC zhB@ih=<36*@3%-9nT~Y}^9_no>>P5XXyrDxS?#$smo_^~IW2O0MCo3Nm^ptdI5whL zR~d|Q8Y#t+aQlSfXJh%BJG7A|uk^=$^8P8L#8?P}I7-JfzGvL&!t=TAXXu7wm?_1z zAc^bMgMvTbs#G#5BeDUw_e3dZpyt_@p*@!wt&lkl_4V@F`ibPh;q8v;rni;UK5Z7n z%+xDM1*C6wH)p8B6-o#Ew_bVNH6b?r8~`rwe@`)To}|ScoPcwa%Q?Wm=8F0Fz#?xo zsAr4AYiej34o-f$!m#Pu?r(-4jW=UPHLz7{b#haFl(^FapD)dx=oQo1`Anr2-ynT$ z-Bq(G$Ur0I)bcHUk!bhV&wYh0g^e^>rzQj`$-pONxsHId+aqMB)JER$(slZmB)2^Otc8YQ`=G+i z=ZjK&IFgitm7isjMQEPIsJe`u2zn{NbXavR~VRKw5P%h18VmwTGGBOXoDt7q3zV%t2`}oD8{h-wcxSF^ce?x@8 z1ZNXUfzN5uL0=bLgg2K?R^(}EesfppK}?|!lZ68o&{({7quZU6a7RkVy4`Bi>+k5P zAc1vpQ|*96=9w#tc6LRBc(jMT{7SB5xO{B3_Ra72)DK+q z)TZ*7k-9n52%kEw=S8RCFoe|sA9Jna8c>UJ@b`T18lJM2N1b{KUm!~3nk>dRC*?Ri z#h;@EKRorDgc&j@0!shH*41aJo6n4xNJL)-Qdt*w2aADq<(SiUgx38rAHP-dKN>W$ zHU1)k(TF@5X8-#9^MjTEbwX(n`aMT=ifoS`(;pJ`J6~`mNe8Cm57%7>jWyJmfjkml zw?v(tFBr~7J9_MOlRl0i4B4Gvart$1mC!qK2alzNo1Q%viW9}Sw}VCeKX^*bc;&Wu zXKVlIo{|A6HJs&!QgLYv|yK))W-El56(b%ps_=8ofa9!b54qUGXQgXR@ACQO-GE>K$b!!vTmWs%(z>E#YTJ`>rT*5F{N>XsrfsgUHLqsaraK_e$L%hH$|-iIpdtCuuR=ZiWv znamsF@rR&^)xR;=!I#nqO34D;OTSOyXmcW{bsKpjV;;`0z`D8tYZps ztq-QuH`__8L!Cpa9$1wG4`Eri5^NvJL6xOWpGh67#iAUPnYNo(s7Rm|)06CYU!-G( zJf}(UXCV3V%QRxEurT!uG#zVCEb^b&c#)ZX7_rkwhgz=D>VcdfaSFSbFvu6o$_1|} zfIZIXm&nuNXa{;m)wR=l98IZl?G>>36R-056L0sLLt^yz=)?Cuw9t~C-*U(?bn)nm-ox38+bU@tvmP|KS89O*h2W;&uJ>CYDi z&!3;uj8x36dpE?tHoRaKVc>f74=qS>Id1EbTPEF@QFh>o#jjsKQX;qa4}0$vdwkqu zy)<@N)jl?Km9s^oCc49XYp$urw8QnB(UfH>yji{=NQUcis8FEc!!-f#{TeIHs^CDd z;8Ol0ngjk{_muJhH&J_JczSe>G$MZN?6R^wHYPv6DxAa&X#;ObQXsUt@*_7rg^#qE zbX5S}`L&Z#9 zzKj0rAJ>I<$ycR!D@wc!<>XQ>S^~i|kx@V_R?e|SQ+~|PC&?4q+VK1_nrZ%bO?#

    UK}7PfehQt$}-s@}sC(Vu}shy<#YQsX(E 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

  • K{0lxK`&F-g)fzEh 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%0A8!{$BD}eTh1ntkCn~qzamv=;GG+eT_F#MW)Ohl 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�V{dUA`|MP3S2vuo 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 t5u!^}9>t1)cu4@r*WT17Ng`0(e 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 KB-89r#6JPvd)h7l literal 0 HcmV?d00001 diff --git a/zh_CN/docs/img/QuickStart3.png b/zh_CN/docs/img/QuickStart3.png new file mode 100644 index 0000000000000000000000000000000000000000..11f24f7f62ebbf20ca334edc9b067170d427fb65 GIT binary patch literal 94429 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 literal 0 HcmV?d00001 diff --git a/zh_CN/docs/img/QuickStart4.png b/zh_CN/docs/img/QuickStart4.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6913e6205766add88fd97dad20576d8002267a GIT binary patch literal 298514 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 z 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

  • |-R^!X=!C z<$|`&X_o|>Py{+p>mir!z65^LUX0>*EJlg;JK75I4I0qmJ6zp&x=izC~wH2!Rz(4P>d-WirjPpQq{oJ zJwe2PtZMQrMVi80tDfQxei#ivT1}V+kB{c zPK_5SDMcNw=`n*fmC@P|$B7+;nXPxu^caF-+-M7^RLard89PC-m^yeDbg)<^RIXim ztTKL;8d9n7eBQvRgF|9@6&?LkfD&7iOH8`46B`PaN+#XK5p4XnPk!SS7fB}&wHzO znb1=l%#APqS7i*p4F8`_p8HMw%>PT%sQ-~NKC}PGnm^S3BT|tfI{f{deP- zQ9j`0zgzK_|Ig>-|6hGnwF-xPK=hwJ(7)>xcbtkTymS~N(ts+}fDgKMnyQ-4|K+79 ztj^gbwqd5frA*R1cGEn{6|6)55a8#DZ(@|c`>Wzk9`h-BztX@AJr(s<=}(UT`GNmO zq-3>(0Y;4IX7UXej{<1s*1vR;(y=FTv)@2J&9$b2IPc_tBz$#DNg~4Dx zKa-n(m@z;ELSUw2-?H2COJK&lkq}F11>_uBQG_Io z<`$)RqsTjH=-QoRAxotCL0FhN!;^rppYPVmq~4tf;(-HLz(CRbmOqljODuRXbGJA> zu(U?c2-`<1*6M%Y&;Iv747Ap7b-w}%vh0(zWJ2PKuk}{{Av@#DKU*gOBxEX2t{Fzr}T^dNGXWfNi@HRx-Ck< z^du^Gg_b|H=2xu5gYxZofj&3Ivb|@u!Q(0syJyl&B12!^l+<&feurbY_ zCSqgMz~{o`!sMkq01lOA?$FKp7yUY#+tW3t%nWVv6~q8FKn=B%xo$WxRtMph2>ccS z6m$C*=8M;L0`1dU9Mj&wL7M9)Q#zfXVYLgn^^wHFH1nmd`Hfo~tG%i4QN26Y)zs7m zzC~!n-Y{&q{p+DLJcMR7D^5J`z^DH&6(Gv*9V9GqMPX)|Qh?iE%QAgdxr(Hk5L zST%N%S{TqWx|(z#bpuA6uE4G}mFN(&?v^p6^T+N<>hvd72mRQyNHH><7j{?!|AnN- zfr#cf?}hx(S$~y-%>W&Cd1L@SEjC9&yz=z+OpB092vaw8_Tx!J#H_DMGYWO*%CkSw znTzvXpT4#GJn?cr95V>$roL|VIq+FHwZ9NmQ0}taJ2>OkR=0^`U}n4Gb1WQ1)x^VSd~5Y9HPwy??Zix=iU zpD^^qdZiUNc1AOFaj(iZ>c}1Sj{-lAzi+&M(~ffnpKUoBOR-V%^SfDt_PyM&*K`v7 z8acJ3Vvde}V`DWW*;>byI9HRl?ED5Hid~iIhMRUFpgYTR6I&i3Oq!h~Ax`7` zYxT1cjyJb-p281*(jK8^O2TUvxmam|fXUH%J2|CkQIEB-L!B#lqP{g<@x-j1Zya8f z!!JYP=j^Hj4@S5Nd)Z?lHOdW#t7Ie8b`OsYTfG(tP;)41sv@NU{#+#={DljO(jWf06v%TaBgg66bc%T|D}>70&l@A&H*F$<@oFh)*x^4^5a*`cv9K67}7=+HW3x?!47 z5+dATbt&j*dxar#_llvi?RzsbUg7pNX{ZQGZ%`_C$3QR2P=bp9G8iDp*>YPzsCSa30jn>*Z7!CkQ$Uh`!XC{yiJY&dqImi zdVSrY1$&ht1brh)dExm&Vis0;QLw4fvb|ZoYi{$?rJ%II=AvvHm8>1E#X!SgCeBni z`g((H_o{P+q+e{|?zctX?=_6Bv%Y}SBBz)nkazhR8{2E^L1$wBL<*!02I%0g?;AkD zC>tcGyK+$f3rC%_SfRG6TMJX}IeAAR6;>#6z3o|=-;FqBqurHdfZ_Ck`ug|SJkgn3 zqSLAw>S1hOW8s%$FX;)?3Lye9`TIfj8%j4@S&u`Yw=uvG^el`SIzXssrw9db$X>ZN zzBS$$ycTbD6O6EH-ng|svJo2z^;wWGU2rnuVOOVF?}5HT{D3o{ExWZx8tWk_+_3HS zC|Y9oq$dHtwv-CRthbnP_YRN)o-sRD2Uc}V=5a#&@+0S}mGpXIO0JJOJ$XAq9B8@! zSa~|AFS=-3W8;uPvRQt=H&lboUkC&m>*NZ$&lh5g@I<@SRRnCp6Ip0Eho7C(UE&sZ zQMXcu;z^=E{AE!=3C4^f!Eoixw-;5UP0)sbU$${>{j&>}1){pZOq9$;-Me#@*~XIbiI#g*lnbUhAE?@+13N%1}-#F zXZw9^<|tSb2N{z5Og_)O77-;&E2ge++oh~zck6E|`>I5xZfP-5m&OXV9V#ej~u;^GD7{nR#tl@;$aCfH~R<&!f8iVY|l^M5&OCBCj9@Fu=f`eO* zNSR%M+(~e*K6Lc$GJL(#iBx`ZkAu7HXV7$*|EBErejL|DjlUO>U$muWhef9qdZDc( z*C{;DzW_hI^(4GQs+F{9UpIYB?5%Y?K7MzkKk>xyw5 zsJRel{FOY7+|Vn6?lhPuLdlJ=2a7CG8+F1~wnu9GENTa^2-sF%vpnl$D^z?mJ?m5b zv}vS7-|boJqxED2cRP+pMjczE46W5!(k(i)7AG>UVTA+t3UUdJ%=qcSJ)#q??z~07 zN`rBM3cULMO@F3o`OcE=+UdJR&Q=Z4*U}!-g}+0u`srke}#&8Kq}7}&4LTWaFt z30#wl%nWOH9@V{`vr}l6C$`7lKc7}3`lCp+$h$j~xGcKbtHX{;7F=^i=Z&Rh0li0G z-cI>3Zsmxw5%P(_B!VbM{=~gugKTl{r%$_xaEce{z&cWz@-s+{ZM*-(o_Db@!*@b?XUC~`3?UKGjLYfrL#cf=MOpsIb%w>uAR+Guz5XjD(& z=PK^3JoDBFH%LKTm_<*6^XUEgtnDkC{%h;Tp&dUFwR+9Ba$fc9S!S3Eg`?2)#4Z_~ z?W)lBMtLQFZ_OBb@WmD**&@QdsBHdvc+G3p{w_@7%CfH(P5yqRz8;%`;ca_1}Xn@^KLMh@(GoVAI33#-T4g{&!2f35eAh1Q0tMM5n5jKL6r`#k*y zQw^Bdr)&T_`xvXbW^n%9Tl)zrM=;1UdJ;{PMbocH;1khPDguATsM`oLJYlrQ0 zrXlP1`K1g@O!9B@V<~v+C`n4-ZaCHmZ1>jWc5jXFISi02kQnA!4XBu5t`B$`+=7DX zdZNeg&3TvYXE*yllruBy@msA9DArl-VXTDzwP`}-W$%hoM8Nko8>Yf@|h z6?bRNxVXNja@J#LELF&+`WA~k#yBrTNoNEo zrv4ciI$I4dY6n-)N(VC66gRN?_es{xiLDxVHfWwk!Q0T{Bx-|%&cXXknptk0&Fyk% zSVp)3g)>Ex7NF&{=&Ng%=+b_RMW2_H+}Df>SQMo@TftdW%wKhyrs z4Ywyollx6v->*OYlBeiNJcP)#U(imbyG81hz|{@fisfGv(H8eYx*HDkR>|P3_o`WW zV5sjVCw@~H^{RS(du8I=)Nf60+P>vH=E9kszuy}p5 z7!-vWYmHdO<@IiBs6LX*UU_l%b7FS5r0q(P{(09F`V!YesN!abZcvnQ*cV_k1b5Qn$XXSOVIH0?WPv8p z=yD?MPR|ICfri&*5th#K@<__KGSoLVjjr_{ztHdz(j* zXJ&C~Qw=fer3hP%Y(6QqN%Cb|S}@e=E(#^uYFBG5%R}oFVWA-e9S?Ck%kpCsbVWi~ zlj1#wph~pz+Hu0z!%XnVrH--{hChg=La~~?s-VyrF6D=k6GEm=2fMeM%>LfF(-kr~ z(|OHr7kS0!iFxScy{}l7%cT802Z8K__5t5F$uGFaF*>$wKVSK#-B7yXW7++pPbZt% zFKA?n+uo&qFIH8u1%wZd8gP~GT*eLdwL9@lhD4hQIWKy-r0$5xz`Q3tm}=-*2RtK! zmPSgiuP10Dyh^A-`F0LsI=Rpv@}*q9-ya^IB%{H5TBw=^6YlR>)gMMw5>OQSn}K18p{;_T{3YggnApT?qA0&L>wj0PC zTSawp@*UL))f_ZkL%kM&wq(u+mhcZ0{##(d;7q+!7D9~RncKoHCy@IF<+xnTRsU~M z>P<7;qXP+APU2o+c5VJ&PAgZY`mENmbm#Q0J<5$;b{cbF?K(~hhMtqhk6uz^vLZ~w zf5_`S<3k+q-k9Q-3OLuuO|C8GJG#?pr!;=Y?kLUuuPV*%avIwDwiOCh>3Oo)Yze#S zUeo6rJCZ4KVeQH)!$4U&&4gVB9cfGF)zpl*^U;<C z%Fzu_`pp!x8cp9%6VJ11@3dbDQOhUxIlowk+6a|OPo zA#`)mIP!&ktr5R~UG-DDv`SJI+PdXe99>Ro*Qv}CT|fR&kCChTLf2j#>SEHm;@s3F zXcDkj_pU&6cB(piK`IQ_zufd%ei4hAXZ+xNi!3hh}2!2`vIq=# z(y8qAUTU@#R>8Nq*YypGnfNw5+~WzdTbw&(`-8O!P#etwH$GK{Z^~Xp+w>zt$74+w z%>yFXI<%W4yo8dXQmAfI|4Mz6=+RcQ$+Hw24-W*bhEcW(lx7~ku6U$pJ?XPM--@7J zF}+u7*}kE8lOuN{t$wySa6+&ZHTJ-cG!R6cC5=`cpr@Cf$KCzTlWZ(Qo8>=aa%mx2 zBa_y&$i-eZqSb+nwM`2RdYod4B=o!-WbCrV`#w#fC~oK4Wa*5pmWKPrT3_V2r}#G| zhd_`YYUx?6om`fYsQY2L&m)fhpN^mfLeO|g*pA+eiy}|!#ibQcTv`KK1;nDD97NUe~RcvB}<)+_Q9FlZ$TfsWliw zy=eyM-jdp&0>ABVe9PW}q*A!e?p4n6aFodYad)Rz*g*Mp$inJ_;bI+P*ab(!FzCgT z&T0)tLQ{e~9D=NYaEUOpI?%IaD*+acTVX>jp%2zOFAw)D9fZ)!TRnW(E#>9q@6X3V zvWW304>=`DeadooBFy&=g{;={AvZj$ElsrK~?oI$>jnocE?QUhF|RE{ae7 zsw+sKv)R=BVlYESx^}8J$KU^5vO6}RVPx%B-Dr;5)91Kw(~fzVoC>T~ss4H<-{I)* zwVNkgT87ux0}SLR=LC-~rykqU5bO66V7b72A?&7HG1p&mI(Cr297nIAR)w(j$HF^C zJ&x^Y{nzh;M&@}E#=G?aErfF=FZekJpT}A?MC?G)Rv!20l62@x z*N&o?7j&hjqvGGh_x)X3`NyUIxe)p{i2o06x&9w+d3Wj4*PJ?pl@MgQ zrqa^xPrE?V+*20Ua;%>q??q;g)eo_c%`Y#XZo>3?9dmtOL9tP>#koFDBd`aLFo>XN z#w9MVTkZU+_b1EQ<9(T-FY;vuhV-A|$+*V~tE_xCe z2(YxWT3*0F*HYJ^s6U118;$N#%`}J6(~c<_tG5e-(}k=o1oe=}-ss+4meHoV6D_p82%0j_C-=7_m@B0MWK$s~@bJgDp!@tdrX)^8W zO^L+o>#S<{BMu;`J(nqA5c|lQu-(sj!{U~=GiA~TwKkrFhNjtt2*vJ>=H3GI}rVgnnw* zN5Xk~Cw~)tJWb^pjo;BFPY&qa&3>c$e){_Xo$0zotL0Hv;O=?k4M4q+G?Ny<84R+V zY8dT75cu3?om9h7?n&XJb?U9rPI78uUvWb^wg)g@fW<<;nn@}wsXnP-%`iy?ju-NX z-xQEj;SNRKTTtk;6B4l%+?X$$9)7-AVD6B+U+At;44`SNb5%E1MBZZYEq$6MD5J4_ zSZ`V_{w7GxY7-5BFo(8w!D6n-r(-ut-RxKm-c~upRwxtl5=>v++dfzFjJFzT(jL=<+%v znCF84vFx-)w``-5F^jRy``2kWTBMs#rCWLJX~?(~7AJy1M+?8fuG6<`zhg(2R_C6< z2x6P}8l?t*P72V|npFAT9W4bt3r=^5w_dD|vLdkl_d{0m_vdQ|0vy;I#!^x{IAvsW z&*ALe7C#-I_q0tO2=@2exzOu4tDz_^S-EMPb?dqe&Zkw=AOi4;6nS2iB?=QwkWEdj zFgPPSb6RW1mhUudqdIM4yDAZT{i2UhsABy7JL^2U5bk6Ez11=;RfJRPy1_vvuLPrW zA=IFm)A9NsPy-uJ$iJuGACnom3qzQtoY9ft8eB{mcU4crBtXfOc0B(@d4Fou+`NcVowPyBh%Ej1@^m&nEJ%Aa_1f9-ev$ z6l*{zaV%+6|GZygY+Hx7v*yost+=3jH40OvQGNEdp#mmfiW>ZROBEK%67VeZvX%Y% z#)g#VF|1>V3o{0IRD47?0H-Q%-~NpG`|R`Ab36qb0Nnk&#lAP@*F{(*rqacJ>8&+d zI2pS>Rp&M*u%BPt+G^9$(J>;Cf32uh#3Pr@H%5Mah%kiCQh%Q>!eVYYJP_h}2^j$S zI4qZwlr31%Il;U1qdSYWhH9!A6+r2ihqf8HYT~jw#|x1UDDSuj<950MksJJXuhCbu zQ}(epdyv5c>xpsvQg>1Z zL++C!5^3}npWVl7?gIYlq8~96K?7+m?qOpjgPzh>-@-Rhn9xHjZoTUsGtt^4_Dzty zw88NF#%=j?YAeRxyPa+&MX-U4fb}1?PcM71E_^A?QmQpxtHAak`FiNo8K8#z((kiR zy4N8yTNH@CJ}7Zw5L8V%QD)O*k}YQ@%zip*Yfqb{*moja$*|;d&6u$f%q$T1wD^l& z61LI}%kbEDPeEY6**=kB@>|l7Xa5!QZmucBDS@y)=JEMpLR+2DwPo3W=xK<^m{L@Iz%yylcJj$W8UdS{D{GGfj(O$@KN zy9DhzkdD5O&Ht>CP&Yl}WFrPgV+*`l(ce5h>I$_CjLdo>@gU zn92=Cz!yuTDEAl8BvxcY&&Ov3F*ky>-UbctMF#Zp``&m$J0MJz3?~l+VO2^b z&w0YOtc9n_T@MkqzG*x>J$#^4XL@da z_kK8bcN7h|Iom#VLN(R*$2_fj_Vl*n4lzQjx-WHGzsxrWX{IF6cTD2Qder6UV-9t6 zr+#`m?Rps3<2IMvmEezy5Omm;mfnKl+l*3qqjS1NY* z#;xw(rk{}UJ|X`0dmo70C@H(z!$=&pNqh?hJ!29aAQ>;>VDC`wFa=2Y=>cE*`8O%g ztv47>CH6LRm34F-)$>pZ@3aYWz=lf`KRl$vlSqeW9=nY5oWhvkCB6c{x}gSdD?b-icTAQ*(pHorBWM={7B_Mz+*nVQ+AHMP#++B!+6!Sb|3xx{mWcb#B}OKvcDHg zdB_caM;tEytXo9vOA&&Ay9pBm2&c@D7B0u&U5-}WgMQE$$MaP=!v?%~cFAo|)?zwP zuQuoxK*)6__2EjMCQ2lvVsxFY&)ktq^K`=J{S02WB9F%m?^lk@*ZfiO#Hx*z_|STN z%EXv9nSB5ChC4IyD3b~nO`SU7Iv$lejM#Mi zt&zyPy;r<#&^+rpBf>L+3tl8<>^HWc%pi<(fF7aFjI~TsIRmE)=60S&j`(Ag4i~3K zC`ZU;lBdx0iq)TvRegSk9b(JWA%hwJC57`H9%tDLTg~d6fNyJMET@W3PT!2xRi@q3N}a6FGZ<;sYGV=`^}a2r?bN4M zBY`c!Z(kU?m@i7qyUnicy%wbt&*!Vv@#*_-Yz69AioNlJ(m#+Nh&^Urypp-;(tbv~ z>}@F4ZYBJ;BzY&8?b9@s>ZeCmh3AVO|Lo8^t2nqFj@}1)PxhE1My6Eu`8d3C92E)d z<&JLS@w$hr#;D5MaL(1StJ37o*fBv7Q`z6mc`S#Np$HCh3gn!6mMobFzfUBi+kmZi#S6 zk?rb*5V90bzF@4#cKWX3{HeLgpITVz$M<7Zh+av&UP_y{QN2hVTJ0qlPhlSNGuWD3 zTefOCAcvyK~MTu%2djrhmO+plM6DZ4$r@6uKZM+ z0JIVGgQSU=UGA6%>UqhJl0mL&AnWT3{j7SqX);~|wR^&?bAu20mp|Q{3JjU8y=7s-*?MF4JX7&Q?giM7pQeY#Xb|e8oYT6 zg!C-im-Bv0C;Z%lxdQNfI{w6YJ0@Ke=gV$2dR&qatTvd>nrzl~9{n{v8}i`$DkXm` zBY^}qObF%ndXh!7O&X8`h1$+~Th10=i!dJ_sDcWcRyt7VJ+d^s! ze+4?J=7Z=<;H6W1ev5o>a#nSL)$je9&t|T!ty&MSP0~_bvC$>H1;|fQ#6uZFwb@uNv!Zs-YPCFQf#K%|8n5=N28mH#DEumo^=Yaui}o zlYSSpd$T@{@1XI{a2%%>NCW({*|;mTC$nDqOlko=&X3+**!J{~>8aXou*RjHF8LIb zdnR!4(j7}FykwngmK?hDt!D@cb;f%+-DfxOsW&HG=?^WOkLtbJ4;+GrBd~kZbBN(6 zZ0(mLB89gM451%=0qc{FK0V6}&MzMbi~0JR7l`}wGxnyRjU!#p`IR--u=edh+TqQ> zsL8XrZa-bF@E=TuGqQ>^ori!G8QzcIx)*eZ<>l>`s~PcE??g0wko5AK9Lh{TN@u;J z#k#|1FZg0UjIXXZMPYdBh(a0EKQ|KZ{fKF#IgX+74NvlRNW$1E4DukI7|s}PdPI^> z!2tQjAAD2ol*gPe!+JM}501n!2s1_$j>_(z8&-^#gcLJ21(J84e+@>u5Vq10r$PHW!n~ z&5)5PXGF>BCvioX$Cs1cbdQr+@`W?4(dK<9CreM2egSBXpM1@f^)xm6Q+NHXq%7AT zOQg+9jQ$anVUL}C_y{g^r4u)9iBw*cQcu1?;php?wi-+$4;Q06ES_8L;LL{Ob8LC^ zl!IH6vODfaR{4Kq##wd*RfBb-b_O#=!p2|F{YF(MV|}xRZV9sAqT=GNM;ev$4VQO$ zTm^%Oa(kNa5kBjO`0zAJuNA#FYM=}0pOEt-`>0Cv;YUG(fRA!}Ww8#qahzv%-5Ogq z2%r3(kg5DvJ=kv#t#Umw$UXA=xaRjgz}7>~GiUYTp>>>BK(54(cbNN;IG1y(D-V9; zwgxF4OZqF$-Ve`F7roO8#qeu4e`u2BW*xkdHZaSjIlLlg;WjwZy1Sk!qu@m^)_-BN zC&1pk4>#Dk;XSaP>~!$F2<4OZ$09)$GRH8xb~@>u{KXgU7iJsJU7C4;dYhu{1#eR)J#9uWUCbg!}86P!nsive{9G1-H#!=>0ULkIC z!Bod3qxXr8;HY0}@a$KG`NlC*RwT9Cic6F51TpJ=R?c@Nx?1yMxLZ|fYG1$#mTUEA zwokQx>_}v8j`6@59`|42?zwr9=*G$?mL=a#<>P;z$W*Gcuzui@!HSz6(j=2KQPh;+ z?7_W2N>d9Pc#rw}xB0xEC93oTrNOo-6}6i0Pv82bz}Fh8ya=FuK`DC)q+6%*yA2`V z1zSLXM|RyOu^S02sCcFX_fua%He&eXknkVFM;F~IW}N!=TDL^Dvi5fM>)Za&&AYgI z;)wNQwH^MEU74;Tq=m1u0T$(PZ`vE2*I>4`Hr`y)p^Y$fzQNH>YAp(K?iq}8<>KvW z$jf~G4DN`NOVu5(GtzS@E7{&6c3?d1w4OP2_rQiIu;wcQ9CChL0KT;eLP72A`N?Y^ zAl>-vt11TN^eUNqItfbo8v190nk1b`*A8rocayjFbKc?3bK`EF(;#Av^G@}26iz1` zy?b}t0`v(Yezb(M`+>KSP^30WmPs5`F}@uEYG^qHaG-z1cI%xOF4N?(mb>>D9%X_P z4di1p)pjO>=l2)ZO{@lM5N2%D%1U33EUqHJxOl5_m{m`hxz-9tUYuT2zX=arV<0GOy=s`=M~|-FeOG<47Z=tsO$Na=o*1M)aS3vW;gd$b~$QnnH|M<&%V$@IlG%x`rnmekGpwvG_Y1%awKP>Gk;;dUbmhjeNR`2uY0witRYe_ zZu~71?y+W^lDJGkuTa*w{4xxmgV(ICT`@gk`w+|)ElDW^oJlz6W{zkNg@_aftELDTO2R5eAo>Br5Ka>6T9<$sqT}PUDMM$=I@T~ zC6K`sTZi2M%IpQj1*r!ay%F&np^Jy=0Isv>S(dPD%pJdsvGD+gtdviQ#MLz!Zq|^1 zqw^g_Lw>ptzHfv--a=%I3{Jei!3#NR;8T120$`U~d73>)Ew_~D_Pv?A zTjmB(u=X?2a);;;74!Bh&aV)_E!8@2mF`kZCi83xos4>!qx5RnA<;kk4n5y3sWHKs z1%nfxsRb|6*%xNTmPmdtfW@9;Xsf?;tKXMr zz&LS(oIL_GyHsCcE0M zUk!J)b@&ExeA?rx@Y-V_pXErlP{gz?HTOqu*q6UerFUnEfFrP3tpq7gXl>6zBRTT2 z+{08w7hey*bS3ja*l!=vqsBy6OWKP&n{qv=bas24S>QuftW)l6;JPyky6MjK_;B&x zS_#f$t3ST{uJOa3rv&Ag9v7Gs@VAxJ4IBbL`bOi(^ylS!?wQ&T?U9A01zNbC<%MfL>J*)`On~9mQwuAHUFrKuta~YrEa@ zQXSZ^D~VOG6!ds$H-k;tdSllnzt>Zr@+nl9NEWLHx;78Ip}tf{#E38M3q<1yEGy{( z%IF0l7QJEbk00*auT7SiZFR;_BU;o3Js@nkCby`h5#b76k(XCjGvGsVC&3}ScB?h%pgXYv6~3L` zPURQV$8hnNhC}b0o{te}WkJ)cgj%d(V+Z~G&%pVEr84hBPhKunzklg4w>34Md zoJg-M@m<`Xfd?&zv;}J=`U_j_P}s`bR@LX?l*Y74pfzb7Is{-I1DF4#L*S4TK*zvQ zjZDh-gw%9bGR#Q0H)$R|U+y)zM!9p7;^B-x>omO6zY=B+dm~H=lL=|iTaeZq@n;35p9=N%O8wFZz2w0DZJ3MYocWNlywdR z4-b!ynCvI(KM-{Vcip+KHT)s5PV>?2!l?P9(4)d4UoWVj$gucg$K7^%>3UnY#NDRp z3k8g>(#;6ISiUibWgOSW1BW|#1X@E4OPFMw zeMx9CUC^M{A$D8LDvVwZ)Ay8R>rHJ(cas{kWjl)~1xey-ToV~b`w0xL@bTGK!1n{| z-r_NE#@+CtD=4+@3@>Y0enl?WZtAwqTvaOUbGFW6XOWf-+TTL0#5y|jk#NCkp|7u6 zn*xtJyV#Hd|BwPNG1y=z2=KlTce8rG^s9e<{Kf!x80C;R+@B|8x`PK85Qo;_HZc+wixK{(FNuKMZijxE`UW;+W z+kR*(*F*mG@v7*YgcB=jIj@{nK*CZvyiT;7=C7?VTNzh(nn9vpPzy^`)?T8c;f zJDkuXfrG0di(CZ7u07wn6^~rMp2tseu>GuLIEVLNP{e?5=(5p0c4Spd$9+TA=Xjs}c;;2nDSQw1 z_MMUpVS#t-d}*_k-9<)5Hksg8)e*g^U*CR!oamss?_<*K0xqQ2A(5kxyceQ0#d;#p zSBDB$BSeL^S1tvlcG%R;9O=Vn?#_O`YB(t6HubJQt_2UNqqMjcZ6w8Wm~+~iv3@Qg^sQGaxa{t#Z_772NR|z2%#U9yCxI&LlffdH?NC*g7QHLg=f@0>R z0WB3;m*u*nOL9lv4!J6NOb)Kj5BxXc&O559?c4Vru^dJ8cvO(Cq971JKzbFGCPk?M z1f)xsUP4h(PNc$gDN`concQ39dUA14*tzQKufop4 zAA*9HeAcLqTR=*KT}*Oh*Wz`2O!7gPAplYJj~<%mRJo{J2@H0a18-B8DYzU$Jn|nB1!QczjwV{b>S(Jhb!64XVd=OhSa# zVKU@=%g{=IFmtbG>rw;~$$=g^*bpl7kq-H$kYMO}?|6|pc-NA!Wpd?9Wd7y)u7EU8 zf&7N&ewM6aBE zn%HQ!qt+7G_xhG04X*ZX>)_Vao!&*EGRzD=#)$=qV6H_nS_$@Pbh?FbL=BzBgm0v< zNA*t(XQ^1N(N$eccT39B{DvJF`!Z7@Gt=+MVV+eovlh0Dc@yO8i<=A`Tvl0z07{7{ zncG1xcBhc|%PjHeAxFooP;wV7~^48J0s~21pgl+O>1aWFu zo-b*=`{=LF66)Qn(~J>h-Ci>6cQ{5R__6@^3vAT&Fl!HS&8( z7OoS_wJ5IO1(ki{*4u4!7H}V{x;xWI4ykH%aZab9hh*BD?}JyjDOaXu*QTF0C=R3h zcl>uXUO3C9{NYJ0&gL5do|Fr?aW&M1?mTX;0^X*Sd?%i!cKb0TW~{>G`%biOoy$^I z>k@l_zLEu`X^Lk|6<4`$CO-=vKBH{v#E1#UI=k75d&)via@J;=Bq#e0I ztf)aqcpRC6^C5r2k4E#3$R&opmd}lgi(~Jya0*e>hzdJ;Wd0*P{c-vHu_Mpb06D$) zi`+`Vw>_A;=`tG^!iC@Oisv#-b@`q+lBokS{c@-k5PcqX?RheVK}RxbxRgUCr;gMz zTp65uZ;_WC9%K%@ShJI7I-Vcp|0oUqb`Pfc`=7+n;a`tE0wupX{P5?$I~QZFU;XQIe>}H>dhKO< zl12jgO3`A(Oab`%sXqa-BTpQKI=UB+XGx}kUZt8RD*Wrue1Gv@>b)fKwg4PEU{w2? zfy*7z!+$Pvs}S6;cayd7zxpN6p?e`3wW4!_`D!ui;@N+>Z^>xX+ACXedBYwx&9dXo zcmMf6d;+@c6#m~|ioa*+Y*{m0r<)431hh^qI1gSd-nQ5MP#PaXeM2+`_ ze{+v-4P7qeTpWnPrnTZiF9$&Wy5W}x(oJxaa-Js3-V)su=R>LyXuegt^?`IB#xY~$ zOlz+~?rog)i}7yM63Qj3B_HFx;H0zDX0&{kVqaIZt;;dP=Qk*p7_Bh6utj-Be$R2F z`@$jjSgS4Mq-#1mCecj89yh3~5^E>#+slFrty&G<4V0s6ZSS2>u1>kHZ_-V4*ddq+ z{@qS|W|la~Q)V*wsKez>PqTLjbks9cJ1>wbu<<=u#%DD@d5O27FOj3utJ=)!8OfSY zV@$VTn0sgSxLiw(NxEka-{z=mYmJIV9>!c)M2T(e`3ad$hm}4@r`W!a|Uxz%V)Yy zb}@l)o!ldlwcs2cukUHaZ*gv`_q(x_;`4qm;d2AC6Qpk%Unf+&S{45*;S%34yh@#Q z#qVN!zp`=(N#^oeV#yM7(SdYB4zlX8P<~Ac$;J*&EPpSIG^nS?AcURL3eEiy=$8Vsy0+V?gcY9BB9VNI>tCcdVKIrU|VImjyAkXpXv zOq=%KB1}-Vzr=l8Un=ols&EXd`YbcEe>&((m|I5#jB?@T4__Nxs{6pl&qjTuO_wLx zqH9}$>>Ja+glmhuPyx9LM!r%n{%y#m`6i_j!*`lj^zbPmGf-cQ_h9Mg<~J?=m70U*ny>a@e@}((c<0}ZzV_OlxF*L&o5q|y2*-@=~MEN=|0DU@jxI`N5Xn&5&677 zF<5@jt;cm9ZC9CyQ6X@Ro+t?)EX13V!{R*{GD6$q{_}*{82K?CG@zbdCoWUqQ6I$V zwN$&$?8h0c*K6ygmvT?e>Y2Sp+Gbmt&kQc#GCw3kvundyB6PrI>OzP(86q2zd!(Cr z=eD6g`I_@-o+_E)t5S7q=6FD5s_!FV`%>&=O!4IZ;1 z|Hsn>U=X*dd`8(90;RS=?Ab-kiZgz{)J(55T%NxI+~##>$20VniGPFN4IW(?Wl<-p zzcwvC_moE889$@G3j=n-i+GAm-%xm51;n-**dwHb@voPjwS1&HwGi}LKBBS39-8;r zVqWl_ZWvkr8^!7EBtdN54(&ow8Yhak!xfzhaW8zD3AkajN|05fXip0w z@X4)AVG_i=hHDn~g1)kz{ruDLN}QX;kFawQ3%}~T_{_(>uJYw46==VIqlmf4p_Hqi zvdXkt@-SGyy4YyIix`< z?BQ_E@o^G2Dn!c$d)Kc2o{>KhNV+6##@?M8ejsk|0Gl0r(8tX#6qG9uop zJOy$3tt?%sOu932OdekFYkfuscOP-$EdyrV{DZJEiIy;HA%v*ZH<&`#6)}a_23t4+p52~k!PsgrkAb?)? z=+cFwi^G#VX7=Hx(6mm)5#`~@yzqYXJKNp^+XkOkpVqdSuy#Pl>wTaeC75N9`Xnsn z5okw7GcC-rV<=b)BP(LTX)Mkf;NG#ds0(}AY9C79ChdY~x9LxZ+~RTH5wootq6kA_ z0ofZuiT9!`hF^QQ;~BFU%ld0DdWx5t4L1&XidTU{ltZ;NQ@EoY*aW# zp$`+#jc+!TPZsy=i5u)T6tzw?-6&uvInm{g>yi3zeWA^ z&=6j0Et`4j36DVhU%?8VhhEH^z5Obl&>v*6cru}l zFJN^dw@!-`1fsX^N*cBY1nh2mJ2?~{JRwoFseM0rWFL4Ta$f&Z_>(D@f>W$O905mHxPOBcULJwQ z`@b{cp&6B{>aFBDM-oor@jU~T9QdEJN;B7Da&n(INYJDS>z}FmGChjWkTZ|(-ZX}R zP52!gHjApe81{Uy4biFi7W+m{i0_ZNuj!5cT~cIyT%_pZdP;E`sO*U~$#SxVN7 zb@Pia8k?*XD?|Hj3xG3Xqvn;mP=EapN zl?HLJn>A)PEtL2;$i3XLNkZy3jP=xDaX zIj_v%IswGRnW%>#TkjQXUw$#xk?G&=7nD-_$S)3=FHuaOantNR=e-|Wp`!g^%ezt&dW??pS>G@Wn#qmu}xMvaHoBN?+Ado z_%W0JS@6@=fRfmfL37Fd6QSt4r$j3X#hC8fJcVTroV|CkdVQppN|PfAs#o<-frTwy zn4~^evBtCxx6HNTx7(;BIivIK7( zgw=01f9DH3tBU9WH2H^v@a}L1#)AeKm2EqVvRw!A4RTr>sQJ9m!g;QUKw3#`g4uf7 zBis%=NMpZU|_1ns@oXm3&y z9lz^qQv#@)wcjOuJhc#fSFeGXHr9>+jt7XCf@p4>LR<2v+|iG<#?t4$Vk>#{$>I|l z_UP!6NxNmKo?Iz`#Z>a<+wgurxnV-A^w&6K*@O}4honC*wOU7KE~t?qvxDc-0eHSr!( z56Uk<-}D0dVHSbdLCnw^boK#b&V<0QDBc|X=mic3o=EE zmbGdXEu0W2f^Pc+O*Yr)@|Yw{pmN;n$xWV*6^gYoB37qKUKBC zmOqHb>_^)l@+`*ly07ld^GYgz7d}^RJI26vMu~QpBg^NA2MroKEPL9>+c78^YN!3y znq1JP@hriDO#P<3omU;o$9SW_?OMa-B~7pHONyhTG57ZWT>5$YCE{$W@Tl_*WS{yX zXQ)WqqC!TiX_H3pGojG~8UGfG9k+^yfS23M> z0EyLLTeTJ*tk!>YVH)|oQNQjf`8&8pAcBwU1y}2gfS-Ojx2yiRmNocl2^1Q2S9{~) zNOqoHpUG~u?!}!1P15g<;DJCEf#B1Ai!KpBHOlpB!zU}P=+x5;n zWq#NZ+bObwLvUl4&(lG}fuEb^M~~k)GWco#v{Q3N{j(93HZ6Z4qlJdwB2Er)51F1@m;U{7FY4 zMqY)?B7?ve8xhk>u^_aoZ9(Q@Z+dEd+RFRQ%f z<#aqzUr**iTAiJH3#gR*!0I{lT^>+PTqqd*6Ws&;8d2hK%`f>9z;y3UH@~AnDt0D1OQ{ zeVq>8x8|O88;NQ^NTE&UcN20EUcIW=OEIAh5@NgTX0-}=84e6q%3fhuysF^$K1#3p z$nS<)1f#kA?)F4UKG|y^hMyO%RdiF8=H?XQSb4@Qo42kLCHJ7`sIv+6BwxEeja;mS z4frCjpALi*T_r8xgEqM7G;u==)o{u0U(OMkN4>z12_;iDTE$t*ml|?u4gBPP^$u1h{CLMFpEq$?cg29O+b!MBf&k1{T#Iq836dL+u=X6 z2bVs=RCP>1>IZ*YfR3_<;%4&c)11a5Mf=ZNuD-zjJpK41?_LKwP%NW-|1A4ut-Ro};dw@)Z^ z^vS__e{~wmM!k|7;5xNK9b6+UT-yC_ZEmjSVU)T=zGG+80^g0_27r61CRpYF%OqA9Czcg80p!%e z4qZSkGawymvM>}d_s0TWP_Pv%?yJ44G9b(<))VD5$QHwsv3c?UdPcWRrJ%{@!>sGt ziVBTqc+Lv<2q{C5lcwe?B>MaD4Esi-_Q*YFT6G>bJxKRd5uxrQQeM=VI*cOtKLnVJ z=|rR6{A<8wwsn8~g7yvFd_Dff7VFGlEMDVo7^+fctwWl=jn}&1Z(M2)AWK*OfcywKCeG{pUs;F8S4q| zyg#TD*eoP&0C7j18Fza#cqhEj!?0E+FQb^i1n&=dIr9E!Ph7obT6+$&Qg&D7S`gOi ztVvOudb1U@X8L^XCq*-XOFOPgo(TIp*FvR#XKW9R2(oU=QX9ptwd;q5?)>yS5*lq> z^Qm5kjytkw1*qJbR>zt%{Po{X2RB(qvUCt0f>>1ydy-R%K&*xtL3p+pgkiE3QgFfl z4(mJeVkoWYyI1UuAg|0ju+m;xrM8*daTXznX*(5lB-~4`?K5L$J*%0l;8Y4MM;0>F zl)gLkF?L_{+tWI0pRH`+)t&#i4$fPT90P!~vQ3|hJ^H9q2WUxZ{g#98+!Muy?@LOx z-OVS=Cp#I>N9CZ}+vHmhC4^YFH!~CN#V&A9fkhx~tDu`n>D!TdItR`i&*z{qkyP33JA^`RU~45yCeLbe(Td%tRn3Z>9!PY}u5iwT<0c zy&c-JDKYE((4D&v(_`U28!*Ea=XG+;S4{Q10nkgJ<#1El2>po}@kVA4CIIg&Dxi*$Dr zpl8MgcEoDV2K$NBe>%&g!H@cYeXj3K{F*u0aGA}`u%=w!Z!6Geb>e7As=S)m$cWP= zH`t^|0}wdF3x4wA%TkU5s=-SJKG$ivJ~pWNA6>e`-qJr6gRxISvCDR~Nep0#JXLNq zP+Jx&r}f4nTgJQV{C{bni%*fPFe=N#cgjM$L=ekvR$>~AOS5OJ7!!B)oa|mh80nU8 z`);AxL#yt)W=6V9(U+W?c|ezItWph6PV{Y1vK=%ri%nj4%-_x6!k^N(f~rKk4wgEb zVnf;=NPCpU3-1EPr!9;wJjF;7qKun%k0`XnLVa^b*V}^42Ev-ntXv=FXIXaVJ)-=g zsh!`zH>dOKPRqdpDIu%;+-`b;9j104DWUUmOvpH<(Ft}z1}&y(rjQkH+TyllXd6*EHFBi&!L_!Q}{=6HP^RQnximA_7{ z$JgBhFFXoRBypP&E|8?%<`abZfIvI1C*O9cw|H|HO~PWa5G(c2fA+F{0XW2vEvDW2 zL~q4l@m=nZ0i?PFhfYtdJ_x=XeudKS9xb*ByhR7DaPt-#L^aHm{W7lrZ*RYbOb;f( z!;}$k*|lzjhDa>H(etzD19$Ji9CYr-(Y4D;r@-+b0`qZK63Qf%g+ za>`0Lx0A9o;4e*f`dT+_ZU2tx4{`#6rJwJG+Se3s*7#lL(ZyYUnqKVL#pBAGwd>o# zm4&0BMY(1A%Iq~zQyN5k?E{q(EKk%fF6gP8SAaj{~% zzBW+nuGERMkB#nH0H5>Gsg!{IUPC~dwOf(lI@*OCjKYR#uePcwTlCq-InCgnvSpEh zYh2eTJNhd}3Q4MN%DSVXJ;b#6YUAy=LufgJN!R z*i+dGZS$9e1Ay`69FMo^L{B8e3vb$P`3+&_j-nHGHgBZnHJ+J;{tgid;Oq>G#l{OV z3}c$F^lt&R2py|SG5(R%rT2y>8ntm{bGy{azwLp2A$Ti(N8x&a2|`$sC&-la4!t&G zx>;=gyV>l>*v>XnI4#}>nbI4us7Gy#lGX`=?H0nLzFI!u1@fh9UgasRqYy9bU=0yH z-gl-3Jad(RFu;Lml;;OSVZ7%~Muur72-D|d( zTrz?$psZ^~X|P>o_%DxIOD(aB|AfP!g)vZ)O$251;s~)CWmnEwl2VqJnA_sqAWXrZ zdzB<)&(FM_74V}}#I4q%0RcJPVJF4@j^x^$@A5^RQ&$uBr^R?eiF%=@O)Nnr=Qqm| zpK}e3+?Usa9vd~7QAvZUaVt(ZI@U5H4C|XY`C$ zGkYto-7X9Jvl?GEyKfY7^{L8WC&~a>^B}Ui+=iu^Q6X$|Ks-u(8ws`F(-?>R%B5Sz z+-m<;L8?r2E%`?E?kLLEc5QHbs;Xgl*w4JWXxEM3Q<3M!Y`TZJGiRAZK7R?x`O4Am(CCpJXBeI9ab*ag# zx;u95+f1#X$5*7#Ee_Xv>_)=!mHCvu8Eo1&3mIX&9@EyJ!`^J!Z^#`9;wJ+$&pM#; z#bbiU&{b581ri`#|EIxHgYEuwazTYJRhs3pJ((8VidUbkvE}ZI({bN+|MUIVf$Jqfv?vQe*0tSqz}njr`u75;!=5fp zrP~;XG^^|HbYU1jRrZS)zPyUQaVkgC6~Z`}LLLN8yp5l&FL1TWg`1&=shX}u zO-*3ucPSK?k;`L)ix*#Q)qg#gGW2g-_Ah8DQy0i`ul>L0fetVC--I6hcV9|}?a6h8 zJIntSg=NUD&M(%TQ)Yj)X!PZbV3X}SFo)vbk2!)3&(7*=_H^BLU$lrmuJI4}b>wu% zScT~+!M($zg_hc1>viPy=l{%z0bd0gBmdJ^k37F}NZ$PQOUJHwZa%X!5|qNOfZq%@ z{yk(SnPy|Z@v=Wln^jHwFJR~IpS2um^sP^se|JBbk3fzB7h{J0t6yG> znF7RWeM^#GCmJvVHJhaCe+?CS&W^J6SA$*7{p-Q}D=7C5B=+BUssA+|O--CXG`qYg zL@(t`xkVyU-QP%Ss@_?m$}MTFxzgh{M{0@O__L8-d+c}_qc5JzGpPl~rirS=kIPOi zI3T0Y#q)^cwWWyrCz26tM+`~!x&8hn7(k`I!h@NEJuw|#Zok9r0CPU*85{Nv)?s;W z;Jvh~2biN&#q}Ni#e!{*IK~FS>!a8s1gjh`m++lHRy&}T-twX7v&bHwjLCcbUFfpNpO>vOu8Ud=3*fyO; zo|UwM3YWkmS?u^jGY#S67LPlL3V zSFZJnE^;gb^B`0OWy?_W4ss1O=6T~a?i#>E<(lg=lU&vwLZ%3p^a+lTj;fkOfweAa z#mf+t7f1Ej{Pm`m&v5EAtSQ%=XvBZfOUSrd!~HV@(08m%4Dza(;}wuP%jsI&$1qn; zkq5AbqV$XaWR*<|bKZ~X`N6_BpV1HjFeu*d!8cGq zo?(MXSjMcTer{{sATs6m`$TP=gmECvs&VId{0B}Y5lddFzEj)!UG|q^WJJ5^Rp&Z; zs~fAo7UDa*mfU869SD=0>&_^McM19u?`0MnjcT+8)jCjoQ6^!G z`q2FA*3utUz9{Fk0mF{f9nWG$BDIOT9k&n(_$YtWfv0vo*&8%|^dgs7Mrh|HHiy)4 zE3H77_g0)WrfcyHHnQbeX8=y8BG*CjUvpCIhkE7m3czr zQH?-^Qwl_TMBUY=Y6MAHj;DLIQhBDz0J%^rR!`NRJN@aN*o8PJ9(Dpi&vd=0D<&1S zh#0{~WeL;FMN>aJau3O{8pAoUQz@(IV>_-V#o)IlMYv0NCFDo#bdE27=D=+W%M>GD zPqhy#E2td;Xrs@AIU6g@cYt~YKY8<5iQfMqI#&NbLB|XuL<}}VEZ15%gZY4&$R7hW zZVbFpLA_V5U8!CbR3r`piAO71xopwXBM&dn6teZ&4^=DsaV-BB=s53ewlWZ-mXOGU z=8IX|8xHj|gt#~^s{Y?#$6g@@Y<81gVO(bn6QH2QE$JD{ia6-SF%zP>u(-^+}oPLx=YWizS$fFw1)IBTL-&ORVoL;hq$+}=BNHY_M`OXCr^EsgA zeCx3045+-x#9IbnM^?n6QLiq?pn7zGGGEwQVD2B#qN6yk2z7S6_a`IWRQdL7e$Aa1 zz<5(I*6$*DLV+-rbYJh(lk&|<7JtaDvr9zivxHI6%2-SI;-O)xy?^51b&-7BqhU4G zj1&88Ut4C*(C6iJffV4nmp{kk#M4nIF|;j74PVmkS&?-V(@KX#*kTsEpJhXe ztj0*+J6zN(RVwu`)00=6_)=|yj6vq=%CtJ_!3%<>qo1PZmNrdcXVbKZaiA*5;hZD{ z31TxjF>Q2JhPbEH6P^QTX-s71KTsNsy*^=|Fr*>e$;*=Yu4aw-@wjUKw@+=lw(sF` z$vKU_?}tM5$T$0YfE_QG>WP~FS*GXgr;Vyvn$4IeKLDQVpP1-(TbLQCv8H|ZJO5q* zjoj7Pi}3-_`!M%e6M+Dw+DD{3N`dDt_eMwaPAI{_FQHXeV%n#B51!Ke&8tIx;%JC( z%E9{$ZmE8SRXG-@eq8I>B3cuF*7`?Uro3xlz-8L>021e!0tp-WO}<(Z=bpr?xDh{7 zW*soV-;9IpQsxJBwy~JGiN4&lxQ&QrvOqKclD}(+bnh7&HjEbEpILW5>}meH+eP45 z&Tt@m<*2-a*bbBanl~sruut~Wl+U&GdMrQdl|ORO#vbxdX6v2_Fv0Ft``uY3hwqcs z_Xh^{eiGh%jYg$MNEz5Lgm(WNGSx#Iz^7LBm#=dZOZB~s&Ig~q+WN!S|8b?S41PQQ zRqgHYtK5s1Vp>O~40}D`oi&e3Ho1>`cVo?-G9DHfSmFRGD6`2>+);J)cfCS+)>i2h zPvymf?^oyBnD*w}&~_eI(@26^o((lceo zfyT&9BlpH?RPOfP47Z_lG?QqqZMN%g6xwo|(YAw1;n_1Z&0H$ixe97k6Us7I%I*ED ztxGW~A-)lkIg+C1IHOUs<{k9u+tpz%FC_m4|I?;JK9re~?xsrS~tO<9}67Y3Gt8uVJbBz->Rck+1-`{eDxsU9%i zl27WO`(Eff*hg1T@TOq+Ua4mc^=gFsz5V#Q+d@xGgB|P&TgGS6`dXo;(O*a=F(~?p zplQT6Wfo|QVCZ4JjuwJU+*kH9jNGUOpONEsZ|oXT=5}!;GvB;}&&f0L%zn-Nb|s+E zY*`KppdfzMrQ0Mx*SpTP(c)sHNXEh$O$=>EVmhR%(>|G2`lyC;7trG_HmY(<_vj$3 zT$8{HKG?=V2W=&$fOWmUQ3B>7Wek`Q8prkUyz#u_`5*bX1^?n|fyofR_?@UaKea;$ zSQ=D_vVXEw;uEvbDmc_E)3|%2?}+9+8f>*BWf=-EwxdFacTuIWEl#?A zvDVxv7l`>io@-zFtv7-eWN*3(QF=QO6%y6z4o~tG`lE1|@O+nw6zg_BgZPjIbXjrN zwhi?rin7?Ck4%X%9ScogA0jV~oHJhQ=n8wBYBoz>Yx|9Xt+CFSqZ`)R4h1*& zS!b?N8doIun!-V(_P8)=Zv8kpQ2{+VtN;v4S?7J4fN^wMF68a0JvX40upQP(%TH4p z;3cI|d8ay+&KkGR&gikqy=Rum4u(S)?A&JFz$)cox%*ll}_2>ETB$3gFz zkBs0SMghKiXg=Au(qk`?E|wbM3zH>QbKrmE+*c*#dU*RAr7Hmvc*`9zfHtK>)#Gw$ z6yu4_nth#-oJ#Psg>P&UZ95lE_wPDS(db;1i-ji3Zk1`G4KLpPFp0Tu`TV#ZEi2DL zVS1>9x%K<87-=O$!KtvbDHfneem6xy))!iZ3B3;xzzN-QC2da0fM_wWI$3OMuCi{Z zK}%~-ohwrtYk6tu@-A$2l9mqPKPpC99mzu{lqIfOuG?jdH~hwgt}@#Lj`2hQGdQdz zcraQq`;=0zK<>Y@VE}reL{&%0omk)3W#P&orGX7$m7bWl`lGMKDgkh8Ji28+mSggXyFP- zXabx}vGRW`&lwPSqs-^n6Nd^no;U4gN_kkj>V)pbOS-VGe%E9LSG{h*S=q+|b6QU&Lf*$8GFJBJTMwfMtIm0Wc;sz$@$? zW&5+CV4rc=v*E@y4h-A;lbZo>G-62(c{Qo4ox0Q4qHG+9xtz}OVk7|J)$fi_PuT9n zc;KRZ6p9UVS$wzbkq3TWYltX@m);ByIg)F(S<;{7u2TF&b>GVNDZDf7F^@mVH6?0n z!B5*9(|yS8H4X6~c*0p?49(V&81nzahlgl^}Z9kTJ^sI5iBYZbDsWyH)1( zx~7FSa^jE#Z~H=qzf96!Yb$FOM5T~=z07;awdaq&w1vHo<1Y0NcQ^=%Gg6q471Xb_ zQ}qOkB`ay|{F146zlizk?nuGvhtJ`wMPL{>R27qYwcXAJYl28p^}vr@&Gx?tV43cG z0v7h$DKJ9AG*r=Ik?V6QuY&%&_MTwXRUUu+c12>NcG=Xp2w%=llWd%IVs%2^M!Z#s zEyOgWS=Jdfzie@nH9wi?G^)$qyCbMBDaz`}m1>St5=o~aMpzsnicvd?OJ`JSZajQ= z^yeh>tY12$C;H>zK)7=$tE0L5QL5t-t@{g~lcOjv78Kk3sG1_~Vf7 z8iT#1Hce0dMrej_vUUw_Ra_g)KrwlL!S{G{54o>XfNBeR=`(9XZOB~F!BBIFbqHw! zdU`t}B$!L2FtqFFAih(WwF{Bv_nFE@)w{5dNgO>!_B0p_U$B@e)o#fe%u8JGKObag zWbX2N*CvwwOigbp0md`6Urx&;ZbUJ;fNIY6Wh1_brrVWo)fJh6l-njnFRG+wB}nxt zC3qyY;-q`dt+`&KuM2PQPb_H`GQ@lSfj4q0-9jztM%&OPMK1=U)+CdWaWKo!KOlye z2WyR!r4=>ujvc-M&*Jl^~XT@ei5($&@rihc%^ z({Ru&>lAS*OOU$K{CU-jcH{N9Jd>#q-4dX*BI|19kP-KpI|FFlz)wXt85U06w@<~S zc83Fj9-qGK>j|;N{Czff9Tg_aMrL<^D#HpyeCEkzB->r4g0rz|> z&hP|azt<|#f<6y+Cu7#zKva0sAn&%%G3}SiEW5+kUFV%WvROt4{quyk&hXle2O~EN zJAS$fybG7T{6$z8+Os79%y6XZlw>`ET5lsYJgFV6jdgc^-d;`F1y9AJSR=Fsig>Jk1b7k*w)$CntC$yD`tRRS4+?kA6%-SW)6M2*S* zsC(9X@UfDYc`Ejaz8Rdr6ZyhJ-%BLOu=s1{);!S(({{R8dx4ksMKFJP?PrGZe(C33 zzO~qW&P8X)WQpT!Lx*19_zC!EF!9MUZcM2a5^wRo9VxtiyUMv6Zu=;_^E2PcI{CcW zwbbIBkN5+Y7Y6?3?g2_`$Vji}LVdlJ4mM4b>}ttXVuU_U(6obj`6^B`?Cr6xKSr+7 zIzHoT-z(G2dy_I7Rn8eHEWE3{KDty0&y{ore5(ckCa913G-sGQ?85e(*zQeF4*JKi zrUI!vXDOagHmgWr2P(n%b_`lT3R??+$DAB;nGyn9@sbPw6yE#&EA>LOg1~-zXFPp` ze3hHz$FmKo%d@LvG&4Dy;;!mK!8we){*QfMU$@%t?TpmckQLZvA;#)N*K5H}#@~SO zW_J&F3+RqTfg)|so85MkJ#kM1kKmv4MUo$X}W3s>kKKKIPq33GO| z1#xXRAbhN{y7j5NAJ8sV=CAkqvdJ@kKplAvB6Fx6$ueXy~pVP?h3 znE@`)DW~w)Fl)qDrcVth_Pz_pY*;;5MB zAQ6x>C+AaUijjxi8~-!r$tT?Hg1^We6900xK+EOb+j{8+7n@ zM{BjuQ&yV(p=vR78=Dn^eZT0h7%%IO-;i;)fO&;23)z9WPBEftOc^1Wm4g>Dwf7!@ zrrFc!9aVyT_y2ZYDp_Ncyx?8c;<5m{Pwwe&q9)s)29h?^QOF8D88V80l!9}`d!<9h zA+CY5&yZ<*-!@cRA!`ousQGi8gB5&I0`~6-u4WC6;cMavq37p}O3$nO(~a?mZ#eKN znDS1@Aweda;n*Q!Q0#x*i1(-GeS$4ar?g>;458v0h%Kl+GfOT2S8SF@1_}E=4Pn%b^7xsMNmD~8Ap|p z$1d?-^%)VoGFp98pA_$8Bs%oyPsE0d-(ZAL1qkfYp^6;K%x+0=W+El3zi*FlGm!*5#Jyu6xZ*anmx-NwPG>Vl9BW;bLnFb*M z9n0L7orW!XtASSSASdJus79)EuwT@Eu#|e_`eCd&MZg0cN~ET6IobItg_AXsvQ6$U zbm01TTgC!f>EiDjVymWERoY^=v~qn?ZFYCmHb#m%n>y0W`n>$^n(r6wRVhha4q1Ks zN1#ew=m4NH?xyfH%{XeFqj4V(Bg>TkL{U$W%4c`Z2d@S%bj$1+g3OzJt%A`QG#WD4 zSL*rC(FwX3;|ZYRls?sgrEhAvWarZnmgmPq{Wb`)=@8_R%zq>a^{Gs7!m?oiHD&pcOTpX6r*@= z2(ym0Ej4&vjWtxRkb{odti=;jwk!sqi`{0_;b;nHV#!i|=!%>k~Umbp8|!BasG ztq7Wm?*_!bgC5MrD~&5ltm7l)BnGK)OL>oU!=Cu)x`gQwhm0_tcBQlHgPY$w0hMh| z6_M82`~^-^VNaD6#T|UW!63W!PoPMIj2EooZYqszT=}A>0v9Bcw?wS{VBo8p2Q`m) z8OprD!0Sprz2_#9B9-Tr|3BD!>wqY~?_Jaaq*Y`PDM0~&p*sc?q)W*Gq)WQHq}5Tn zQ>3K3Tck^BXi&)^h8%`);Jo-TzQ6DJ-E;1_f82Av-g)PZz1Lp*S!+G}*_pZ~ z%?se%D9UWSd&8|^%<6cZO6+>bA2-aCV$SpEk*`F&e5N5$L%lY;(&t@iUCqj@flV%+ zR*>`gq$7C-ckC>rs8@nXymTqTv}K!TEhCTD+Uc{{pzfefqB=cm=L8i%hst-agyZxs zQfo3)OeB=FrA)2jE~Nu=#1;X%?{O}H^+lm!7p?W1W84Fu^B!) zNO-|V8mSUq=auH=m-WkLqJrK(0up8sm#ZA?Y#!)Pz%UeHm4?znybr=_nIN_Pf=|EONp)U!1afqn2`I$-fvOo&o3Wu1CC*2Z`jDA`ix9Z z);wNIzJ|Z=S=Hma>+4tuOC1JzpKzBqMFV|+vN~2BwQG`E3&kSWfoTPxJ;L04qcYum z(I{_Wf?h&%ycB!ld_0!p%+>$!NxN$KkNX>tYhgKK!Mf$2QgSmw{ zIJ7BG0=vCao_tn^Vp2-$fs1rh3605~$Ccy%eW^-&ir!`a2n6LQiGl#;_9VSzgVTA~ z&qUpvbQ$!A0=>M_2+wAmt7ho(K<(+^$MUW6%~uVOII4BD!`0KPXv|iMdrNSGuWDyk zVG3k%?%cYs25H4Sh;eN!w-yhx-ht?^33T2PVzZb7WEWBOXW}-Be%|CC7ht3|mHcNy zQA5a0Ykh1F;*C3V~|p$M)el+K~=2t zypi1RpKLim#CX&U?2~gr@wlhIWM1~d9C|`rQ@?EFRg%)OG_UmQ6{6k&RMraC_WUEq zcWIm94d>td4&=LnammA7oarVQm%dLKPL&z@&6cWafTy*7)baRuXh}7V3^?xRy!G|c z3ftU>?83C?i!^^r@kSMGt6kHirUCy}jH#`QlZ|KxDJRnUtN z{3Ro$YTxnwcz+d__FpMXM%gVb=@C)k7Sr7|xADXNYF=Hs9a5lKa_iryMwjpc|7+F{ zaO%cH3CX{odg;>tudj9KKbP_xnR;ELMP*wtgd2-gsneTwbt!C|qxb0Lb`;QXGmW*zG%w=a0^nlDP zi&~sSS2a$WBz*8$G*)`&{PFR#yTz0XOemf7D8~7-*CLhk11TpLY}qZYtPqD3t2nZh z(~0h9E~+1$Lz_Gwhan4Mmnl}eMNreojiE^M8n~SNkRws#KXC*@P*=-h?89qQ9B zGsL~46lC(4W;XJ=jF2kIIchIoCtr5f)v?xUcKDr;*F*THY#;q?$g)f`J!(VY=i+I$ zrDCIIh!de6uX2SI_v!S-(F>OE)g~@ybwc8=AYg$+^<6CvtNMn1@GohvMdS4|g6t|$ zuAc-i5fg~djzM&x9+YXh2C;nPY&8k!DpE9SER;PbwhD8=wB6jo5F?9X^KoqBxmJ(I zkErfELthCF{G+V4^k9D>n%s35)$PSK>MWKx3zV_99Ea}1Z9+bk0ZhOP!rNofyD@QM zv0Z$V$O3yO>BRb?Pt%v))n3L2B<4P-DGW9agpiov@ThgYe~pssdoVNl9Q|8PzD z?CH9MN@!z|NVWBA`6B0n$ImwZ=jvOT7y-MeyVZ06_`0v(%SB5gZK_%;Y2*IS#4V-z z_eA(8ifgW=>7#s$g{ex}2MGn^Wf08N@w923(;qx-I8FCz@2snELS?3M-cuT2hAr~j zjlR4~^pGG}1589r8L2BgosItSVs>lQ3!o!Y2^Y>_+SB9pHma$FJ(nBpCZGSKbr%&4 zu;YOU0o^}$Pt4u9;rL8N>69K#?Caa==9Szy>@-ln8$wV?vo}Xg53H*2*zTEg;_HU& z|BG6WG?fasO}$$2?EOHJbq3S-4rvXS-8A1he_=J^dJ6t9Nr;y1yWqK>^0p+WP(4nt zF%BFl%aZ~&DoFnbbTYd}AHfE|(i#iRM*a`8j8p@&YoC*^MQs5qAbJNF3%?bAY`C0drBJU~i=}nE z7gl>b((QkjsU{v+`7y#(XiE?cKj}_zx@|O&SzoEjS(Hm$EwhzlOO9*J9(FJW$YE51 zT|Njs-c#s6qg@epUH{$EK^B~o1x`R_?ly^IL~ zii=Gtsa4bVYArr$^91HoLJgwFH{C6Y!q-rar>{OqTV*#ePJ4Qy<=j%3DFPRH9x6I* zt`2=2TaBFet0`>m^Hh-emOr7}t2b>7x%%|ZUImo$BFi#}*=kxf9dk=}`fRk3OIZf} ze1RkZ*`D2SMaJy?*;)eh!QE|kL=a`!ky%O8wI-&kr@}sfRGWFZ>$ZoW3nGbf>cw9s z-8XWm{x{o)<;HiSfjxC3i@khe3+KnaQC%)}+XQNOwV6_&@tW?JCy+PuTISECC_kDV zUzY!GFod?cG_DofB&0Pmfo$Rnhg#;T(zDY$X;_m6b}6UPUg+))V0Y#IOM;VSj5yT!<1tiEKft^{S@LeMowM*W+{DY zg*xb>K3q7~ZwS4`GiK*`xB?%0q!qvz_($^4eS$8LZP^JVI~V!+zA9=lC)nndaBeT} z=8fx{?so*AvZy;9xF{4(cmc6lIE61s$}kbE)ruGyIUO9UQmlk9(RVU!>jjZ_pHwZq zTmwq*t(6?LZdKqf6U_BR&o8tQMKN>Dvy20MWJk@X6@c90(P&^DgNLW0L^;*VlV-^V zE-&PTZWQGGs{Wx%B1mRne$0trsQ|xxj;YO;uEdQYO>S&04%XoySUUhwDX~Obxagb| z(`e+{+E_|Q=LTlFh>1R_uXRR&|fb=-OXZ9J@=`qWQpYQu6glg!ZjN|kmQJ!mD zILt&D8#YntyLP(_O8L~BU1nBKZG#>?F6*f&@b>Twb!a&rR$8&M7EmF+u9TnrQY8NW zEW!{F0tHK@)QtkQIIJK0upCnH$2Q_j3l#BY%hqqDfk^G&1gAv$gi^o2A=BXO2J>;QOYT#`ROyTxDK=jHtXU%v zdIX>V!%s&^k8pBs(2oD5n)@H!*$(0y5bYCCZMO;$y-S?R;!wkr<_nHNUr*yQf@0 z5@y$>OYHEZ4ZTEU<(G4akzOig1`$sbd@K44vCH|jkQ^BE{(@SJ6ZQC?630 zC@<&Q*j8s{^)Et4UgcG>J!j30?Xq!Ra4dV#q^C6{lDDyIhYA1O>mSStZ}FxB*hy9~ zKlw#Nynyyxctf^~){e_dk;rmrrE&b?8T*bs4D9Gy7~69&vuPn@e~w^CT#X5@xN7?K zfpUq3j0Sl9{`DV;q6I4X8hr9K-|otknTGM6If#MoL^dxXw!c52t{-8cpct<@`?DJ$h(!Xdy7Jh!6(U`!-ikgU8T$$y_mR9Y)=V7Zs4SL&Q^VFa1Y(_*!9I z!xOCF=%oAWIXnuUWdfWGfn7jdJOu$ikqkyPhO{%Hm}D?zeh*Pgba^wvFKXuvW6&k% zsf{njx6>MX4iVlwyTqhSEYRzsO=iAlTLQ7f1hZF^Vz=)on)? zPfC4azI*LW=PvYg6s(K(9j&?TA#jQuSMBD*n{r5Nf@Z<;u6nQhwkJyZ?9Z9BfWDhu zW>-LY=^P|_&x(Q2fQC3mNqfVsJJrTA{Ly>p*rM1M>V|>Aerd5NQ<{`$>J7}>Q!y5= z6tP(rv{<<$m7s?drl}wMaAWoD&OgOBV1dl-h(35os!vRRrQ?1G-QF9`8`Biyv^dxV zh3Q)ai!Eo}0Gkso)wEkF(LPY#S|?_olq2&G=g8e8&e03_;3brWb<~VKixiqiBo+b1B2;l}EoGs@_Tt*-?>xTRt}S9+ zkdBYBf&lAZ-sU|+?YPl1G6R2AznoQgm}@2C6B|$42gPu^7Xj(*OCVSVE`>6XlooEJ zW78^&Gnu1%Ez1OILgA+Vv#invT4hgA-A#Ay`I6K}+f8^hy%3gqI0r&tHZm!r?eHJy z=wIG@rgs|_KPYe4fZ2B4Sjg=B_D9hJpd+9+DM(lEeBR(U_3nRD@>Zy(Wk7gj8*|yE z1^LxB-*1NespPbA@^W#KvE%df<#ztJe7-9|YRB@Tc9cVXIFR*@Er&Ad5BS`={iz#N zj-iToCMX>9ZAuD}D9C*Cg4dJ-!g}^wY}Vk-m$60V9`_E-Q0|`Lb)s}L8ay4;+$FNe zLP6SG?{wuK#(=typ84houoE$=6Hn#8t@;Ge(eXa-03}hmj?b#*bYdR#pZC4`u~N1w zr^)R#H?NQBu!Gv)yowm*$(}acJvZN;PtUAH{y0A;=@IkCMCTppC^4s3MHiA-_MH{# z9(HPp7j`_e-q`qjaMFbfXPw@JJ?-o}!fC$<2H3*krEX zD1Rh=kL}hKtc+Kley7gqqoZ@95D0hu`@a2WE_h=Tqw$DD#6-%dsM%a%dZII!0{$>swaDL2@@*FE{h-<@-WN(xS~8+)f4cT$r+eA(E*$1E8!@2*Fo;CruS z%JNeIqX{bBykk^2*EsDOtgnVWUeh%whFu61la#j&PY+RUSAr9pN@u32PTp>G zt6(pqL>R7QQQh+6o%}xI{5Pc@tMeg)wtiY@%6d7a-Q|sEFnHk1+u^BW9_q-Q(!*mTTjA{ zMvZ=tmNgqY>2cK`o&(~(B`us5&$pbTPrAM4Ptd*9<|uBO7WI1@hc&&WxuJLZ@4KhVRlg*u&6XAXH z1b9vA5SerEo4W6MI56oj%Cd9Jo=M9rK_VOUI%u_}G{RI$4%GHN6(1thy&uExx%@UY zTCuwabLKGIW>ocKOoZcTM9^d0Hz&R2$D}jqI^nSb6)S&(5>_1IHb0b-BC7oB5x>Y> z(EObkm$qF}&tnpaz1KttYRmw+U{OH#>tvN0wx+c6MZfgOl5r7uihg6}N?zRg+dnwrk? z*8LWltlK^Eu3u5?d(!(bo#pAr$EgsJPy>f9A_wJ#%Orep-N2@35e~)jy1_~4bdyC~ z{-uB8&4rapO6lK#2M!Ipzvs*ytO7XQU} zw2K4P^AVO*U^d~xtJU*^JDz7V&m4qEINH`PyUk!L1r@b3wb;}ZG4`?nVxRcwz4wPa z+gltxCbiGeX;zUrUoLT~mL{y8rMCqnN|egTvLqCFW+NBkq59RJ9+HBMB`(${D=CGx z$WW0QlUlQE$ij0Xkj{dWw&+c;5g#4&?G4S`zIWvVBphrW4YBqPX+o-}?5;i!a` zfm*+)-8zEy{PDjor4(HXxY6}{?sQ=c>3 zDc1H={puP_;+CLZzrWWD*K4r+=h107>_+X90UgKeV3Wj1uA(-hP&@Z^@<6wx&s|mWqfN&RIpL^Wk<$q$rOc=`KE3 z)4SOHsuY=LMoI?TsYuJY_PD)~GwJL8s}$u+E$f(V9Qf+1)p2xUD9K2I*U)4ugxf1X zvfwR&%<4_^qsYO_b%@0I+kXszuSq`XGBU-+a%jn`-raOTCl5 zoi)xsaKj87ylS|CJuJM-RGRexrg0GVtGu03i`8^UyL!)mFp?Gdm8)W&;%V;8svf%Q zpSER;LH2e?KQ*T8!}wDilh>lI^3BVXi+0`{rg;Pi73a-_vnbnG$%XN*)ASZr*cjP~ zE@@P0m!d;y?b=M56U$Ry)!g_*JXz+$7BF$vxbnL`ZxXE936O1R!iiyP&AA}z{GagobFdolelFcF~=OgM|$%#dQSaVD;}?vwDg*v>rL&dQhDa>scJ1G%qI=Pb(jij za#qw?N%W`6o~OB;Yh*0i9t)`!2#i|}1?iflZRHc4ErU-V+yFDX4fbXD^g&#zdg1BQ z`^_py-5jy6-2SOr%22HZdtGH4PT=3J&?$7{s#zT_C_Q4eX=4((FlegdM?VvN^Aygd zjyl+qCN)78#FTJXs$kt%^iCz37fJW=J9xBoYQBLDK~liYF|W*%l=z^|qKxkAi$&2W zz4LxA#E`hFSb?{dEPQ{`an^UHNP|gt{UGFP@sPJZ^x$nw^{&ljr@lfwka`{be%B_) z&IO$3Jr^kWGovA{gXZAAUCT6hXAi=E%%m@UOV^xUgja2#@i#WVbZ)PSqP)27@8@)K`Sfzysu>qH7ykI(i8j~Wlp2|)dn0g`gs zZJWl;CY@yU8Oa0Q{OI#}7MB*UDZ<<1WP9;`n&dA!)^dFXf1K>mySkg>T$b1D#UZo| zVIpGg_fCA%pm1Ivnq1SOxL*%{NK^Pw26IOobLm_BMppU#_6~ffPiqrhS;c?=?ZBa*gM<*NSy6FuO!Nu9 zMOKS$)KWZs`80P4mGu@|WK)kk7xlPe{siC`tV?3Hy!@7luZ=s3dPr2$DD{3_IH;uU zJdLtIXttgKjbdyrxY`0`sC`D1GfT_|e8w_fNEwJpIE0OaT_9Pw+TI!~^rHBU`~ z=#lb+PaAl)55Vl@VR^T-;tM;IZK~iKgk$p?yP^JOI)z5Fn+Iajd;HRNh`6A*27g3X zkx$}S%h$S?X`1{X_%_5!EJ+HQ)qk z-W~Fty#Fr#jLl7jJhl61VcGMXH*d;gjDHJ)4^sEYlw_W^>rv!)u9$6N;SaTy-Ty|! zw5L=cKRgI?bnPAu{-SHu;K?pK=1fD~~<51b(RO|G``vM?Z?_{zF17c68vp948 z83X^^)4lDHXRGN9x&PY!!~y>>X;zxONWp_>@zMk!ats#Ndhw@+{+uBi(1BpO20I3l z2M=R{H7;T`0MoV}-1~=qWPrR6O-cJ7zra6ymq&of{wG)e|KOJ-FQ4V)-g7gg#Sbq3 zf@en5Mn_-t&ud<~P6i5jmQ(!q%fS?U5Dqr>!`pbl;u%l>!(Y&BK(Ja|YlnWbigTvd zn{)M7M*^4ndNi|eCY1p`x(MQa?|;`yNeU`|`Vha!VC9#k0%vkazY7mneTd)uuLmz( zdL{YiX8^4X)JFH~`2ao^^x8kXt)EAXZvJEQKmYT8-j7-voprFo(_>k)ZB)FT5&ssKKdA4oiC*T6@aSTaW?#8*4f_{C8ljh=`rzcsip}an_ z(YHS$id2qV8#b*Qi*t8t-8D4wEcjAlAJ@@Cc&W-iX*V|^H6R07ae{1t?^2`eH_~FB z919}q@^YIzw20zrWPv1Y+d7D8%4Vyj!P7fpo{U8!c{$H#m=;I*-5PF;D3j_U-J2%m zrgH5Z?V0p(nYaGiii_ah;{-_WNp}$U#71*hMExnhvOnPEc7(Xx@iCWLzOI(M#nV`JBI8+rqW{gpxTb+hg@`! ze}QH3IxesBb@#n}J|M@!J18`JiEZ07EppnC^gXZOJ~aEwwO85ZruN;_d{%<%mk!+e~`i(5qw6|6om#MmfT1m?v2e)@j;Yq0LGA(T@~L64?l0u&+9wnZNk49e~q z#*T20a4*?R@v&jXm9E$F46{i$PHC#<-uAQCP|~NExJsD`-=Xt5A+l&J!eM5(_I!q} zKyKP3d`50aJKcgeVVg^x2@zvvH;3butyZI_HWSC!+?6yzbX6xSUz%9eHo29JDLeFP z(SrezHlLdlq?XiuJZ(n1At0tb>iCAi7R+htu0`A0mzM|b+FG!NwMmkU3S7+ldAah$JElzPXT-*{Dw9REtepK|(6~Y;M}*8kj1K@!A1v zm({I4u+0ub7!k=}-lLL6NbM%B+l)L>c0C=H=od3$9rZ1{$1f60izmfChCWOT?C_3D z%=bFt^3k3AJrZ7egc{uBwC$4}&(5WKC>j50Pjt5i(U*?<@eNuRE+J02Z4YnCV{DrF zaw8)np5jV%Puq?+Yi57nX2eRVIek*G`b1i!FQmIK$Sv>v=(V6NM-v%hy!Evx@v44e zFG$xtAX&A*HD}i^08GDV!tphd9yv0?Vtm9U4rkP<{`i*Fn!Uh_3dY)@ML)YKNba74KY-CHq zXAD0z1W@^S%B062P@h2yT-;c&V^;1a+skw2OT0d5x2@MA0;%{9etX+X95jHTv*g)w zjLMtvfAHwdmmes7SzIDLueDL4V<@YlH#191Zx;&YW>~6FL~&IRfa2peb_NyfVlPI) zpql88=pvT{koVwHoa3U}9v(IKIV~`-X&6gu&hGltzIAU6Zcfz+-&>~7Ywc#G*L4&s z>>HBpW`^?Ux+J|sx~9iW68AX=jMB)@ObuLlgQHbTL2Su7PLrpcu(Pp9<+z(i-vv&0G|Q)fK6n3lIl4)2k8 z28TqZnLk;%bw#O*%ZV7oxO6a>1u6V;m#;XqQyvSZZc+Ebx36Cis`mX5=l9hUxPcc) zMsk;nV@cXoccRFl8P#dI0i8QcBO&2}ZuLi7qC9ko@_pi8L{B#(1pR(L+XZ}j5@y@iLnX^J z9Vx$2H(NWzRw&4bOX{nY?QS!|7A!=-0-a%Ev|A^SX^79ZY~p6KIf+tYI&CG7SG_Jk z)z{Amjlm@sou-wvtYyZ{rFJcA;8AZc#AM|1%^Hj`OL}@*O<2~kb32v3(3Z)8t3NlQ zV)PQUas1-kwM174y|ovvEEo| zXPKa}{8*$GS4;(=^9+(^)8n$ToAx;<*3nn^mt*tv%=FqmxFP~JD-VP7V9b(MGg;1l zB?n$QYW23V%8H?d&@Ba>(t63m6nN%a%8O=7iTJjtt5PnC2uVC_W)@?FG%qKBV5}-G zA)r4%qhaTn9EP{`E1V36Sg;`a9EJsvvHoGo$*8iC#_tuBZY4 zTfcwNx+zimN((sn`+&hA?LR>F=Yborzu#PX1pa%WOP9+2<-V6b)BR8T5&kCwMHtwp zLRMq^`GmxZe}iVWt8p}#6%iB7kNPv?zO)c8eT8MHhYcee>SeY{9&?T5MHnWyFi6!e zeO@t|(%Dg*!n{?-OOHt!I9=X&26-G-%v%!OYr3%%b4Ky2ab70=yohKGpwHCMssq+* z0OPpT^t}N*V(TU+=TqA8KDGDm>6@74Xces=S(~hlL%4Tf@SZ%%PaV5$#v?m}(Swac ze{rW7bsHTh$b%gGX?VN0t{`OV-9_zcD?oq5ifCH5H*;j-Ekc)pYn32#)T^j zN1FVkUMcJht?c~%1>T=tG*|)Z4v+6aQ@YG7N(G!tf!&1AaWy&Ol8c9&f@&YHd`g#* zXrTu6CJhF?E@`A?JlQ}k{4tW3iPAvJ_!~G-C&#t{qJM|!%$L9s#(|zsAGsZ)H(N{V zSIVhx<*461YfuZT(u;FAwIkuV^#}3(^A12AVFYWcu1*qJ(iNM&}i>ZB{eQZTkdXm0wH!Q{w2KBiDvXroeYxRXfG{Uk0;;PaQ4lwiB)@8g39 z@#@turRU(&#CaasUUl*&{_bSc*I?%au>OYxHb4 z40rz;J{lNFprEx!*5cU2Rq~NUS$OhMDvfYv+mCRDDxdkU7BZId0|JmD_1TwYS*l9& zW6_p*F6g>_kkseaiY$NV9YnoL#FiWtj?#21;rrr-rQ z0(^0`Qi1vPYaa6QLQCEBxfQZqwFjEQ8PD4o>||VYE%~cuJQmf-CoactA=UYLo|i4q zkR-a0*}aJTFv6V&a&%KnFufvfrTaQ7hWZfBsUDtfRlih8z5WUpL}KY-Q@%R(irTPF zm~LQM)=O8uXzT8HpiPa-r1?9YD!WHgO*8yF_q-I|=XWY|L7!(IN^05VV|{SbFSLoD z4x>1++cL|y%_j6e^x@RaSn+&2e$c_ZlcE6YfV(JJeO{m$y(&(yZs0Ig-|8?B^v8AC zZ{GmM$8}^2W83N}rXuD%wfpPG9WB|{{YCQ( z%03!BBHpj{de*z8;UPPOtCZEXVlFBUBi zl;`sE(&e-+1YWL-K4KW07O?77ZTN-)Y8-s06VlZh{sNS5mkY!>(KT=OhBQI zS$$*N-R_IUmFkZ|0{v$R)}_!|ZXUw{F!Q7S+h8RW=irEe;^n_yVxAWIIpD@!aMB}Y zSQIF0jyfvMq+|?m}lK>RQ%I*bW8QIEzdNM*(%oXcKlz4A5E@gf$3a@VV7?>fgl5gj?+z;qj`^rpr z@1UCnN-%bx{sELyBv(gJYT|KXzQJ${6}4MQZzQn@?FV%{4V_arp9U(9>2}BKpnc&^ z)m9N>hf&V)IxB(ww;kt&uLP6~|9z-_d9>*sN+M*_^d9FkcOMgUfk}Fhpy!ARBK{hI z=c0iFlYpq)QpGVX6|&Xg>Z1hDS9c1}MS*&Ku!jGtt>s9IH78N z#Dp4s{taPabZInWvE*r!-IZ$X#epYr^&odY;cOX|ti*$2MzGw9`f8O;|k^1=jnw7W| zumG-X?)wn46Bo47*;zKSsS$7uL}MtGl9)IEd%hl3M_jx(yG&jaakPr-tQWX5yG4qI zQ9YpTg9TH4j=WN6rE~w*9UTenRAa5iOl2ulX(ItLe%+K=#QX8xdPvbN#*pQ)?RbF< zWA&14^0$Hdw{_adm;#K!yLSt5{aiS( zURH$Q7g}5@IGZ{v4!^71e)ewvkP2nvz2!6^GMg>JO1}QHI}NO$8odZZh&7i~J-RQ0 zKNa*wsTB&=r^1B~8ES(ywl_X>{05K)Z~!hwR2>=oR^`6buL;a2<<44%h3aiaP)ZjwJ;-)1Vk=N(B_>JN zA1Ar`>#Uc-Ar~hhUmehh-p{6pRxznja+YgL%6iZ{)Y~J!=qdjDa-}!^_Q3z5DL|vg zcM2^cv+ekL@{=|^Wn86_g|Y=QRvPj{O$wBI3sI~-6{v{St`#TBDL1iteOSQoh@ zL>x8t@3&l`yRfa}5EsTib%7VL7x;>}kErd#&q?vLv{9KjIa8`(X>yugMb}A-c!xry zOp&PZIBQe)@E@F9XmNgucI2udkNGnS(GKv z%mJ&kLv_GP1oG#RDtT=7SK1E@cFQY^biW6^?rXm91xt^SD*)iKGO?EmQB@eiV)1QH z-h$syV)!4A%F%Z*hbJ7Dh8Z{%C*NrS=UTyKt8lNo$P$CXdos*H@+fH(mp}%N1xB4+ zV4t)&TD1n%O29Cf41e<%;9P`1_*dHK9C@LtU$1!s_Z}D4S>9k?-99iVlUL#;mcOSu z7P9(>iS)sO(2KX8 zoklVH4Qc(B%^4@Lu9vjX@oWH|{sr7~zhYUjaLH z^8@L~i$IVG%k|adgP%xPiq}S=RDkCmPTx$HdsUu<%B|(qO(B!#=A}ptCT%-7x&3Zo zp~|SW081bjZF?8Sg>`xo$Wkir)rEQrzbW*2QN36-V7^?LJ2Mo$JXl-K0BJR<<}{YA z?2Dv@1lov8DW^uWQmD>6EzS9jiEr8L*f-qPTGTHXWWCn^V8NiQVb;UU$i*h)SZX8N zc8cE=O>tUe?2`Dmdsr?)5Sd_?_+=B15h4=U1jClf3-PijB|&m`B0cABw?3_~q#@>D z`oZ!yE?;Z%R|>7mx`MC4e9TQ_8DH&>x93Z2Az!)7H$Gh67+vM2)!7XbB_EHT7HKnb zQcQ-V>L~Mnv5w3~?kI^EdsMgU+R8>(rGfIAKIWDMVZqu%r{_*^U{h)8>0UMGaVfB5iaMxuxW9W9;{t9P32 z*oWRu{>pI&JdbpmsIpvm`F4K1JvQTV9+y9KTBt9T!m>1V;Iy;Io40;3BXAQ;JNjchjW5b}e{>s~t?OFjEIo$-S7QJFv4^n}!l$+}k8 zE+5HzRWO0e`~3j22=U^(uhdn@k)m4YybGGU*5uz_mJrmiK0u(om9Y4xo1<5Zx-AJHb?%n4FtP9 zg$2t4C1y)s9r77FZTK=uH*EJL%vxpNY`!EqR=!lgp-7KtGUK}s{2+(k=p`<7eAD}e zN4$UWWCh8E3n01CtU+}%z#~oi4jH(Utq;yb9a~ZM0<8Q*(Q6XBP zxPh68iSj9E=g1_aQfjq~{jR7xGD|l9oI@0vQd+Ggc9knjGG~frD#p5AXF#(WfX^+B z^s)J*-^&@7TlGWQB|2W~2_A-c78^mWr2fVan@=v{2k^av9$KhKT{~_WUA!qiE(m7` z0SY=pJ_{U~u!vh0xnJ&XlQTk}i+cWSCWfod;2BmxdzbJsFWMtYQKd9PH3thLrW^UqHuk7P*Udl8A=2_LC9<9pt;MnD4in@-NX z?P?z1wQCM}E=lIs^H+&O-1zTW<^)JC4!Q`|PUYpIJzfpBeGj6z3))(PdFw5&Ww?4J zy&bAdxeOdmNI456Vb<7Q$FuOiGsY|pOj*4IrX}lgn6pZE%(}3sW003&DQ^x*5SaF>7BSimRzsT31#9>;)SBXTR z*c_$Yw6rh0T+mJU=`$DqBqsJIPo-Oy^?8Nn)O3LzXErK%+N2DJeG$|=g8vd>{T${B z7NrmQXF)+&+2&d1-J{#fK=V#bFksU*Go#Q_= zyUZh_xvWy|>NQqrVsEc~>-_Sba%%V+@q7+1wDBPhnz*~PggWohxDFa{8OWD0Gc(aK zdtq-eA=(!y+d)TsxNCQ$yuT}~o(0aDo(mUrZxzCZAG{vQEj}IlXyEW(j=1FAb(oXX zzd0oZ8z7IIhBn6SX@Z0BqA--xBdh1&v>~2YH$rX?v_Z zbKd^jP!D1v2E__bWP7+Z6qdF>AvNOdc{8Bvxb%b7DvM}-BtX*i*F>7i@oYe+G)J*| z?0L+$2F?x2yAgrQHbSk=a)z?7m`wo|#z5BNi*}{IfB@e@k}N3-JvW;p;7MGpK(M!U;lN+ zmTwfx%KG)DHtBEh*KZE^SnEX}vh2EDac_$zX8&Bl-=pXy*2_O5`O^QQ8QF66y zO`yu(>z#C!;Lb8eHe9@0>wjV!x)M>QirkHuXt@4Gjy3L`ER%x3KB#$)O*oubFnZb+ z$chctj%3!LN}VyMQHMM%hs5i&f_Huzu1eNMDNkg~1YdgWXxexx*sT*toL`P>O9Gjn zC;;U|>Bi*yBwU`oQ)cJQP4@!b4jxRqOUE~wjpw;<1Rr2TC9(5U49e;c%c*~x*d+!a zPlDh1qJhLrFavrKf_LD~rEq*1pSZsrlclWFs7>s}&6F+elb1wK3Z}MLkD(KWj_wz6 z?(@o8w6j8*)N>`a26u?P=)w87$s-)S=J^EO)rosG7PPcX#RqQb5(_`IiJXRc-j#=z z3RsW#&8btWDeM97xG(D{b3{tXAnxC9K7UkS@f` z^=Zg)xhMR#vPXKryuwjStD`b6$nkK|4P`%5OTc$1+j1svijA4O&mMZq+&TV%J$Ci9cZQ@>*>32 z0_x0JU_QuYE3mxMGnaiCfex}UY%_`(&fGfWyKTL`Tg5~9V|J=K;Ad@piqTCvt8Ui9 zK}(JEJ&v|lW|iujqD9VSRuE&S$w7l5@H~8o(YVX6t;<6#Fe(4#p^~w z){0fyb>pWAE$hzUuMNwIKqZGVukp;)$v)1{y{NWQ4CV3Crmsh8pLV2`+!ql^Eo{Tf z(-=~5?sLo9o5Mp;4=?_HoYt6o(9b{kf$Sdhjw&mbPZ4o@!lOZovtW)s1^0%hylqBf zjX(ia{T({geGvdl@|^|+Pxwpwa^@dPsOYR0val%(ut6&iVS0LqVKvR->KvtpvtUER ze48gY4VRs?wlUOpl2jd?QD0|cph{xKiONL z=xS2hiCE_;BwaOlH|oiqd~1f;@eM(0aYQ{GDaSnHcvU>=>F;}9jNAlth?t#IK+&Ek z8H2E!x6^ud;Tqg3l#_$v9I8VSuibiJFAVKV22%B=~d z>zfwW5;>ubUh4VI6Q!n#{%lWq_ZxdA@)y(f1uHz4C*{U1%N~U(dNTeQ*uee#=FGF8 zSe8FCp0@|Cg=mQyKZBe9I22YxXB;FQ} z{sX-B#mhxiIGMP!=T}JDlb&Bov zZ`BUuBD1uThvn1R!|47tfW3;`r>b$4)A}Hb*UP5x0qd)zV6ESyknJ@wn+xc-5AIUu zoj{eo5}KomaHQ&tbNig_ShKuDWL}45CA`#~{iw)AvrtD=xyY&UVpQ9J=ZDE|&YJ<- zb4@;HX2j`y0BzrG6B69%J2gRbqh(#TOd+>_8<+x+2?o6aJdH&~16kG8(s5ZPy^R>U z)2Tpzj?&e_2ean4a&lPpY(lDJZIn3lE zT;Xg|%6tEX-%oqj`Ks4``6iP~Tqb~CEbGOaXf%C9vlu~wP3;OZ3^@D$g}V0)Yij%U zf8F*5sBBQAC@LTjx`1>Ql@3Y`AiWcM2uLUv1eC7y76j=Cp@ouAM5G1?QW7blw-9=O z01>zg-R|={|9hVM+!y!7xx9nq2`g*PHRqV$@%fGsaA)c;V^~nAGr+f|k`Kbq1T}Y; z*e%C&tm9RVC;Yj(FNf<-+naEzNpxC@v1g(^6H}`5V)T%8fp{8uOV44HD2OE8(~Ns9 zE}&gTdwqVC{@flnD=75*HG3#NZh&%K48XR4Xz8itfE3u_w;`$OaDWd z^GeFHB!{bq$>HIkoBqj7*+1Xohz_u6C*EwK393S;g0_3%dM*FQi~qj!e`m7%|Kak6 zVfnwWgyf7=%gR$yqerVjrZlfnUQ%U&1)S}`f^{TaFYZyWJvakBb88TaTHA#o6v+4t|T9v*Y5`Jh@{ zQm*+s-3E+?Cd0zo#gke;O&9e2l#r0p#l1~csUcZVl73tcpe+tjF1MAIY!1@Obr%Ab z26MjhWZO~#cHj@Stj_BzqmsBQKga06EA6d3%5+y^fD~X;nH$EG9t6ch^Yj?PGO7M3 zDKp*DNJC<=m1q`^h~}PYRMhPO@r2D-k+RQb@^fa%4nvoVzY9uL;-$^XiC+KQBPl@G zb~+x$V)7qJekTt_IK8Jz`*50vHbas)H?Rt_O26gv)8-2+T32JN6?m^$G#C4^q8d?F5KwK#=InW?iMls|ZlX*$EK_hoL3 zTW5jZ_Hwa}PQwVU!L1J^q&q(HB1^YmQ}&Pi@(XA_{QlxFBU;Ol!c4gccriv)uS(L+ zxa2N(?!ovQi0_LRorD5NmQUKE-mCVqxDVkP~IUJ8Rr)p_&~0&vc^xlrp=rn`z;B%O2KYFa)ze>gwOY&uniQ%5V z2+|#%==&8kCpLcb=`(s77Yzs(zF0&oI$7`qf6coI-4YgN=|@2EDn^I9$WxE5##DNz z`CBD80Rj^|U+k|`z09u_?_TxSOS?^%g_9>*+Qv(^y)gxt1dXgKg&{!4S5E*uj7Gd{P!G41k7Z>GMd#}CJ!`a zrU9Zraz7gzUQwGH{bJ>fd-L$Ot`=@UpO8s>x1d>}SI<|`BIK*43GXX_(9)QFf+k=t z#)a`a8u_%a+<{EY=hf(b=L~(LYo}XY3u4bOX)`e^!%B^`l!-`G2d`_%jLpJDR2L_= zCh5x}5e`IbnIkUVU&j{?`iEomO6AK9kXEz~i=+H2aSF=;dn;?B<>TXFQev-^tiMT4cY}Uu4n3fDFdF!3zdP z*ryiS38SNn#~y?@KFymAb2&3738c0hcLDrF7wnMNqYY!gSf-@9YC5~J_4Oh>43Nu} zcWPZ+z9jv)HpX69Xb@SXi|teZcNPcuq`u(Hfta1=c*b*Tt6!zTC61Mb{^vL+4B+?R zd)(F={ZfNvBD_Iom>!C&G$u<7dYIpPyz&?bV|yHd%$Rpa!9aIyp*+LLR((GYYQ|Z+ zwuJ?$YVi*BGg+Rc_EYW}kVbKj*MXW$16w@XeDuS2dOUKj-*@Tr9lP8h#N^xqw?p8> z8Q1&p5LDz+g4g<+IdZd&xJle-Qyn{%6Pdx~A@$vF*zXt5a(6go_04N<7iHXpn6@K( z?hTw5R|if77tND|2Jqt~bXHvS%k5v73>R$CAOxgSBX?bfU_3?eQl8S21KH)IbmR%Q zh`OuO|9I8O+8bZWn|`KqIYw~_9-Uwq>1dO8s^%|?;8jTGj)3pg0rmo{=cC=0{T?fs zkH&!m{kcZPuml+ap}MA@>PNP$J-t8WgsJ=1akq7dgYVE}Efr2w|E2Gwrpokn|C`bB zB}k2x;ga$2L*$*$B{}>?Jh??o)@S>G#SwM7R*U|Q?Xc0)@2^aq)EZA45`>~CLiR({ zNB<^Mh3kMY>7II5YuNB)itBS`RmBMpPv`Q&oHwZ%K%ALZ9dtGCXp1>qTIZ61gFztF%EvurY&p64kdhGr( zJLNQUNYT=|fMf>YQ^zT}OH5pkR8EBX11A7bd7F`b24I1zX{sZ89Ba7*L8olJ!GDEM zv&)UrS#6FrLxyKQV&3mhO)XooUl7u$P;pM5`%&SI#;UPZXPlbt@Wj?=f8b<6HXV0a z`)g?FG5b*$>3F=&+`QSSTZ{j+k7?$ah8ss8%v2(9*P=;Blm{H{F^H<)-B2%0b)zhU zj_P9bH5`*yueTcppN;91rkrOc7C#YNf;N2?+aHX|$xg$p04ys8t5=mi7IUmi^ByyM zP7=KJMCW~Ja3?A01MlFkn`*xMf8NyV;p8Vzf|PwVeRNI@gsz3(Qg>rw0admY(5djs zIemSIHJOuuZ5CwAP9DE*c~>*5QC8lDdI9R=Xo45J#Ba8Ty2xMS zJ3yReq6MOGBTNOpe!W|3hY*kjw2@m&8IIBFAQ&}q4_Jz%EOYAMK7_eiMar_M7WRf;8n66Ne0$Mtts1y%Stz!qz2Av2;h>rFUTj`omm!ys|}rOSuC;l%hQW2 z(wm4z?I)XRy^J+EZT~uJVQ8bo?&ItUyJvBRE&+hRUo8qdSXdwkh)tn~*-(+67LKA; zi~9GwZh+ZPIcq`h1#Y;cRsp_#6-b7pt-vrT)05f(^XT>cQZ$n)Xkg;Iu%l>H8{y>| zlRN{jHLkxYu2=Vp@Y2B|Ug~)GSzqpxd|5-wM^O(>jx@#imdp#<4W1(j2q=2K$lB6) z=AGhrtzfV2o3uQFH2L}wn4eFrg=knEq6+Dp=-lD9iJ*)Z249&0tR>oZ>7 z=}#LiwL69tU2N=7PVc`fF5yL!v&@zF5}}Hf41pFAN{7iEjq)6|R1Q|2Y3rH-t(aJj zu6~1$g9wRy@rh2Sv&@nwn;Joh{%QIL=NmJV>~yq@E=RTitkffi*}bGs_t~S>^-AuF zfO6$Mj>ZsAsAbI(wRapTs`(NYSmX;KVj~@!a~x8CLH`}%r7e>EiyW^KHf>oT@UKC8 z@1Xv@UWc?w?`Bo0)evo|Ra?h;G~6}M%E%U=DwBJ71Ev_aJJ<{RJAi1!FyIOJVX{tjWtx9yEeS@;-I8lJ%_kChZLU=g z;vRaY8ziZf*e|3#Qjrsbo*gMpkd`^p{x_&#nQP#VyGcfJJajC!E*o~~xo+;pwP&O^ z0{m6&JLXR$+zmBXd~Y%x88oqpmln99@s<*zi=J}cAzYaE@UZ-LJT6R5U=N<10d`iL zy|B7*t>14<9Tt?#>DeIzs<$J7%fCv%&ypmJ#a@PL!c1GP3#>a-reh4wvd3+6+{Un~Yur5}>-+iaa z<3>jOUe=wwknNziOZwtBz;^`L6q}UQtP^b?e6b;W7EWKVO?x$G@%S+I-6LZ$hk*{& z!|Y!sxDPlfQ%1L+=Cby7X8h30H$r~RA9?*qYV>_`nLti+=G@Lp!xM*;+NALdUAaJ6 z0p_kQT4eEC^X_VDVFD$9p88TgwIS_XNu+tyA+((H$74HLrp?1<-fBJab} z#E-YulLF%3*%FILn9coSp_>sZ!W6Zo>Q|C(w4hU8yJjWGoJ&2ayAmm$bn6jbq~2B~xBhQ$AbZBgQMXJK@b=Lv=f* zD|4`a!^KHx4DPi0iQqvwt5TE5#Ng-e8&kaw4I5J{h9%Ddy)FXWV2O}CoaA5o6Q{)3 z(O4M2VAUh@FFwReAnx;>+&^me5+qX{%ACJTRE(W*(|4jQCM>>wluPc@r4|7+<`PWF ztIq))1Z&FFmoi$ET@fkxfrD1yEfD7ncQn&R1qb{;_XRDyYS_j&c0HCLex&E{yICY( zZ;6f*08i4(z!%DHjh#`yeB1Y2zl7n;39&_LuQT%dVxMG|z`{e}q74altVfDQHC1k> zL$ip2G+Uk16~yjz*g~ihjp~j@bra==7&z%4W6&N4c|WMDGj-vIlzOJH4FLh?G-CLvF*8{65s8*!c!*?<*TEph5(Td4^m5>L!RMH+0UIce~Q#0woK+YuA#JE0R z)V-kJXY1KREZ>}=JJknaaK+{8ab6a5rjsv$^z{zLZZ)DkU!xnnmtj|sZK!LI$H;wt zQyznR6B|UH)@>7%urQseH6O=tq@f5$xqAC(nrZFax2DNkS=G+x(3nZ$z+W4=8kkPrvu95) z7+-tZs^If@ba2VxozJg;snxm&HKurM%qa;EqpEBc3yzgub1{`#Kt$g@vCBInxS$w62mULf8 zh0C2H25%wSJHLTt*Nb=M!91tb<@S3P9Bib3Q~JmBB(RYXK~^k+YH%0F5Asvf%vMkr zdEi+x?}b_0MO$MMkOzjp%b8X1SDzmY7+ z=eJl%#nIBVyM}Wn&RY{k)_d!+2ck&}{uBR#p@&--=)5;l)j6L&=d(8WL+m6@8@?ZBa)ftAfqMJ^RR~K1vS_@^0+WV35beExCW1LmcEVxCE(Z^d%yAe^XtozED@2poj8XqO5%vfo9r8Gy2I>R_N0(j0vhc z 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 literal 0 HcmV?d00001 diff --git a/zh_CN/docs/img/QuickStart7.png b/zh_CN/docs/img/QuickStart7.png new file mode 100644 index 0000000000000000000000000000000000000000..e60a48573604ff5102c4754968dba0d45f3b7414 GIT binary patch literal 37560 zcmc$`2UL?;_cw|&f90LA%_xEj!VHQKK@dTZ8XFn{f<&cAiBd%=QX>Qs9Y>L%#6akT zCq7o_cTu zr*P=rZ~ys4A&9)|KR=*5wPpVJA3S`IU^in-VfU8WJ&*ph+>?acNsAr*Gkkh6ff^sx zQe~l1s$_&C9W3=sBYIj6`Q?colln;#n?CHe&f6P}EPjk)2cWt_ z13B#pSBHh6$e=z~lp5ji#5BFkskJw@U}21dj~4P`3vi1hZPhQIlXz8&HOe;vRO=I| z(AG5t7RPll`Ej>bKCqq~7~wkYeg=#K?krt(nP7K^!TNe*_q+ze^Mmf>?rsx-FvqX) zoTuCAv&#eK~>Z_F8(f!{nOG#RlD2>klmH}4QwuX$T5Z*Z*XPs`2OVM}fsOD_4 zz^yY)@p!#=&76UMKe4wMNlt=r`xbTAj(`66f<8?onV|BV1M3esQ@z@f{UYddx7SG} ziGCVcO|SHKwpV(28AFTTLGNojN!*7Tj__g4;pSV%|CZx^xYHSml1aFh;?`LFP}``E zpf)A$?MbTako#^pQA2?Ic)}79MVcrcde+p}Tj*T2O%pX36q5$opU}ck8M^VV?WCM) z1feuyZen_&VXP~&uKmIK9MNo3-B?90dVZRvej?Dg?QEAc=;?OsJC$cE#z*{$c} z@XfS4q47IT3Q_)+RRvVYP&vkVKl1M0_n%fnDmGU~Qb_%1dz1l?aP zJZ~IX;2BNs<{YllIN_dWxlV~DvTLo3ZJILj&TqOyysK!KXNKkx1Jw7o1C^V3{%JhV zksN7!B#{3u+)5Monef(FC^jObhRBV`eR=tJY zcgPX@%$8q^9)+O+cvW`5j&FT5-Y0xO|d%rUKIxJbkJ^ ztnG4XpQ~*wlCLII3PtgD+Sg zV^Uggu-YHZ(mKbFrN^p{FQUYM*ZjEg#c;(LP3x z>8GKzPii8*3hdaL^lmG3Sc(Q=DXYt;4Afp%1LFASnNVl@LoSH{ z^oV^sjH33jq0hPzdAqzUTHhS?<@Y*wFBI4NvQ)EAQCuR%7kt}>-DqL@Y({ub)V4FV zFr#vH|JsGTQ1<$ao~)f}Q?I3xt$yy&yVei`5_a+9{OjtTn_j0`Z^t#(B)d{FZGD*dTvCru zkBDiK+bYoWUA`#r(79}5oiFSp+vcZer5;xoE&uH@aMh|mCqBzRM%-oPD$fe`YJf#_ z?Da+Yd=^hW5cx7@*uHa1)!C}SBK89O&m7sR{Po3I=wa8G)~ad>aSLQ_b<4s598t69 zKt^~9HjvFWP^f(3Olc<%^bH%#KmX{ybYN0Gg@tq9wdU>|wFZBEH0txgW1yC<|NE~r_A$sgXL-|zvT~_+lldchA{m;sNPbt6bLmbvzang}S5P66l zj_CUGi3v9q=BG05NuT4X_pk=(wiX#e?OcHp57?BI% z%EGO3(fJFF!uM}NuW&lc+425tKigW~j&y3By?xVke`Zk}O;nN5-8&@gZV<`#5IPHz z9jWLOrrK*ZqVmjSe_oA1lV$lFTcL+=@i4TokMJT;H z+jPizog1yunW`OI?n&5Wl$o-j*hUehl!>ei6TO>TeKc#zfDMm{SGGh4)P}#Q(JZck z_%pDJ?z&~ag``MY*Vu1lTPqd^=+s7f^gCs?bk|26CY0*1IqMQoQ2rl>Cr#%pTFeUkRdaBgAFRufQ_g>xcj=ONS&qeD}KU30K zKhSg1p(EN{Qg*Nu${q}L?VBqP5ha%w&y4pPSHC@6b+zN=)PXf|Ilsha?^^T6=z(os z$U5_!-(pvdYn*k@(6FBs3Y((Oj)W=UZsgerp6v^27aG&_vF#3S zBvMM;fGa7WCK}ye`e3R8^X~3iofOnhoTO=H$y{$WqB8Y~A;n)f!3!!EnYD}V6xsBJ z4nI*)VHn-o{w?&Ez+&kRc3WTe3A75_-6IO{eCs;d)~sTx(_>hgGb&)|YI;p^2qz(= zhh8&nuDMZuh7cTO+A)YSH(NZ#+~g93ObjUuoxSo=pj{2~&7V_Z`q+9R`Gc4x7j#6) z;-siv$=oQZGZVefOdmVFF;CcK9qwJ93HMQ+*3#JpMdk{jk^3ufOw~&4hlaPt5sM=R zY)|IX=yf#pE{bq2y1Z+kIl9<1W$7PSq-;_dVx_j`{-{o-$CVmC5gg$}ky{g5%qZ2_ z(XqzdBxSiK9H0;yuiU?FFKemu(8S9f!k*`513kS12BB+k#a2~=4Pi4nO&e95_a{^im+WOvudCF46-5Yk zt?|F?bC1_QARi?;!3zyo7WX^%^g1)wJYdEVy?|G#9blgCIY~M^H`PCI8{S72No;LbLrQ55@*qp)YsHS z5v8|zL&xap27#%aG#A7k{%xBX>d;Fbycw05>w&N< zFU?-F!@9%2>LD!6JVn_Ui!?SfBiLjeOxx|<>2;HK)Q6^Hj)dZfow{aG3{PIzkZSHU z+9+%yD)RGS8n17Z)fCIskFKmgi5?I-qbmATY*0fXs-#rYj1HKQ30=J01Y(_QNbaj_ zk&1azXOqZ9*_b?&5gQVude@d@!z|7A{CFpMTFD$>tjPz$9y*KHU~5B33kgx{8f?%B za5nsxa-V(zfcAu`*OWuTC)M$h-~84cR2fbQr0TLWsY<;da-x~VqQ1bcHK&-ehH+g3 zn4)OZjN4VGth(Q-KjoE+4haSJjug)yI{=~x<`BAv1G*YI+Y{q{r0L$S5Aj%DEjsJ_ zqB7dIiyd;~rQn*dImA9_!z{aIMtCLYd`-RN$eW(%&JnI*Q5?HyD*eEl&Nn#XxTJCYYb{X-y)l+5ZcJleGiIWpOv=*?lzLkq5utZ0iUq(<&NLV$iZW zMWIEORl^b7VYL%XhE53o=T8e|Na7Jf@WRqScdtohUZHb@ddMogl}$5A{wa z%0uXL%_6zV{Jj|ldFu^bkFlg|j8v(kLiZ>eV{%Gp6d)Ra* z!BKv-l}oE;@)niN&2XZ6#E4P$!Pq|3y8n53KBR6q4*w_xxIH~Y<;#LwH=XwFR9iES zpRsZ-3Jg>kr_EG5sR=7PT_a~|G)`pew_$fX1j0-Q~fh*d0*A z?e83a8qn^RSdZbwA+9p^!iBd6SO?we?~4C;OT#IQZ7L{L&7)d*>F4iL2N)E;by!djxKphjcs ziCh@O88{g_N`J`Y4cuqOBxMGwQl^!?YqCENZ_%2N(u)IJ37p!+!{TjDl5BjsNLEZ0 zEhRKtHTQJmAXE>TESEUM7=Iw__GC^?D`i1RHgc6|NH@gd+m>9hjl!>AKHC<6;<=wU zTJvC3Cuvk?dG7hAwxm{7FR>1Lw0K}+UbJ)TOb`O*^ILg2%&4?@-tDK5ZT3<>AV$|2 z423hr<+XZ~Q6hHG=FcHy9EI^)?R?nwK_pT~zxAjA`mS z8_QU*%Tfr52sngv1xc04T3I2!iW;BMSVd-v%UGdLlJeAT@>Bt+}0~NBF_l=9^)#i;2BA#swixefHv9ysE(<2G=2g>h z;T-x?)5+H;9n8t;0qnjVm!M2Ij(BsN_E$R+H~o03XJQ9>LOUa+Lq7Je(rj34TZk9u z#xvjLqVi&qSQ~>BX&|&&^}!ECwZGT?Dn7tUW_y(#;N{<7^IH&JeeeV-RGt$U5$nE7 z2Z7T=eA=y@sNe;so7-oZ%R$tcKPSxT(G>g=UHhLDTeNcD;{F%~=5U6&n-}BEud1R# zD{zJtWMsn~RW(f)WjOz&yiRik;3W#rAIJTjlUP)%O5(;xkdr6e?=1xb$|7rpgkbQT zjj@Hp)!cBjU^!Y%e!W%|dFr*e9IAN7^`MLyzwShLR!7K<>b_=ce5c1q-b_f!vDP?Z z)aUvB@`$eH>q}ePJG7~1fvv1xhfJx|3d>=Y{x$x(DAWogi4C7UJl1RhzZ>$}yvp!p zI7w(RHlS4ufZ55=&Wx&#T*XC@w(acSqanEzJx2MRhjeC;)aH_6%j@BWu9+^en zM3ayGR5E_c5p%Z2*IBrrP)zP?>g&rJC~f;QtTIl?ER|<*;kCGqVbS`)B#`ZrJmW41 z;a1dz5)zVNPDV}|dq;@2gY zh2%_AQfF0_iHY6&iO*M!H>WJNRzdt6cu^5HS>|MAT(;+%no-{o>jLys(c+N{dSOVk z6PmFWcW?Ajn6~ztFmsZ5n$8rr-V=}gtz-DKV|ZOsXGK-?WW%Glwo(rrbB0R|9yQ&5 zBcu!E{xMv*fmUzZ-xU!aEOy&ZH`1EPc~*CI*#4fC=x?It6U&LRZVyN!lZqRz2F57H z@wFquYPdWzy3D0@=_)35hW^zhAu2a72f(ZR?^^W?5-R;_Ag&>2*BNvT^^Lz0`_J9T zKq=!C$5bq3jZ^GuWB)X zDJ{U-WJ4vHGx;&p$Bp85*Xl||N`(sgMEK~UW={n`$a|gp=@I7xTy?XGAr382^(hGW%E#! z8{8<;=(*5N9CM`Dl^ie>OdG@m)R&0L`V)A{)r;?qTV#h?d-tmA&h1)*%Q@AumTDT& zl7LLs#wBc>j9WF5`e0MaQft-SFm4TgoSV9w1<|w;E+jD;>!#}L3!zcWLIs_+FhFnl z)HN7SO<;GI1PoR9jv%_Y{K2 z-$ymBU&=G-zRp9R=W^1mti6w7G{f%VF)kr+U=+R0 zBvIK<2m4vv<2yTy?tVYU3M~@7pMKBDsChPIR>r#ie#S-f?vP&cOWRJ-aE1KqmQGgHmN5kOTM6e?KgeE#2W|OPCwLVg&vVFoV*F!yNE@C~pMlIU>#N8xwt)N9-U<2TMh9v*GU&Wl<;>;&0u~Zl_o=&(ZQ4Tan+x0?e%5+97pWQxAj?ZoNCY9?-{PS?eR;oW8Roy z7Jk*(vp~3m{y--4)%EhZ!%UJnoftqgm+1dU)Rp{pG0}nPA@f7|M``0+wI2WrpNb%*D1Ikhnv6fG>Y{f z)eTCkOC=yG@ku^=NYS64&o}x-5H?M9CU1fGs90|_-)91SkL5S{)c_s-t=~v;s3y=` z>u!hn)AJei>OMU`nq}#9wOqBf_mu0#GyvKqpNrm*WIpk_g%!#Z#|=QQgc}c;L|2Lg zKl)alq7bnw~V&WD^N`jR*53dZD<)e^$ zJh8@Ct^{103oAyuF8!s@a1RtvWn`|s(|oz)(T=Uyvd6)XUaD58&vjT%2}j1xj;ZU~ zXslfGTIorlb+xMYXlZxTc;d)@D=*u+?lE;8_ubOct&EJm)g6&S?KSB`gDvQPUC6yU zGNLTMa_Z3B7{9FZbnmu1a5>1zk;X$1g#EpdpW-$@gsqYux#r!9zUFRts&~hoBgczi zEw*lhP0A~mUd)=5sc9pY&YYLa{&KC%8aM%=C$Izn;oxSQ(KA%xNm7v689 z1FGcX3sTQdE2s1=LuGKp?T}=RZ`W436A)UbTaEv`aDwo|$~EiWKHh^+#w>o+Z#SKP zebh-g>hp6gW*6C(&%k1hQ8O;g&@UIB+_d9R=&CnAjfoBoD-gqedT~cpT7#C6*{T5$ zhz6)!gU@+?JIdSJUr+SP{~tKvbr2)0!kP?)5BRf&I2aT!EXp+O)0xPgjA3GQy?it` z4rz^La+XQ+f#MFTrGmE0q}Iy3?la^d2lh{^j-SBJpXiyM_KTdUW*S@d-YQkieRnCB zA*^S#H7HXK^0|7qM_csF&9g9{@-cg&7oH&5eqjR0%7U)t2}ukAXRzKy!v#)3+i5*K4_=Baplctzl@!I z?e=xC#xDCDj2uK{EDMYg8aJ3iT^^sem9U_$Z@Rp5LA~RhI7HesAT!CMcVP@f;9TfZ ziHfkqPs>1oOe;;jJ9{@UDyM9I_7oWP;TA~q^Lc(9(~PAe$^q463XPUZ`ej77q#!lw zzL}eg?txF&WtCqgOA4tARox~GLFYV)6Q%Ad-Xt0#)1x>LSssMeZm|7W-MY$4aOEty4y6n@6)(sk`f# zI(AmQ%PT-K3HtM3^3@`&xJwcdDI8#AZCT3|jiof<5Tj5rO_FM+ zohMm{(clCD4(KQz_KNIO=3UeVx>39$UcIjnK|xUd6>9Y>4`;zV_;W?Cx0G*yL3; zEEJN|Akh z_WRpTdyq@rDW(2LOi`wNG3N6Rw77y%JT%K+WyB-ORZG5xO4iuzz6PcZ&B89@CEVpR z#YtH=0wNv|7(2&l*kxK7`7lveupXan9g7&JO863UXqg%`@0CKs=bQ6^5;pZD-gNfW zAEi4P46x2qyf0dy-<)V`o|Xh5j4ZOo^I(q%c6$-H8>|QD+R|0L)B~H^S`(m1`ZbK( zy(Wx@q}j{v(6L_$n#w1L>R1U!BC-&+ZWg}6Lv(fp57FL;M4$m6Wm{a@))KtN0rzO` zR)@$9HRCsr2MsJXKzSwjuu2%Ko)aBtzh_HTOQK4Tis+4smmWe@ckOO(;#jT~J;H$^ z6~D}7Kv+k7dX#T$r2_>zss9MpB0J@A2%43jn%Yc2W<5q9!ah>XeWoRc-*i@A6ohh3i<=uv~12Un9QZ59N? z&L5Gw;@FR$Yr`X@#n@_Uy0&oKv)fgoU%{-7Fg zPrR1;c`bb@wUFz|Sa7B5Hcuy{LT1evb7piA3`eumS~vTLH*j0@^@F3r+a9rspB3;v zxy<{{PJ~Tr?Y5$~wjEu2ViR^X#Ct5OOUB5aUE8`uH=v6*SkW9bvXY^)cwHqGDhrCS z5dx`)_F{A)MemSaWiIYes(6Z;rPk?WDnVGl>HPmlSNAl%IVl>ml#ewQy~m5*FPoJd zjZ$vI2vV>{(V{6NN2}fxm}Kd>IO5jHF4?J_cBlS)wkmSnB9ku{i`Q)=r)(5yBiwf% zZ#RymE7<*f%zXleG5siDlDo9qwoHvAI0Vs)G?XH@Kz{eWcI?8h_*lhf)HxEzCDc^Y z4CG@t;xC5x@QN&2O={3)J>P7Z*dx2L40(cL@jGg3{DIa4!v^l%wLC#0RFKHZO>t|@ z((F7PwUJxj#Fu04#HEg4Mi*y&6$R%bd){+~t+Ur@>aL-64nO4zTbmniL$ica*Jnv=FP zv4`txLtS;hVkSpt`?G{iH)%CtQ}SM-rG;Ft*su8JncS1duoh_SjiH*b%iC2{kmYaS z-+)@H2BP2Yi?z#mZ9hvnwyhK^5lcuwU7 z0s0XGX+~3;JXSpUov`NFV_&fv(bt8rDHkRVqjyYrWGwGq;3{!lzE1OgdpZQ+KA>Sc zOKUpub+o6%1E(oXvvmhsREoa>$mCLQ91%7MRinO%8q~4)IBZxYO6v8@SLv@yu$0X zMeE!7w9xq(?zvc6lgDKR$W(8krfWm@cVN3MoUjSWKwpX!Pc7E@Wn3-z27e!76d+zH z<9qUIcg4~|6(A)A&rX`|R(|pgvOi{6z)NJDY`nd_ySZrf32JDGNql}r*&r!k7~|0Y3q8Cb#Q00Dv73bg zRT1mm`L_J_*wd%i!V@$cX3TYsBnw;~(=J`E%E)LKu9wd_{Z(~u9GF)1GWw>-M|CGv zbA#dmv-0IIXJ~`s#e{wzcg&BSKr*+ zEmEfW>y})z(uGUK;t+&aB^6qiE}d_>*IOL%^r)2_BqC^2nVobtjT#6bj6-F2 zM(z-M+v&5aYE=62gQGFs@jFab&a2v*Eu69UJT@{%Q^7`wr)Gk8BKhw<@VRRhv_0G0 zqx}@xJfiuf8gQI&64Ut@NKg>hwI#NAmCUs_x{(&}Cn!P!XY756hZD|3dqrx!Su^h0 zCe7WRY8I_IcynWkO9T#Ie40Y^^7GR&6Hb?r3c<}66f0EK0t}!-#yz#L*d2cT&Qv9zsQ<7Gj*S47Z6>~{8jEGj97K?Xh| zq}tKgf7(9aPoR;wt}Rlb?29}OXlPoO)N@=*Vx6VP>5vZKEa217_?^j`(!B`1bB?h8 zS73E3X{2LX-Qevp3)m~G#M15@KPN6Xe4}f2Ly$v*1LuLM63SitzguH#|uGgiAKCm3}!s0F#GomU`IpH>Jxu z1igES(4B6yV%wiqj6|fLZUMKF`q6@wl}zRXDU5i}^%UxfAc%0~?HrGn-SIa_N(YlF zRSu?Aa;S#>1E}op2DxoWb$mYeySo`v-wm}3>K++uw)|@QKD*+GE%xb`uxGy7m>5m*JN(Zm}rfE}ix|015-v$PFlvZH<=q!c!&EdP?z)kK3@WCr? z-*|v`V5#goC#{i@U%b)|p)F6BpI0cH&4fAgh7&8NtJQ}Zgfo9TC9Xy5OA>!xm)7%g z2d$^WX~xDdkgDl_+s~xeh$MvrGKUiH1b>$o_ z^6`jI+$CF6?y<;aF3kj4XiX|rjo%xu8(-@uyjr9YHu7xg@Rv0ftjTetSX*~eVjpd@ z`1y$g@khH&$DHn=0TRE|p&h$PO*sTo(}ueWYTPh4N)yj(pvePWIF+|+#doH=gI-Q< zEZ7N>n+v7Dxk}rjGGHiu#})c2xg6L9M=6wQeiiJKx9$l{a1*(B(?Sgvr99;(S?ZH2 zJka6;USNchSo=#InNBX0ro+dxVMgK8j;t^D1Bf=%mZQ<4BTDMBZ&`bH#_EqPReRkq zPimDQ$p<1HaQ|AXqjj~jG)-54kxb&n8bU{{pb&B|!Ztvl1?WTdYCj*Ja{}IG7o0d$i_+V! zs?_U2t)oUKEY>S9YE-eT>u8ColMMk8)j3jW(d?mVeu9gRrA^?GpB8KRiYhtFu_9(o z6@HVN1h^FNIo=G|g`hyN2+R=D*7hA&zi+{fQ(8ukTW>g~fH3S|;t4S~Fn`%s4XBgfE917Q54FwG zXf!u4DDsOAK0S9Acp(E_Ql8Ze9?Vu?Gt%wWR{gO~_2vbL=7#J$8p*$Nb=~p>eV`iF zh8kaeJSt0JeTge~zmwe&V4`lf=E1D_iBN~zf6F9g52A*wY2F|aak|Wb!vr2C&rTB& zIi%usn6Sx&UhaE(yg<(4=NAbnzcjbGZCM-ZLX;OQy*JlUJ_1@u+<%9sM%7ALqc~iW zqryPb`XMx!nHYD|rl=P7(@-<$Gx@1L9*Qk;RPOq<4Lt1#x4N}+i}XQ_`|g|}>_3nJ zDwzexVpG4Fwlv(1CbDTZ9mycx3eXg-{A00yM^OO#j%l8(YUSWJrI87xgMXiaTfhe| zHXJyO!G4Ji(zQG!KoEJ}WvaOahg!bkCz&;u&fti#(_#(1+|_X9Z}xpE2SI5P+2x(f zw*u`7UvcXB`^R%(k7}U*00S50AZ5OOQ7mE3F{zW4uH(>M(7nMw5lc)`{~qqIZ@&q! z2srp{e$oSKGx+^xA$jGd5O2^sM>_FRm|9XkbwxeKCYKarlSh)}oHW^xIhkp*GVXm# z@bI)W*QMiggno-w0O{c=#rlHS7TYtKC&7 zTFHUJx2J8xlG`HyvM8nLFpX9QeCYGuqP6L*^>(sflDztm9p$x#-BnOwQP^pB+Y}Ij ztiNuqrT0}w)t*p^)|WO21&=QjW22c*hPzhGrLlD#h~1mKf+H)-53=G_Zyt|5LUD{d zc43o+C2^;hd+qxM^l`YIsX^9@f)%>=ns{qC(AYQdp2AN+UddXB4N3>^ZBZYB420)` z$J^?ncO^X815Z9p`MUkDkuP)*$tbXc+aUU_fOHw|Q&mf*nVpI3xVSQh`wb7|A*aiH zque7_gnN;Q0p^d$o4Gq78NdnyNnI;To%BkzfQMs2DCzE|XjQ}!`-(vMZ@Rt;Z$zk^ zHX;Oc1>5%539o_|F}R@vBoxXz4U&n)hD7LQ%>^}bML*LyxOSyBh9C3NV+V{T( zdH^i2$JaYtV3>|~0foyNq7TR=>CaPk90T?;pZ6tMcxXUW^;!)sY43v3>(MCV@agy2 zD~PWC3m+}>cs=O5%xK5kR>Ip7a)HY#xv|3}+*5Y2er`qsao_OU#2?5(650NF-e0fM zRrHFAstaWT4Lub2#S*VwdI6e93|h|!J)E3M&lEk>Q&h`_T_66w76iq*ygT&rYKzuj z&fNq6lK(k}ZE>nzV3pDv-vfsh-srW0T_e9H4rdf?2>VIr^n9$Ov+Mvk5%i@0dwMJ4 zSZx6(wMAOUL0)HkNf++-zs3<0vMGBUi0mtm{&~xF1)!uL@omE;JO;bB}LL zSYEltBaqcB!M^yy53YR!T^sfc^?!`^tl<2TLkVv8a zknw5hb>9CJVkIoirZ5d8buGbPrM~Y{!$NCSk2+L1KL4mII=Ae9t|j3Zxm=S2n5w@X zMvCW3kvjlxCzId8U;YW?> zkt+6WH=i46V^Ql_^>f8NuWHRdAMx?mGhKLKn~!x^6l2B=hcnz3|2VR`bzL0{0)ZuG zY}o=)L=E@Qlx)G<2DXMi)h0uAqN4KOOWBUh(7!%CfUP=DT)uK)pITQ}-8ifBoJ_JN z1{E$bUzr1j<*(v0Z!Efwj4UmaKmHsnUqab_s~UrwIi019N8DQZWdKP!A z%^BM`JQr(G++!&2+8EyZ*Tt(sA+%yLZ0Xi5*GQfZmXl_|7*!Do)J-m5&jvclEh+fT zDd4M(9dFTOh;5e0wir_(&3E}mC-j4iy*4K1C8v9lw4Lfaiqg81UPa|3vY5mD7?OCV zhgHZ~a$H(6M6wF5zv0H`OWAOt3QQtGG04NSoy=~B23|*Jy7%oi^W&>jB=xuXqb6D6 zGd}BI`=64=6t9}xFOrh_nTG}sRma~hhNfp3oj!L@%h17ZsOCT+NDkUcJZSKZ_qYDj zxj)?og21B#A(iD|{zY3=RCI>^?G_Jr0(4T}q?+p&V+H)m-wrnqmPXPBhDV|9-+fkR}_{mOD5ZA=Dk34!^Vs=M0l_(f{`QK$UhcoubI0N_~6s zTAd)kGo1Y9+D-v@ee6lO(xZPnlCLU4j{&KIjZ6PpZPGU%1FFX(08N1 z&{>di{@aTmuz(i=53}K$hq(^Il%7*7Sl2&YG$4#E2uDJ`;=ITI^>uv#EDb?vgnebD z&L|!OZ&Ic^P#SN4KLS9o(E;ak@oxcD`?nk4X8}j2ZG-GP_sz?0hwk)Zl(d+8tFq1d zTL|28<}1hk=*2TNbFW*zIu_|3pYlI%(K`PNjtD5IByFVc?B+!B!-Kv-vm?9yy7UzS zOZC7DP$C8YCAkkcIX%RA%D1Jgr@+#-Hr^rrD7(S4*%H-S>FO&7(f>*)-|uh45tFUZ z&%ZAX)R%9o-rW6tUB|v8D=~JIx^U4%IjeJXbi0{vPZ7Gi&?!FO88u7_h@A#K*2WhW zPJN4m)`afuZiLbxrdf15w>*f(4Gl@I?dcfcz!g;o;=^pz3zWZwsv8-E;Jp9Z`*hV@ zdoabAulxO9U;7W?h+LMw8L)D~SL*wr0Z?sEL=V=McarhE|=T=qsH-n z>h@!p?*afdH}?J)MtBZdPORF1#;a~9^~tH}pAsV5eI6 zFS2zQQ6wLB-RfIxuKWau?{+Dy;{O+<`fvTBz_w+;3)A#+$6+K-z*&6&78mBL^X%9^ zR`harUQZ}^e`DEut_`w+4ZoYvFH#d)$xxGahV94t7LWgHxqzuj&9vNndS&>30U1Du z+H`oQ@b_q*_ynlZzfr|Kz*?Rj1u_M4l`7=5OEn&E>Z;Qd73Z73ar#ka-3u^q3yW^m@Q-mL#mhNll8zltu;|k;NdG}* zYdP4-6wC_&h?cT5S)Y(I>DEFMI?6Ab#4YDfI`)T*osmXM-P@|;&c#tC^(;x$E>R5f zs>9MSS(G?`ixG`o`cop1z4kJ4s#d&T)Tm>YCPGPQ*txFmp04Pkvb=30n@p&Sl^gT0 zk`QcynmOJ}MkGhIYQquLp^L0ed6~xh>q}wV6!D6kWXN92fk zFrzCU4%ugh=KBpK9VZ+~T$c@tm@|<__D{uNU*y)y+>ad=w9mzfYgGiTeGPPgM}z_f zGRn8u5pD zCII?tz}wXgb0ne^UYa0R$(-z)m&{OS*&I)hzV_Y%uzgetX3x>rGeOy=*p+HDR63Pq zK5@0ii^(n5Z5#3(jj!$QAh2o1`J3(W06<7>Nao4A#uZ{UReGbt8H(Rvgsn=5ssCV* z=}_kQOz0f1w)@sA13(nwzs0)yaUh>{w}(5~A-1fT*G*${-d`!*LbAvuaz>yNo~&;* z*u^|bUOd7x!z``UK_&lnG1f|Lytv0UdPb9!3m)4zZZN5;R@(h#ZE_GT2X0;sfgI7+ zLpsp$*?}wyUb3Ywj{U*m`rBgaq`1(>Ey~DD{DkB7**Ln*gbc6~7)Cq)f}Av6d2|4{ z-Uon0RpO>_ny(L-azw9uq&i9!Q=y0@vxen`z_7||AB7|+rgA=P>86hBq@OhHchP%C5$-cHL%rT3ynO2KFu^^UUQIcrk80Q$2qr|I3D5=(ydzt2ME1tCT(I z_Q0DZYr8lurqBf8c=M%;@)kdfc=;+(4?;ilcGyB0E2^ga<6Chz*>3g;cuT&!k2Oa| z*{Vo~9t1;s8fKCUurCA!EBq-aUPOm~7&74i`sCf7p9$_kn{HZ4n-nP4ehLGch{-CQ z=mkZVuy#gemV=#fWi_u!S|=5gLKK#OToi2#l|s%54>EGzIQr;|83!rxo^xrdw6-)o zxSna%nvff8q2xydU3BT%-uI6MpS6fpz1han)4}W&iOFKGrMr?j!t`i9^>rQfn&bl# z^LwpqbB1_wCyULIoLTBb8Ec;ZGit2Z%{mZ63!$UAc=2)~OOde@?z0{|>x$9(T$r!A zCc=Aa=!zHznA!ZJF&lDEW*9&a7t29W$>j?=+xNo?zhK?h@Ns#Ib5+2})2C14?=_9iURH*IG>*r-CDHSTTD(-UWeLcHx&>Ea|d^hr}<>Hz!Tj;2eJw|YS!}W zJ0-sou1}1oWT5C*()}F)n>A(~-Xkdei{en4(V>ZOTw4>D=w7nPt3|36{)u`!rRpd1 zVRoxMfL)n*Cy3Wg%i7> zHTSPXvJ4ih*jeSBjQw}S+80NBR^AtSSzwsig(FJQ;dk2N=w8I`fq~vb>Y^tw@)YCCtIl^0 zki~vW5;3ieCB!cLI4AhXSh^B9S8JZ+c9na?M^h$s?xjTVe6^%=F;}wipmY05=^Uqe zbK(@Gv7f8LSj=B5zP?#-lOZ|evsdQwkReiFvm}r#l&oG2cQRj$)d^Ex)p(B2R1r;Q zV?B;#VSp3g3#yavEpTW`<2?<;($o`$hBWP{7vnlx&4Mh8OR*o8KNL6AmaX1*5h?CB z>^7t>usa?0MFmFl*X9DKiCHv+W;O_LecCyrnnICr2+bGG4? zG8dCCFm{5(<7hUFh2I!8y_OY&VVliKdbVQ6RdRp6gDZ|6Oa45^ zoSm|N-yyE#fB^k86)O6WZ{jSY-}X9=$f8Th#TBXoj$HG-5{Vba;G=`gazq*yE*1l z2*@i}UCjC@4=G`LX(Kia=?zhp$Z%N`qbqz*<12l~`mudi`%!+NCND+lE;Xgp#@IS> z6{8RM&IwbIO9Wxo1iS3#vvzAd9`o3ZFx#XeIm;yMQz9?6r&wXh4O}edDM-u@N!Clc z-SVwK$@G6q5amKa#twC!$3Ls87mkuDWcD$wkfN8_61QW+l4+)~bK{k$r8uO{UhBwl zf6jp?gpW(SDr%y5P6t^Bg=e8mMNvL$Wv+=80qOis>}a1Ztsnxt$-+yynx*Ed=zT)k zAXc=%r%1R()aim%*KV4BE&)u8xYpK3(y>^gF4n3SiO8P{u76xArV2hv_g7`PDa9E7 z$H&+D?vm1&TrSe zi4lKlb9yj)n#zAOzmvM~ao&SEN0^VpE~cdwklT^cl+p3>FmH^eK-7p3k0c_erGY!{ zKqPqUZ1oD!`m}d>LL!RmRvqsWkCXw`mN{Q?p$nE~PiegJ<#zE0GqT2BL{_vo7XU_? zr>TEubJr>+=5$d{)pGywb<; z{T4;Zn+6qg=Ql&e zn_0EgsoEZB)VvDrj_1h2w&I?v^*_jrf%h)Gj4Ql5laqIQ>F)fJR5jjjx?lc-h5hM~ zg~!&bWd2us-vQNBx~`oWN1dZ69xPx1925a*A~ryRj-U{lhTZ~FMFd2mlt9qoSO6s; z0R(|41`sJR^p1sqbOi|=#vsNR2opL4!vF0+5NGC|b=O`0e`fvX9v92S&L;coZ+YJ5 zefJeW4-3H%H9>Yo=ZZ%o=57Xc+U38ImO>T6VCUN!wRvC*6auh2+i*Iv?SXIa_ppBe z0pf)NVM2kMK!098DYKKf&0@oMupd{f&zh7=*DW0n{{Y)vlxMb#s{|vDoRH7i@jYzQ zEgND(!=g%r!2}SUu>3a{e}tV70UT&CWn>c`be#{oh~RU+yBOKF33lD?^jC=H>!W)1 zEW-d$Ummf{u%FikNe8mL3A&y$y@hg?T#6!=?EQmG`DmSNSV4Ln#PV%=Vl+E@laxmA zd)jZKeLpLV@;#5W@zUrmAxPcVFk`Dou;(dLahMwMN{5%T&m8Vnd4HnK zQT*hxZNDVESD|}d>a7uHaK-Avm4rC=0=G_yhtP+q<%E=q+bkd>z*NbDiGsK@yv{X^ zEpXEMW4Zl7oG`}1Ohtb^6dcNNFO3q6kKNEwW9R3!2@WS2rB+Q+PELy4Rg~Q(LDs+Y za70mY)u_ZCMUl~o-tJgQv2M2r4Kd-+)hDOm0}gCXmTI*&8`FR*F2eZ^A?bUm!j);$ zWt;?hb9dle1suQkub1*~cN3m4{N{>*x zG8J{<*KK!w9*GV(QF-io<$EkmrF888NLfqXos@=o8kEcH?ciu+&}3!4EFe4?4)I( zhYe#idY^{UOh{y6B>81khRKe-?ycIuMRU4G<UTMwZN6=gqlf_mWEfxrdi%|k*gd-Hf0PJMZ^cCbE4cGAccDR=m~Z2_+A*yp}8D82E~hSp}hnALFw#h;#q zlZSi;7WM#&_W zP;#mCXM^LZnE5O9H?*h5e1dvyHW`aLbWWKaPZ~^!Ql*!D@f{mim8w@aa{?os!G?kV zpt&4M4>k!ws8!j~;PIM|*acH?smkcZkyoPV~#^-Z=^0C_OgWkJb^YrN>R^ z?H=roNqk*&*MjTUIiSG~F_fE5%0K~z$a!GW01DYD5PgaNltKzn52PvE8rV()lt&15 zTB{RwHR-|C`!=6sS#d1}0Tl^x(tdU8ZUn%}^-w<;Z+LXZ9tLk$e;{s4Z{BKK!yUss z!Z+64xv^l)_VOEbsCX|SVK!NABI+>ZC#x2Nq7yk}EvJ6ZPWGA5{!`K*IUsuobJs!P z3pU`AIIiBLe9f;&>*;D)MihaAm>mxTAO`HYGUI>~6?tu&U*R^(A0fN2g_Q3SnJ!6XU(`POw`2=FM!;%Oi)B`g5f&~o76=uK zmh<(t(~(FJx{n9Jz(W*_#%Nqi&{Hn(Zr*i%fBn4d&PPCb-iV&=5w0|yT}aayi-BB@ z=UoDo+B~MgQV=(u24;UxIm?CX_)f!EgUe97S^%@_0J}oV^psr+_KQzn;pYXzfeIN| zrU7Kgxov}Z!n%>bXOCs^4U$8(HK=Li?8L(Shw)ZVY|!i=@Bznf-~uah*IYk$c2PUa zPJlR5QXg<_a=^%o3*k>RzcU{+?FG#66NP|R1_9eVuIpkrC3v*Af1)=f_`SrF1fF>S z*?E?=DdowU7EKVFh({r?JBy{&1SO*%Svul3ldNFZpMQbk505k;Q(B-7*fd_bNJkS% z6p3B38unvGwsuIIG=OTpTVYMT*iCtap1WE3v({-9_UzsEbfMKS=^g%&Ej;soFm!_1 zuE;q(_V=YGfg$y@;8`dh2!X^&zF`VJG`2DUISw0RSAGO}5l}Qb9zPfgVks%d>x&J) zx$hAv)J>H})?F(yUP%df77sE~U#F~$0Bn)T2QGpNKavA9hh9}mIp8}0Z)hc`{=2{X z-6b%P^rU&NK4cKW+J1lA5-<)Ooe&n^TDn~ToM6{d2NjXwiI*l6rwr1bB<@mCiVp8l zj@#I;9J#Sqy-y|aInROzPkpwb6d$!P%K6`#}aM{-Qm@Gw}s^-(CkLCTvr zkObE$4Z^(#7>jr-4|?KJL?9lf4AKrz$Dpym+Mo?k*o5D<4~i3gC4rbO8vlUqDX`3z z_$?IAIHZgz$UDG@mIcQwhQ}d9uQ1Vh4>Tbr?63u803B+=^ITi^f$e@{5y*Pfbv6{A z-dVg|M$)MkSuBwR;JJAqx}knNJ#tsV$^PQLdyD*>Z~B6WJlNUid@(hThqtca7;TXO z^c;u*_PZN^!?VQFh>`nd{LjG%sBtYhju1g+nFs@b(M9snC5V=@l7a$|-c*n&ur3sz zBdP$N^n?XSw)%ili^N0wY`{f}n&*O9UliGWQowT>?n`wx$ zZo7ul;7M5HnRTMM@k+j7>2FR~56Ya_a`R@r0YB%hwohUg|hwPSj zF|Ai_KAvk=jo8~K&Suw25%`69{=WSJl*rrkW^3lgRf^Cl=JSYdo@OW*gx=KgO0B(8 zxSp&J8moVBaA~fd=kZuaS<76ap9eJme!p2LByO+LlfAYmIcQEP9x;p~^y~^2ntvRvh>c!L`l}Z8HAm82uAV@V!O zSA0tRI5w`Q9J|TiMDUl;e0{nLvk~!)i~-QQ3luc9oPd%?Rvf2AaRp_I0O0SNISND>oYva*KuqwjEj|Tjesk84gT)Pq_xClv zyq}kEb3}HL`@2HU#_{rMfJ~l9il&LJV81;v<_UdrNM9~8`%ds(kU|S8FF}m=uS~DnP++W?vwYLQp}CqaEcpx(F7rDfVN15mGcNhe>`+Y?ZJI>$mrIn3po1w0Mtw%cWt zlz|Y4U0x)pQUaOB-OJFv0n$j9j=V8o%0(Yk$-it0?2)gG5%BRF!1M#!!t2``cwQ>N z!@Wvze+#Y^i#iG=C}mu!4~%Ax5srjkQkwbog0-CiCWvDt`WE_G%kPVWrPkhrI& zru9Q9FB&SyC*qt_1OkwPZX2pezf5NZrZD}T z?5{wY5$rTW{)~XiU6A_iHIhu)Lv`=Vaj)3Do$$cG2Lz?J%CaY3zOHGtsWD91oR*qX z)qW8Ct7{lnV?%+ZRNpqG%E3P_(=U`vc!Q; zELJ~y6%;j9G#K43&Ay7?j{!xK&WwnWqNR}yz-n0Lu7X;HBQM^qmejfAJrz66($RUZ=&h{hkjf+oeilN)q(Am}$_tBdDE2If1XSHR0 z#NbC(DK2fZR2q~7I1=>hjn&;BL0XQUK0)W9XMap!Ll{14APfC0YLT1DL$!gNIGgoM zo8gn(E*-OnEax9S$DBSMv$YW9Ddt#$Y*C$3@3|_+MRoO677s~C&W5ujQc72yBffBY z^wm6(RMd^x2{z>#{t^T$AQdEmECqR`JynuG&x5qLrN1{1KMm-1`on6M<$8;!&UWQ4 zXkU9WBbO)y4$jio2QPq})c!YMJGZ_oHHbk`Wq~?a+*L2G>{3NPwa`LXzj6bZEu*S7 z9VFhZxP7UwOr_VSKd?~-Sq=6itGARs0?IcBjBBc5U!{~k;uCO(q1PXz84^4UBCiZ} zkO65}E{tRave$0`<2`)IDzh92#e)>R93Gu`W&gc$XEvwx>{%Vd*HhFYkX?IJNUP3f z3Lh&C9GN8r7&A~6vYElG)g%W^8|j{BTG9(Zpja(c%4Skp|&~pNvc) z+V9U%e8magrjYHYh47(aWzG@tfc3+VUVyc0qk=f8)*C&OCdbOKrA((P-Ru0rpyilAEmy@h)mt`Ju%t(V%Ge$Ad^2`O>=j?WxgVq15L+&E>~`jfBV@0 zx${@Rn_yDT)1d@c@Gg}2!8eh67>h-UcyJ%Ic`ebfcdI{^pXl3+zxv~AaH5x0us*1F z6uM;=$_o6W!}4r6$(I&#$>t-uMobr~{FBMxv+$O_2Z=MSB*0)9VoIN?Lqt3qrZEAb z;y9;_@81AMYNIsrbFB2~(3`;1fcPj!IK&I-02?_0DSK=lX*yWMdTO`kg zepEKR0-PVeUM4CwFwwRvgTpT8ivxg_0YX(})nF0G!ja3jk;7rqKIWR+cOs_%j<&?h zTza6z#Z;Yl$ZpCgZT_6U`WfJ;g86`*$TtBzGT3h$j`m!(FzWFFwFqWYN`GKn#o<#5 z!d?-dY5RSObIF;~QxXL6>dF7g5edbM$*_t51$n;3CSl9^DCwU^b+k@hyA zJb{Tl2I?j(reHsK@xyLK7m&HU&z7WpKA*2ct)jK+4m{C*EVDukth_XJip=pD=|k6u z`dCvJTTJCsR>5}>0cfc@x1=oVA8 z6&)V}=~6p?s7P2`Nd3Q)zzd)FGcN*z-UIQ6=46omMDQrU+J!=g;NPRJXL86}U~lR3 zVG1Dh|23BoG~HYd>E`)Nc> zt#-0`1-8#u594=C=zoLDojZ5xf(W;(y}blv+^46f&*&K%PDwf?R)H!aUq@cr!(*!? zuQ*75i3XwiMqW80+FPU~s%})^;kAOc9xtI4`D#bXl8KoL*z3Cg5v27VG z895&Zbx=fnmMq5lW78q3$~h^Yiv8}#4uRxp6TVcm+5_qf?IR&dYwBYwznGM^`nq&Z zCk~U2is`%LlIRHhoR=4}X;mH*)^00Yf=Df(c$w^1AJ;-$5Z zh^cqyml5q$ybrk#ZIN}sdFYW!yaTYkJt5n5eJZ|~Fq(|Ot5Tv|=^58jL6X1ePyAzd z80|^|Mdrz8YZZr0IbO1Cu2uFa&MrPUhz!Gz zxqfDSnNcJZyYHl3}1&K<{5U)XPt6=eQU$FMqEi}fHhUN zeoijxnS|s)v(yHSYXjCHLQ?x>kt~AF+M{L9_|al8P-ClL5U%y(f*Wt0(4nG|xkjud}jlXiTonrLmIsa)s`t9Ll#Kbz%olfrd)Cd+&!O z6ElBI?@~}S?OWhZEf!0F&Fb+;TeC6>l>7t%G4FnECK2G7Lmx~FHTAs zoK3P1xk9V@23c|koFq^@W(^1x{5Rdize=9`Z)+DyV#;-C-YD|> zfH41ZDA2kq14yamyh1?D{LkfIJ{w)nWRXot>S}ojD&G6*8Ler#4NXm{09<>2G5;HL z@iQ!W{T+kdBWp)1mc{kToQdK*vwJJj^Z|nL$IH)!P&yArUF-J|UZ{M@ph@$)6+j6% z`Lizt7C{r!@GbH_ zrJF$Q;-w;NK&(KSyPAQZ&p)R@b<-?B#$jO? zX&~R?h*1jQ{6gl$qs5Io-g?C)Ue2Xd+UiTs1vuX~UwXEdiqLB9?DlfQ7+^q{glg#) zx+MASlhqFmnL-8xjMhr=Um6JBB^qmsEmpp=IwN>di5vNNA?5V!3v}SGi5E+yk;!M% z0fPu?7#6drSmw8BX~T7i=668hra5NLaI!H__aW`{E37D?ZXR^<{Lr7x{&ES0KV6&u zukYrYm=P1yG1o4rcz@E1flA}YB_`@CD=VkBUHm4Qc**GK6Z{x>(jxZ29kj5t9~5Qb zyL#TPB*+5X%Xg#}ZMy$lLfemT;r{Dq15mB#d=~)GPaWEJkDuDbPa*~G`|7DjspVr94#>NI& zbPr$ar%)&rV`F2zot>Q?xt-R%iElRsFS>?KN~`WzoM`x=C17{sdPMF&j1GxDA_hpT z?%Tuv18km|)*6}ds@*){Zx?qG@t@28$!uKjEBBwcI0fqN_cGf_qzdFDjS|)iL^TP! zHpnpo8F_M@+ZM$&WGROOqo3bBp$Okxobv0`suz2*-SpMaHVwOPPQBcnA`!fWx(@}T zY0(DjV>$gbo4HX^hSxm%$~qUY24ycGQFS7WHfv_RR=1tf7kzS_w*YegLGAPIw3`y* z2~~EI`-YTUZS5l8uA1}OVapf&dN;bxD@3Y6~%~S0aw35#8 zGZ;#xc%jw|Zk4k3`EcGo$kabxyp!jIABaB{j28+2xGFLrLMRZ_^ffD-V|T@a#^ZMq ztx+hhlY3!zps=tor>VKw2b9_^ZFKg&>hsE#vbk*Ws62_|Xd<`{BWVO}odug&W5kXm z5#j+UXPDCZJ8>uC1&MwqU1KhXrmn){4T&$R#zB1>dv>d#MtR_QZ9t%68rnwf)wvIT z4BARdns!TOr%>{H(HN|Ip2OG3Y~4;gp_YIie_87VZUu&)7awX}d@|e| zdOo}(ZFuMTd*c+|rhpb6CKAS57~by(w(%C0_q&}O?{P0C%6!@OQ(%KF?!p$FxlyJ( zw!meJ+pvB`H45i2`lT&n-g~Y-R*_WEayu_O&v2lfo!?jGrRz52PJ#!{jt_T@`gdo{ zs1lC*HMYqIz7Y>ASKm0$5gl%U)w9Ch(<9wXIo!}oy?=^ygPe^PunO`}cP13f zm6hZPV>&W!Pr70So=gX3(5CTXZe&k~h1A0Z{=0NJ2e66amDG0M3xw*C)-Fp8!DD%b zV>R{}xYv1ST2)gy2W%ZOFyM{H(cuG+)dij?Yo|*mX(HFiJeNz9#&U)WOKWiA3k*u} z+U6v64Cea;gCc*`&O1jhc_lvxx0x$x+e~vHM$!5VL>$!BQTV2N&#SF*%zH=CuKMS| z-J@xet?hSE;phGLh&2;hCqCBXwY9&=6CP-W_eOaa=I<4Kc+4zp)L{$#m{)cbxGSm4 zITU1F9T?e!vGf{3=}o_0GV^B%DZ_Se&J=yn5%Uw zVnozo-b>?S^BMUE-DxxNmVLS2BkZxm2A*z|9yd;p*ct)kvxC|}&raB!UuFizP(f`Sb7gpKV-7P8 zdofg$JqQ>D%hDFOKJMlCoRMmid>nU1*Nx@WpE_@8=@3vpaX4nu-Zks`NrcH7nak=~ zguP<2)OK3Gb~<@HHO<6p$R5X?9>Cco9jI0ct5k{k;vUGj=ZdFx48Zki(-Xg?qW6p4 zW>1F&RX;3DQV6|y%!6Ek{w}5P=+oAT!5ZZ_u3AlXM1GHX2F zJg6Q=VZi0HRIt6X14`JW-H96L zt77YVc3HwZHTG)g?E3HzrEr(Bq-qV!-)m$iT~s~Pvz0>BySlIcq~mGadh-*T|`FJB4dL>NVFwi88kmp!oY$#IYKE8*%+pX!3cMU&?KI z!Z8J}00ibBwf*&FZ&$%;6`L}80_yC=TC}1;d(SK?u{%wNIij8##BGVUvK@FF*fCpj zzeOnwLIa?&v@!%;)gKn~M3tA$VRz_lKAEzeRKpSzVh-qSMX zcIM7i{rKyfE_KYC}n^jWi561IRNrq{hJmQ2y+`>#NTQ-p{*DL5| z(v@bERf)xO=e(@P4i{EbpTgyeCF!1WB^b0{Ye1oL9VYEE3n>HJYl!1w8rc5V#rj?H@i$g!cm2FB{uV@88rs;jb6OouOyg&U34GqiRNv!m=J# zYzOC6<&>eD0DIRC=Fo8Qp^&4GXLi2pBY653o8zmz>&Ja5vn@*UHUSqJdz6?Td}C0n zbZhdRS|_SB20BvcZDJ@5aMYNXd?1FW2Wt*_;I0$LyHCE8$a&hiyg+xt>y?k1IE~3Zow(7tG~9cVu9%pW99}c8vJGz4eRE z`}^jGj8*~p%5<5KC`w*IOMe4Hha`1(Mrp|X&V4;`oO;r@_*iP16N4Qae%{k9F`G2F zK29=aUIo0@6<6PKv(k}OU`iZ_7Eha-*wZ%3)OICQTiWZp2C9#=zMVzM54SQ@PB7`T z+kI+-xEcoBL*G?=ay*HgXLt%LV5K3YC`vN-w6x6_*_qZXl|Ei}KiqxRKa8|}2Ck<+ z^;N)|0|C#|VQ)45pwD=pzcA;WULM!~I$4A_K;8`pCGGS#i-s$#dQtK6KEM0lSC~r; z{8J-_hdIF1L$;r2_}+eB#HUrRsI&2s3CRqY(0F!^XDWzwzdGeD9wdjl7#MslhWC6L180SO52R z$X_-g|C2qwaRV~h7Gy?zQQ&!XF#q3}pz@|`#Qj^+Yh-RBg7Js+W&q`q#4_d0(xbH+ zbHBaDMvQ_t*z6?kYVFxQm_e!-O<#oNK5GW-7<}ki(HXP@oU7!3h=cPB#DJN>SdL+; z$Wz_}PCT@~E=16rnPrmtx#pyn-A<}i=BF}t5I+(SItv86NNP_-AZF^_8S!DxZ?6Rx z-U3R>^JlUwp`3M%7@D5^C63HRh-d zR$n8VoyMH^8rE1CN5J<;H*PX$Ltnq&C5WV+jX#pYFw#p-et@8$_oo`CKd|Ht2J%pB zxwWhE0sA{Cd9Dk~)xn#>?+ImjL>xS-r!(kNw$zZ0rOQnIeDO~R<9N}`$87@0BY_Q^3s?v29*T_+LG&~(I7 zo5Ulsjo(vyzO0pLMfj9_?Q9C@MO)8qEq>P+#@mV7{0q@HD{h=vBg6k(XYE1lrRCYH zqZ)BCl>fYz8v;oF@Ao%4Mo94ch29;!W$AZhth(=Sc7?qjJ`Wq6eWqBwJLN0R1dyha zQZ#ha$LfPv+<{7Q7I&f_{Kxe?Y88N+MzPg(gJO_wl?w*Z%Z;U%(tZiBPN)Pg17dx6 zeVYL(%s}hA3s9MM0(RDwT~O?CEn<|j zNs`OS-+-i5`2Y6nNp?Z}*Cj6b&^KW}H_w^!5f7SUvuLzrUyk+B!`d@Lm00mda|4Az zT!)*%_#zSw4)QZl>`4dZ<$c4rg^3MgkEm`cBA=`qzFmr8Glx~z%AD(Q@q$#tR!@z6 z%d2$Xqlk&R+kffE$lRW19v34<3$_X(lZ!@Z@G@_D6Sw9`G&iw$Ww$OWR;Pt6C~3>| zqFO%($B@iOLhp{3eEi`Fi=nx2z5?UyV z(tAlDp+tHONJ#>Oz}d`<&-t(S%US1r*ZFqVf|a$AeeZk!>h-&>8zUbZYF|9ZeU62N z<)W^RrZEf4$ru)vUxokkEASJQUxkRk$1gs{+7DRD`goUti<7SR4eqnBl*gVwczO!B zKKoq9(ualR(%0kfU)o_sPAn|mZMvHG!GU&^$+Ll1N5klw_o5OC42SbVNCgJN^0q@Y z%iZa<=<#|t1j$X;QB-#7KfjHSwaJgQylcJw!9pnR?pVcd57!XoADn+{@&A0+;p&6y zLa#1I{q~OUGnpBJ}Q>Qe$f{`+gU-q)}H@84DrK8m-j z#ub#~^XHy3>8>duX;d5LLgi|feTXJTSqMs*CJQtV4kLa(?L?RIqgJ~teH+FSPYA}Q z5yg%`XV*E8ZFQx;4dJ2NT!cGr5Zhv@E6@#70Fx5~i+cF&6 zb$}Lal6R|gO-7a|FE%t&mLh^Dt7oab(#FOag~C5Q=w&;k&RTRnImYGJ~AyGeML&#R5)gD$BLc8hMh|9T#51NifOK0FNkx=>*9gn@v)u0{Eg zkKkyq%UbsSj?5d-yt$s*gzfMWcngQOPyN*SUxyUcN&?o=Kej5yQ$61?6}>*=+|RRJ zsSjdm>6N>-AxqTtrgkt=u%oFp@4~~4^VYEGGVXtOoN5Yecm=RU%eYJzs^4}bwG>O; zN-8O#5t_`*W}Et}8Q@vgN~Q4ATT&+PkH{aOjtbrM_?#C)$fpT%bNLiA_*uX@NOWp2f(p*4^F#F-uZgf;lriWKV2Z3-G zCa}vE{v`U}kbHC;k+xx7@cqrXh|zUq*o3#=bag_rs^_bb9Y1YJ9Acz$IC`p-6q3Mp9b&^2b7hK&F>>yzKCHRrR{+MSB@_PZ&%D%e&ZL)t}uYg5~TkXz9 zWmn+op9$V`oTRqL;Up&3w{p!%ObvVl1dqANvGakjSUFoQ>|EFs&%IYbAm=CXVqgS{ z2Yyi!{&c4vbWv*UyV}?y+o;;^KL4U!M(D>~Pb%ik;hoO{DmAxj8hXbKzR8?oG+%2i z(fe8F>JNeHl~V*#HQ9wp!PK`0v9Oe5dwMPFE@nn=P48hNob!+#g%|;s#_-`E^4&&q zTWAz(y5y?AJauPwQM)X??yy6G66#1PVUKdTY8$fe6%Y;IH^PfXaH=u-UdTY3k7%^@ zO2qG(^8XfEtyWl2MDeYaC?GCP1{RjvflLN1nk!xO)U%NJft`%#w+}g8G2ewZf|`pFG2_Rlw`4-@sq+7&z2q_nzwjZKqDuI~W`uQ6IumPDdkb3Zx&DJaPuE|*K z_oTL1SpRn}ou7%24J5)9swjJuO1}b!04il|&U1M24H_vA#Oby|_6DLZozF{H$*Zbt zIeBnZjrnLg7q-?21mlQYgleS@lhlE2?wAxb!HWyX)jT>drMj|HhhtH21-IEDy1Nxg z?L=yAg`Rf-j_YSJ+O(K@imKcnk$F>-55wRBDee z_ZKK?EaD+<`0-NB@F_O^f57)sTkO}1{lfDN4zyiTAML+dl+UaYv@!T9toyc49Cf(a zY8>f`YP2}~l8VvZXCu+28~gttDA*9Cb53u5ZtK1K zb)#ou!A*o3;3f>Ccy1?mytH-ApfBr(x$hHDm7^6Ik2l~AK*7$EIQ%2ph*d%9A6vij z4p6Ws&{x$w>Q(m4BRu&p-v|o}T6^2TSEw3(-r6{S@$~hdhW0WC4E^=k&_@Tx#ot6T zL)Hof>?h$X+k%3xv-*Y03~YVI_8z9*V-DsYh2~ELo!&})$;3kKhdyHGYabi?rU298_NcU0)e16`6z9GMH+9}LcJ zR$Y$fE2Q3H{Gv|}x!x?}Gu|XKnw)y{B~?9jY<;wUJ#e1MC#p7N02Pq8J*4$ORZjfu zSI2!0cw@jx(0h*yHDaOTgRG2(Px#@U;$~!h>-L4Yaa{kQDT;bwPGMMY;uP&sfp#>atr)&X#IcJ zrI|V)ff&?c*K@G2@{v8n$6DXLE_Y`+h1h4?$)N#ZE}GL-Enhj+nrNS$CR@8{GI4K! zj1J~E=$Qze*y|!@J-UNycLQT2d z3abe_?ah2q&+zuIBUeiq%GvB!F!|(7v)~0kbVp_479~Sf7APmO3~U&ct+NIZJVnlV0GCam$Zt<97G9#y998Lf(xmJ#l^`!_W0l{YjZT`sS-ZwIV< zFu2>EAIZQX7Ae=8)gY5n^pTZLG}_cv3TQ4!Aa$oSDZ?Gwo`sl1j5^eWB^}|oS=O_zZw(h;)YRE@J8n~{cycLN#Fe0x8COhE61-Sd_51O zPI}C}>VA%kd?XLXJxfgWHI7= zwU^!4Zf#L@$mP*=y<_YMP5}y@7U~$j6y*xWP&C7~1!0=hom`Ya@A%-9Oq_XHHO+eG z#daDzAk3?0|6R>&nH|)&5krebCVoq&7z3O;)b{x^2 z0?JfThXvuneFx34ljn2(Mw*i!fp%~c4^zXzBgCHBLZM+t-?Yg(5;VYAOP za4jDOb~roNVXv6*?q1;XRCT|E)p7Y%T`3eW4FlkXT+*Ty$@Bh97b=}S=yb(-)7?>h zJ#ymfYBxq+e(Q3@p6l+?!?u2 zdEk?Z2#*D<7{vi7DFP98O3BpkyFf#<;3(6Ydu0WZb(V+hb{T){>6JEd01ugE@ir|8 z*o$LxqX|3Z)D(uTg)(x?A=TQ*k-o$d-t%Bc2E5>2`am&5taCvQ#6r+YTZBUaE>UQLFQ(dehM zI4j#oNFk_-OEKS}Q&+6aG^L5`5~}Qs-kb^g$Dl^_K<-%lTlDUX-x5{#fd8PXB3&{G ztd&!&09^0Fm#AAetX5LUr2Vb2i$ThUs|5MfdGn;jrY)P}jn%8>mTo;tcfBqJ51p4X z4rFyI#ol-d-CN0ls=t3uFa4nnOF>T=E5%90QsJ#n!3k;JMYVNUY#qGRH8k%g>hIA7 zU-0)nB)urgArRI~cW>15qdg3WxaLN1W729bMpb93_^#)K7_m(qdTcGEw{R;{>*C$d zh!ZJDXL@m48y|Tgv>C#LgmdnYg6d|OoLoQ> zHP4yAM(+hF|K>RnY~7Lulc+>YhxO&f^Q>E#?HBCt+YHi*i98fW2oKW2q-noV0@7&K zJ6Y|mzt_{+x6ydZ&4dx+q^I=(Lg?szBSvrb>8r(J$};E7(bK(R)o93lwBKSM zD9bgrMqz5+d-@z#^Il}{VrCnfQ;MU^Z@mvo{GZ9wva;|E%i3TyU8cOCNxf$h$efMJ zr#o+WORWG{eq%R!PvK&XG%_R^$GLXUop`NDWU(w9Uc56^&GREObzDs`qliOaqC$FX zr0(ggX|y;p|K&tSuSrxFS^Rm}`N6&?CX3eEj0N94nLq9{X`f-%`GnXr`o2ldZy03m zVShV|)4HDkXGT-ZDhHsSH#jVAJf9!WKAL=jxqDj!B!?x%LJGOdMlwrnje{XmxT{ZZ zEE-QPZ+FY{*M@h#2x4oqvM%ZFdXP{ypH+@Wq)4W~%F~?J+{7n%tq!pe1yq=Wd+uE6 z7L~AwL08FF6qmuL#;<}(6&tl(+*FQwu0+0cR<|_1%lt7Q7TEWAj^)9Zo}>zlKCEsmAuP}W zTa_=O(V~76-tz*=Z!=Y?Sa*r9B?(0?urYr3Jx+>8fyg`oSs}6v{X`gB_@$%Q-p5K$ zqMQe2^h)#Z(fiyV$K26M?OG9G&sJ_Pqnz410IiZ|VwMjCaY^pBY|FYe^myD+agJ+prYIquw7{{(vL6}(sPt@vA4 z&lx^-4mXD`+?1>J8VMFVWm(>}A3R2Ty-3;gzh*)e~->> zYeaDu>(4@1rb|(Zl^XMQ#>RvTOCtYyi=w~ZLYEjT4pz*g3g2}f;1>wa zes?aU(r)|*wHWG-V4_?9V`QK@@l06N{l)%my^;wdO5uhDtLfCV<-!Qn-k8VHwNfSf4FEbN%04XZ*cu%P_Zi zDt(y5#6e*7cKP?7>JyT;Qi(`qbHePqeb00g!SmE7c|{z-@QShes|)qni!l&dz}N$Y z^#^|2I|9Vu#V_i&%QZ=_B`u(m#tH9(SGlcQ$_4GRicc zu1WDs0aphP({%Nt&bV;0hC)|Iu!yuSa%kZ$eZ0y>;m71w5>K~Tz2_TU=Anb~NTbQt zFp;NO&2Kn1+0(j8SG3GOCoNb^mzWMcdX}yXRFt^_qt#Layvs_eyi7@EIovve5ZSAVs4L+QI3C8RE=ut3>KK(`!IjiQ2~i*3eDHO33^>r-TY&s zb!JEdBu-SQtGZ7ZTDQf%-51U;Tti8yK^s98)U8(MpwXr?yY|*R&Q6n^q#$=1Q7XaX zp74E1S?b|?eKgt}rGD@E(Rc(h6>X;+G!Mp?i{?4cw~7!|{(%6e0BY@umX>)B=4M1NhUktSS~j^@m%eU-|*dT$gb+*>B8iGAG*N|d+S_*^56 zpWo`es&Au{J4Gf zd&$8woOL)Dzn28}@zg#oMq>?z)+D4H(&Xbs`mFn)yq-RZZ{v9X+&T}oE+Zn_PnJf%bPn{{p{n{Jf39b^S5k9>p` zB!M#^y!8!3ZnI@%?waWr8Sk^i558{;GU2C|Mjw`i6+Ahb-Zluo_vJ9k8oIijOHfU& zp-+Y_9%J^@xe@5{c$Q7|M*rHl^JVwN$XJdP^|khmZcdJAcBufS2&1wQoHMisV!!aN?cm)hfWUh;z#=ZWhwDP z#%7zXcURQ``U_z1x;g-sTvQ-W$mfu`Ej(ngg^*>8{CGfAA?mnoQ*Wnd7KzL{)1;y& zzfVjg$V>Y%%HIMcA;#apY?Cpoa7d|=Sm83{;-z=Ldc)`^D=spvA6k|q1U1VCZ3EP0 z2MK=|oRjt;F$mT_CaElJ;#_`A94VO8=o}_uyKNx&t!Wq z1}isscWXXSDuN2t>wT-r+}4xXWfXYBoVPc_gNwl}J-eo77LzmL^26lno*8a#9@*}^ z$SX*ciy)X~N+}*pzkTJGJ5`3bMGcu%C?kd&R!?WDVu9V68X3@ZXfptBlx0`0?f_1x z+B+b91%wA-=zCUtw@8@lLUsEVZN1D*C494DZd{u@#)wXw(QQU0s#&WxShNnNx`fxOyZyPfz=RzgY4Tk;JX(dZuo|D`6tQHaGaWm zB9Sj10G-56?FFQzWlbywV57r^jdaD?P6(-8H62wwTxeoc1awA(RH6%o!&Sl;-=6Se zm74TfjmlqT&A^m3eyrOY198BA*jp+KNrZ;`?|rOc)#0so-IUaQb~)E-cwVd`C$br( z_MA48=`$6OLmCxsgb zgLtLBX$B;5>6Vuf$1V4i(xgh}Ncp~t?ngwIm9=$AzinbqkbR$|J3JK#Fjxod1+4 z;2!vNGT!KFCXfe0?bRZu#_}2%jmcJ z2&j3libOi+tcPo+q=P539*OVoA>Max@a@kdNwJdH51}P1=W|D~oOm{KGv;36j6Fq} zzTV`c{?WD!sCrEnce0BP0$-H|9}?IBwy3KC(Iu3lQ@xkz#UpfG_Zwnu#}_^iFo&XQ z9{kDnip%EsW|Rs&94SQv+lrbT7YCs9zc=<96fWm1@5Xb|DyYu&qr=^3Zzp;F(uAb0^0ZI&Rx~ErZc38t5ywrQ>qd|n99|&f zKxc@Q((d_83KbS$MvQA{^p;&uYu*Ng1?N@5N=0VjJm<>V`JXHv z^tj3kt1?{4iceIt>0307#Wa9!B-rg*KCQjf#D-^?iVRlm4q$Vc$I{!klBr7X;U98G`&%@`R{^!O8uJ!P z`Thbx)!SUclD-21438AHLtGleI|nErC7VA>eNZ=G<@}tq&|2q_`azhvTv+IQLzuZi zPNGl*KEz%4;J|R`EyjR!00_TA>N*YaF80?N4HppNi<)w}&zjS#Hf!2E0|Us4o#61J zP+b6Muo)^vL$>z19TjwD5T-zK9JzRisqRk$3Qv=o^Y(@iG%+h&x?D#K3vf<{w}OTN zR*^s4Co50fvgu^Uji3+({!;g6p79rM-(N*fy3&zN*Lki#eJF2%7y{I!BuW4ctc7J4 zkXHxfIb8$&F5fbftNeJ8(rUYknMjB-2rjgz*VbGe9;AXXYd9$bvi~+i=|C5$PAd6NyaGzXmU=oJl^` zSc?LsHlFjQus;zx3iWe{e=SL6nd59P6{v35ns^i29jl=8#M;u!EGO!9Q2=cO38@vb zT>7zB0ED@U5d}~{h4(Vt4g%XFV}*=l?VH#Pz{lDHERRE98f;{M7%!?p&219|1rAYL z6Y0vJ@Bp*ayuV5%L|4)!F=KuU_CqyfWOR(75|WY(4~} zz<)2q=wa6bAtk+Ah>Yb(NClIubDKXAXYKE5Hh9-{JSP$oJ5NEEHQv%SWlNdUh=c%z zsN)9Wwa6Jw4!j+h(ax!VB%N>ZU}5jPz=pcd{Yz2rA$L^xl*7&X7BVV zZqTEy;DtVP67;%lMb#1Z(V7#@dJwclGXH40Xj99sB1l$RRS1uk(rYD4);N(Lxmh^ae>x*l$_#JFfVph8L$)avmoGU2#Jn5pQ|~ z!1p7;%11Bb#24-Drw)S{nY$H5XY9#70Ig>qRS z$ak+Ha_0ZgEeJd44fC#b3U@YPG+W(>_x>@YYM(VkZJsdrn+?@6QV0x+n61rQJcQImgLuzG*<;@4%hL#{Ltho zH)whqH;Etn9N%W8-@<*?itVlN;IY2dk5&u(M9Zm%6>yi>nrU12vsvLtLU`l0?v=cJ znTHfi$c3K`V+xr0!9@Vr+MM<=NWs`7p>TnFNxkjODm0S9{7=ba<;yWO@bjKg;B?J@ zFGl>Nj)(Gpul*(gS>oq~mhJIjn*aXh|MqQGzW|50SiIgAo&NhX;{Wio@Jud=_j7(5 zjbk9}Uh(yN7g<;uL1&Qs55XEz*~)J`+jUQUabsaw3RC*A^Lq|=@Y%`RzRHGo{$qH8 z<&TZw7ljd*@dNrxhS}p@#`m9dv#1Gow|n*;>~o#&M7spw5t*ub0H_xAUX4*&Lh zITGxRYB=0q6*DUx_*#48TQIP#@5kE`m&_sUZq9Br(x=>p3znZwygLXetf;Ki{&3Cf zh)F-fboaw)l@a{Gw|L!hGWx%+V`XfN@U1O0%tS?a32qTHySlo# zrJXud=@SVbKi&(WtqJQVAMYWGLqgBMAZ#vPTc|mjS8)qFYB!9&d;wTl#-*p0J{7Xq zpCu(ax6`LnmN5LNKk^>ODq!tD!vSl53XFxMrlt;YhR-LN@BGM695P6W-!ftS`Ww97 zgh(XDsvqwD`OAr+p`i)ZPiUJuZ(@b>&^AA?Zh!dUw%2T%7fj-@gKBX`5pAuq|I$iN z0!S@2K0bR)`r6$GaMYJom%VDi zixLF5eCDm8-1;XlTldv`cI%zT8ASgXlAj&yK3!cQ0b7o@ z{mlei$=z+`u1Ec3?iQWIhm+c)s7wx#jBDt@+SrVYj57kEj}ae3E$Y1U`Ns+GuZl@a zOP{{Pd+V-U?0Zu?mzLQ5o#kN#FT-(3myp>I5Zu4(FKcJ^2cFF7##h<}J1*w;JX?c} z>vBned*<@=JR=S&w+A#>{Zvs`=L%Gp4)d{_%y!qgw}qt>JJ|sp-^NepJFVWObQti2 z;xbON76fq`$0^TlZj_kbsyU=LzT(%_(d+KAElA&~Jy@%XfF+oQA9e2hhcPDOpbF&c zkN%Y;dP871i!oc;oGkrBoQ!K<;$0w8+WTT4oDiD1X|a;k@PHF+^9}oW@~V7hxv|OD z`vP1B+nQLYHn&vfWXYM9q9Ovx%6c=6f0kyYg;tfTFEXp8ujRK1HU=qUx+ib%*{c8e ze4=@`RSFq6b5?iRVfV*0yQpE}@E?5{g;{W`XkKZjcd|SxfzLU!UdW1~+yXA>TJzSp zNvMYe&wPi6ohfvpFNw4T8!H+a^kqaS3l2%KMIr^w&O`ck*Rerl~(U{#gHPyLSqA1H(6e)sds4jtb zIs01xid)FTuJ(#Exbo5i`eb<2!_j(^C{C&5YXppaGh?IKJ|}Gl+4|T0S5D7A10Fqd zDRiy8-Kpm|lm*r+^9u_6h0(2HU=!QzgM4D@aQlUQB%ax{y}YvOO6|+00U$P1ydy zljl~3^dtGLMNw+Po1TDW2c5up6<|azQ zvO?&_jr)Dkxb=E{!?!`(3ldgUKpmuHNAM$xXrE88>ePgMdw03w$D8wQuKUdDKD>+K9>vqN1 z*-mJaaAHd16FA{zMni**dxCL62~1&rQL^VzW%cihio#)EjPWB_E`1-)yh2NpLKl~D z*1mZuqmaZ5d9iVxODU2%pmNTn5(ceV50|9R)&v+&{bBuYT0vR2d-vw|Ic7>hJ7~H<@W-teeu6 zbaOjO)b>*XipB+yW&VNS5V3%^$Lm)iJo|* z{c@(pocOyR4f&H}O}}M8PyBf{=8%K{ZJ>ILfXQkR`T0It^6D%wT z!+bOR92;cQsAoVk%GHidmc;SL7~zZzTJuSng!Tyu(KI1H+ae+k{oE&rs+c-I6v-y` zr-ZewMQ!fGw>+0PILah!oWmNSFx&1omD==Vn51}cbG>1~n;h_tQLoh+Y31#J!+G#AlJ8;5TuA;`28e0$z@Du;J?V*`e*T#TSrGMcD>{Ic zOXjYybLfL`#@*Hp^<)=66`x^txCiSc9i6lcgzTD~vL?00!MNz_oqe^8-(7a&vY|+x z3sI0EEq)h2G%S1!lAR~%6~2d<4TnU;JmTFS``DwktN|Zb zq-9;?l2H?O-un23AQ{o5Vyj`EU26XFi+sMNA|naHh!w zy$Igd55~t@Hm<;DE4DI2&a>%8;nMI5B>#cInx)rk*3_w_5Q`oZg{Zy{XU z!&!$_oVg_EE0G9?B(+P~I7p?dlM?I81y@meif#>Ss^?@5MGtIJQh6k$;cL{3eR?X$ zQmSCJ(7Kf^gqnTybedUawe;Xq%?A`)G^aN;2 zQ%SW)SP(w4((hu5m6{pre^z>iWsIPG?zlDCXHs+6inQbb^EI2ORVPlM4Octb@Ej%k zHE*=Ue?$iEyu&I}fq6#nbjWP9!rXR4(DvI4TwC8?u}=B)tAf<_@_ezTJexC7QkSZL z34`4Yn2LZwFwR7)@77uGdL!A10DP(D71ZG9I!agUD!jDghK9b&g+040wWB+_;^gJ* zDY-4HLfNVwWp+Eeya$F^8tZBH*s`^0D zvD9{ddf@SHPdB&Q{Ab)l*LkU4aDcw&(PkqgV4vPxgTZ<;Y`2j`99@C7BxcOFzp*ph zp3Y)8X@@u7XY_`=_*4fn4hfl9^zeTQx)XSa3yC7Enk>)JyuTf2{qekG$U+b{Tbi?Pc*u&0}xxF<6oUR&D{UQAOi!%?Sx$(AAuRRn{mZ{o^A@_RSli77Z zr7&fz)o9DhjqsvTBx^e-ReoY6;NA?VoIr`P8;!5}ErhD2WFBSc|0Ru=A5ZcucApho z(=I)R6ySuwg^7tc9g$Z@jOHUT)#Z_qk&$dOIkfpg*gMIz04_|>X&4=|F zMs;=NzD!J*C>km-C}XDzFybKz3ya0+hBfLA^pE2ckN$J^O;)zdqR4mvXNzU3UVz2; zDzbhZ6`ip2F+*B)=T}yJ`1%FLjh^ZWqu$BFl$gMAsSiYwCe}TDn(`(>iD(A4mj2qr zxZD@Rjx2JSyt1y-a3C4d@>W?wN4`d$1`oYmj`ew?oTONbw zrCv&IT2o1}XV$~3_z9lmlqA{f2Pu47VD}K2--Xmea#U&MI?el^5`O3YXT~iIA*hP; z=aRamn%D9w%K)%8fED z1*W@v_5G#X^~C{~-ZUyOs!jr>^u*~4abvV^>>wQv95CDqH5bDwie1Fa%X$DLC!_ak zIyZaLt=zO7O>GOWeDad)D&~oz!pR4!Bk)<9#<~2JSZ+E`ZWBfDhHIeJ!bGXKxg|_{ zEiVL>YxTOUuA{p`Kor+_^o+XFaBzx!J!!fF=uF=hGGm4E`}=#P0>xl`*W6v}f5Qt^ zSZzqx`E<-ZqOV)PI&ALf3a*t|jRrIe0wjtd80dbBb8GL1KHhcAs4O`T-0*<>el6u5 zK4#vVMW7mLO#D zp=L4Owy}oBIUJ?RjgDWRlu(*_b1gTmQ8sm&q(FAya1Xens2KG9^9#263D_B~yAH2| zPaF5e6(WQ6;A&ePfYXEbnBxv^)DUd@=V&6YZG%^TI^Px1kWsR4n^V7tr z;@SKwXu2|pXTi0QsQUfLP{%$kORg_%x%&R-e*4h%fTzh+`A`8P3HA0STW`i+RlIT; znGUBq{BuYZr*!>ec=mJZyW_LurnuMjz~?7dR_UdyFZy3Ltkuytr_Xs0XH`jS6veK) z(v{g(b>|PuNXO*U>({Tn__!6l=QLPVh1{TnIa}R@)a&k3YnrQ%8U=Sg7oQAdi~!D=caHf~pah~V^j0*#Sbh&7D9)(}uf{-D z=5O6>3Bb=ipL@8A4_J13_Yaq)yuMRg8wEjhwSC|cw7nGoUbXZ8weE3cGpeghuy94v zqF<_7mRG!e?Ku z^}b5!k)h`fDe#MqQ6VS=6h$Q@AB!z6aPTn-DyB;nzL7KAEbb*+xDV%iwY{Yh`h`@g zF@CNl8CHJumw&sF!A3`tzMr;Ob#Z=XiN9#0VJj)qn5>|$tLqi+{tTGcU!A^aEGXQf zo5ffLNR*jKQ4UF)BJPe3bNevrX1hSjL4lnr8@dR{GWE>%y)tT~hAP-AgR6{q|N^ zc_v5z=JRr7YtLU4U;DTG@!?NjxEA;EsTQri$tf?#^;2Q`WYb_XQKsH6l~! zzM5ybR$0pX#Zo7g$hK?SWDR4Ex0hgL^%5>wMSbJP2-`CZ;5qKGE1G)TdNfM#ke~SZ;n=QzS92^x=H@Qb}DKtwjIJF((2cVl*Ismzi)Bv^ZKhY{3psXxtVnzVn}95YPCLj8mnI&%<+=z72h`7Wj?W7YN z9BgRV2Qbe-YGieTsAr;t3mXA)xVX63Tgf2fo>4CwdMP(;8=^UC&A@13Vb1#$@b1yelr!5Gz_7i)>M+LP)Nx##r5(p8G|eR z_bmI#&v3MwW`HtM9$ve+^xtlEJW`qH8~)Bziuczsb4d9%no7rbwiDn+vou z0>$AEtpkj-Hd|sX1saqF<7j_Ae=-T(E$#m zdTw3sCo@-5e%EN6kUlUc=O_G2P_13^ijB%GqD}bpH~xl8m2vf-t&Cq%v|Tc6+!@jz z%7X6gPJy&T~5T+Q+R1ZQH-z+-E(v%K83Qb`b$)LwKnuV=N*hZ1AYOiM2q~eNUe=4`g7- z4+CYohgtXBEV1Bq!{6A`ujDMk_+bTMPlLO@0kh3*nT5H9`Fid}tu(LYms|-6=+T6R z+RqSGb@wk1LiAe{1j%xyu@;}6tiL=}HrZvJk?JBLaXV=1Lus{G7eG(T-zAcU-voz_ z`Zu2dI?^4Kvx|#irjnoUhzJPT5V+}}_+_GhrtP{q=#nGhz+(|6WHHk5rYs&g`#3I3 zRZJr2f$`S2svdyW$~d(j@+S>;Lq=8A3}k zN>CWQ>G83nzc&qev$=Mzc$uiby(V^(L0UP##nEufB*CP>wXOx)Vu#^*jm#-p5L&o=Hn4u$=| zrpVsXJSJ8X^bFY|t?O)W%CymPxObBOrCR<~xjg?|2Twg%)qmER;0mxcsm*M~KrLA|6C1Kyf0m}ck>YM5{{IOohVygiL=p&XtYybbxRZAcu z!uEG`L7>sEMsaP@Df~+kqt5xqW+G{Tqh55`##B^Dt7h~0`T2c)d$FXfjPP}ESyrwy z*qJg7b!vNY;!Kww^||;v2yn+AHaAeMf3$qio*vZCIaY;K67n_&vNZ&&1LE3`A7}C#-r;);WRXb5-88 zPUrTmF$&3RJ6@(%@*U*v<47IWv5{-K+JH_14#>HJ2aZ87e$nYPgrK@~T0r0g%e>Uk zdwwg4vI%X5VD`&3?Uofk)}qpcWKdem<-jT|W$Zat7gRReI?XAb?JsiNoe7rM?YRx&KLuL5icVC4}V%Xjr9 zB6T`j>F-^)DnUz>qYB=uMR^7QGE>vncYWwq3>;gEsa5Smya};?Ez_CSE0=3^9@xX5 zcE@XWXGw?;xX=--?ps;sy%Ql>fZ-YaLI>}4uwyuK{rU^v_ z>eFwl9Tqnu>?To=18ac{W|1Z658stEN!D=OO8G$;1wW{SlwE(n%_+%;!Hw;BMe#pe zleDi(t33!?{56H-mtzOg_;CD(oK3T1+Z&Xi?C0choZ(VA%X7h-z*98kZVmDH2h8T# zP5SGAGRtSAvXYCAIgTNFA1 zqN*)j@~*O6%&N?W%G){J-37G0+Uei$WimP3|5tlo9uIZ*_dTjhMF^!3!Z5P5&}1Fi z8Otykgygyka~Y9+Ey=FzM3@@k*%itIFHOH{hgsOu`O=Xt&E=YH<{ ze%-I<`TaFBzUOa&5xApWhmFE5iN8pm>Eh+xN9eRg9r zc5#c&cyZ;&pipanyAgJ)+b1z6-l@Y1pC=GOE<`@wHHz?9$pNgaP!xL3T~rqKohU6x^kXv>a_sJ ztSzwW$sIx0V3`+FrUS=kYs^LFLQmNju%}WM%~oojN7#~=i+Bd3K?6z&xUSwAuhpWU zu?A@b--J)$GXbVvTsS{`5QhB8)84Ra#(R~0)oB@xU^xO(c_zUK2;v8PM%2E|3k-&V zD*WSd(@WXD-v*%6xBdho>q5x(`1Ycit7Rw4 z@}W;zqxyoG%jWy;8|?Y>*=$W1JwvBbjQL(Z$e)3PxangQAZylSo50#6WZIREowOYq zYepqBlH>%*W0u@`R0qEKyJgM+?S_z8KY1@qbXI$f$L~EdeBg~9Y`hx(&a-WrA_Dnc zcCD%qkr!Br0?|K5@USwLkjZEq>wYpza0@}zYU%Xl{YeV;_Q0wsaIdxX_kiz7Zqe2<+Mkq(rp>m@}b5A9tcGH zhvYj5Jtqz3lHNc;ENAaGvd+=C)%6%#`afKZ}W}y(3+)K%+(3Q&XvDp0X`Z()m)- z+UBF$8sqabzoc5@KYI?LO(ctdW5eE)RU4KcjK;Z7@NR?rF8N~y)pQA5jYgaBjY4G> z@wtYMbJaC9HVAi;e3qf*oWhw>&xYoi3S(NI5KWEiNKHDw2__}ZdrbFXzZIA^n7^kD zoR2#{b3_6gYiQoaaWpFE9&b}OG)mz#+%h}jf>}Td<)A2gto+65w<0+QSs)>~Kj!KL z%0*U85AMg9(}C~4v#_Got`X?uQT41@8hQ;Gx3kB zgLGp!jm>~D`)*XG-QT&?DLn}%Y8Q=@M+$h;Sy>9oK~ovOG%HHw+aJ$9SA`jSoC0~DC=-q=Q&Usj-58(t)nmm8@xE5-04Eq6vRR zQT3D(i??!+BaY^5o-)`3*`bS>K9Kw*l0&e^12a8PS^nhkP)2HEVornV-OUqZ&D%gC ziC57eflt|MtntnA{CJT`){TZc`T_=&!CJrRp}kG9Z8pc;=u$G*EJ~1WxcTrqo%vcQ zyi#XhU*F^n-&-F}HZ>Ta%x%Svk5atoyOxfi^!_B zG|6vT&;8-7gcrd0hVN5y*H}FE#}**M$xk;kFC=PCrjj(LZC&0yu-3`TT-~zYcV$(} z+p_%hAe}CIeDPLU!;P&kbKOLIhJrJP@0Uoj$M|a_Nv*)q`bbBlG{}#ER1(4~i|OBo zZhMOGSr?bueAMEQCi*nxyi_xN8~yB56*fJaN2f3@sBj|nK1dIA5+g6}+U^XTwG`oN z0;!lWPVl~$mpIr>zzX#iYhZ0RSbh^Q)sE0pZ_LqQ&(MwY$cw-#ljCec!D)}%nMUE` z2dP^!bVvCRJw!Vv?{S1EhuQ%DeRufPmGtNRsGN|2bxHk5oR!b-*gO%tg7~f~O_Z9~nJh1bxLTY>c_*P~qUvq0h z{=vRMy~f3x@{t1NXJW8J3~PF^gcP(PuXxfR8p}Kn9WjoHe4qHT2{!` z+3Hh{35;;bWmgbWz~Qzkn;2~Vx?N+&y9lnrP#SVSgY*wh?8{+&oPYH(at|@07V9y- z&$QmdD{Vhs75(CL>$I%Sok{{RqS;_6hjIbl$HHvi&I}_+JxxV27NoKl&r8Y5kdqh@ zsxxPin5$_j$?JBG37r;clq_0g!BZRK`9WvTHDm9qW`gbYgOn<-_}C;MPd8d5WefEJ zyj=E_t`JsK=v)yH$YLay??cK1vEh3a#VBYAiDcI9N)8}Akx)?KZZi?6QnW})YKxsn zRhe7gnv%5v*8tu>Up`VbTZx|1jYaOqC8r!zWA|$xZc}cXnz3}PO3!h!eh^&e71U}S z9n>TY2Hh*D-pArBE;m?`7@*3DuIR^^BL;H#Bq$}C`cG!t9_buifI}dMd6~!={*Y_X zIW8V%vfb}@vuts_-~3eObhu%5RRi0sug(h{_S2hdVT`>}bKc)nboXvgzwqBfy25EG z)b>iQj*Y5kS~{0lOs>Pqy=yILD0%zVy?oc&TKWaZz*T_P@1ezt_(LykawH0b)|DS2 zZOF58T>*KfRI5oXN3JC-7R_iJAr3yK1XM^ZHTd)Kc&H-4P{q0}tM`Z%+~z$nNEZ}0 zAEg-DR~Ro^W2~$OTnCPtxp?rT8+#sW>PHR9>T^iTrz?o7NQ{I1@YK)!P(?azLfLhQ zTURWcIF>0LqvaW)AmyP2H|x|Q%`!%9Dm3WGw{ELVDZxj0+`Cu)L_ZY{B^xe!Z zEVYQ?S+!j6zI4KFcauLs^~OqD-%yx1I`O+43dK8hm^{mHRH1L>C7jUbVNO@3cM~E~ z)5W$W;m3Mj1CYPk=l_XC1PHVetI9ifCX{V$v%X`hqYsa+sImSEa`g1UsWXM;VpbO% zZWvm2Ej2Y!kXvR0NX>s6gX4*FFgueha4#NEgPS%!@6yDWXVc_C9dr(9Y3UKHkU0hmPYI zwc~sd$~vwIrCOHI5=xp&yF`i_*GVy@?rN6xBObq>rd=owbFp3`gNth9Uu`!+-M^wv zF6P4B%L+=y`YM`Y%pFojlwb7088+Tyih>^S>??X@QIQGSP9j6vABv?0C;2X zWp(MPmlPIre2Csl3&+N7+xEXush6;LYI{W=0LoV!rYMPAXg&C{>{TE2W>bDlb#omH z&g||Z>v|Aq>xPDH2t;H^NsHR6*zCgUOlQn?}RL#4YAL#8S*e4IBLz zc`iBgf+S@*f&?jvF^l3!DJ*uXw@!tTo8p!1>&#ud$uT&V+~CDu&8X#m{|)x;w^04{ zn)shoq=z&*GICT=vA4Gu>)iaRz|k+SAknPMKtX|9)0k5popd)Nl=6s}SLryKmE;@1|BIkY#tPU5Dy zKkoSV^b2JFBV7U^hch;qPIPlqlQZB=%gfsv8$0qL3X|WF?thgfT`XN#@ZN5dmy@HB z;0bWDppttI&dk#C#lp8#SwyW@XtGC?ydmCOEXT~=nJkx#0xeM^i@4W<5CzcwWC67CH zP&nq=Uk*KvqG934#;tI@8$@LOkD9+jYSX)YAnG?FY5npy( znlmG@b~-? z9%Mt}Vog_)s<(1VcaE_|t6I|&UK)N|!I|q_FDUM&IVZ$v(sZW7o^8S7RsK>N9xX{O zwg@kR_rs}4fl9I1*Vj;+g;gBw0AF>Mn--Y({P!NKR;^3NT2r3mAJmKmC>KN>?Z}2a zLHXGPU4?OP-|Yj93pe%DPX%m*LOM)I*{j%zs38&dPR?G;?Cjb69c)XRE}qB|jk0sS zConm4Re=-?N0H{wWocpNO@*-Qh=TLzCjE*iVa~!mO|T*7=L9{KcwE~l;;5>Z?x`vV z(V{}*7y3{giNX&YA5F__EOYs$L41Vlee3;|T9z8UuX!wxNWjZ6c{Kow>Lk>bl|-e_ zWa19pRGMv2NCzT6MRdY-T-@4jog>V-{q-A$n2Xf_-w|)0Tkj2n1Y;*Qtp1m_YDq{X zYbiDLYVj+un@XBbDH>R3Tt`N8m$7^du3IDSRs7n5gyhKoX!M3`U9!r=f>DEZ_yZfr&NX7Ce zo@O1?hc9Z%z0Q4E5bh6PwxA z!S~I?j);RPXZs!@6qPnw_OZ((>~1va+(`VvmHT#zwO+L@o%E7Zy4$PSFCDR!7!0Mk_0;=5|!2 zdHnSiN95TIbb=4s$lO)!(sdMPt-yQrG0zL#22Yo1TjE|_TE{mfB#rDxYJBx>pg%;L z6iW6(5OhxGp1wY*))DNpfdf&^$Ui-IJmw_POqEQj2pGl_&KS z_84I{?99|X0eKNS$Z{T`;bz>raaNDCNw?5|KNNS|&P?~smajb;-FHIHr0iyCsWH`~ zTvut{Fbe?VrN{u%sDYq!spZJIYOk%PJtYm>umwT(4ty@wNsZ9HCDl|Q= z+Zh$4AO6x2E2#5nFP4vg@|DoiOUGodouS6Txe$ogPagL4h|aclIq@bQ?gv#8xmu%a zG5n14ImM~NI-GugdcgMazeTCGy&UY+P13EV#6@A1-55f%vOTXpy5t)04GYhtf_8#L zu6;PtCfh~?P8dguYsZ6C&aO!gQ;|*UbbrWGEc^*;9rrU{Rl>k58jp@#z-SR z89rSb#5^&sI8OqQrafw3p+XxO=|l^M|#deFFgxm6FzlB`}b zi;KhECelamSP4#^(+dv1zw+i)5~QLWgjI@vvbu*nv0S@%cc)c_T?yX`f6*qu$KPKE zBGt9M2TKx>I9=|5w0!yNEmFs2q^0RBObP%OdoH$)^{Vj+*ZL;t(yQtw%i{jQELb+- zoyYlD3V(fF7{j7O4x`dHDo9k{@-u|eL9px_DhiW|5ZvfxKVrgITifaTyT_^}A_R#W z#C^Ho{%B#mb`Y1yFzbyCzCw7_d{%y)-{psYu2i!BYGnW0e1^Etz^fOTyeaFBq78cW z#@M_~h#hLk+4y&Gw0CNHItEvDWTTB2$`f#dZm{usQKU%0m<>Wfm)xFYdFZgAXoFTB z@HPsCA+Z}N`R=NcNWsVrm2?i(;;NGV!+q#%T7&qKvE!|pni>%PPrG()a{EDmkS~7z zC_!dH=>HOvqY}kBjW%89ZHL|k$qXg!oX#nL($C5=!fXzV|8>tp6yCgv+I0O3CM>zX ze*XIN^W3oN@38P^#P2T{KE0o;e6}7Y0ficxXc4wd*~ z)(*~pNE0=D>QjOH-*`FXuW%xjILvvrejb#;R5tGe9rqCkYQ%hJPJd}|jpVgW0jHGs z%LSz97MlZ8*LB+9H-*ncYmuh2ZF}?`};kYvZ_ggsD2rck!|DWG2 zE%>Ub{jVzjPhNcnKg{f!2!*#|gR;5{&T ze)ynM9{T*{>QxW2dszO;ai9tp%w69imwO_Emj=D3dRG}1k+&l00L15NHVTF7FJe@=lX5|{{#`cmz#DIrc9BDjQQAhK7u(B zLrzO-x`419nKHHQJ(Y(R$ccVeljIfnebb$imtuyq>l-a{*Op$LQB5(qmmHO^hnbHd z`Ce?SK8U^d_r5x`maJNJ8YK0xqu;G0@>;d|gOG&keaMdoY6x0rXebC}^DBV0FxjfY zr9rmk?lDi!9f!u?)IsOClpRN(fE(q&wo0Px1LK&`0~g+)h1w<}^r`nRepX>=iNS$O zc8CI#-rj$`;xQVVo{dYa#npw0_s1z+AB+(1w^K?Uj1F7-VE(G{g+9*D{G6rA=)GcK zWF28<9ZwqL1)cnWuOceE%6HkbyWRs@%e|FS>kh4D*RK%tIL!QD{xa%~cQ}eRQK@96 zoxUZ+A4IppK+fY^{3wC=$8g=E;@9smQni=(QM#{X1P~lrEseEQ0`;>vFjcb z^;U^^?f|B;;gU;D#HsEt-%1%zmtz>Zn6N{POUW2){I^GwDdVQ;4`C`|Kv9#~r+NYL zS6y9w>TPi2CBKowo{+C8-+Y^k4M-EG=iWnwM7_oH1TG|9N}$&%F1LL1TZ$p|#El$& z{%8chU@C-M5m7I$Y6fH2r?D8D@n-6yc6>qjX=Op$qmfNZ3EvW!$z@@Oh~GL^ zQ;NyF$zhWzU2-=B$5XtVz2f}RRX!WJ;4|zbzt#EPcQ_c8RDSqV(W-r{Fr;QPn&W=s zaU|esbQN#flGO2^M*vZGSea-i2^+cf$78(ukzRkl*)Q+4o;a&cf zhMy?;(H_6-uuBuQzYQvV8+nipjy#$Tp7GujC>m^#eR2@*{oy&?O%pS(z3Qcnnbz|> zy!?PR;S0n)y!wm~+bO3MyE^;2nIVSF_kxa+*cSPN-QzxkdsvW*niV&prx!)`dxL}G z8bTV&O`8*g8+Q{jGoOFEq**CWespM2q*?vq%7^j`l{sLP`&5)erWzvZXBV`G`J-+J zdBlB&ZZ#vMXg%HGoiT6k?l!*y)lV4b?BHEnrjVU}|M~=$=cgR7Hn!i6??S%~tGbrf Q&U}K@Md{qs`aSgD0KaZ^jQ{`u literal 0 HcmV?d00001 diff --git a/zh_CN/docs/img/experiment_process.jpg b/zh_CN/docs/img/experiment_process.jpg new file mode 100644 index 0000000000000000000000000000000000000000..991f7f4978887b71dca7d3aed19257666f8fe8a9 GIT binary patch literal 941089 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
    t zxH_O6?w+Xw{mhg^AU*x$Ew+f9n;{-}4s*|hf1i{E^u8h#e^Z#a@f5m%4n+DuJ78e6 z<(Ql6;ctq6zSeu!@i#?vAp!oI!XQTlIfa;ctKT#McSXde-AL4z$3Q7N6pb+#pIW=9 z_$6IVBwBwdBFr8K{ia9>1sarG^nu}l<0W*L1?eV6vZI2-!d51@kspj!#Sj!GHWAH=#uMRlP zGj5UAh94wQIW%z8+DO4Y$lZ2Vd&n-Q_xi>FTe9&m!`__-v6<$MXWw+Tibyg>JJUd3 z-Kz~wyde3Tg3odV)ParwGs7Jhb9) zh*%P<*R6&ORV~HQ^+#zm>i!Sm4Ysv5@ae$IBxXje*r`hmG5;G6z3;%|PM%qD-z&lL zm77r-iwiOC=QgXKr zuio;rkfpPzEih+ZYFy9h(U*Xodl5}abm+rM zUWQtJv*AKUpx8b^VC+AhFF?e9w%i_3)xV#H(-iOMY~&dm{vuEU4yu#zAbreCk}4afL%PWyTj zdoyjD3UU|^^k&~s9>Q+*Dq$qPIhOfw+4)Klvos?(uEzK02o#i>771*JnBzoM+~_?u zMts6re&z$fEQfob5hUG>d*(eac9FpPTqQ@4@pYdCdltkj%c&#;;1zzJPC8t>S2XX0mKGI+gWW_Be(k{6wEtX#LeHc!7s@ z`xT5IzxDMZPK(l^mqZ9BjXHRjdt;UqN?|WH<}oEe0ZK! z2an^X8VR;s`pOGmMo^qLEsx&5ybE+NMC_aMkI8Lo&0TCx%^s*#Y<|vnBTN0f+&X8A z8FZaI0B(3yfd^r#NYccQ*bw)QjLVTOUu#Ds%J&%Pn4o?ptFalE#v>|!X!*OkczfQi zk8q!*i4%~wS7*?F_9ggD$`?))GmkIwfJ1BM{S31 z$8NRR3ztk3QR!8%T*gm5AB?2*S!aNIDr2iFg?y!_#0Ex6RH*BO%`@{su5675MlA0N zjR7hzwQQENUUkO#WFDHAd<))YB)(s+or({_c72&S&O^F;loGpa#ikY>Iz^A}IB*UN zj2qUdRe#4Rt&W$c^2J{|Q{QNWV$WQUA4KBvNKC_$FzLR^o@IM?3&P)DRiJ5>9&T4v zEyvbcMzLS(f)!HKN^ERBSi3#WlikG>ZV!IHC$>c7oO~-=9wQRrnl+lA-aJ(beJ=4= zMWAW76H~5*pLoJVCMNh!?oLN+OrvPnq^E0O=LoAvZ9nVRlQEZYR2^dyik)tR?` zsnsO#+;51Gv+bj~e@o5TV^zD{>$yjJ8?wB7+ouTQUaYe+;1WFfn*y*pZ91Tpm3{b* zKE8+?-Gbbpe&*B|Z6z43yp*FD@$9Kqns8pCo-R{Wkp74HSxE) z@Lfh&2lr5a--E0WHLbsQjab67)lw%gW5d%1T6&B%zFS?)w~-fN9?AG)nyAABW|?xg z>XOXIB97aIfgc{4iMZ;;-_9xByJjdGK2oA*S|kXmIXpaOIR_jM)*Jeqq(rEjNq9%T zK8jPA{KeRf?t*d0{L(GHjmq)Om`J+l?e6ogcZfDEu)svs2!1tTLmhUBJPxJ|);$vr zw)xR2Mv}_07i~K&dS_{dj~h=+r3+WnqL!au50|_XQUhst&%crpd`+u0KevUP@RGJ_ zYOd$y>Cu^T@T(u_XFL(7{;|Ge`d6P$Rer?H)AU>O4cBe({_T5@?c>k0)z0Ho+1(_4 z;e6{6)#A$A39CxWkzX`0SGzcsQiyP6H}hxh3IP@x{>P1O?+wnB3`;YN!C&*O4P(W1 zu_xrRH;s{8y970!4iC&b8J9l2+W85{>rjV2dP5IMcN3;ULqnrqsl|HC1=$a90qR>o z$TmPXGPEv>U5`+cf_o${Ek?21r{!X|kufkO{9a+XAuu>ex)48JK3v|w=Z!eR|e>|;VQ`3H#hxgQ6y z5{L&}2_b2(8%EquZ?qKhd0P{kyHs_8-a7NwRfI0+7j-kuXdNMr3v#ijrsnE-qAdW< z)P7W;)Lk42L2WR;Cc>o@Y1<(rR9G(PyL>XI-sjVG0ClNf^6e|hVpLOTNPpGe(RZc6 z;zrNe;&luNw^Md&h^WaCSFuw)qYU#(b2$makAL~lD?Tu21)VG$5;iP+plmy%7b|t- z%x02`B??{}x{2kS)WDLZzAY7>+4a^traXm`T3IucP+Tso#hUaY%q>~Y)Mi^khe1jc zIk!_**?$-#=HUP0dLox3!+2;lSXy%>G5eInp!SzreYAn8U5QTb?H072+kc91Pm@%= z%lLioeLyHZFPnnbN!ikT5Scm#pF_j8h~c4w-P&q?A3jjmic(YjWQ8JnM5*r~Dxqo6 zT=9nB#Hoi%H#+VY&jVdJxrDNA1Q&?~C&^BnY*$#IuhkHA2T|GDSZ{sNgkuQ>n+<;* zdDZD&nYi1Uvn9DJ$}0YRKJn87&2L1~nPQL9_T`kxuJt-u6}A^8+OeBY*$O@rm<5#% z?y)L6xfvqGl8Wa_iaYQ2sCFCucoDn(#^+-l?F}t`G319cmGN9l$zJTG$f7Iq%K9vv z@=B)bF~@Gw#j6r7H!8$~_sP_vfZ+a61$=4}D|xO|=L5$-ZNZF}s8m`R&Xl)_Gp_N14)WYXwen(m{g z*?`F88PDkHVIpPr9*P{2>F=sH z%~(2AQ+2Dq%%RVCF}n%SC>A#LI&tgN%NlL=PDwV9{V6sik)OG0)n9WxIX}K_9Ai)i zGjccRl4tp~Y0y=`9cL&F`JB*eL=*sZKHF0hT?V8B0$Wx9zC*jX3UvA2;a)z&RXWp7 z#JlC_u{>R__{5U7B8LHQzU-^r@1~#FI^9+TDFM- zuRqHFFM&5$h{ulF)o0sPhu)LdiB23b`b7=#Ycp3hU!-b2BU3IDQI==Y!JfprrG4s! zI5`?GW~dNTz&Zp)vm7TaQCoXvmZP%Oc zw|9uPIHRca_isW7ly)AVhsi;TB-2)=BwUBoz0xXO4YWcXXPf>>;?#`vW9?4zTbzoL z1lKo$CHsJ{`=;+YG=a9ZCMbof79VxFwXM_|Kvqh-jL{ky?+-E za7`W!+(3)}nz^bcIf82G+^E@;$f7n_jI_WdSo2dZQ9g}@W8CXc%+ z0j;c^_qsD8Z%gxm&pJ0_gxtQcweVmSoI0ML`rz^3As2A1O6N`JrvrezRj6DGyzRaC zPy*@i$r{KE#D@bKqlvc4G#!2%z#qM!uC44*vH!CnQY5CDfo0u0Kgt^{ zx)x?ek1|d|98{JZxFQ~G;$&er;+}IWiXPWu-=$KQrYcPq0Kif25yo-r-kvlBvg@%9t#*9Zh$zmfEfvW|h-aM5+Ggq_yR67&UpU_k8w7V^pcgQRE%%H^eoRZ3s@lB+VT+Ef*rG^=6jB&R!v|Y@20LpGE9B zPG45zBHXineogW%tnW7kg$6Hd7|ja8!buKQUnARvk#})Ddv&&KJCX77&+aR#C}e(` z(Q}5VNk8VTl3grD7$zIlBxu$JmAHIOHwtFKOfArM;D`;;&&rWBX-fn-yj9>4B*cp= z4rw&ql}asDqHI5!s^^~Vu9BGKFvu)oYUkdeBq57&RMHPG1G-l}I(v^xH%2p+o|{sJ z=7Jz1<6DDS%=yNq#U~uK!oA{Wx}!y)$;G$aoUQoCcAjuD^SA;WLi7jrSD0MLgZp+J z%@K%CR<;fW+7GaadHNq#t!5tNz5irF$Y;nW0HEz4QJ?2b2?@;II!z?n0D|9SSTL}= zg_)`Vq!CT@0_MB$gqOu&*bh6_vcOR#UXXX#{t?t}gSwp-ds0KXTz32rW3eVpnm3F+ zdtMDh?~-zBpll^Svcym^1T1Dw8ron-@f_y@!s32J;J7|n@8mgsp3{Q+H-AJcen+qP zCj)K{fWBkRf}7Usq^OsGbp0C7X_OUd9|*q8;omiv;pYJ)VDRejf*f*u@xRS4CFT7m zpE@&QK(Aoez(>CXe^ZQmIs{urpbxxc7Eh0|;9GrCAV$ETd;lGQ)$IRCmwNPCcJ;Ux)W_Xp*~Fe^Z<*GZMWWz{c%<45uz{)gIP9E`` zTwa7vW)G300{;P$p>9Cdr_%vGtxQlPXOUFFE$j)TxBKYr!F3?H(Eqv5XDk6Uo|Hxiq-Q@g3u%mdb zN#A*LIn>B3+bQC2~J+i&MV8pDaES%Q^_RRddGL^L9Hh z5m?^(5wCW|;6gYa{WuazT~NOIIp2f7wt}guT9=7Hr8dQ{Z5jPUm;SAgJdvvi@YDdG zF%%yB4>}ZDm>_`^c zkGeXNjsv^-gyalp8@RlV2i?q}TD2}xxS`becZaiYmOEQPjvB29N?$tGU{FDrZQ~8D1g2!UooCTv}9PBcy zKVg^=;V4l+CaC1rUpgWg^EHxbjnU>$g;$2L2~2L|$3|zbLM>k+qXq>v=?tYO%mrd%`Db60o@;OpZgAMQqXn#y+zo5MtJMyx$BUVq11(|l!B?2Y}$bk?VQ3~;u8{jMw4 zHmh-8GG%35*|dLdZDnm;@J&aPZcqKn%HCY2M?=t-J1#F4$|x15RD9R0kLea`adDgT zmtJXO3u9voJz>72YLE%Y6@79OP6?d9_rXAAXiQcM2}a)hHwdH!*2?l<{lCVxFn|Xv ztbt=hVj<_7f)K!5i+!>Q4c&RFWDH8#IC!5^{E6*P>I#yA%Y6DV)V~N%>O|~5)@=OAPZ=8@<43y*sS$Be6!|T-8qHj z(jtk8?puy9(f>^IF2PGLf;{<<@Pg=NHynJYg!cFqw*Iwc$~DtN!#6yv-z-wv|2lDbX3%6YO}*+JE|N%r^*rl}o<|EblbY|H~$C zDl=}uE&+R-rP<)?a_F$gh$nk=+Npk1Dt}9JUZ{UH(d3&`NSuu{G+0Z7RmC(8>~50f zlxibi(rY(hnkp=km7bs&gW=Rn!6WH?_88wugQx3!*mj@8IA%?d{O>U16)|O0CdX!5 zdWL3Y#$~JrMJCKnn};*O=u#$geHvtg)wIKj2i>f=_#P@v`C02Qwf<^V`)V?5e5;l1KedUH-3L zPXtB`>Ve@N3sL-K9xV*|udI;N#Kki$AU}6GAN~wFYeiQ!f9GJMm0_gc62>?2(O;yl zB{A{FNO!-5F3`58Z?B z%>&vlfMOlHdH8wWb4_8+dE6_XU8Y)e)@IvcRBV|1jL3p*=mO7pbz3e@)t>@27tLZj z{>gVF%gXsVh3wDe-A?n{GrQl@RIQTaZjbazD(pRbtZ-@`M%Md=uJrDXV6I|??^cR; zz#Uh{^2&PSAl-B^6}r}kmZ`Qnl-ic7=UdQ^BF{rL=i;l6X3mH;4$GQrNnR64er&HMHI6WSdf%~Q*@lHoG9k3~?16dGnP z88G0U)@7Byp6x?Ah-muY#P2A@B@ab&X;3BdeHj&hDx)jeN*(~7*~se#^w$oz1hM-( zcPZg=&&s?F)P>2G*bRP-9kcJ2Q6%x+V5I%qy%Ayk@nRHLcxaDTvE?G7CSk__zr5r$ z4UMs~Qu8C+mI4_1?K&kkLZh{!q4~bB8zY4>{Fz;_yXE$5M-cD*iy6Kw3|7b)zgYw^ zJ*@9b!mTASezk@Rx+*XF$GP?D@7yk!8ykI z7dLL}snuzvJa3u`>gVS4p*Cx8?Mzty-!t(vRDI!}lVY;1^vv>CG92ZZn9`F4*PKwnLTQC0b04H=iOL-NyZNN2l@Hf>5%3dBhXgH{j@Xb)R-y75>*k1mkyI5 z(cZe4&#FUpPde7AJfF1`!j~4smt?~`2*MhYZvUppv%~`d@D(^MkdvxRAesV&?2S|s zAmh-^g8`AskUDuqXF7mL>8Bl6GSdVQo%NE30PMVR`7&@fweSt8Jm^63J7`Ci z11OL_L%b$(0mTd;6+r%m2cHI3Z2*%<;mU~NH(E@OF8uHM1v9{aXQ-mXAmg?}a0VAV zNS6t>A02W9wvWM`w|{Yd0W(1!J-7b+vAUvSI>086g<&2b!**V@@H?Jo-dt7ga!Fji z72iwn^M-za3>lo&-SV9m8CwnXE72`jH7s}ed*oHKK|oWbQQG69= z0<$VyOyaC&3fZg9YeiWQrXR*I?MIS30et)(sD1wOtag8CZWHn8GjOMv@A(?M`m}m&5J#OVH5wR7(pJ?xl-4|J%{17hD2kebnA)lmYNldLtLAYVLTfA$5fN&hrRJijxn_x> zHC0d=Q{3!(UiWqPzV|t2KhOE^=YP+6cD(ZA_e&z=_sVa5*LttdTC3u02S5-nz@BQ_ zL3C2I@nJm_6L8SciBs$c){JhMDrR#TC;PVGXRKtkEn4%7dagv^6=s?71DCgCyOqoUM>DsBm8kG|N-#EMCwNn;t<~zC9)fj2*v6=}uR6)qI9F~c46I$N^VQZ-UaZZL1X-B+WA27;pmh#TWg%$s{DiEdCXylp2+9HhgAo#}kUfEtkHrAzT ze{*GNIpDi$WgyLx?$_6psRmy9r824SI+!o<&CHvLsMRB00veb0;z_F8nIjc~TbP6d zvrKKnCxCqZif@fD*#ro?O1g;i)YqCfcHe&t&b*PTRx73GdJz2$mHyNR6+kl)uY@_5 zM4pDb#elGPmUIw_X9fa+<>l2~mjD&wa8olx+C#9JUN;aK+SXc>JX4fdP>|8k&@|Ip zOP(MkP4wCNX&tdO@Dgxi;ez)lOlGA~57#GXnck_`BeMn4E1a~_bz|J%bO9JjbxC(| z+$$c;wV91xhTBwgqf(HM3;r%0ELjrEQB%E}OOe<$4^%GYIeDxmr>9q}XysCzf5T>Dv)!X-(ZLE9y| z_B1Z3!Qg8|UhOUWk?}MZF8<*_@w^G=WGg5BsRy+|`jb7k+dP7Y?u`%c&$>+Midq5U z#KIa5gfOCJrI9K2HdUbQP+om0jFAsNy9etS6pGPVP!xG}K%Ov8zDuc@vn1=r`?V6)e7tK;EKg<0E@`FF3Ib+?0@FKN+t2gvts zJW{c&%&4l?$|maK1Y0+M(&i&KvGkqC(oTQ0+bNY%y|khf^nKRQ?n?T>?4ZPwxo%z5 zlQ*e6-|T3tE54c-T9~yzz9oCjO3&$YbV>I}sgaMCjM^|5fSaQ1XWc&-+m zwsn!Wuo_G@XoJQh*7RWFtY1Vdc{BhI@uk0yDtn+T!8S@({rp5crU(+CmjiV6SY`^V zGN{1pN6V#}grB{}DTKV(I~XL)*oqw{=ruWqjr56V($8@}h6C7VAqOt2!Qw;+?7-jOl?0 zr#SI6Wo;dxbqQ;r9QOr1!&cnaM<{_wLz`;=aEtj{iWP4#@UKBTO<-Q!$#Ex)6nDz?XHR?9ccFspmhF|PpO zzxzlh3pDD~8fqofiqP(7e7FG_ip?;=ua~m&Re~H%l^BKfF*+t-<19bnu`DI`&^2vq zVbc^NAHHO;V)f{3fna2#G;V-pg+=Ln^!IDr?e*7IB4@rH?7eY7gVQd#iC9@Sj>!`S zT=-Id(03^}#<4*J;}!FsBr=7&g$ACUhf;xNEFc^$BsM}A;`@qMkQ)v|r#JYxsWuK! z`=vooX>!`Cm-9&%M_&_M&5+tSdd;z*Od;}9D!c5On9OpK!R4a92btsIND;CQ-`J|G zGSl*hT}h+?T?7n*x2BO~psrQFvT|oU_Sz=(sK;Jn%rXq0pVs(&lssJ7Jmak2`6#FZ zc`f9+*<3dY&?Ug%gGx{Vul$M(a9I+{IveD2q@*toYHGr_@g~sjik9P-HD=@!vaJL5r>OB`F$ z?B4REbD_QC#DX6jX7BB5_T21YP!N-y>0Q&i8q|@|Ook>@MMYHPs?-1ZbxS`lR$rPW zHYr<@DY8RPR2c7UTFO^b4ztik1U<`obt$yKiYA{#E@0@1bwWa7{A>PRsUVyh7iF5w+&R7FgH+5M-jZi2rsr(S6}pCe6WpOTw& zUt;;TrV@>aaua!;Gt|Xw^&7IvTRH!jJhjmlyk6S9p%^q9Y~u_LU|AOma4SA!w>4kf zvzeP{n+g!!2~c%*4c2$@Q>=5tlrX&~CgaT7xLMbjo3C%VwGEshW>}X+Q;W-H1+*SW zU{Eb*D+fGWPTAU87LStmlf0r zEGNSI&a-*;7B%HOz^H}ua1GFF!u$h!tYE0tV#T~oHqSmCz@R_U8TszTzn$=(UQo?b zou~TglhL5Y6DPm9XcB#($kte1IyO#)gUHbVs(ijRQGmkJ(K^;w=ZoI}b8*<#*i7ho zyX5-WLmo=K&hxW(90X~JPl7@Eu(vDKAi0PF@PS-n!BiI*2?m+MsO3uPHqF7M_COM6>MK~+17!uo&67j{J5%J6W>?>QL^-ewM z-m?PauJ)KdJI*C`2u5JUMS{O3`gy!uw$K~9Hw$t3K*vv|ZW?;*yYF^+&FFv_nlh|7 zhNiA254mU#;VmIZ#|1DxDpfICVN&C19L?T$ zL!BmnCQ~P-qQT-)r^+JzEYpwau%bICi6@iK{R@T%!$6FpL*CAV2vBUDF#?z=Vibr` zn9Ur1wFFj}aU60sQFn85b8tJ0$iFf$_{r4dtf?t0`S$Ba|Kd;Y5qYHyah-PdYzwy_nO6Ap*fQDG@f73H!k*&g zA-4eK`-IP8Tr^VQbQi)~)$|m#E=3^Jq@3?AqSP)_R@Z+L4N1n?wh0FUn{OxMHbZhc zQSNEZcyehQ1Do$NPtoq(Mdf^MJMr4 zIxfHdW|30%n}RiepKpo9D`QI4$*9Rb`@$9fEJPD2tI)yKx zbnqF$rIe(SM0S}n?S;B^#5)b03{xzPVw3B^7-IvIG1O`tUrKUpQp%G|dp1#&K=H7F zX8Ir!u5}GZ7mG36}EKg@>^JVz+C4G)Iar}g2mjN5Yb%YCt5c)DJ9dc8Kp;x2z zs%KI$)jt$$F9hBsy3LDbtj(P!o^P3@YZ!swbNd!3jl*!OXMdw!lYknfy~^t0?`yiww6sDzRTbss zHPK^3Lz8Fd+uU4SPHA1dqE5aZ)vxk-m0!(o~7I#tE4f=M{~`DQIF$&pL|0t{SIDYinpXn-mv^UcYjO zDunuaYzW<%E0F8)d9{+4$a8(|<~JU%wR2r1`pxHDT&o#0I6GVMmT0Rnl!=`P0cD^X{Rdl`*%;17Dl&*LLR?TZL>XlYDoMdgMU0X>k%IQV=Q7HhKZr`34|+qdtc-&+ zvH2_M%gF%@Eq;hKX6E|rEZ>WTgWZ=#Ve7_I28@Xfom;&OaCrGUk@jm!BD}(ChMD|A zJ>oi2F&-&TvW8=TU}TZA$)1E^?1GT~txP`h2bo`}TbVt@dRWgjy#jFAcEVxLD;?)* zJCAJ}iAJT`9ixVNmW z6;XLf@}A$)6Z1*SsAn#ZQt`mJt8%FhN$Tu8%%6+SJ7_!~@AJBEs%jVY(SsOmyR+IX zO%Ke@2!M&`sJ`q_7wx@SrCiM+{{GSG>M`ab7Z*(LSq@e|)4oVs+5dV8ZwFa2NxByJ zbAWK5*SrBWq}5v1UQfx50pg`SwpxhIU*%{Tx9>Fgt6lXTUdrTrQj(!RU^3}{&9rc^-54gO!EU;uGd+Sfjstlv zIq9Y|7{yd3Ijw0XgYq~60s?MB#Ko_NkByD7Vm2@s{5|oFjd_h|*6ZQ?=D2XyQM+iN zQ6m}CyAR&dq(_U&O}R8w&rJDO&u%m?qb$fv!ysRAk|kgKX*Q@qDOfoQ_xbhASyrREKZFd_{=3-mhPs` z;;&cS;X${4eb2rZE$YO2^qf8OE3T}zQCTF-NBBWI5TWl23?v{GI?X^TPrg-t?rc7N zItoQoo5{>T56proRS`yCTYYvz`E#93L%8Oo9`eWT*sjsi|BWI5wsF$0) zy~CLrdEYcIEf@00=TmF~wY9Zxl7y~@%Yyk+&CC}x#MT)ZY+-Z%d2!w0#Q95KICW#p z@1rk>^eG$$-rc+?z#u|hzQ zMicnn&F>Nj`R6GG`(WdGA15`5FVi_>(E4k44XW?t?iw7Y$fZzE^r|n;rgFSXyOKmmO3dPQr+10&y{&Qj3U|^uYx~WX+OqR7`M2) zg;nN8eiS5+6pEf^TzNGAc9vaF0HKpvhkJntuw;oe?ifjsc{j3ewW76^{(4q=OTYLX zky`gU&ejnJY|Pw<47EnESMhcOf~@C8g#rNlik@Bc#&6WnM7ljUa^M#Lsp!H!-16;I zCHE?Us2B*W4z~&A&2=groxhy-O)(LRV}1Afp|o}T!N(7L_twRjb%WHfU;xv+8}*SQ zVK*%-kREq@yUqVxc5TgYli6p1huch6! zIk6SZqU{0qTd@LHuX?sEk%wbF{OWCxv@wQpo^5haO7B*m79r0zBC8!mAHZ=F+{t;|w4IiqWU#YW4l$U}0|BG+wgH`@_= zPc8)l%d2L7$n%}nY(>Ie7GCchG5Da%Fain_0-AqYFX6p41O7ocZ|4HFQ*K&nxcaF- zG}*R*kQU{atS~(G8$(1hbbGbobyfA%S!aHkwwzWQU?k{qh$ZSWRC@BB(-gT=+D132PP(vz z|86a<*SE!EgYWvbp9@=$3ffG)E2Ji}*oF7(A`c|me`A;A&L zR;UAZasdxrKlEeHuy>yoB;2TdIs%}@Sm}u0n7iQ|RY^OPY=B$av*T5rz-Q=Zn}OZF z_o6~QHFhm(s1^a1ud)N)D>MR}R09~2`)ztsoMb<)s4@K5Cf72uh_j7=4 z((#x){H=4o%A23<T%jIH~OK>a%GJ&$4wzk{49|E%R`~$I4B8B?!fPvb?3jbN%_0}Hzu2J-^NRyR1|yF z`F;ZoH2dL04A^d2l&`)3&R>$lA$qr>+xu~KG7d}r%+iP>zUH_QpzjSToc-VJxVWkC z*!(Q;>HGdUJ19}pdwsP9-;blL@3HOf5)m$SAQ0st4eAH}?6Ndo%5k*2II^Br8a zX|W(P_Qc+6HvZo0`|ykQAQv^mS1wv-Lzh~IwKe*S`9%zu{&dZQY~Q?+;B>$l~B=)pP;q z8El(mcg}|_C{Xo0bTKiI+)J(8V;*{}>0M7UMjwEQ$3-22Vfy(7yBzS8rt?de1AxuSwi*C*v#5?Cm3zT6veRy$4(TngRC3Z4T!{wvA2k&#B?weCbDK$N8%BIVzGw zzr7PG<|7``r>*gjg&hgkMin~-VsG20iw%D6mYwkS`oQZR%AvPb-*xr~4!iP%1ZiNO zwRjj@AV!5FU>?Ej@n%_?D!mup3?;$!y-^^II+iY5gROou7%||az$0vLxED~Q@R+4uE{MBBw6F>Wbrt&nwDh)_bnLD zsLYB)%0KV}GRyweRSx|z!cby)6EZS3`6NRZWpEs0&T)Kn-Gw-tF%%9x4Nys6_hE9+YwqO1a1X zH()`55fm6fff0X20P*j==f5-;0wX9ef&wG{8Zd$aCVmel zC`t;7l7gb7_{YHn1x8R{1O-O?dx801{eB9V_#4ePDdirNat}(m#~*%j;LnE3a>1O-x1AO!_d{QHoC0wX9ef&wG{>d@iudH)nJ@i)K(MM*(XQc#o>e+x`d zU<3t5P+-Jg8%9vT#NP)dD3F2zDJYQQCk+aWpuh+UjQD$kamsW4_v~*9nD_%QL4gz$ zNb%Q(6ciXife{oKL4gs!1rq;j|F7Eo^0(08AKj<)q@eVq_*d^qL4gqz7(sy%6wvU$ zLBl_KE+}B)9{>{+NI`)V{}H4h4M3~9I_M@2w#DUoaE%7@>h67o5Ef7^%;m=14dIv2T`qx@~wvI=3CsZMCrmTscb9zL6T%Up7);Z)84x=rW zn2l$w5LYk@om)N__`__kzUt_1s_wCx#&E7k=t}(y*x1}+h2#YVIBmL7%R}(cM|VgR z*6xj_N3JGJ7M-e;xg?BRqF!Avm@3M600X5JG&hKExrN`du(onl^6@-!<)WRkFS&{V zRcYm!vvuAI=aEXQ&(cyeA&G1u^+&nC%6FbnO-kYt-Yat)s&`Jl53*T3pQb@bO?}+3 zB~aO0XNp;mjjT>pd0ehrmi$9VI8{@DUs5{RH0l-X=P{p932s zAq;nG-(Va>ugh((jYt174T*VhnfJ*KKEfd6iME(buSINDFa7_qqC@ zD>hKQ(29RN^2n@YW?C+*pt$St%-ZC}ht%8VNisY`J(6e9{T4gP9q6?Tf4qcliYPe%2F?AdO$mULkQKfrbT zs$-7zgsKuiKfe#iKpR}li-EGP5jd4%YL_)ns6rpNK6=sT%djSWJ(2g_I}7n$n&W(e z*~>;=!k4x&8zzEQ#P`ihU)lZfbNa&%w+Hhd=ILgjUN?2@eqU0znw#zO@bg~ySevc2 zk4EQV1@OUA{lrrG4QZOA*Y~u0>Czre=f27vRMD*gRh9bhX0AH((>drBIqzn(&QB+Y z33=LoS1yonH*8;42xD6iU7z+_hp|g&%c@0(Df4{U5D}C!)L`0<7!6}I{P`?p`}59$ z@d$L0JLrVU##i-#e|72ihq+r_M}|j((nNj|Tkw6--L-=<;_VYEz8IXtadN`x6RK5d z#Q1iW?Px;F+&-Tzt?GIvg!_cbFiQfP*XVIVl^A^IgzC}jxnt?OBp!l+KmA=mj--FVXs7S4_GlIC|jobZIa*Axg zH^jw`)X$;$+l}>#Kl21-2k8i!!esBI(yr{sA2`>xpQ7t6o!ETuFWG)V6~|2nIFFZa z)T3+n-=18}dHBZV+hS$N(CWdx8(HuaHCL6M>wcye6T5gTHTbF54)so`&XP}OGI->K zYTccXLxNeEEkf5_PN)PG39m?<+9y=sdyCAz&rv;9*e5z?J{F8=*KaUW=&pDH zQz=V==#&hX)rn(C9heB?${<`ni(Mv{-5X^T3LZvMqcs_EXW-Ntd~nwMB%n@<1|#t4 z%l`$gC_n!^phBi<`(t8?23R|Ro$j*KA|eTopXG3*Yo#> z4~PpSA(G>pqpK%W7qJ3R9-m|LqiZKrNg9L-Qg_$O6RKUdp|ySe($%i{&7&mAu$(=8 z0Nn{yVSk$KppC)_)d%eL6RLL~-AHfpph`sYZ}MI|p(4E}*dF+oef@5z0aeTy{O@k! z&bO)(40HD7vJ6OFbQeyjR!lpBwMd@;s_Rd3evM2J!L`s9P3YpJkLn>OK=6bL zVaBx2eaHdr?hhoNp|T|CvD7N;_!{oVQ96lyCDC0WyCFr1M+Xp8?JIlYWxQMt~=WE`$P4G1R{Jt&w-$OBz5%WC~ADyj^Inu zW@#Nb6y!R8LN(%`Te_r#MRUKxZr^KWhE6CDR7r3pYp4cf;e?9k=oP8$7WUw2)Y00! z?@_Gu3Dx207U;@q7krRx~(-Xb|#ylLk5Zh&twEG}NH_qm5}hp^JNpcYf}DZ{2rsJHv)8)mTh> zFf_DLoRcMO(htU)q`HBgirV--!=KJ(sK9GA6$WAlDT6aI?kz#?xNrB# z20&*%`%2Fapg|h%%G*BHwy1bNOVPNk8B|+O2vbUam2Q;zhzS&?(3)f_I*MUcL#Sx= z?U!v^w5}Xibg|HRZ=H8ZkW9pdMhmkmXDrw%+6BGW<(VHxAE}V7 zS>}=CxU2ZH<{OaP?ZKy#{P?tGtyLgLwz(EX=z2ZKSato=M$~oF1pDw;s1M2aUcP+w zFpY!uNCkUKv zmm5?+#izTo*?}brvb1cnPEOAr$*2FoB}7gjYoiqe8^;4heE~aK(p`S}PG+97<{DwC z90u!pI-LUsEN8Lhn>RveHFkxURjw>76MQ_yz6c=Ya0W8*g7iR>!A;#!b-AfU0c8o>6cTtem**?sIZ&a)NHIuq@-OU*m z&`_XO{>tRutHO!Z1G!R%bGZdh{()Q56Sfvso%|uolaLs`#Cx&S*S9`gzj+-z9zz=7 zzEqVEs(KD^fw0!jp2FT-fooFQ6W81u!sAyzPCF@eBG6Ts*dNdL(yp4X^cG6wJhrcT znL0GaM9)*mw86A*qm;@OF3+ZZ!FJ6Yq)@COCMTGdw#Mr3gQSt&4<4v4fE&#y76+qV zpd(9Pwv2atIw+B-W}!1<2*=8gZZQe9`V@LO_pLiA8aK`CyOJ*%&#XI?F#C_gY)bh2 zFBv}5#X;Q?=$uq;9KQj$9A~(Rk4#?MjA+#GxOkm~{dq>QbW1V$U5H zzRb|;q^HmpWs(fU4d>9I=d8Bnvs99t7pOk;?0aDqx;trh*kIhdp-w_3r77FG%yME* z!>}sF<6~jOHZAjH+Q(ZCP_gZLF@FuY)h`)bx}A$Ek94 zfE2(8eySwCNAptf#o%G=yR^7wmQ_$`j0!6_JtDT5z4vBad}qtkkw#;jNwykS|Di#= zeB)>(TJyT)np}*R3@}Hog7Ms}p4!?T^zx2X+N}@L!DsuoXirt>Y?p>~=olg|jG{RK zru>Rk)OexsHp5ai1}BAh@Gw>?)`8d+`3C5l_GMp-bMZCUF565~=2oq_nkhex2_n+9 z7}cVb)Ha?QjZte{L5eBGIvq(EMQnzY*Q4R*G=GAngad(W;N8qdFh~_YKu2Osgr;b{S6W6BhOB0cm?3_|t zsuL;~w@@r6X!x$*-1}ywObwPJo@So<>g`<)xNCV&Hpf^>hf8sL=@%_V={p5Z+mT$x z`CSZ}n>zqqTn#+|kBQu)mF@-4+SGfRr%5dF66`k5$eerY{vwmz<%~6I!r@`UXO)@ib zX$p+j*2xO|BAg4NM`>0&yg&dmM;DB;?wbnfU$wRqs$s4#7%1s48p%z5I{LNWWX-Vm z)-Kp2rV=%R3_~mEOXkD*@^ds3l1``|yOFbF16|Ol<{JdF1T2m%2Jy+?53mjQNdt94&ToGo}`XcmR{#A@KB@V0Op5`n5u58CnbnIPKkh_mh2TcpRs|m0WqX!*z9VLSneZc8a17rRqyNcO>>I|+ zfG}Hue*erh9wiOuz^I%}-cVbY5$B;Q>E#KoA|{YDHhf9%Cy}II25kG&)@8})+?bF- z!U7D*Tt+@>ZFpV`F7{EuA>o$!`ekmWsNQXqX$uger(eLF_x>r&R7VPW<`}_lv<#Z1 z|C%75;1xI^iMKh`I`8p0R)YIxAB@w5U6xZAj{*dn>Q0PB4|(kQ6m<^h>RS)2u-E29 zLg@kggo;*BOF(|2H-sN7zL%-1hbz|}-c75At-tE2tc;Q5P5NjT#-FM( zi9L^<&*x@#3pCq$K84H5T7)s>BT1}m-;b;^Pp=0t$SddjI zd$7}qGwC2+7Vk(XP`8ziQvi18=ihwIF3Vx^CAt_XRG(Uzr6hwIEmi11${I|d?hIt# zR;5>+M{u(o8KVsf0tE@n3G*{jtH83srTXC$DxBz6+{liB7<1YUSNX4oR@3mw*WQue z_3m5F`u&onWfHZ}bx!q}+mzY+t5eP@5=~>4y7eAsl`TMs78StftSl^_90o8+ePIjK4SRNgihc+7l3c7~2*@6cp?P_INg*>!}cHpf!Rx)lSIuYXVuTE1!3`}vRaqqZ;}opR4DZ5NLH6mb-~=#EHFCM%5~C=yznJ#(meq6S$6t(< zbgXaBu1v;}-df*%sBX67LN0 zr_%EqQVMWFo0ESt%r~zYWk)4)@W5K$usPaV>a$Avj&fB;F|*{wytP49$APFm0(2gm z5E$S(Sb{=)T^|2==W!BbAkrraKjf{MDm1}{i+Io!vOMpXm{8FoVeLQO_9ev=FsJ-} z2zOCMAdGW}Rmtsi)N(U}bUR*94dP_vS-5mZP%SSBWh6Y3{wnq{s_mPU(!{cHqFvEe zFfW}=wHd%(BcaW6iUo#y_kFF60VpCf;ygDs?BTuAUF7a*l#-==ggZ10o>93*yiqs} z;cj8KPl#*2(ZUgDuwmvY7=9#pyLEY1+`9O+^=f^3_hPq4uEq39-=&JO`qAQ&zy?26 z6^^|R$CacT1}ez;wLWW^!{;}99p+WT>w_@`ppOmq9^!qoVR+Hq*BSs0c-=^r5if1z zXg-)9kF~>w#2l&}fgdfLYZwLGdV9wUe?rAR-~-sPa!zBgF0xpuNgHsl(euDKrCst0 za32sGo&-7Fc&#f0gXXz#YYqXF3(UXPUw-ol?s(wR2uu%7LrmVWdt~o?iW*l_Rat#+ zK166xEl)H0?N2Xl^S&@a)Z5a+yHSKax~K{)dbsrUg0#kkL8J((wv(}FsJ%54$<(JG zC*pma#byN487mm|is1@17}NEvJl`?b_bFOV)+Pv8FIz&}40>JWH-A?MPO4k7sELMgRv2?95F)jVcH>8nIH zmBo|l`pUW(v4_pWn-A-TcWIwK9viP7XI|IU)N_ZjK^;!0!d0)yh{g$aadB6Zr77#% z9SBH4E30^*L9QN8!Nm6&vu-~c(GFVON6%}NTs}ozT^%wtovI-?;DR##%U@o4F8!(rM>zBkve&aIk>bJB{%T-4w(d-!6!ZA-Y#aM$8uOJmBP zbuonW?L>ar=X)1lK*t@a&lbn|#Az_PZ8Y|aQ88)+E;8%|dv@Osbq6)%mBK#=S?jW4 zB0A$-EIYGhM>oE!UjF*-!e(iSd|hvS$Jr`Oqs|YOv~jO`%ZZ68E%ABRCFGM4zS*wo?N*Zgx092ixexD$k~&; z(s_@Lzr75tWez16L1WEq1c=GVz#GFQ=8oKSm|G{dO9)urAI1# z$Gz34tv2AES?PJU)*^3v{VEGnBuLn-Z4jw*)klVQSM0}zoJn~S%>|r!L}cI{?)DgE zuJ^QS6GvJEH-oZIvpqARHKz`~*`E1~X-e*lPoBQx2NpAAadgEj(uy3r9m+ym)Sm@H zOUxl03j$eiqOsM;qOLVd$D~Ozi0EL5O|@XYqzbISW-nXQ;O*rIpgG#Z2HJ)i?>91t zn^8~$^K)m-&jHU`m_ND6d*%w{dOS6N-Zqq*U}*cYo~6x}8{*ZKO+U;tz2!75bJeWPWDUo~gU3DdCu43eEo#mMjs`2z-OaOzymyfAU`&@Rdfk9Debaq5r zi4V7kMY4$0WeXYMPf4YknMJiGVM;P4lL#8v)#BBm!d#KS%2g#V1+R|{F$(8txo*7o z(6q~$cONb6lJ2c|)8A;XR&~$N7-@t6ZHM^S>t}eIid5Du7-#1*-Q#X#`T+US70gNm zdNf;bx1kR17*{qLqMCe^3|(1(Yp8x>`h2|v>0y*g+-_qo^(IgWHk zf`v%~%@@Y2&3% zT+=eDCTh&w$keta8TNQImD}#4@RI7qz ze25A#?-fNPv>KrUyzp>6!#I29ER+d`+l949yiosEigkXo3t8O4$h$DtjtO39JE1z= zD0xCfJyYDrv+@9(O;)jl&UKkRCs;{y)ICZcHX3^C9AnGxP*F7~(f10_Dh^y~%t-md zvX^;`RpEXkyU7ApQE*`&V@};x6hzl8U-8M+R^G-YDIQRP-X5Fc;wDKtj zv6CrIw4f|3A|B0Cu7rl8w6q@dtiBHi8d2Lnymvi>nvXvEaC#>S;v8OKNXU~*jPY^% zt8Gh-cRI|U2^dG9VD@#@_91PCxkgTv1dsNfIFVIp7Zh0lWAPvcdK!7&A@_ixec4L2 zwKmhnB@&swtf+4p*A8qqF8JEUCMM%-(pGnezgyTSj@2y5mK`M%G2U3j{XU#7nPV8*G}OiJ(&Y_en?yfFPZRx?&E zvcMoBeQr00$X^1R-``b@PH%c&ozwMPj>J_xoP?*=>x&34>Cg9}&64mnR$!S7eV#h` zE;1}iyt3*S{MU2Gaiv2FF}HCgm-7$z<3di4vcexV7u;eXuFzI2{`x>+Gv;i^*}53=yrZd&0Zgk1#Z}gQcYrTgEX}Z&wVXlAF~{GGJ3mmBp#KtY?bfNp9roRYw|$nc zs?)K#7iUOh zn}%R$q|Dh&_Xgp%6IyFDDJN84dNKVgXbqt%N23^%+=CMJ&^~uXdrk?j*KM+$gISJ^ z-rxW>VD5(ft}l>#XWwwq^xEQda^q^ZQiV`n^j5+X@^`Ag$|jNxKcTvQxOuQscS1EN zY4(2{o6^Or;uDsma#|z_z1t4kf`3a$n6gSL4!%rIf$|V7$h=|UJvreSyW(@qw2*KV zvrTt+k*pM6Nf+EHeL1&%bAaqX(w#k_LZZ16e$DZ`IcEK%{LX*%#{+r)zNFV$#1W$d zNe^jE)=0FqLJv$mY!k`5HAk6WTImki$U=%?36$;NEH|{f6t7Cyq9YZdxcgPel8Ww6 zxPdMAA0&)Z&d@HSp>4n5clX~`9sCFTKkc0Fl$%gJuYSIRwu*CT ztIybbPo=mXTt)i|mR?8!CMT3i?Pvh(vSn-0o3uq%B<)=VYj z(oNLw`q-93!K$%=zpmgPYUwjxqKki=+bH%8#Cwoah8qYN{L6ZrJ7)V<>1d$h!u=m- zv+Vu&@9RAaHcMz9eBUU*V}#i?1zP=r3C*0!qBivWg3^)vtdoTDcM62v*f)qgVo6-^ zygzUo84iEZcazn>b~L7~Q-)c1$Z7{39m@E~#s|)&WBR12(dqEEiTg5A$(CS1)~}y7 zC)N>mObEWQva}epPSwjcoikN2E9?O?UTvVXNzDYGAkPo%Ukr!yD{64I0m>d=u1F|JtswnW4u!hyK7VHJZu zS`LGTB_}DOaiMb27SJc`DHoOuozscZ}gSdP$kPnorMj#f^{X{E9{qm66^OnN=>?O zrwv|#`Mxc@UKnZ2kyW(VpVU5(v4i{}<~yJ#CgQDWTS%w2e4_xmD9aTk2^j7eh(9=3 zth@Kg;vLtAY z9zZ^H{5&MiuvI5>JNjMhG$<5lAljF?z-9^Sp+U$i6il1UPwE(A6Y=-wiP*MiCl8++ znZ}tbC_#nR0*4e4&lI;l*1qAwT!EzI&>@#jASn^O4?fPVy4`2H(A8e zaPK=}9#i2N5fj6VQw4t;>zSOL6kBSnP4<$uPuLZ={V2a-jC%v%J=8d|8(d88+X?h4 zcHZI^>nI=ZD3^?0pPwB1*th4b=fnY3Xm$mZ0=npvd-MQTviLKiSj73;A?US5PuxO~Ex*zp`FWxxE>NWT z&jw_#`8+t@X(O1LL>=F*?@bT6V}+&C!f3IlDNbO-ynuqtQaEqFYXtt43%en0XHqcqB{dUAmJY>ViVQ zl!2*Gx6JU^%JgvoOveXojMg#C5=p@srNAB7j5AGgg{t5&F?zCy?3cEgSb}k!{`LSF z_dIhcaK!AoMNP^!zeS%=NivT$U)$0<0&e~SeJ<&Oan-*$YhP(AH`6l*HzlwfF($N0 zIpgU+ehbEubj^` zN0#K60t7+omu*FKK+hZ8OfcROc!|sM)sKRe0saSj?-|w9y0#0mEK3Cu1*rm20qLL= zsgflM2na~;L_|u6bdVq=D!nVcBhtI{7Kso70wO}F5rl*$)r1lQgmC5>1j~`|v(=g|gXU^v?*L^+L&3p0vn2YR5^P6j1hBW4KO*ZCE&8z0~YL8!< z=;5?>sK&(x++JB)9!Yj4IhF>AP@MOeX>h>;!w*)IY_ps7i!mw7IU1qH!h~2p z{fM<2ukG?yO`l!Mh^a6OkJrVn+a=~$n}t4j8sBjBpcVW?-Y$-VcEO2(``+vBe0*^i zOTz`#xAT;k#8A4&34xljn~3#5yrweGzGi?Gc2c6tqBvSo+1yPWH#-Q5F#)smkvD2o z6L5EY%cgL@edK=ol|vxKGQ#00Ek1yW;G)zW#7L};_Rb9UErO?_aq3O>?j~w}E<2*9 zCBA%2DAVSCquuDVa5qKaPR~`*av@s6-2EkyezQ?z-DG~+CcTVIm zNMv0(r{%+b^J<1~^a9kj{(Yg_;%A25I;;K&`9a2T!hP4h>-xHib6c?4th%F5p7Sha|#yZdb9j86E@VVSD zsY!DR!Z6pk2Ej;S>b}X&qfc5(dsSpv>qcss#?lWeOL!-*7%{$s>AVJ^@{}o&G}eCAIpgzdSjFUE@zgZ5 z693~YwD>{X=ViWTZNH7}uMt;M%wFk=$Gmn6>ER2M-2W}$;uo3S6v6z> zXaKmX$AxtY#~vYe;%(1^djemVZu1*jE$_u#=y$vIIW^GV?c`{|W{($p!w`f$&EuTh zr7mMi!b>x5m-|mVMvU1O-|YxD@5^N09n}^RP=RlbAd~X?CGMO!ec!qOk1{kM$7wMt`g#RqB`g*@Z4PFLXl!|vQ!bG+4q}xbwqJfJ4nvEcAa%71 zf4PrCJ*TRj66Pt&=j%8~4|KcIVjq5=#F*T$E&ZE7$& zb3*Rsmat~!##PO{WG15oVb<3pKTQmn3WHpO#z8fXozVcl+eV6#ILmmh=L4@05fbjB z$1-K^#6~iMJ6aBJGl*sz8rEj2KG(1-{?-t~(vZBE%38D}Xl_SS zhUat2VcBAx$P&EJQaUVIxb(ADwxId7a%@qdWSC+17lXvqcf}WR)Irt`q<%+IjT!Ci zV3|q(cXfdJp^>gGdwIE2Ww^S=MUhoRzK0NV-FWI@{`!he!6DsmNS--8dg^WBPIwfO zvuc@kl}Ib7a*-9k>67y-JgrBW`9-Ao#(DuG>p)?rnwN`6z1Q8i(-kw32&Q_bsP+>i zIrI;f9=`AGLRfz6hJC25oQdHn?Px~bt|^T2nG&ce@vHMqX6>^zJ-#por0bhfsxx5T z94J4nhiT%g0Oi+Y(Og-UP<b^1+;KSOkz==i;uRHw#c zCZhJ|2B%gix?&$;?v5AwPljPW7mv~^Lu<0N}0{CQv_kf*q!EK$f;1a8<#6ab^YkmUt zBi{0?HZt1a*Xf6J4$~%Tk9|xv4C3PQl1E>httdF(_uQ(i%zJ`1b7A$J0vs8w(FL{|RC#_fHFH@5L68adj@@4Xi9 z$l<=sZSVqM8qvz{wSKv|&`_NJ^Y>iaiBNy7cSU%Mtcxf=;|G-{iLScxGVgmx#*|YL za0jy(w_}c@rTQ-8DQfWx<*MZt0RPFzFwejxZr9Q=<0ox830H?lHkGp7AZV5p%7cx9SR=vrpmUzh4!24wWrAq14m* zBN*X?I<;)!^C|xx2|G=JbSVbystowK3B*n>W_tn^0?CGDTr!fya;jC6|K=vd5)*<< zliRk0TNSvZ zVn9y+?iuAjb9}6NK%L@M;LiiUsYAN&spZLk`?)N<2Sn1?x;r?VO0nOS-evi-?GJrE z2ovxr#Qf_3F(5PWm_;0@d$-b}NIf*Q-BSl)c8Ki(mfi6WKXy5QY7zO=OCXaSjo0{{ z&-{rN^M5;+S>*y?+Wrc|dk0OU2Z+Ddu%(A|6L>uMK%}|)Bk=YsP1g&5>L4Z&fI(7? zs=xnWLd}npKoofRA)T>N{1WIqV*b1P5~bPykj|t*Z~0l2Q1ueap8Q|Ipr~`e;3DL@ zdDsDf{4COsh&Ciiq!z&iO-MXHqc*70K7MD((pKm^mEh8q2NuT!hsBwDEMM+a%T1_D zCMbOrc!~dnkfQ>(^<_33t=3pKOcR4k4R+t?tU(J#QWd<|UQ{XTTb5;JPV<@x4*4i8 zFR5-_5~j*Im)~$&?@8cGC6^BIYsB3(=X-6=!*ho(|5!y_1$}L80w;iZ-{z=JM|$n^ z1bqgbcjF(~L4{f9#1+e6r}Pl`%xsO$+NnYBRe?`GpYENU4h>z~`q*waWn(_2x2RlI zD>^8xxu<&@!!1<%MCA@9K%P|pE}=_V!twchn97ANlhO!}Qb|~7*{;Y)a+Zf~R%wZ< zncpTbg_(|2NsOC9m*bRh7wn`ZC$}QTK8@zLu$96aE2fw%zb|Gi-!fd#lGs@mm7kRt z5no@g0vSQfmdwz<#V#dkQoKmN{xmk@hrw>C>z#u>3uwB1CX91O$;HyFrRl{&r=}Ng zq8I5uv+ux$=*7mBf6UL0EoMk`a`Y}$iBkd8Aav% zLfxx|IhSCtOQ#>-xNZAHl0S8)c7}FlX8#6SL{l(aS^H^}UsE$FsJ2FPZE?&J3czTd zk5zWIi_z7WYvweO&QkKzkXQLsS7&>oD?q6>A z<3}LZ^x8rQGv_D{hCS}%Op9g})2be5(*Y3yZKgqXwvims^RsKy)7;9=pU)Y!*XT+= zA=YH^5d>M(Id}yKXPX$36kp|B3p3SeZ4TAd($o@V2sa$H5vjUrl&7y=J-Q@xmvl%s z$w2l7)%Bnwz1J$L~jrdRUiMZ43gNv0jARc|qk zdQyvzr`RV+1qhtv{uOkNIFt`Yd&Zw(p1LZz*99-7IAKM(*m8A)7BP&Z?XDKscQfU z38z72Wye3xP-gx;>`}RF4i8@Y?pom;PtowX#cl1P@~ETi+v+o&Rm)U{n)#uz-zx50 z5jvaeL)D{*5>ay!ndj0;d>uGQB=e}X_x|!-vc*^me+p-zwWJlcsD5;fFT)bfyYdaU zsRSEhR`X-*Qi!20xE<1+*gQzHZQZ|{!$vweVmaB4_LyS~ba|TcF+Q+zx?uwY63K1Y z%?#SA3mDz&mWyo$MZHTCnX*n?gvoadk)^uqg9cRVSr(J*^a<}a$;KiIBeC=&3p;+g z&dH903fh}b*iU%$&=YFv;Tj74ym~Pes~SuhB5~e=#8O>`Gr*z=mE|(1R)4$KWy@|7 zV-w=kf+V0aGdEz=pebZ5}!Y(RTto)AaEps$91rX6iHjG*#UF)Tj;hn> z`jnHR-^IxWx>lL8U>5VX3i8_a-Rpb{_euy;YbTK%Ktv5<|*^V)aUSG!wminwkzi zU(SRrR>Z?-`G6gg0&KhkP1c!{k`xi$xyP3iou4%Z7a<-~zG~G(X;xRuD48Y%Dp@za z;Hck(s<;eP<#S)}^$-Y2se5?^`}ow3Via{ST$<|0=rHl*>&bqRBK1uLtjwM-HI|VYuO3oTg}N3vzBw6IbblV$(eYMs}*Aak4)cM_0t<|H*dk0k3V^Klj`__65|Mx^jk6a>#TY%fBwG6T2MwH zQZ%t)pbIuXvoee0^V!!yB$3V>E+3GrrUtIJ50d#1?u)sf%Xqe2f^asW3Ub?D>>3~Y znZXO;Z<6y^xzgx|wK8Zt!hkT@O_6^#wRmMBeDj$XUm#|fRH~S(CW9n)=0M6x8 ze(ouDWSd z$6`yY)fQ{|BM%N_&xJ?>_flmYdiiH*&%Bou8p2~mZiGC-=_puSoSoAGeaekMDv@Ah z70Mt?s=n1U0x4Uf>4#r;TlHmy^46@OGdm0jGJnElMGE zJG^s-XoLvgav~4RLBdsTV0Vc0-_-C>Z)-b^SEZMATs+F1GkDgn8vim-(TGiB;AkKB zWFJ5bA-JiEM9Hp!%T6{b#G**TdtrX)Y~z^N+ZLEoO608Ev%p>kpJE$7Db4f9cRAmd z?R?dee!WaB22i0Bq=U37K`9JA{(`ysGYcFAZ4GBnaOWZ~ZY;fey5$Z(&heyXe~;?c z5nveFsU5Rvg&;RFC%h%?8orE$i#9#2k@xFnN%Uc*Pg+$?T98vOxHw-(NxXao@QqSf z;FhyZ;SHb@YNZ@5xfsQe#-BMilI>lpVfj$<)kU;Mb5?SbLQCh^5=60v-?>zOhgu8k zT$K+lH9j$4{WPnI{p80K9^%W@eT@&_=!PqNo@21qBL&Fuon{6x=gxk^aS68#?-5(( zjc8r}d+ALzs>2Fye$|Nt*DLr>CYE>j@G(*5Pk&93;#iqjdz^15)oog=+HhLEAZfKv zhEP6|D%v#?FKzQV`(i=yPL?!!N+a~s>Qa_oPLEX2Xvg63JI8}#N*9_HWkrXo6%3<8 zPxn<6s%H76aAma^WosqR6Y#tFKxOWigEXJ`$PAZoOf?OO-_OrP9!6$Fda_?JfeT4>AQbD?AzfGe zBy3g={s_dH1K{#;cz>++%Ln%+y+YOIElTKj+>oF<`y-#o2*mY!@LC zFMM+^{S>!-?t}+ENV0EbaZ-&_;b9F2v@otisp&L2r;?#e*Nbd?#U^VRn^dC3TGF4O zVuSdwTTGsB&JU5+GS_vp5aF0oxyCr_QCd>k7m!pwIr<>DQWyU0U8%{9E_EYVPmaxT zAeuNSaFDe)teY0Mg`oNa|;DCQ6Ypjp?ZM32~X^7)vYPV z-F6c%xL`eF$-iOSkiC$B6E;q9noZH4;o(}N6(?{(4L(rcyjn{hb)o!rtmOKW$LSUJ4edfY^TX57pRX;;ZWBr<}1E+Z4{*dXseKa+**ICtZS|Dcv|g zoh-5p9yGCw@BKbk+dJCrZ&li`Hg|_zw?V!$rudQI3}&N^MjKgIWsK3mjD8i{7 z)()N0bK_dlDD<>XO7l`zligT<--2`-!+~$~;=FT5y9SpdCs4aYpyOf-n}DBW3J(T31x7 zpiu2|o{xRW4-VkJ#zrQ7h`#FrU~Vw2CR+p2Pe#$?mKb}#Q|4UQEW$>JYf9(s$V zh}_0$bR&p5ZZCo^*N*yB$MIf$*Mjvf-8M(c&6aG;Z9X0Y*9$hZj5d6<&A1>*4mfY| zbz;J%dzEo5_1VjwMS)Vg9mn5Kz3%8Iua|VhxV~*UNN`Y=3>PV$Ecd zFrzb)?=%MUw`^-pfz(gVEH_1az)n1vx*%E^Sj_E#=Kj6@ckx~g=Asi&MSUB3Z%*wO z{R_Vt8~8AOLqDiTv8=@G3yMMFa#n0Y{yYc7s zdq`zN_3!AijNL2*d&OL|Fp1YKeLsr}u_0vr|2n%OM%1(TdbqlPn2%a7?n$vH_4@W0! z3Mf33}-j%Tw<>tNn5MV4hcQRf=@2L&+X)=G)y!5TVd}i9r z!!zYk=kS>Crs@7&CRxMpOw2(Ys5(%jWR)x%@gk0O09%nL7`Af&yH|6T)sSt^$TtCM za?kkJ?-do51ThPp9J{&{xEGoJAdRYk_!aO(r^P?F-KsBgdPD+6$YvX$J#=0OVi~6t zUDoahgqV&s-T0vtm0jBOeJ%~I$wlfB%a8PXJF1r4nk4wrhsA*G>eby>U+U#woq2vF z@4Z}*;gWqSrAdVO19B#;<#D!Lh6p@jE-=$7?rn&>Rt(H@zdz-rv%isv0ayVsn*%;Z zy-k>jvOr+ot9LFAcGw(aubXgY=~=j4MaftkUec+rdAF5k>vt|Km0fNx6jS$$qmP@d z>*g7Wr}5vo28Zh_B~`Icyj@syYKCQErEr(T<+QQlmus+VV(VWtPF7}TS9n-{wd{P( z4?IumQFO+~>P6?9(NP}UmRWkz&(1 z?gHO)&9%^`AfA&_>2H157FUvx70Tvm;2RxmXzpG!;G2 z&>H>tSxR)NdR${hcl^_ji`WPC5??_uvqcK0|ai$e#=+eKYq>CI2fZWajm+pTuY}< zrd%s#R4uGae!njk=GmAypDUoj*)73Lbpf;qU9=DBLVq?w7-=HTz8R@#|H=HOVcD-O z*O2dt0$rhYznRA*4&tHbRIraTXYMH=v0pIcOhA>?N8Gity3(ckN!3GSE%N21a_u(r z{N{$%hUQp@rk2L$&>Z2}96?Rn3_+)b*yN#fGZrd3=nJ^+Cr~AIL~-`xQOtM8ak5)_ z9(V|=_qXgubp`zj~Oe`jOeS8F56ThDAL(Ey}!KZe8 zUH+lMX`_2(XeTlzmEGoeYjfhQrhahfQgZ({^EXhL7S10P`uVVO%lL8l>Wk|EcY>`f zJ5~BG7+%m`mCur3m2^zQ)_Hc}A11i>s17{3POVAyQ@2_3c%3CmQ~QAQjlr+k;Uy%< z&Ck3=4lEg?FmmfsE2&!YPmI1g!#SswRroUW^EfrWrJQ?^1N!mTv>`1Jvw1&F#%JnI zj;<$vVox#65hl8f7EV_TO<7D^OzFss{k%DTz7C_z(zPrmeRrL^rnXgD^cX?_^>-?h zt;%2>xNTQtQHIss4CevaWP?^%z6Lmg5zInyDavpQw}2U82b?F1n(ot5%NGW52y!m5 zX>AqnCZ$)mY6BjtTmZI3>2(G{e^q5rJ7}o%yML|j%aer@(#Ltai``>wANKY8`aTN6 z9?}6oMkvY=!r+$>m}^0zHMmJquLiMf-IF?RA-P@&>$8>333e2^lE$$is}urb_|?R+ ztqrsU>u#4N`2u3N?9M^rB-dg;0uu}TB~kh3Ifk~j*Q}MX0PWfSePOHL(?&M7nu?pm z3isO_bo7*XCS~Q)F5@eii^Od1sF)x0uG=dP$-?iU*k@WC_cZ0ltJ$(}-a@jn28B$` zB&IIK03}^Nb$xl0L73|3wMv5=Q{A`2h4)rD=LFdbRYMXV=$KYz@hJN21Za{p2pX|e zc+h2Mn(%mafQQPP)SF!Ivlm7iXxUzihje+k?^k>00wow6JQzb$GOom(>~ep@zqA)b zfq4+3QQ<+yTSiQsPr#Xc4`!>-xP z0B@i-eoXa9UG$&p+5eT^)pRj+U3%Y}Qa7uIi8aK3OPqzATOBjuvWYCYmS3`>nA|WD zUp7%V^}62VLl@gM&j<~%eDMMJDe5iB9zd2vTN&6U85|2cq>HTnbX|qZBgp<`=OV}b zlk{m;_Vi|1$_sHF9euG*!q~)+RbfnX{nX<`OPQeDc#>p@)Re2JBxY_E%^F;7$`}#i z&e2<9k}pU9+Ax%zQ-FV5#!}B42Zjk%W5ASW5TIc9Jp~R1R8+Xe59wGm{y2at6eVN| zz?xOpz%*`mFcmp}NEcDl0os=8Lg3o~In_QUT%RaOkH(ui2kamc$YBB$=eiq!r85Ln z*0lk~!2$E&sYANiIg3L&f)nt^IzY8~TLKLzSM(e|r0Yl1uJ)WjeCY@HI$>+Rhjc>! z2ZPI}U6H$VNcW`;xM(;x@FK}XiRK2*bVp2scBy8D`sSeGE$Sk0spTNxN4_-&Fia{p z3_{fb5w}smBoB!Z5wvr%)wFBzfA=%N1TlAwgR?atifa#IGniZ(MKuI2QV0mG&>|gy ztdZzZi6F@!(8E;3A>G}&4xofCKZc@YfC(%fr~`&~z-JGD46;c)ny;hzI(oj2*5jWT z*CYFNWbcps<54_u6i*z*Uq|ukACr$G|M*Y$k9L%5Vtz+1CzZ1l4(j1@0w^runJ^!= zk2~V*2C+OYva!7DuLp|qoU9vF#={8g8J{;VMTZq};Wia|!`+gnJqL z>g~`CWl=&oocESom&Fs;U$=WbpryD|QMXLB5==At95pnWYnp4{x9%JMF+Cj5q?#PO zm!L_*<@AXfaY2l5#eJ>!$1GuKKG`!~8kW`&btK&W=Cjzmr;}IW?m31o)*)Xm z_7Mm;$d_iOtE5vQH9?*2)_N=nkDLXgIxG5*Ern;+!jV_uA^9f4k}$0mjtBux`Oh*d zcecJM4F=pIObIsSrHynh!JS=fJ>0~5gdSb48e?Ib3wJdt_)0c*5ymf0y)8UrR1D6{ zqx_r`rk!y{9rGy<8&ej-HNLKdJ6M)lR|iOY6x+!BRP?E+&`eZokAoIk3KIIZ#Tvte zswDD*^zf2hqPd}<^He#~xk0^f!}r7n%=%7jY(MfTc1E*s#(XlmC?-;;!c^{tj^}F` z&)yTBYTPyVR^M&HSZ+%xf)+0CnV+0Ny>Z@fcz4bB2q!(e0+VIDC;b% zfM3RoYPEA+@Y2hW5z*Y2A52%Lml-B|#F*O7LAWSw1VnTLn2pk8h$NkgMBaw;`iGyK zp8gm$*4;gJrS{wKv~rsz1B2PvCAf+FE)I+EjkO{9;Ah94e6 z|4qGCV|HTx0dXaxK!P3>Wql9k|MX;lN`dt83J@hF$cTE5QddZ2Cwbe*rGDU&jBA)y zxZ?yOzJg5ODRweV?;RDdsI;~9DC<(O6fKW57t@v@e-S5i_?()8{C(Qqemw4-m2G?n z`U>8vHHBT&n@^iHDopxRNV0{9$c+!SPWxusOrbH%p^p7$j3F&CcDMDu9vspgn}dUY ziOC7Xn8#X~IFBKDKw+)6@OOV1NkFmv z5##_M-y=NX2!A>9Xa976c7*T!FKF@6^L6xm9pMQ_c)}5$aD*ou;R#20!cl$o->@Ey zM9o&mSE~pIh!8cpE*+?R)k2bNqS;D4iYI%;#>NsfWrjHNQl4miKk*x&AaGN&`a$(z zjr_Cb`?`E*Y(!*<4J-InHCX|!dJ(Pcd!=g4y~3D6p~jr$`k>&jE&~j(*|U||GcPJn z`+~ZzgoIJKVXT&?M}k4LdxEQ!W@W~GK%nBo)L&7l`0xDA-zk{>cPg5K!T{XF8BVL+pYEXWq?xaEqAv6=;Ys*VV`?m}o;149Ac7D2P!tJ)q9xk{%wHI9yVG zH8Xqy+x(SJ;nwP0E=4FDPz8+yuUQhqY3a7r6NpJBKsj{w$3YZ;3GA8rSs@KG9sD%H zs4NiCo=5Lk%ZB=)Mx~*ZiqhHOwbr`%q&HZP#Ta|X!r{PkRcw8ppJuw^Zsuh?bZ_31 zDR(f2Vln!mPO8P^LLskiX&qtDKK<6QfvVzH2y_d|p?dFEIKZl)@2{q5rfKG4L2_5`I6)GK*Fv&P)h z0Kfh(3<$K^#Eux!%tGLO5VU*Xqrv>oTXi%u|GS6yXl9OP=E%+*S>PkzbmX;xnC8eG z9JzxdcW~qm{>$#*{HBXl7H~S&VajL)7r^i z<@oIKNUmv{Gg&pfu4p$ow?6-jdMqq37j|azmYu`zoh!~Q9%P`tbIvhQMI}(X zyzvxYxwTP1L3oe@fj0-Fjy~@E^kGfiTgS|78#sa}){sNG1ldD61Gok)@>4FLYT$&} z6zl{OH{2%6X)kiF0~uf~Acgn(JHT=G3L1cHpCyIUSW_X?c!;mQ#^0WYX-6;w@ja^- z;J}B4AJSd@tK+$dsG0&=o2p&&08&X{u)CL!2K2Xg>}ZDmvuFBfhK^?F|FLIBcIe1b zANjKXaP~)r@yIY98OEa!_9&+QyDaEmX&6!bU>GVihlL_bsx~7^zO-!*{;hTh3HCqn zEOvE;T{TccCvIiF;ZsyhpZz2Kr_|^V0|@N~>Nc>2`Yw2WNf}V}cr+6N-tK1%O2_M6 zSemS6F+n?+x7)^{D~ef-^)Zi}O^V9U7lLD)g+A*DcS~m&Obg47=B86B(dp+5(J~$i z4*IFH9?S#p>aCwha3zbxB@rpTTA4{#bHxfz-)wXht=VVVzXJ3stfvBdxocEs4(YUh zh<@MOMU(Fw(j`JEO2808QMBZ5rb9cspz}axc}S-We6!o}kgl|0a9rM>c9#=$5V<*c zp!x>rfB|26_s{Hu@y|HdzpR%An(05S2t(rkP<#eynR*>F`xnK5t@2fyNE=1q zUO0Y0;rkIghGyhucABmu4%*-Rv}YfN%5(m+qZUL*nidXdx+2hxSkXN}P3?Bu6t?)Gf zY`KOd`qD5Ahyzh%b^hwsH(=?$ruhM~>oJ3ebcV3pJolf}2r2MB%R=s6=x+dngEaW? zzmv!DSFZK%#r62(azpWg|8O4x_QPZF?#GZ1#tA<<5db+xlujTtV~y3=4L24mG;}>Kw5CnL9{uHR#Tv;vvnv@hv#I$2SkGgCx`=*F&l>oTt8j_w?`S>{jqxQU;6C}NTeKd|Tw2jM zSQYP!~aYFU%G$A{~6!XpxypCv$Ny{kb-Qg{`O-Th#P?c z4X}V;Lhz~cgY&wma!@d8^Ikg}Vp5(6rsXSIBZNl}%zh6e64Z!wwBDWfCu zJ)m9oc@UX17U(b~qqhV(j+(axFz5+hhC@0%6Y$x;vfP4{5r2q@(6o<;O&6fW)!Kum zL%QL%J`#MDrjvUNz_0f6-p}wv8U}S5v7Ew13oZYXqX)2#++9%^@T{bA0`aCi%O->qHJ^|NIJ^oF zE#EHw4-`9K?R^IQUHsG@Up)v9r)lgi9mGk44|J-6LeVpumw`xjO)mwp!U|{zi}u`l z{_mzr{I60D4&wL=ON|Qu!!0}rKX?UD264Z4m7mCSJESZ0O(u}WshKJ#fr1s_HOn%3 z8a|*lz2sM^=Bc#Gl3a};HC76A|JA?3+8tf<;{WtArdxot;K}nql95FcJcteg-eJXL z4;cRZ_}+Lhc+&)+g4Re#0~I`X!TEM+M6bXdT8|m{K)na_?hgqJumH2be-}Rmf*?60 zCTjfF;6AqlVlUI`fFT?;fBQA??BoKC?M6g?0lGfM`2(+iT^97e##}iZ_=D`LK~8o+C;9BBo!dc6S-Kq#gaeh~K#u@@T$ zw*5m211v%LpuY>D_Eb=}2%ufiQZ8Bk6A-}NY}sRHLVOGcI0rQ<=0JLCbPN!z z_8Q*?f&icu-ikJzqUvN#1u_U^wM-xmL~qpLP&fjejk zp>;J69%z2ZO`r@M((xxV?f)(?yK{*<=nrYko=Us>A493_z##uF@FsW=yygLPsa|pM z+Lqu2;GbVLfF&PLcS!f3C3lATjMQac0{1HFJLnN#(4h8dYkL{!=3zNn$I4G znx7;}Qaoo4jK*$N0TFFtdJlx~3AN*LcTWW{iDFbrx4H#T;?Bm?x^^9Dc@F?U9_cmlZwJd4mjHzvm3r0IR zre*(l2VxnJi4Xq^>#QgKKdqVANb(?h>t-Ru1=Lzp)l!)6R|(g1RUy7VHy9jEBO(Ig-uRIXtIr1Q(`uMY(BH4GdKqXl{& zxuLI9x4OnM;@*3{(_{RW4`a-J$s)$~T5vTy7;FccM0aHHG{)pI%7B>%xbC{i4s!ga ztX8pNs(IpprmxI+UgeV*+JodZZ+{&*?Kp>odt#5E{Nj5US04O1mVVE&DP!(&nSreU z{u|}u{VQ1XgAUsj&*pvSxCf;oQ5(5ZJnzc4ho?nX;GA^yAnmEhWc52dTRP=*qA&m?*)-6FYmm*0PzDP(5L{=#BL%w{itxx zIX<>grB<08A6F^v-49#7)O#T?)AC*W$o4(z?zK(ZXnhoRqcB6^f_VCUNx8|L-5&s> z^~@;Izvn?Og1EDx!Um6c^#R&{vl4GvYcm1HZ8P*2qzsLnw%2wTlI4+_zSis?-KMli zpZ{Y(1-r(^c2mVRbIs)GSPs-W3{uzmYB$tZWq4nXb?U2EY!4^+N|!f92YoUMAGMnl z^lr6>C&l4Gboq;9S&fOloU0k$E5p@;#%lf+4SZ|Wa_8(%?ofg5mwd{u?2+FWuzRS{ zg%_VTCwmQg)QcO*U&_NvMzxHcJPka9`eGIQZ7iGv;#?P4cb9-jlaHhki4-Qfb&Th* zli1quZEe+&&jPat#$J@KaNQcfq|gOr@0Yk$n7?57m}g_BXNer9US z1^S_}tanH886y-!CX61d&QOs#;Don#}0AS=5r){=L;oN4=Vr z05`UEE}M8#tB{G=zt?IIQ>@C{Yq+pvU^A`a>hON7vdnP;!1Mz;wmbeN&h$IAezF9z z3_jL=edU?;`eJ4&^pK7*0P1I30{tm%K4WhEl@dg=^at8o_{RCe(gchXIPtFqB1f$` z&5lEIz{LAA+;A-B**K=(?INYEizd)iJ50TDD@&2~z6^H5d_eXaihCGWl<(u&IDG$g zccRRdv*j06RXc^q2P((IV0IKYMS?t`6kC{Rg4WMrGn!v9g=f?Ym#V%^h`D&H^{Gd| zR3+3u_eMOyS^gYK&ZB5A~j(4Y~aE0Z1$!6~)Pou(rEHt&&w>80+ z8e3i(n_tP{WH!q-9!h>Ly9*fI69c54SY^}70INolUNlmVVCgR|*~v1Au3p6z)v;z_ ztyf6{;$_ZqrlKzVz1&b~)$@HdclpJx#=Bu>T^Z9ZPE|p_g`qI zs1HZCCo^UqVB0wZYw+}YR@ESaJ;Ln1gdnR>iw0wOWkiz6W-OOy$?%r*O^t=rF2q-D zV3xYUkv}0!2nQH+&AUXhTD;!eJ5W@6R9TInZ7r|O^SKFus8sVUa@v#GSDStpr^Ett zb)ij{^okX+k`d2?_zsZXOwmD1UxIEr;XW4=0gd~gipfQl2>&9uwo$nH&DL|(2&m6N z-Rz=W0jFfe`WwJlA-ji{p5f3;xQ)w#7(fO;B||N?Cr(9VHKF6uilSraHsj4c{41GP zmN2fu1UH)Q#6h=m-5!+Z6|SB&cB^ zN0dD{)@)AL&S)gxB(&x8?dImm-%jH1rFp~~~(m%k@o|ERE+iOPhva_0=Li?=ZMIK$>E;s5N zi(|i@1+!f;kV@t%Gr|ifx=JDWsv@ZU@g9^lUcV0)-=%#rVM~#Y`2GchMH57Zilg$y zY%EV{T%h-gff;y|8c1ZT3E@0Vex@HB2dZql>3dH9HvzqW4!9lxv47(s{sRy`0%HHM zR&sx}bLR2gAy)&!iv7l@F*E0=?>OiZ|906=WoYK>_ z>yv%@4S|X{%e1##?I{vs=Gn}qO)XpE`OCB$)bo@;61H=bV%O8EhciA=T>vvtS90-3 zk0+Esnw-XeTOw+ z{KcR&)7rUf{ny`pz>{{2R0`vYSvh)eTCNv!>l2p9(&b^qWm8a#7{$j6pKR3g#0z@u<7xfFFYpT3d~z3TXo;)r7`J8sKqp)&ey;6gfABkx_)-)0k)yJaI7djt*87hkwGbb z%9_DySXn0@8g%80EQ5>b-LW-spIf2^bqFaOxs!Y`2e-)fK?w+`8f(k*1o(}8>_NYD zP4Q*9$BBe^5DP7tEUYN^pYpUeE9>zYxV!4d9t0UO&7Pv`Ptn4 z&6V@hXYCeQ@((KODcZf<7eFnzba`ek65jq^n|1~$qFig69o#=l0hj{@vAQUW>TbUn zWyKE1^5Y3eW2-&5g6%@8+AN>W9kyM37&#@@ZCZ3>@qJeE`?*ak@W}-%iJj-Qa*+4C zdQT2JyNEbDf%s$%!&4wfWz$+@39cfyZr-9qX}{QhUl0zOi+_$}sDgrckcPg5>hn5; z$c=5wa$t#lqcm>L+zpi0)w`x+`C!IpA^WzZji|X`lB%54>0z}~iy)ln9Ae#=0FG%F zpj_Hlra&HG$2+foZ&Iv|sPAV~1R7}>HjQm7S?ivu+R0`9+Vh6ur~}=o5*M2mj3VzX zX(!K)9y=)O06$n(F+STvud>xd=T0}(Gih`-=lQu#6kmsjxQO|foN~`&KV8R&uHoEK zqECsUpA9>w@Pmb}11{Y&AkV_^MfPo~qx{K*`~ zJA@xy`_aP_(+!JFU);pgCnK#6YEqwSx)*zFu7l^|*LC)J12pT1)fj6#Ym&o@D=*2b zcS+~!JP3hG7GH|eUFJuWuMikD7v9$-fa>(P&#T>Ps4#tGG*bUzGX+%7dzmss4DR$r zOwt4?g~YAjMsA9sCihS=$Xm9E1*LxG0kUYes!}z7@7bZqfNIH4QFo_XIGB3%D8k?_ za5(tqPY-22*F#Zy*+>8`xunw2NMDq~s4 zQ``Cz-IkF8Ig3ccj4!?L@NlV>T?t1Gc6JL+(as)55i_lcC}Sr=KCju9qDT^dL7BQ& zNa;unp#^n=FcmF=e^S=&gPzhz`|{bdZ$eXq<#URNS=uP(3wpHBlu_8ms;s&p%Zgio z-V4xs3du$}1}If82Z?-<(PR1UE9#dI57)%*ycb!2W(D0VEHG{KddO0bWKsWAu)vY5 z91O_?6Ai#X;?x0V0XV@sIorWtalI<^Pb7;lI;ykNwUpw-(#Y}#ha#;^lV80d= z53p_C`?6b>kR+vXNfHaHeH<^j_LT@NaCpjl8q0SwlAmAQ>@DP{fy`a~Nuyte+f{%9 zW+9?ii2?!W8%3o+ElWX^09QJ$9v+d#-Rco{HSE&OPuCkOPk)x>3oDK(KBFt8D^A;x z!u45{n}cB8@_Ur{b2TkV0%ErUbd6I8EhT+M3%X_*%_4~plI#aq_j@%6D2dp%x-Njh zg=-=J@p<*J01?UsBJUE0_bMgWZ&v4I&}DdE=i-Lj#p#uqNqq!#!g4h=o_h@RXsQ+- zj7eqx(%1Clk&gPWQ3L|wH_9(WOY&!m8>t6R%bT0F#Ozf+ullwVU?@dZ13LC)-i^ZP zfDD}~8Um$OEiw>_jH*g(+7a8kE+NBr8&iiB(oMgjX0s0I7^rgi>KA*6u5$QYnlL5a zx9Vm-LdL^y%)&IBs!;|H8dR@){or1sn?&4R1wO5Q+!r2D*wC!^kE%6l0uaIaG)k3Y%E76b}w*5k~! z_0$y{tV3c~Kj)aoeRxQeFVy}e{KHTz*M!wA3&Ua)($LfVV@#a^|$qL{*OIil%faIT=Dmk{- zzabMisogmmZjpy{4!PkV5bY`i-UxdBO=478(60~&Wu_$PNO$iwy~L4mE3j>>0o1!R z&*itf#RvM0)Cer?y@=W=QJ{hV#i%(XsxIhcSlO~+!Sd|&eg@T%jeJRaPVE^e&cLNH!ID2{FyZk; zK=iS998c8cSTv1Gjg5K;HX`p=EHhL_yHyCzq$m@e-W_@hmb^vMi$sF_)tV2lkJKc zVJ4x_2v!&uDqgZaoof8X3Z8)jN8K^c)g8VzTA^Oa6ye=geZH4xUV3?RItP2SMEA+h6C z-2?Tyc1V{p*6}Ew!OI=AlYvqrREc)DcY9^dx17^R8VR-16)AFy`sAL2YZPRST`X0U zM>r}nFokxg*A|9{7V^RsHtUx}4(YPptLg2Ua|QdPk^9O6(9bEC81#fX?I#M=<1U?f zN%qEDvJBFHZWp~Ia<1yCtA483h*e_Dl{S4{A8E@`0Ukd^)8W@8xwa;o*Dz*{qjKp0*b(WB`_Y+Jx4hHXo3rNn)E-5_bRk* zOn>Ta=QV$uz{CcxTl*jEy=PQY>;EUJ$ASn5NRf`xd+#Dq5fBg}y@QC95a}&IAV=w4 zx>7|59U@)25Q9@BHps^J3P_oBs>e3asob*gX4rzTZ## z;?K3AC8p;}A3kwHoFMDyFSBwF%sPYbecEi6zFP2XVm?7!7~_%VB+nj@TajkOOhn%)?47rhD2pVj zJ5W-9nxGGWVjAjg1#KmtdGg-;h}`qRcu%iN1&cnePb}&DZv3f8MXxdESfxy%DwpWO z83}3@OkG!jQ=KLUBp~C<-uB`DEQV!WPZlaE{?4xLZ(GdzXVtvA%+RNpnSB17lF;p8 zr>x&HeT+&;so3!u40KhD)K~B-4vK`m>tCDS4pb{i@^UV7 ze>WhNg}2c~7Me74pF3wSEfc0e4JZn0VGM|53MnLqcXNZhmT!|mM4bU?I@l2|CXo!n z-z$gd_0rkz^kOrVO)PiLSgR1Hp$iG^q98v%rF@@K9rqxKElSQS`lQ^jG2WW@L?j$c zPjsa>E(Wti_Dv5rgak_*lC|v;%XlH+tVYP=Te;Cc(o-5wz01sI%sA9F?iObg?6{;E zyvrD7YE0-7&?Y0kIjz(3v>Hwk<^ z1Mqv$epY=-8FI5>=$?%@w~%GWj{c^H*UM>7FZD=D03jMhpB&B&bFhzI$1V@>&`c=8 zP>h1{+A)0`+)cYd;#^hC6RrAnVkL20v2zxtFCGF@BB)lwG=ajfSTWQqo`}pR)2>mq_|>P$Xy;g|Qi*XhMLuSjpUQvQuQFCG(D~0LMnCHxfFR0y zau8p?#69MdmhAK4#V;{4{+M+%m|hDHsZdkc>8%MKn>D*wvH;r?I&vM7k=;zB5|{gT`G;G*=ybGbg+_jK*gBeu>%RoXmnu&rNWS-a7q4cfEZJ zamtK@sGS4w-vCNs5?p?jbMNNNf$>!Ju4j`6qe2psaZ@KWNrH~oD*1lC_Thk}lOCOi zZ*#%3BU^XY+4S!_%eOA1$ciLXX=xSVe85^b?uFZ=ZcX(*M$v{>mh}-2ve-5@z)tB! zt+G~_>y?PqWbuieU-J86qel{wudCFD>bGHSW;iui;cmI}p91P$gR!^%tGbnncmD_* z`u{1E5LjCbI8%>_s?Td-(NX+%WII%Q8%aG?5p#hlaLigY#b<~&shSx!sY=02%SeqDZReHulg$_Ktuu^5dBzl0r^6s_HxLOSs@pa}I=%lpGmjGL;hPSnxn` zwP0y!OL%HTh;ueg6ZC%S+a3|LJ4ILpHi|y|16DMFvmaX)d7#j4z~^vVw-mN)PO!0G zurmnHaW|04RFEvcA^4VpEg9D7NajmK#6fOE`*^T{a#HE7ey=QAL-X+@RQZYQR};!9AoQueCg_R715_ z50K&zrz3kloH{-Ei3aaiN|5rY)wKLG7ooD*^^=|kR6|07d>$u~COL{z^uxEi6s#}$%G|yt4wvKG(w^81b0?9w6 zfB$?;U}Bf~W~(L$L+rT{f=-*dX1nA_2Zp4mYE1$}VH9khjt>0i(rv{BZW)q3m~iZX z&GCahW-p$ybA5~5ld67pT~gahFw0Ne_S?Z3#a{GW7xBFd{ug&Je#1}!(jFr})6DD5&v$1de9z#Lal@>R z`9smyocz?xoZk;w#?4sj4bRO~?f!EqI4a0vVqI^qNiZ<{M))Y`mIjFYq>K0(bh*Q> z5@vX$-#95q6v%N+I`O*JwAVB}yH#2;xn=Sg`}bQ*X?FhipIhV_?p`-X%_8QRaELu| z!htEVW0{-mQ9(i(U|uUcB|o@cv0CFaP;a$tZR;)>Dp`kdeGiEfxWj<_`nPDOxYq{L zsRAk;v68ubC_{Gs=hA282+(nRpV_&%gAu-vY1J|Bm%7^L4>rAe1$J=L&ql%V8|W9r zke7@5H71Mp8yTJbi+>O_Do)qbbA|BA38So1it?O}PDyFQ`E@EIJYTeE?oa(*?yj*I zJLgU8CKz=mfSAaf#Dty;9s;6|myM*a*yBer}(eMyCwU@(DIp0P{fb!zsrqwto-ccC{n9t~_wHm=?Yv)HQtq zrh!KxZcRP?Uu+en=~Y-eB_7-is60nNteGLbHHPlK8LiveVtyNG#_-W4UFC}9 zUdw6&2L{r1l&w}s1|*c;RXf1lFjK=iH8EIp$WUfI!N<13S`t~bb3#I#%flT=Rn-^R z)1^Bz;ryg!OTtVAFd;ioxr+zWVNmTJB9N71|7Mk2=h@o_VrToIoUf*8k9UOY&LtR{ zO1x=cw1Ec#;PW>Q>O zMgO{QcmG*a*5M)U``wq~uvfnFV=}6Wq`YNTguB-Q6o0GzBUxY;70yi()@HOzxc?yJ z9IY0fUZ(e3X@&`g>QiIsz%JF4Z-0EYSNbs9I_QJ@IHVLcXT8_$&?QUKHzFSNBI0;% zPOQa0aOl^dCQ8L175hqQoGRQo3^1LMK_->0(K9w>@!}Ove3{>@c}YEc4T=NR6%Kat zpW2h&tS;Xqn@u!%+yN6+C;dl#&v%uX-0hiX;NnX4cl9ZJD)wig;%};#v;tpeLCaso zk6C(nehTK0o`Gw8?X}`%+V~Ub5H(6Fl(w{7e=lJsf)C5$DOuekD#+ABv9qV)^HUJD zWPg6`f+pn6!gN?fa?ZGllgNl4t+^4JJ+jVtgg9s2(0lHFjFWbZLM6n955<7$&6s>j zi|oxRA=>iDgOHZp)brOQMh~*iibIO>g(ODdJg7BYFJ(|etiC;GoeA`^v4O~MfTLKm z`+h67X#E_u;QGPy@?znq?uM*xqI_Q=RflK=`Nfo{e|N0=*+wp&GjvqMt;J8j7#3kV zDJfm6usJCXLr%Yzs6kmnMI5J4aAIgFnmeh#E#(m*D5ZmiNTqK8?covq(P2`m^3SD| z8YbiBE=HxNvUWPONs4*fkLbMuxa5mz)!kvWZCxfHJbYNCx4K(p*mv7=y&tIXG|;xuAj*DT~J zQidxH{fg9JSgDdqMQd548hpECRm3dKw!(^p8eC3V;v!KI4vdLo9aW+JoaZ2P&W$hU z5*PPoH=-f0kLP|dEH*WAI;Ms0On9ix&-Y6#nbzOHr5|Ravk}e9d-*<9uyk~RO#0Vw zs+Q@JTQ#4-ZI!r)zL5H5qyfcuK zTt@Wj)ws?C9Lw3gU33u^`erV_Y>7g}aOqkhqkBnpr4VcNKpg%yI=A%J#A1}gL}9c8 zC&&dH1EPnsuh@yNN~6nnJEU==(oc;qgeRZO-eH}oOIX+`lq^a@DblR^gu%9G#RV~a zV|Ch`FV5lJS2UP$5@o8xhbpe>T7B|W)&+cBf0a7vhqwSC6NL$ay zx32Te6DbG9j>!JNk4cUmzDBDT7@#{I+*ELP+;rMn$28dX*8HK=Kn&&cZ^}nme$mO1 zHLcLkVya&2x(>{>+d20pGc|Vs2zt0Iv_PqjaIAgdrT}J#l^J1@GL(=9KqbqIw-lTV zfQCMvDy-8|YEn<-vlD#xPQg3O@0=}s)`X0x$Ee?1g@)3B@H#OPvqq3(LRK@6*aU}< z=UEamLhsOOo8xu8&7-P?C-xH;7-*>L+MxQ3k_G|cPCx(SE&V`B%vFX*RDEZTS9xyS z9esOaTbx*i)9%DA108Zsz;a~3Ip+b@4v4j>lUHk6LG)FjUe`oNsNzLo@m5_^*$3{? zMy8!WR;~D4)3!#N(nF_6-8=shrb)gMz&Q3kb~<%dpN#d%k@`GrvYClgmCZKMw<@A) z*f3vg2qp2d0y&f!Y#PO)W|XtuZ`SK=9{TR33PPhI>H86UfZfw0V|LW>{Y248++*gt z3@>A(o>Wdo>Bh3WzmuVvom%~y^VwDLss!m9u*$?VG<`uc_Uuh01b`^8!qV+$Ym%D; z&VHRHmrS}_SQNgfYiLnw*si(Kqx8{uU_>^xD2slvn+NeNWfgSJq7Hy^r3pji>y)<| zcSv6Nl)>Rp1aq&n|M)e4l_E}u*w*z+mR6KQa+)JbAg8m$p=6#(n*0Dop~TA@!;Z9a zF6@HZM`R83+KGxok}UhoogEc*&LJN&#~Xt?Ed0?G4!1u~S2q6AQ>n~wd|X{50&-Q= za9j8g!gKGXd_3H!2L{h(IeG0Oe{MmeXOdCClUFB$#uW(F2nyb;@13eqJDy%u+!GyK zEbNhf2##_fJm-x+3s~+~#HfdQV%sU3Bk6?0V+e1d2JyJ2atQmzW199-%>r4Ri z4oO=aC=Ipra?Q72-QmRsF0U43o^u2D?lG)kV2OkHE8;F8f4pyIsza+15`sDDDk^PG zEpM(0Dq5^^zr$)xnMwEY&Ss)~;D-*+3m(->I2@0)dU3(P2Ee5qMk}2!LGsUth7px+ z77-HFpSR6@u^)`yRh4{JNKi0LA;4SzL{G;P&1ZMZNqgkx?y?UdB@h388;2>zAqb{7g{%pv%0St)d=jH%MKh z19=i}`Ay_8i>NOCwuxbl{)BHtdPbQl83G7e$Rtb+*_>ol<+da}E3Np?r8^{gTP0=d zteW!C3aE8*MD>$dtl%lq&wo5Xp-SDlIV*i!U|hla6W(2@Ayyv|RNqYK-YuyS9hk3c9@U6q%8vZ_qih_c(S*vpVfZ7PjjAr#jI_ zQ?c(*Lgo>3x`B9p1+&q;V1Yn&u}`8d!hc^@jEPfKR4y^j57AQ!S-7(luV| z7pfe{i8nGj8&#W(VSG}lM zo8%Z2gj`(MzSR~`njaK0j(nfc@RdV3NimcX+TU!? zI%(0DQ(G1mQ0ZU?mBS(jK1wNaPI?{~bdJ>92#$W2*XI&Bg!j$j!M(Xw2zS)NTQ64I zE7CEu{lD!&ZGA4lo_{0etx!V?p)-F(nfg9sNLB&cM3aCcQ@y>Nf`R+FdN=kUX-T?+ zK;Hw%UJB%<>{U*{w@AW$)>-KS#j-k8{iU{2nF0x2a+^5`3-SZCDSQzea_yoh*CZK* z`dzB)-u4{PJgRBv$pIHLGZnFM-Vf8K{+rX)#d}0!E4rO?=JA{xbFI%W!mrfFzd;0_Dis| zL%e~XadXI4T(-gxaVyf=1afa`bqjg z$3@TKxZ^{`>cgTZ*N^v+8LoF{ACV(#*hM0Z{a^fKGb=MTTUYsBnXWq>DLP%TXQnSb zY`}jSK`BQ#b@M`&s7W{}*h~b%2-jc`eex&Dni{Uu=fm_VD*aDzsB7) zUNK%$13#>zEVHC}ZiSJkm3ib?5@I%A9`0``=~%_mVGUl8pq9To=tJmeU_%kf%* z;E|+^7wk`YGnWa^!LiHNx7-l6H;sY~n1iw~YLlIT(`0LP&c$`Vo0 z>zOKMUnwtdXE(;1luvW&<#`kHMA6tWvM`xBWspaK07m~Cx(ZY7?-C?roTVfjeC+;0 z7;CNAv`}s)xJ?eTbYcdw{h$h`TcSr=9cc<0?j=at)Pdn6!|ro)vI8k|1vpFo(zvon zD(-V&@KUG#i0Y$fx3v8^iqGw|ITw@OyH6A5OI*!C@7iR68DRDJGj{X6MBVbQ6SlVC zy>5aj>W?sj24KMbF`(l?!4P^fQy~r!O;#j;zyQ2|qp%;uxPLM*?X{6Ctv0L&2;X8) z!1VK*GrnTftfT7_%Vv4=$*a=6}^XStnUl z9?LMht^Bln!Ia%l9NRaG(#xnUSJlqfOM_4RN(34NsvfU}`?&5w-k7tPlmM?g+g*RP zhhm7&hKYABZhPDohbV*@e5%JB57)Ru$eW5ccCDoNr`DU9bZ=uFo^Cih%vy_}MqmlC zb?UnDMTz}5IkKR;iW|;)`12v!q>2qwWvnRn*i3Ax(k!e{F3tAcTO)JObKDXS+I#7C z7Y%j7h^#;KB{JT4#D}pDQ?jm?B&?UWs+U<|pWSHW<5l1n6a=XMyWqcj|8JQ){)7MF zzf2MTDJ$v!?Sl9(Q^fyH7n#`ut=e>OcPPtpNLG-6%X{;m{-0G_?5ZElS!!ui6@8C)8Uf`J^=J>Ja_jcu1KhxR+EhYlO5;81SU3zR(rJy($Wll*w=}ZwiYvT|Hc}) zC^SHkMBzBW4=?5D)Ic|&kBN)4lze+jr>VX^0{cN4?aBLF&^>v2dX;u*)GnfqsB-3u zXzO==mvx`U`qp9-znZLH8MRQ(>G9?e_De}E+};7tdt-z7LCfg?=VfCxv)&EAWGWVI zck=YQVPl57p`^kE%DB<%Q+f!m8lnfR!A7#4dPK13PoQC|RyPU8JL2eELM`!eitU^= zyvCT-5MO_O= zxx8leo11ygO>NUiU{Y=9-8Ock#*678|67qy`i^XA)a>1A-EJr>%|LgvMG{$Z#Vf|1 ze#QcQ7O;xwmB(c~t!)~0ugzhZt85Or?)^tNa zt|^hJa0ZeVPCDl8nuEhu*6f|O^~0$7fZFZf#@lMekBwE1ARa#6uV2$t`=i8}hZ9T@ci1fTIeMV80BV|1ncY&Rr;Wb{8 z7(F=^1fZewCR6{4jKe~*$xN#k20=ZAr|iV+3nWMW3q+50$DK+T>NG^HG@Gs;P2%i7 z1I3@vghC-w`Nt`rx6kN~cT@i&YP|^fqR3hGiGvd=u3zCw%>cpu2|X32)LpQ_#Yql6 zgk^kIap*_gPtcs?BHT~oDb48R?b}oV`~su_dAestoz{ecf*1uto8Humi?R` zJZib?dRJsW%tlVjw3>4?gIM0+tuTF#pBsPKFtUZJ4H1j4iDhzFw#mCQW`10kEE4yM z8<7c?PEaIT)$(Osp-I7&8=>)aCP`fCrIpVEGa+B5N^^V7-}UDcVya`H zE2@XnU&Y=feylP!G|Z?NyrW^cr0D!u%|M`V$(o9M`v51w;am?Z9t8NlfCn$Mco(D^ zsXG*lASoKlOSw=w9ds98TfF3=w%|0L@(f5y-_yT)k8_eQD}ya5G|e;nA4Odufx3#6#uKPpzYj?pS<o>siEa{lT1?#5u+5D;n-QeRzxMdQWeovw25)ZhkQ$pnTq^by|MwZSAg6an{R_am7oIt# zb#?u(yh#|iU~St3SX2?J|6E#nbD9SR6hftlQ}9}0fo&Me`E|tiGP3ADms$aDlsPz2 zd}sR))hXb(P6v~KtNg|~mVyFQ*j5rzueA4n+ zEt=24vzyJ6zgY!+S~OtyzZEs*8^`c&m5_TXLHhIQV$9(-*}|2`F>5@fejjfjv6-_N zhqMD%!4Q2Mbmzk_XR$DGc-BO4TUUPhe7~#WaZtnjH>c$LHkn>sE4z~LDfGVb5P^9; zZbZ;Qs!x;JK-Ij$kj2d`e2iu(56LCzd_zlB&*!;*juChTHq4?aPNaG(|19h&uAcN` z#QUh<)Lj8GoiBFW9jr9%$TrNPHRkIs8=1Gz=8t3@rK3M&tgsgBc2hfd|yslnFJg&TVtN1jf8w{?#(;dUv* zb${&Ka1C5M{8wT#Rc1_OP0O_F%ajGF^)j{C`*jD*jpIY?XX?(9ugHFN$#9Mxu6qv; zBJ#)@i#;=D*A zC?Ht~Q2IGJM0OwJF?-$?5xbhx!_>c^U z$(#{@0&!aYE6dq^hdc+uGu}UU!=-=~)(wPbY_qT2q;S_3fB=K=a4cfi5kygb_G^Xy z4?isQq915|rZVYAfVKRf1Vw1abrN`6n~5j=B{6gt&A-vu#2<;PZbO#fp1XO@k1p4J z4gU_R`~9^rvG7WV@@mQ*2$r%O=Xt`*IOl$735(wznA0tTw*0W-vwqZi&k>n$`wwbcs$c?f57}1xbNkKic`sF5N(23lkR%qW^ zjY1|5oUMQQ^A$CCFb_RVo9TX4$Uqm zo&5fnyHZGWK1*!JllD|kNeTa*J??c2|E}{3wtkn^vY3FwT8@F)-d}%&TqRz8o_nTQ zlsMpglD96XpY_}~qCm)FU{CG6rRHjdo*WrCQV6Z)W_Ur`*|^W9vZ~jEvvjDq45fiz zS|&K^#$=+MnaJp4cQ!YvP;ujaL&P<;$&^h5`F_hi@{p_XbJNZR;c_L@P}OSaa7s`(xzldl~=B>E)ukK}5Eq>!~L5A&R)q)UpZ#{y(c z249p9Fc=IOc1ivy{$#Lqzdf`?Bfg%H73nC1f_3x<5klAGav(oodX}(?*6CZz+dFHKpIUVraYp z^^fbjIhEnUP?7G2ioM`K^gO+whGiQ(BHn%g#dWpPJ`bzbMY?MU{_reKhozs3{YKBU zMOT{hvq4OZCw2p?CnT8cW#0E6&I_6Jvz24UNa4|r)}=Iz905M;9=gNadNppXr4`Q$ zXMS;{`kLg4j@`DMDBl|iGYrZhba9ya8s0@^PaujmTi|8=ksqL&Wr|Xl`Tsb%7rDJUk{(W5F;&ogyr_ygFXaEv%&-whO4|7 z1lw%B*KDf2{q7!PV!1q=Zdupa_|6vaurvl`&1QXwTwM5RYwJV?0w>LcM3^ZO{Bs!Ji9JTt#fbC$vgGy#+Nw5CTS0?9~mNJ z&rjjo#-{ixlhaHj^)&k2;!m^%SagW|Xy|hueF`kGfj7E;X8f~?gl*ltIgd=S$-KE) zvD)-BrA%1DPFGFwK|Y%yLtm)i?}Ps}Np58!D_qiVH6?195zgrGz!DIug&`q^lr4D*QBh*`Rf*#(pB#;`~cHYci^V*!UJ$MfWkJcN}QUS<2hq0opCuDubchKE_FluV$J% z_y42p>D0WNqx(N;W%ThVa<*zWB@{@Rwu;bz_M-mWt4}%m1LP`6c-0W8A!&#A^ka+Q{yaG_#$<%+r+JODU0@6NmjPfj|E$aEqUe*S! zYRq1DCE5H?gZ^Tu4HO%2zyRwMnnaP!a{^9t%NMZrMNKfW^c4e0FmmkblE?4(6M&Ys zyFQ~Tl&l!UQJZ@xz3YktH~{K!Y!?low9;e2lrYv#)I?*`t)EU=H(eyGcyU2mqOlgq z!dZ)pHcuT>@o@zYswavBbr3haHyl&FQCu(O&A51^WpRnUroKZp5@G6+w5$)*&4rTw z5C~Pqs0QTCRFiCh1*3X!L;@*AdK`v&v*~PTIU;4(N4haHvL!@dk+n?pbP$X}TeJxA z`BzMyX1W?0GMc|LeC)+{h#TfM}A0Cx4J7!M>Z1#!aV@v##X}|hIvH*U_{4sy)lwt}!lw(o) zZoG1EBSo_}%No0Al^qzZ+!gVxLz+2i*D1DNqT4LhS>0+E)I##3|6uUE-?T@cF;jKA z-=v1a)O{?EKnjw0Rz8*=66BdtZs7OWqCscqS8EIPdC)r_9)8IP6ySfcgkv5Tu=*p7 zn?y{b`5B6%liW;;?+cnM7VQrywYh%fgPA!w|WYvZ(+Afv-(mig%I?`MAJ>~I9;0tA;R zG$THd5l&Q>tk(Z`>$RO7D!fH}|hj{O4auLMO$BVABrjPXp zx#HX=d=Wtnw<8qyfo^rNxLaIEVBoGEJRicUHKM8@9NI}pnkwA`azF7}ZDzUc^3pPIT{1q;8}fCr zsz?m8M>R>mu44<=Gf8CT5i;<7eA^#ldMe|o=zbA|mKi=gVBoRoncG@b32e5oV9I@7 z6rZIm*@N#6-nHjt95=q5o73B`U*H#CWnS2vV~o^a87GMfmNYLn2Ib%VBTc@73;m+v z_&#mbvQAjw5+cl5W@ybPai5lIlQk9it4NghCkDd$)A&hs69Mbwd}jo60)7XN;{Mra zabw%W*Teap40hxTNSrak_Mb~+X6e(=*>Dk!) zb9aJnTRr^T@%uMca2MqMc0kk!S>J`RzESHrv$W(uPf73gLQun$zhZ^apu{rMx|H4- zD3TO3pv2*ygRI&#e{Z0yi`i9J3)2=oZa2;eOTuI(VQnq3U!~RCOF|QByK9Ko{l2Q- zcZihzvgzc@Vj(pqw_D%&)Jgc3r6#@A1X5(WIzvPosiG~HYnhW5Z$E^R7RIO`gjVcDpfrhFde-czH)NoEark6b1whS zr5|_t5hU|%Ua~HtC1Pp7y4^tlh65W-iCG$f#_8!RDFiT-Ky9hi$pA$i7ztnS1+G=JXGxG#f|w z_-|DV=`Lh0o~tnux(e=J(Z2?cs&d-FS7=`0x~9&fgqkre7Bf&6fQm`U>**maZuD0j zNrEfk!9aKtC=sCH0Nd(Cj!fZYY{}Ii=KMmLah2eaHG?X(B0?MBcR`= zlm#H)^DyGX4-goW2`)v1;?v|GKv^8tHKzWuO((JOyQR1m1n~2Ymd$TdbLn%v8nB+# z#B3Z1X0Eqmr0V!|)(3evdG|z#`@PGj4_ZkHMI)yc4lHERPi{+GZ}wRy&#*fKrhbz>@AsVKg?WJ7F)<;II3e z+cjmRG*u4Y;@z1uyD6x=fMLV8GX+tG%#>7VeAur(6gzAOH;$%%V}AN+6-+3MSNuc1 z4|QAa#+>l7FJqgc@`whRca%8tml~V>2GyUB@^nn-d!|`aN>|T#0n??r&pU#PQpeVL z`0Y`_x1-#;B1h|Ati_og8Sd#BWw<#XE4EQK#N2(>E4+Rs^N&EiH9`m8i!qd!6FsfC zJk2ZmhtuWy&0*I2thRL-cJP6&EJS;6Pp>TjWQtgM-%Y!qLl92v5?x;S&OMvh7(HHOSj|<8JYHiKHF4G zdwp=a`R1UBs;wja$_L?>`nN4l)e7=mt08UCspVg@)xxWsf=ZWdzFiUQ&p+wNntk5( z?vd_`%!xNw8TuHs!u9igI7eUufKh(iINC##DJBZ*MfIjePsLIk6=;n9Q8xO?_AsNS z3S|8q=HuMKs~MA7fhjO?ppPrqa*~~P*JpX4Au`BlUnW&^s4aHJ`=;MIC8@ITg+;$pH^S7hWZu8pybf1F#t#MB|=^h#e>HMZo>1`&}a~Ngghq<{)_**`|mQ zTji`))TrOdpuS|0Nu0ZD>hR9X43WuE=uC=+P`>JSP~}UZDq#-zX@!`W*r{=Q-I)VD z5F(3`L+M9Xtfh^(;cRy>L*>TVLL332{ivEB5uc_vibA}r*RbtL>8`)Z$SmR)y34&l zh#a>fm?Hb#K`Xqc@DNal-9+pI8zv@w_2!@1i<_B%{QUrjpd{y%UA$jIed>NO{zm~A zGYk3+Y?s^LiBVxZ&H!$V0PgB;MGYVmY-rdx9RH)Pt_gHuo%9rGevPjGu_yjtje-A< z!M^{M_xqou6aSU>`+q7Lohq5EODVjdBik(t_wmMHueXO2`n@R4pY@Tjq`PlT6c~hK z8-Z5nwGCP{P~RlnBQ^`R#2SzHPw&aTpx!x`t{E?Y3)XhnJUr)w4feg9W9UiP*I#d6 zd?`jcgEg_IuadnQi*X6(pThzCS>lZ|X9CNm-Jo9AAx`6Rn7eIigN zE)mzoGa|08t;|24bOF7+0U2p9t!Xg?0*IF~8NvapOJRQOnd4YYn7;m3(^i zU$7S~?Va__^6qDm<~`)7>8AFu~sz-a!8VNeYIb6R0X#3AGU{cb` zPu{*QD0iRvoopZ7>ouiAi&0 zi1~fC1}Y;AY(1{JF1flfQz!1%>6ouUnMSxvey(D0pgjR91>@oz#whB(u;)nVsWh5V znBh#HD+j{nOjS)Ro|3u^D1U>TDff+1o@-D~H(jRv0cMFt;=37bAw4VTYiU0NZscsU z+fo%Q9oobS^~9|z?GjqrV6!XWUPLU<^(hTbSb9&6A4yoNvwqq?j7m4{0NtEpw-?ok zK~|p%Km0P~+#(7M3-#PgSs!MZ?lld3fu0qqUDRRxMQZyJLdx4wMA=X)n$Vcnf>=~> zm4eR3k@+^06&_qTNLNjsWjOaYnG7E`xRP$>^P+@^vUnu;a#W%$^Fnt6ibW3tSvE6- z{{X*A_UqMP`k_vZ%fHie!CI&06$8YP+{!JPP`wRYs!kBkcT9e(Re zvz+B6+N`voy^?Ya^FP7$2t?ww=+tm*!TY$%9W@|?0(E6UR}B1Vn*%;sowZL?SEg5> z5*N-8OcrID-mJZ8x$8k|Jvh;icU#T0nz0-*+eR~2nQokBhS#x+bxpz#e-(lhT9G3^ zf1Yozc$*PYF56H?*Szt^X{~JkK$_g#oLWEi??Q>R*^hChuEhvT1Un67i?xWZ0AfuC z++dVH;wnj6FX0JcEaGbOnf(XmS!MCR7VW@cz6XB6iv2(Pep|FyCB1a)XqplzOGthRH)qWClwjBE#Xij<({@XmigRXI;hQ7$lgt*{RI-EX znOzOpPCk}5$+fqdZ+F^0(78V4?S~Z6?P<(S@RSD9(*u>l_w3y7}3q=)@z0Uf{yyON{{`bJ$dT|BTy{+)hC4Qc^14WX4g95WyN zkK}9>^E+~yPSye$^c8#_eEl3hUpvAIWKuyc#;LLo6pTy~2c7&l4*Q*musly8ciAld zJJzLqjm0c({nJ&V;4JZ{1E=v50`Wa7-c|uOaNcaslxXOvM0MyRi@@|i=iX6LF`4K% zDqM|(e&1ejw3Y7jiteHzHQ=D#*J0<{7e5K>d;Q4889o3*nsV4Pm#5wnPCnA@sOyYd z$+&)5>Z&i@#Iv;C1I{2*b5rpdv^g>sjj4)3Y5P=Zce0OVTASUSE;7!4sxrounC6pV zonhSu$(b$EVbZSUWzx>#i*nP;bZ4m;s1a-2$a6JBs#ZMq&ag2~OixU2FjqgorSzs; zhI0|7VEVY3w*|aEN~UX@g7>uci^@m+Dwec7uJ!MY?pFkbhN_Qxxk6r->drg0G`(fZ z3;;x|kYs-=zRCgCW249Z{vZ&!iAGJ%!J6*37^w z8Pm-lMTX4flab+UCS?ZN4DnlRCGRZK;RYmjLhdR{+an_9*E3KoGFq0Uxpc>;4BDJZ z?ety?f`XXL?XVI)@Ff*2iDOzmXlf}KYYNnLS5KHl_rLsXRutERhvH_uUb}EaOVb-!BWVpd0yakj^Tp~i1dkFl0Ny$#Bz%O|O&-xJ zieekuI~OJkY1}(kQKf=8hMv|eI$d8YrT!!T_Q5!Ac6WyW#;Jd{gVEz=V~)cN=LM4` zJ>AM?6pyVIb!F^=YzmDqsjs{>o*vv*c=)+5?xp~APr;%h0q@B-I01uuhUUI3*R?i< zy0BGdlvdAn8=Bb)7ekl8L5qikJVo@Eo5PH6za8dD@ktR-n$m!eh06cnW@cMAIp)L)73y&22Y*nt`|Ua$7$`| z?b*(4e@i(Rgti;7?vER`wx+p2>^GpwUm)xWdOdT>(+U>1sN_d{hiaQ`k_TRhH9<^) z+vr#ZG&B-OJ#XJ+)X&VBcJ42`4N{|`VyanJs8W!3U{eE*<#_%(Wt}YMOh#D=mh)S! zhxE}PN9p+#G)Giz883QyZ@5a%nuVy*S_2IUy)O}Ky`$aQ#i2-;zxS8;p2o&i=j2y$ zu1U_kwl)h3^F4GmB@9^XLf^ZE1)IKikFLs=KgCD0Wje)+{J8dX!i@2u*(F-jX|oOX zE@-YH)5sB*r=u98(u+N=CiWDvUs2hRR+@_`7b!gnNzYzawKt(gOALRug1akhOYpEJ z^I{dM^L6wX130XOm4&i;9F)m=l(eo(WQ&h;Cl*1)uLi-{&W6ZG$pjKsR4 zY*UU0>v1t?W38W6;yy9?Dc| z#*ulPx?h^{yS0tl?|0iTf0#Jya(dglS}rPDsWS3FLQ7F)Pw{45o+$=vtgDb~0VD&% zg(x2`Xvnvxy_!%l1q^o5w$rc2@&l@uw%Z1p%DL4?vgusCglfWqxg&3na)G@i_?n>& z*SfJ-L_^Q|IZt;HL__4q34(6t)M(pUsIzowi=(ShUN6;tt1YS{t0k*mU7Gn@`ogfl z>j_=1cutY+uQD^A63v}b2Jl_&i350|<#12+zsjQKduoBFfi=dy<(>K24UO4?*^<=} zG}$XMmJSs!2teNJttl`~40^IS#=VAu+?@<0v{PS+;aQ0}uroe!$;bAO}@m!19^d<3q zM>rp>I#8T3v2S|aOqQ(@Bg?W;#BxIvQzbg4$B^jAy!OY5h2>S6G<8Jp3mHQ1iuV^d z4{M=(SxoOlSxga?s_JNOCU5}xEmg6VQINGqW=NK3+b|@4#1y)t|>{ z%bl{=KfROFWsV(5)878J*>B146!i|Sd4Bz3B%BW;jB)sCym@42*usP*g*wa}CrNxB z*!(zIb6^k^dHe4xk4hKj2Ra)0gj}3XxmhN%H~!R`h@}t9b9p+5RcKfJ`{+;MI(W{W_pCwPD!?>GQU9#2oIXxmxS3kA(Ra#Kp z+A>Y}bs$4a)>W|#T}TD#;tg#y?V3LFDTju<6-d)dUD~nEm<`Dzl%#!|ux|R%6cIRg zH}0=;G(ZyW&Jt{Z#+^x8LwYluCVm)y?PQ~_e7FVy-D&9ODZ<~Vy*q>QXspUN^bo@S zdLDmxBAiAeaM#}MM&wJ^@wN%gF?opTfO(edd$ramVNG76RoPpmN|BjJojb}Vxs1Al zKmE5`dj|Dw9$IObaKO}LhYnBlr7NpeM5}qYO?oU6I-rhsD-Lnn6`?~&LFyxD=r+rW z1|uc=f(mvAe|4EzU3w*Qs>4HZ02SEQuoKSLtq-jUmg2+gzdokun72>W2zJCD9{%OA z=fq(1bI}G{&3ec-*llEqBa(In)eR(s*{DS`&9;+f3$S zh_3Zy&;sM%Jx*edm3RWo*1(p<%z?^+F$QT}%3AN^Udt13Pt>S9@8zGZFGIwHPJA_x zS^F*E-Qt4HlFcY2$cqkB)8|Fk-!!88po8%3W`~KUSflU2wqBcB{bvCNE%*mKYR>8O z713_DEphqQryu*J2FdE;RqhwO^;d73;U^`enRMO^JRMm9A7Np%>|* zK!i{P1f+=q0trnJB%v8d;VsX7=f1nky~pd>Z=bT`_xZtEBw1O>T64~S%rVDMX6a>G zS_JBsI``HwM}rS1mVN^L$G?|=-r&A_ppPPsMV<40$uL9N>N5f7z@`kz0Ir_;?y;&Q zyk#VPf^Q6c=2k^n#7q0fu4cN%o)ZU|_h{**dgI~1utp!WS62P#LW(ZTdR#jgF+*V8 z(xPMq2rucC5i787(KAKsigt)ocCtj}7E;@N|UGIT$Mi5Kzv*9PtpM@P- zvybgdd%dF+k$&7Rw#WIdokRx?&%TWN^b>*IeT2t`;FYVO*}fU+Dp@RcB4zrVD8%fw z`?ae+N9<2)aD}46^YiNBgB^86we#W)t+@ynvdFAcTh_G+2rARtTK08@ZTU=Tf|5qf zE~tlRaVIIL`PwpKNKjIwmF8*zwGxHv}JZ6%$uEE|PH6YXDtXOf9-N0sR zNrq%HQ=D_}i;)(FhiCppgjfYQYvFMQ#QxC&SEf>gud&Cq2^}YSo%1Boq|>@zG^dik zXj`*%-FqdiTplng(Y5xP-O_U0*8SQY*|OsL+F)73w{E)5PNbxYGb^yww>4#FBU;&r!@J75B9M!cWYJO(;vo)QtdtjtmE z`mHl;$0eE6n=HJgw9;Ht+YEw6l)9PfnPFU>AI3%<>~9@pU6 zH;T<#pNEUaGMl>l2sh*iFZJ98OzrxuZ+MT_pLRj?|8iD=t(gnL2B{2wYem6=5H~==vnYk&4QBfqz`? za1RxhegCz`J0;G-HC!Rq!w0`n$ugIy=sbinWGQYqEo|Xrvy3{KH#FToXMR(qoVWSB z#LF2m?CIX%vWQmwHWN%w>bd!B!!pJ0goPk`xB_V)s$MfELb!Zi;~d#~y5cbL%aw#5 z2^AqVP&UWG=dZ>B>I=q~j(-w8I?#V?LVcbg?A5{ZVT@jE_enGfIl+@mbjBPsOFzdZ6)(^n&0I#-9lgJt18sWv`o9HKyQ>HvuG>z zD1r?o-hk50xYE)+=B2Rim#J$TccY9F$({MO35OW3XqIdQ3h))KerS|CkmAoXO0Ust6n5nie zJo7|o>b|6e?qi*7;lprn3oi%J18WU#QDGR&8Bjj=q(!_rC0|XpxBF#1htZVPi-}1c z4_}W9BP%1lA9~wguk~JNTkGMkR+JqXFgg>U1XuDy5FQmx3y=7GoJQG{K20pq)YPg~ zKA(o7k2gy7iek%B{!Cf4$-UQdiOcA02r~oYT_>&JTesXdawALBB_w2uud}hkh9ZN+ z>2%sXReL@}M+oOM9C->{C*P{%{JTGn23PO>Eol0;_R-+#KMJm<9S0D||1Bdrnmyfb z+v5G)kB(+f_sucwx8fXa-+ymmN1MdXx%W+0c(h6Ef24igpW@ia3lO{k^R{CDG32{? zEHgzK1ASBb8#~LsYL1_FL6VNmKsJT;258U7ljDsc%RT@zZ}^tSZ`u5Q+}Xx#0lbm~ z*jFRd>%nMh(xlk{U_f{DFG7Lr>H&w?7`p*Pybt! zFatHvKjLrfdIr0ohj+hF{3ZZGR!T|I&$o+1JHZ5v^~?R!DMb72bK9&HOP$lJ4!P0Gx;^@Gb(<6T zT(%Ac0#kM)u^8sR=>!Rl1^@C(d9o(Dr>>O#fS-6ZH;qItRSwl_>z+A8xJS z9s3Y;w$pFzwZJ=2wZ?!8<#Y#fNq0XvrNeDopb+`)(;?t$dpGkN4!;AN>!Hg4^-FLF zFfwgtKvKjSD{?=rPo4s(v{ZmaW*5~D2&p<}WxIbNhe<<7taDjA!9M~nXoUWszIvhk zGyNCM%-se3Kw8~dZ`cJ5NSgg(+k`m=f{UFG2PEe3J!=kYLce94oVY|S4LAafKl2gI z0sh;}%U#e;)S?fCeI}M1xyDRl?AQe@rV6cB+y@kOfsbaH`2a9?TLKRGhT9Fz3;EUe zXbT(!vMrbO0KFw_3B0uR9K6v7_&WOUBQePUKQF&>#a)t|-Ur;M#{rzG#7Ssi1JGFI z4w(H%L_FFt|6itICvO0AUzZ`X3(A^6E}II1Z1gZ8RY!hncR=lQKRF4Q$X?b4TED~T zblZ|qQ)`;~!2SFdNCXCzoxir#&i%B&{GOSrQ!u?si2w)=J7#`RjnRchAbs+a*QuRc zS=9Vdh$?n<`{)himQW95ll~siBbmv3`OjwSXL3Pm&+7h$d$Py~X{xuSz%Z&_ak5qDMNYn&lC**jPFHk8)&2jh9SH9;0e@r^kL*;GB-82US<4NfofE;Q~9-o7l_0*IeHBk+y=}hX9GrdK^Xmj zzNrn103IaP2(=3$>_D)E5C^v%amWz}zGx6QZAySB64Q)yg6tgIK$6ci0`*3Z76dy5 zsRdK$?m(!=ZGcj64h3G~2!(9eU;%L$Y$EazvZ9$EIdC8hI6{CMRbvH8mOZq*@)tqe zPAa<+6cEJCrE)*mx(yUyfO!lsB9tKsDEE)z3drXdwt!Vrwj^*mtv#(%Jp~UD4`BTCGo8#n9Gg zw3R1qP5m<@goYN-5FQ$K1)y@5vueT1i)?QE2uI>=QyB+aaCpu34bgj*bZmx=RSo;* zVr2Yyum>)RTnp=z--^;#? zVwZL~5{zb25u$b>c~qF;rciG9I_6HmV=Pg!bYoGXtWhI-$uqL#%Z<8=&bD_iv>bW$ z@>%S4yE8w^;;0AlW?=#R@aoHWy+1| zE`zTkA95)E0EW_GAqQv9DntdG2q(Zx#d!m6-9EvZ+<)lOJ2m4rf4`34E6rLuTF_?H zGH!d$Cwulf`P$4G-t)}&+VCB$bP;7;J@?zN)xvgSBtIqZ3qhxC(o<>*)A>oM&4b#> za*os_^sg{c@GntXH2ZHrqQ8P^8)G*aFj+g2?f|ap-VJ%ZxeFSdVnKflY(rwvfS4x# zR>g0W?E`?W(?!yGUX>syb>gOwO+S-(c zDbVUk8W!{mvgN-~JsH4DooGIbua7}G>iD;*92woHV0HBRsKQYnYC2GH3jH+M*;-Jz z{JQodt{I0weY?0z_MAuk%8T;y;^YZnclffhu|5jgQBJQB=?w1eyJXQ z9n~@|S)QQ+g`USsBH}JLSKn-BiuFGG5-I)4{!ux7Cl+>zL;HBK?b>pm3D2TYna;)H zhlzd`rQ?HNv_9y)hx~fTAu6Ds_sA#}j9?{tOrzN>I_+`HM~JsiLQHBy<|ns=CE{^7 z^~=v|<1PJOnzOA&Xk1En_+hkqbbZU;G~?E)LYcaIiB`GuBNLQidLq^^0HQ~i&7RPhL;uajxC8G$5Nuv zvkNLmk?*=7)W<$r6acgj1ZL&BYL<{&3UIw$kXE_a8e~fj7+6jxUIgZJfMM7j`w_97 z^O)6bS+WL|_Y^RiWx~JR*#_QL;!&hZ@B-UqMmsjZ5YBcRHHJ3E{EZS5e`_51mw*3< zNK)hi6F%g5r24 zqW=M4P%QyA49u3fx{?((L3d=Xf z{Y?y&9?%~V94Z2aII&m=Mf6$4E8y30s;(FI5G5)B7^Y7#uK2jhjGi4OfQj(XU66@! z>;m{Ga`vP90`ZwYFuGf-w|FN)xMG2IN8!&nFZ)NF^Djgg{zy><-q^3v?lFb)_q@aZ z5wC^d|F-b|DU{6S04N3+0f__Cirg{rfW`s8)|1m0TA4{)Kz13DD1r`5f{|SnI0&A= zOf4<~_o)DRrt1y1pWyz5TIQ5BxXES!?GxH?|FaFN{!!=qbNz!qOb+1!@7G9oZs+VD zao7LR#!YaZ&uoCsI8<0uyJZJtU7}6`&$zX?8HPGOY|P<6I49&gV&@Z&S|j z`*j};GObFS6G*&1Y@9zs7f?3)TZTuG2*4p`bnMVOXpsh zDtI#=dmYIph7^04YE%6KwEjwKzX7tYhC@E9H1Szv=s6Y6*A6K+y%QZ=?{G#S1~Jz^ zPIlMv=H+q-PXRblw3b(+le(lYrcoo=L&ci0^Gxv^!Zw6~rpRXrR zS@4>V`*@XTcwHDuMzjWUW>W*HC*aAX4kWWO9gbr75@wMSfjEh+U~%GhG-tmh=~Kqt zWAMC2Eh*JLhVHYCLQrQvOL2H$Pm{)5g4y2riPIrHm5R}~PF|bY#&(4iDfTnl9F5jA zEb7;#hpC&Ih$v!GrFBrtb4Ihz%wnoC#oOi;Zat5YPJGIfu+TOXWE+;P*q!b)G+QKp zaPGu&A7h~&;acAne!W^?#e<8j{a0V`{L{UE8l3Yzcr#*?q#n@Me3X)-%sqCzj^ipp zFu9(CmxW+;He6EX{C1pgyQn?)7Y(#ywvLgmgUMt57~G-2t+6qjWVT~@<3R{lvfWuC z`M{k=w`{m`iqvc6VXE5dslHL!!u9lt^C$6#xAc!jI|hr(XkeKcyrN*R9; z-Eb1?@VM=4;=t9R30M;-^rg>mwHl;fA6<(k$YWEY0$AXk#&}4KO#P5-nbcaTyrx~z zyH|bUvMz$lIpUum-zn^ObB`!3t+KT0bn`pV-UumzR6$GAJy_bx(Nox%ejmSP`s(ue7+x!xay`=;Fn({`foJ>tKVaa~!-Z zPEWMgR*xYA3nOW&XCzs$8|s_KSj|rWZp00CVVG{c_@(HZxQ}L8>!!|04$W)}PkTL! zhTCsED$eYaF7nlC5}cT{epGmx^ZF@Xm@R=NVxhWBO+<9#6bYbze+%-aQ64Z7z(<%` z#v<_=oxMJ#&fL0XSU?_(4qjz;&iccmlJ$UQjgH^MW1$ySfhGyMBiCwDoT&sKDG(;Bhzgw(h?@+&DRwWTzh;epcfPBU|moz-7U!Q&L zekKIA=gK=?Di=1rpMSbs;FSm4h}DgS%u9zqzQAxX>RM`La-&Yv+FRHxoLLbzHVi7o zy>Dro&`EY^bjJ8?@#dl)1bHgrMs5t_y)ZXrovy>)R>4S|Br?9yL8rrG&=iu3j?Oxv z%#P=8F$<6a?A^bt)Lc07euny%AXqk+5~?$F-D@L$jnMhNhU7BJ!9*=rM5aT(KE;_Z z)lnZH{hv>nrFP*b6XrR9r`URJ_yfrfHZ0-$mt=?gnjHxhok;Ev#Ge1mjtL|o%pJW) zU$bLy|G=sw&)ow3h7TU@Q%f_EpY`6AY>6UIsH70QaP!FnL^-(#Qme|*=CBfC?VE7% z&5WCqKXM_?mhMkBH567kb?WA0iJp4BbwL{Z6lTbVxzKjlY&KCHfqe&^3>PN~snJD|^Qe89xu-V;U;Xd0vdazDVwrykDZSlP*4%*Pje zS#6IA3-ACFkmxxx;UyvV+CHXJJ3dh{JFrDn=S_>gi+|#(>z#xedz%+p zJ~xx&3b?%&sf5-E@f7!bOP(VKl{X!FlwIXKw3?-#N2f11uNg+q7V7J?MxA(TB4mhC z1=fbCDvAF;mu-K>*QSAAe;>@wzTUsWMN%X}w!-jUA5+H!ALCr4gwk4V#6u3mlP)*M zT|E1Gk9yO9n>oLZwvHdWy@__DZ{QAt^P}dFiu-67^LXb==;44VtlJ(+B<@g~0%F`R zxBi(l+zex;ooHLOBv*BCSkh(oRl?=L{A0PDvd!6rFr#9Dtcw^Tis{w~QZ9OCB1pl&Jca8cWtWU~TM6XDTD zRJe<^5oR!SwfH)#miLDPD~jFrm{0ZTA|0(zQi`}0Y$tWTbwsnhGNq$@8Q>x zTbsYE|Wf*wF-U z7kOLdV$yoCu2A$?hSJe^6E^4J!i5Q-<+*LX^W^u(5!gU~_Sd9gvfn4=Efz?OCO}@I z=^7P1a1~%;L?>qK^7(kd2G1|4(XUiL+2t+b!zF#rZ?he@v=kP6sLl)9@2(+Gv<6-| zMS>F8(*>TiD>3tnk_e9SS`xYZawUq39% zB%|aivDc~_k%#soypUl zp3nM{MBlg?kY7Y9>-4NS#rH^SIiK&FgV=E!D;8tVj^u3{i}pn?gq7zH2NZ=M$ldxS zrcr}Y&1sZ8h@0Ci-0_Ljp$TkZ0mE&M>j?? z8e&Q68ubIywvs#cy|0<qfdpfUCD_MxQ2@m9v1NEJrU)* zSN!Av2qgBgI`(Ll4QEULDFEI&q)IOzjldaiV?~QRyUV~%8CQJ*-j(WnR1+v1EK_Ug zoL@sSdzA}yTvC}KTl+Ow7)yr@&!*;2$-qpvObhO3PcekdRS1rk8AhAPN}eK~#|vRA zUN(Uo13+)=s*~Y3?q;WMnI3z6JHpOXt_%ztg zL(pU#$b0iTmaS4NQoyjCFEL(`-`!wfILZ4blf;KF1JzU_$a?Hi?RJ&y9`M&{w@gKA zwwG{X!%14TrzedPJa20XmyC%Bw+qBWZnaM1pYh0^;bmslU>6s@Em>)0wH z?&Im-RWBkp?l3RE0?>>06Yx_}%~QD5K&UMq83BIX@B)9U%@VF*k&@z(S0%>GIMwqi zX1~T86jD^mE$>t&0WC^~;E>VaYUVbv*r%Em2o*w1ih%plj$HOW@%$pk_;aW0iVAel zdZRLtan0J=NgT&Nm)DP3k7=EH4qcLK^q=8)nH7RQDYGw|xC^=%vv!R?5ynkPNrB-m z95g?8bxgOAKmJPMGjqYp2JH;#m3T;=I18G7j?#*=q?Y#f#3 zG7r8O{Zhk<5+V#3rWaSF?SgLZg2wA#f;p)zSR^+k7P!XS%p0Ha)igX4!N#&o#Iqou z%APOiEt_i#^1E}q=!fT$0=IYWey;c-E@71$Ah0>2-(hfOFa2CMd#<4f6_}*BRLSEo z(|Cqx!Q*ZpI&o#ItX??Mjd*{W zGwL?px=SIggZD(8KKsF}yFPpp^|pJX1XGIp5-w+2-Bv=OYUmt<3Nnc-?+SHbS4vN<}-RAYRtXsuz!wfu&s3Vm7wB-s=0d47Hz;ff)8k>-cMwxZJ>-rKf} zL+>rlMQ_^~ap=YaM8%}030LOK#O4n&iAz~c!)8qQb)4CKswmNOv^`)Cfju;=#yO*S z$l{9We8+Uo3!t!IJ-q7uf|!)p<#2aDYjM?;qwNB&A9@2MZGvyfIz2+DaVLrmq!pM( zJ8ETEctzG^8>SB?3S<)Eb-*=mDgbNvOnzq5j63X4iVe%uJ&LsQ1S+_OiVn^w)YjyT z*{ZRbs%NVK)@HQ-zt3mzkCNiuxbwBw*#Gh6zg}OFcw*}zr4exeAG$(4jt9SM{sD0* zw6{L>y#E8CV1%r9gF5$QuJaErs#}v+!)0_tZAF#6ESI=Ll9X~Zmu9yGVOe&k?sq@+ z@qmY$_rzIbaN6{h^VO8;2A{6Kps6PB*qQ1o6=3R-G3R&W2z+^zLz^x%df4y7l4(YH zk?qHhO|cRGHKV9hv&4p+E3PrS`kg?I4OM4W6-O5?DrDu?As zA-y0?|Dvf^PpZb=Uz71w#u zW0rCzA!UUYS9b@qxMzu(oc1D?uGsz)Tdt!P1G;-FHikPc6kucf?JJ7 z+Y&+}SbG|3@V5l4h#G1sp%+We700qd+h4{Xy8I>wDR<7T)tKxDJb#TwWw`BD9DE@%#oKwq|;w z=b)H2uGe(%l1GVZ8R->S4Al^#V?O?97gTe@|1R&rV?bZsYU1Tv>3~JVNg^wLblT>g z3csw~A7O^)+n7$aK589grP4jTzT|k%_8h_GTGPg)tw0{Ka zd4K+V2fR2rs?x_KVLmllSkuceSF=HWM~@DFM7uR{#xxpIJ|81j@)&mt>{MPRYzrd| zv>M(ix!7Hrv+eY@FdnFb#IXI({@Rq`I%Ck!_OO>*hw&9bo2{@)?Tn#_CV#yAfs-dS z&D0N=Ycd`dFq_x=&e}lNvBHfH$1@cw70H!|TL?{?Gbw@~nZkptDVc%~zKCK>6JW*# zzM@72=QZJvSDEd3G#l6rKM>-TtcHV*jq&b$GYts>f^V0<(${LEbfBVoT*Z68+nM}t>>u9f&07jo6bRQ2 zj(0wh*f1pVo}Xl&^fFqGdYn3d{95M(On`&?>Y1q*vF#QX zTzP}maG>s$e>SjS$FXBy`}&g|c!kYN_Xt5XTA9~Fi;IIzSQL)1mgl5ghgnEvTOcai zja=Wp#HCiSO`NU0vHb}g`L>(b*}5|#<)>!8&?qs#bp32CTh_?*hdI#=+uk#$FPAqr z1vk;vpdwK0U00}4A1hkG@6lU3gwEFfr*I=2be#GF{2>3yMh;J1K|*NAO5%Zw1yj~n zBFoH~JWpT6zBoqSU3nngYO z%*~bF(DJt%&gOM_i&~`|=P72v&qf7s&qb!4{dv6kd&7D>j!3l|);6FH1X!uDZI!7n z3bC8YrF2seq?nspw3CK-Aru;?X%&WSc?6eBz>NZFb0$>GbCMaI5t4b11Ev6NyL(TtBNP zIW@29b$n{ydV}7(j-(?_&#ubCR7~irbNz5)MYZ5!+boE5qUcDjOs-`9E(k!S$2*b7 z0aO|q3M^uf_#HRtN#76;j>tyMTklP|>#|||5(#!nwl@Yg9*@6PPd!1=GpI{jCg73P z1CM)1kMF2*t)5t``2JK*&2{c<{=R%%+d3(P zdunW|*Uo0+7e5mFG`*yQoscN}LPE26a$X6rpv*EED`Cf*dIZ5BUGM@7qnzA}J_Q@} z7O#(1z~tFn5&f3Y(%Sh4xv**HCZzvGB}3#%c9HJlZSIJx7d9T3yjd$##lo$XU~HE0|nbqvKK`0Mym3NJ^B-X~d!A zRjb+vC^uQroGXWLGYR&?vq9UNl!*Y*!8g5v@t@j|V^U2WvFAC_L*nHQmYft0;IPe& z9{B2IUN&M15KzK+_k?x29hgW6Z?wg}u-~H(`!Z_C_v!Xg;a1q4(nT4~xlX%c3(Fsq zJ@5FfhP)5(c;L4S0$pFUdzz$Jpji23rV>OQ^~SY-it!IC`HQ;9n;&3+ABkvx<#Z9YVK3t)oGX* z#ch5x#h4a_wiy(uHgP@oaeNz8G*Y1OLW^CbS435Fl}liNq(i^qAp^sm-Gq&1ThOCK zhaI>Ri&eD<8A=ab&qZ2liRT09`G(WKV~+kK&xuwK{7?D+KmYdkv|}^N_2O?n-je3z zDLG`u5tfwRz+N;EybJ)kTEia=Exm>ljc!Nz<Gkk_`Uw6(BV!T; z8(T`|jdC+=GDDwM=tB8vC(|23Z4m0jtZ8V_B+oN~Su9!24!gp4vWwNK!M|61_LNWM zpf~Yy%JU3z1cP{4BI^}?W|=?*{&-`u+TVfiuM0Nd0NY2Pdn?SekqV#^5N@YI8Ks*^ z_6(YC1r{8PZ+C8Hfns&v)c9M4yXG@EJJ5$V4ZAW%U+4)arS<|6lV4Ma{4%cuaeNER z3C~u3k*0UBRjohB+Z^uAU9D6|kR@Bu{ot)bFSKqaxAXk4B*)fkp(F0GA@A;(XR%!u zao{576l0}#3`}fwbBH!4n2b`=l3}}``WX`?4-eg7C7*aBvK~hp0*ce+D>rW?-f2+( zF>mquI(?OQfnnO9HhXwMZ%^;Rtl_h|D06ikvm(PtSMc8N?OS|KX_>kYVG20#ao;8U z!3QVPt2>X5Y?7uVR@?4uR7Qo@y6AWE#20!FUb4HDJZ7J(oMl&4e@tc7<{SDJBAeUw z$2~s#w)>pct)Zflifoe2L(-cPsv8|5iX3}5Ow3hag@ZvUvZ69+3CKKr7HGCnL|4{v zXy>!zj8j7V)|$krUZNLgo0MZy>SyGLqM?{SV0&r(^KT#}ZrCrZhyCM7%*zh%${ zmk;cH`moK&%-gBLi!~$-+6M3+G7~qa5(NJakxyvl^$-_<|_~cU1ri4XmVe1Bfg3xQzO%!D zbz9;13oykjKH1>R)+|f(tU9NL>lGcm=#kgjOL|5&L1m}voE{AWfGIowXx`gW$b3ty zzB(!DfQHQUDx2_7%K}?=oQG;)L1_DsN9u1+|eg*?giVf4GVTC%+V5_m#r%&%J-=t|>D>kr7jQ!XbL1y_1 zqqtS@AkF|VippsU8h7a4b*b?dUjdvOC*1Y@kH*}0H;2QXe+Z&Kn`%>{q;t&AEh1Nc3iD&zVN`I5|5}IZ#Jf8yZtAsZPP&Q3EnesmxMj4b zu2@dy!TQQhRpob4^+#uTOvEfx_08tm4D_6aUE@7W?6lnCd}R#O5cfA*XkCTx?<&wb z2@(JEgitvHPQGmyw3jT1pX-chMB>E2%&?=MucXfPOghP*VknDAC}#0_76kJ?VyhvQLkX&e}z;8GUDmY}-NzTG@wzR!uH zZtaF<4$O$oU?z1+e^{nyc>WAhPu9bHyI7*Nfx3q_1?2Yn269Tx(S0 zEQjePidk?v9ii*_1W)Sfo>4L`x!9nw_W2A!Ub3rL`%ITe>FW7JN)$|gz9b01cIWg< zl;kt{o~Ie?Q`aoYRutaRVADO^v<;hZQP2(HB^)02nND{<`=A+<^uDqAj^M z$+pDlc)awY+`0VYI$+I=#x__sdU*2$thpb2h@=$I0Y28OtPLx-R+9{D=BbGoBvzZ$ zJe+WPQxdQSpjozl1;gkDUMKPwxRbvNMq3XF|0;oLxBY=}$^y za$}lnt(L6uaAWB7>emMO-il zQXZ&8NF4fCqaA$u-_Q<#F(Ml6fJQs`{^a_vTA0v^g8#NCpwS3uG=hIW8o^)b1mF6T zMmwO<4rsK4zi)Ktk8A<_p2woK6aKSh@L%)_X*2>Fjo{yvM(|5o!Qa}Z(GF;|0~+n% z_sqHf%&$eO2Yyx$&}alS8o@8dAOC%61fc)r91x9mK%*VdXa|3yK}cFB;s16LXfy&E zjo?p5BluRj!CxOoqaA!zJD|}HXle)l)=CMqq9B4sBcRa;Xf%Rvr5pV9aWvWijdnnz z9sGOK4*uNj1R9NiMkAon2%h{($>48M4!-`KMmwO<4rsK4e`cz{_q?}1X+1!r5zuG^ zG#bJGl3wuN(Gh600~+msMmzX7q#gX}Itery0gXmLqY>nMpBKnqX$HUiNuwRmXa_Wt zh3}^vuxAx6jhV*MPb}?ZW}(Kb!`|LiUmNQ<{xI;ev-s<{Q=WTHU2^?_HNqn*Z`h7Q zMBbh=fBbH|MV*MInxbZ5yVIOty!Hz>wRIWcVvB%+0;jjF>srHSYR{|tM!VLK3MIuO zvoTLH$29pQLPPc68@22$A2=;s&n3hqK1+POVWeTCnPKE}=jYDqO#ptF zclLK$Jp6Zyif`KgC-M$QF#R2h$eW&s1eyNIhcD-@DLrevTsrrvOgBo>!HmViv_Lg} zJTosRt;Vibo)aym(6`nYdPw=Ub0jJV)3K!dc~eYx)cEO!-JPVRrfrc99kFh!r-t!6 z>)$Ecgp&k}pZwvgxc+gn7=CpH&^Drib>=Pm@O^v)-*E9XK=poDT)=+tmc!LEsVWKQ z{lbPWA&ZvehVEuU9?SN#AZ}9fn@|1dmN!a0MI17X%N~*`5w_62tMumC&H5o3;{H3g zgLB7bwSCT7S}GV{_?+v01NPZ+(_zbP7ZeC5y0xHxBKUSpJtbn=>EN7KaMPOmavTjHX(oi?%}l9J?7^%3wqZy$?q# z{+&~L<3zO{1@r~%sn6Ob@yk6uOZv+7u{X0akspMuRZWm+3muVv5O*k4`Yi62wwubT%D{{f)$(*SHqSo11Q@}ut z9ltPf;Cnol|A6N(CJQe_T)7!77;*!SiZC|kOBP|vi|aZO7!#9MlDoGwFJ%8Qv2~%X zhyQUgbwJ$+zAchZiI8^Yd8-dZx$EMM{AJob&j!ueLqpu=W;OQme>6lVan=tW?T1el z$e7i~c^q-WJZg{X_VB{=t`!ewp+nkQC8+(Z7fFDymu5||(TgOJp^Uu7t6xH^V)$Dc zkGlkg@TI=UHSvFxE;B|I1hmgL3UZ#C1z%2dYISdfuFU}kOsr%_%AVO997-p8kT@bjPn(;&6)tL|65+dUO2 z%7a#_ED4MOWXzIthvJ>iGfHpC4tdfQxC*&uzexyUax z22YoK`#9v0WcF9I}TP>#CilbC@ zPphXP8Ia%U0ksvOSa1lQt)9uOfMSe{U}INSkw}XQsFW$=d{d@!4Odj}{F8@{S%fR6 zMHON*w*8Ym!VY`a=}}`&>G~vxmyZ;uMTFiG-gPbM&e{3oV>xC}o7TyoF~fGlh}k@( zy0_VM?D7=pE_?>-@J?BTAPK~$qsseOVkQ|HgjnGi%&(2rp-dOZv<8*Am(M~ZeU&NqfHm&``ntW z)qSJ7IgoC|T;TBaczL&OVnJYaGh69frP%tHeTZj>o+GF;;+9j%=WfqqMxF1-mW~^G zqf8kxs3olv&hZ}BY^_c?xZ8#NfC0X2VgU6%CIE~x7@!gd!_S+)z>_+Seygqu8^Q@)sSlk?Wh zAs!cct{WwT1xiVag>QG>a%WxmXo3>6;LP zGNQx5O0qnK6f;(%_>o1E2wnG}v^qf_{eejen2Fus7wT#KZt=Tdne&&2MW z=4IOjwQN=Ff?kd6*xQj50{U0&Z?58vu+Hbl#$Qy!IWR%hGFQyQseQBYnnDdFP<$`C zdX>Tg3C<#_5`namG%`#~!0aE}1sPP{kweegS{6|H(j!C2dN9c50$s5lRc+(WE@&cd z?aMNXER8|&lcBw!xUE3+gX@4csp9Fo$;oXO`FAT45{*d;uz-Gsp1C57ZPv{oyrAa6s>Ky~veDuL6YFK$#CoTvgokl?Ji`dEI>J zsO#B@arm{RPK=bFuHm&GtofJgMvr2AT=vULg~v|dZ~L}xUpOcVv*E-UYIkPtE~qdiNNgj&ioihC)&(33 zpRQ6cS4J^Y+k8ZS>PzGoS$!Zb%;;79?(yJfL%RP(xZ{7?Ur-3#b1Eci<7ecC_DJ{7 zH!sb^5_7k69Prv?Y4T%o_~@n`-j}M$(b`WE;yttr8g|gGm{UTRfFGdOt~4J^OV2`u?{=vhT-XCHP&nBr{ z`l>Sy-h(&=_=q+h+L8sj1`OH&L)`rxhw|CCFWqB^qo#&`4k(9*Z40+n@DVi`{7; z)gWc)t7z-W3_21JZLPqd>&Xz}UHQju=P?SA?UMp^w@R2S^=sl%G%GXCRypomU76?C zVWJikj_Yi}iIDe0TW5($1e~Rg=aLA59Y2?6n$n(HmKQQ(8f^I`j%cRs#h6-MFSQGD ze6_Ws%y@bibhV-3e(4R;r|&HO^9R&;STq==^3Jw~vl(2DT`NoZw26edN$!eKQB1`+dwA2~yd-Xu!eampElwvhY4h4g}j(nhyizcg7Nr#wCH5_Fka?7)_tOOcHF1fpg12j3po_WNoAI`1KhGtz(N)9?G|Q*K4r#%W+Dkm1TG>6COwm=Au;i$o z8%g$l05Z8 zGleY91KyA}5ec)%!w#l>j4^{UHWk{cjSbSa_X0w%P zGWAXsSevOF5f^`=t$0EC3+5JDp`~#bbWh5=@|{-tP^QU>o3PfzU_o$^Npa#*yKL|M z4o}nA_l4uZ{5`K4HD603EM6&)=*;#-7W5pxnb|#%?$*Qo=(%@7fnj>t=NWgz25M_D zufUk{Ip>*MXx6btW`Y?exmgU)99F8VmTR?QnmVXjFDHM1eXP^?=_3t))Kpt(zV`W# zKV+E1{}>{|fBUmD;m(GbZHX}kCp?^O6ZJu<##z;PX(-(qMV~mIm@V)nD&CQjAACn4 zRffQMr{>d}vIB-mPUoVvOirDK_hnp>=V~uQ9UlUca+U1wo|&mP(YL_cim_3UEm<@* ztyFBszGB{at7R9I@Q4Vk_UtToL5t5@(Lko9YVnLx+XjK;y39rFj7G2N*+aJ!W2sMO zm=_&%cR>&D#!~#okslLFl88M(;d|gJVgJ!fAfkNk(-2`CBf{Yh!{GsaDKI{khc#-Z zRvQ3!3<=B>ma-FoiP!m6s)O?a3Twurs9Bnykq$`Y$0b{i?1J7wH{G-;YzUKSd(MKi z;pdtVqRwj)^4%$tm{ori*`xq|qE$tRkomN_ISH$C$b@htC%I_eswp|nUY62*kxP{K zX2ij3!w(sb((P@wqQs+}fRzc%htMY9%oN#b)_lZeufdkJ?WVsa$r|qTDoeRe?pTY5 zi$t8n=Gt7$m4&EKb#D7ic0s-Tc=^d0N5c~JJWBL6!}1Z)ngt~Z zFU)Y{10$H0re=OB6nd}M{r$XQ^_c_~`r%6BN`?bAWun82BqyU1)lHa50e$z;HlxIw z>8y#@CtTAl$*Kgil}?f#*=h8%w`5=@ZzFy()75O*!r_7Pd7%ih@ms@KKK^oN4pWP$ zqi&CCIzC+;l2Is2JR_|q-6H;)yfWGfB?>pKW|d4>kzqG8CUHMzvA?Bzpg3uIQUc7? zE_3)rC3{&@x<~61H8$Ze7NmP49e%w9!dSxqWrQnI%)$cVcg8LhhG zo2EbFX64X}9{yauT5#RMIh-@zUx~7Z7@IN|zr`cp^8N_xK8A~WQkWi&m^M{8gN!@F zONJ>mFu4(}cll{lfwGDP0)FP~>)aJ$LX_9CjZy$PI~ive^b)%uZcoovY*@mve>tH* z<8UgpHKu2K18=rc1bC`46O=P~h`~O^#47RQ@LRS0hY;$4j#I)^@b@2Q zs5QK7_S|P#{zr}!yT5zJz3-jz-ewF2V~wn2z+$cM_cP~b&iP?D zFZ3y}T|b6TmpC*0A@@#8ctD!{{4(WceAyzHOh+_N3jn3qxPlo1*lWjqsb^+3Ia$Nr zN!0#MWiA5~Sed>8U$pDfywvpuWE0xk5Efbq^2~7l6pY~Iwr*cl3>J6Nk8q#J zak!~x9xqy3vag9in)`3*6dDt00v#bINcaytX11R|@~|2Ge?{g)~w`vR~71 z=b?oReYS&c@<@6r+Qf^CyUx5tm&|Dz@5`zzH)#LyG30RSfCp!AqC$7;f@->B{etSW z+Ossf9dqq6k5;U`!qxC@WezhXBWRf%_hW>J7FUpQK)#xbP(N3LRjcKqvlpC2hBo9{ z{Y`OJ1-3A=1M8%+%7&~T0oD)lXwv1(MA}SaR?`qF$N>qtKuV7L{vw4s?ShJb4+lF> z$SR_I`iUBkA=d-{A0(_-g#^GPr@~@j-mH??DoF8yDtY#I0P+B%bxtEbsKPs8C-?k- zy8l}K1yyl_6O3~69q>^GJ-kPNuHpO%<}Mg1cLER(S6YF03N0s|iM~mse6goTjb`J$HLr9a2EFI+xj>!gc*by9br<^Adf0To%1A>3gz?)l=@SNqxCB*72J zX98LY?(ZHOjux3}KeUDO56Eo4xUXb>yF!XVOvzWw1VJ-B(P^GmJX}z>RxDh&!+xOG zE!8(DgF)SG8{)~rZ#dj1HYKXG=!~H!#2>ORAm5-ubbL~D_A|tp3tBOxc%s@j>`jc4 z4<5x!is|W?d7_dm*ywwl75|s|mQ%q7;e%9w$_X>8jg7G2N6kBsE3dTpi%GG6H*OYG zNHsvYNljKcg8`dv)L2mZ0Y)YoV~5v$*;hG%rqSl`&*m7T5lk!?TyT^fUfg^WU%Tj% zxT^P`A5~%X_ZXU`JXJ1&_YaUAv3^_iK2bd=P(JTgcr5(JdNpBP?qz@x-ksFI_{Vw{ zv%zY&=b=Bnz0}SpeQq4@t;%0Ds=}SdgEA)?X6??uzLd1*Y7j8;oJCR!;$y&ko9+^S zJU*A&e~Z6}lqVHU!gl6p*w#c44t?X^YmauVvb@;PM=BJgi!m8wXJp+{`}#arr#dbR zWsGEzPnQ#9FEKFuVXAS->L*A2>

    Va57{{i@I{ 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