From 6e967f507dc429b1456e3deb92233c7f2c08c0dd Mon Sep 17 00:00:00 2001 From: SparkSnail Date: Mon, 21 Sep 2020 10:35:05 +0800 Subject: [PATCH 1/6] Support saving search space in experiment load&save command (#2886) --- docs/en_US/Tutorial/Nnictl.md | 1 + tools/nni_cmd/nnictl.py | 2 ++ tools/nni_cmd/nnictl_utils.py | 43 +++++++++++++++++++++++++++++++++-- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/docs/en_US/Tutorial/Nnictl.md b/docs/en_US/Tutorial/Nnictl.md index 28084494a3..edb25afacd 100644 --- a/docs/en_US/Tutorial/Nnictl.md +++ b/docs/en_US/Tutorial/Nnictl.md @@ -578,6 +578,7 @@ Debug mode will disable version check function in Trialkeeper. |--path, -p| True| |the file path of nni package| |--codeDir, -c| True| |the path of codeDir for loaded experiment, this path will also put the code in the loaded experiment package| |--logDir, -l| False| |the path of logDir for loaded experiment| + |--searchSpacePath, -s| True| |the path of search space file for loaded experiment, this path contains file name. Default in $codeDir/search_space.json| * Examples diff --git a/tools/nni_cmd/nnictl.py b/tools/nni_cmd/nnictl.py index 213554d5e8..cc5d4cdd11 100644 --- a/tools/nni_cmd/nnictl.py +++ b/tools/nni_cmd/nnictl.py @@ -159,6 +159,8 @@ def parse_args(): parser_load_experiment.add_argument('--codeDir', '-c', required=True, help='the path of codeDir for loaded experiment, \ this path will also put the code in the loaded experiment package') parser_load_experiment.add_argument('--logDir', '-l', required=False, help='the path of logDir for loaded experiment') + parser_load_experiment.add_argument('--searchSpacePath', '-s', required=False, help='the path of search space file for \ + loaded experiment, this path contains file name. Default in $codeDir/search_space.json') parser_load_experiment.set_defaults(func=load_experiment) #parse platform command diff --git a/tools/nni_cmd/nnictl_utils.py b/tools/nni_cmd/nnictl_utils.py index 3833c9317f..e59c293e2a 100644 --- a/tools/nni_cmd/nnictl_utils.py +++ b/tools/nni_cmd/nnictl_utils.py @@ -827,7 +827,18 @@ def save_experiment(args): temp_code_dir = os.path.join(temp_root_dir, 'code') shutil.copytree(nni_config.get_config('experimentConfig')['trial']['codeDir'], temp_code_dir) - # Step4. Archive folder + # Step4. Copy searchSpace file + search_space_path = nni_config.get_config('experimentConfig').get('searchSpacePath') + if search_space_path: + if not os.path.exists(search_space_path): + print_warning('search space %s does not exist!' % search_space_path) + else: + temp_search_space_dir = os.path.join(temp_root_dir, 'searchSpace') + os.makedirs(temp_search_space_dir, exist_ok=True) + search_space_name = os.path.basename(search_space_path) + shutil.copyfile(search_space_path, os.path.join(temp_search_space_dir, search_space_name)) + + # Step5. Archive folder zip_package_name = 'nni_experiment_%s' % args.id if args.path: os.makedirs(args.path, exist_ok=True) @@ -844,6 +855,9 @@ def load_experiment(args): if not os.path.exists(args.path): print_error('file path %s does not exist!' % args.path) exit(1) + if args.searchSpacePath and os.path.isdir(args.searchSpacePath): + print_error('search space path should be a full path with filename, not a directory!') + exit(1) temp_root_dir = generate_temp_dir() shutil.unpack_archive(package_path, temp_root_dir) print_normal('Loading...') @@ -929,7 +943,32 @@ def load_experiment(args): else: shutil.copy(src_path, target_path) - # Step5. Create experiment metadata + # Step5. Copy searchSpace file + archive_search_space_dir = os.path.join(temp_root_dir, 'searchSpace') + if args.searchSpacePath: + target_path = os.path.expanduser(args.searchSpacePath) + else: + # set default path to codeDir + target_path = os.path.join(codeDir, 'search_space.json') + if not os.path.isabs(target_path): + target_path = os.path.join(os.getcwd(), target_path) + print_normal('Expand search space path to %s' % target_path) + nnictl_exp_config['searchSpacePath'] = target_path + # if the path already has a search space file, use the original one, otherwise use archived one + if not os.path.isfile(target_path): + if len(os.listdir(archive_search_space_dir)) == 0: + print_error('Archive file does not contain search space file!') + exit(1) + else: + for file in os.listdir(archive_search_space_dir): + source_path = os.path.join(archive_search_space_dir, file) + os.makedirs(os.path.dirname(target_path), exist_ok=True) + shutil.copyfile(source_path, target_path) + break + elif not args.searchSpacePath: + print_warning('%s exist, will not load search_space file' % target_path) + + # Step6. Create experiment metadata nni_config.set_config('experimentConfig', nnictl_exp_config) experiment_config.add_experiment(experiment_id, experiment_metadata.get('port'), From 36042435ff2eac9291b160637b6bbb38e0c63af5 Mon Sep 17 00:00:00 2001 From: Yuge Zhang Date: Mon, 21 Sep 2020 11:56:07 +0800 Subject: [PATCH 2/6] Fix eslint for json_utils.ts (#2911) --- src/webui/src/static/json_util.ts | 52 ++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/src/webui/src/static/json_util.ts b/src/webui/src/static/json_util.ts index 91f5a31a21..0475096661 100644 --- a/src/webui/src/static/json_util.ts +++ b/src/webui/src/static/json_util.ts @@ -29,8 +29,7 @@ function batchFormat( width: number, keyOrKeys?: string | string[] ): string[] { - - let keys: string[]; // dict key as prefix string + let keys: string[]; // dict key as prefix string if (keyOrKeys === undefined) { keys = objects.map(() => ''); } else if (typeof keyOrKeys === 'string') { @@ -50,7 +49,7 @@ function batchFormat( const hasNested = nonNull.some(obj => detectNested(obj)); - if (!hasNested && lines.every(line => (line.length + curIndent.length < width))) { + if (!hasNested && lines.every(line => line.length + curIndent.length < width)) { return lines; } @@ -62,7 +61,15 @@ function batchFormat( if (obj === null) { return keys[i] + 'null'; } else { - return keys[i] + createBlock(curIndent, indent, '[]', obj.map(() => iter.next().value)); + return ( + keys[i] + + createBlock( + curIndent, + indent, + '[]', + obj.map(() => iter.next().value) + ) + ); } }); } @@ -79,10 +86,17 @@ function batchFormat( if (obj === null) { return keys[i] + 'null'; } else { - return keys[i] + createBlock(curIndent, indent, '{}', Object.keys(obj).map(() => iter.next().value)); + return ( + keys[i] + + createBlock( + curIndent, + indent, + '{}', + Object.keys(obj).map(() => iter.next().value) + ) + ); } }); - } else { // these objects look like class instances, so we will try to group their fields const uniqueKeys = new Set(childrenKeys); @@ -90,9 +104,11 @@ function batchFormat( for (const key of uniqueKeys) { const fields = nonNull.map(obj => obj[key]).filter(v => v !== undefined); let elements; - if (detectBatch(fields)) { // look like same field of class instances + if (detectBatch(fields)) { + // look like same field of class instances elements = batchFormat(fields, curIndent + indent, indent, width, key); - } else { // no idea what these are, fallback to format them independently + } else { + // no idea what these are, fallback to format them independently elements = fields.map(field => batchFormat([field], curIndent + indent, indent, width, key)); } iters.set(key, elements[Symbol.iterator]()); @@ -138,18 +154,18 @@ function detectBatch(objects: any[]): boolean { return sameType(concat(nonNull)); } - if (nonNull.every(obj => (typeof obj === 'object' && !Array.isArray(obj)))) { + if (nonNull.every(obj => typeof obj === 'object' && !Array.isArray(obj))) { const totalKeys = new Set(concat(nonNull.map(obj => Object.keys(obj)))).size; - const missKeys = nonNull.map(obj => (totalKeys - Object.keys(obj).length)); + const missKeys = nonNull.map(obj => totalKeys - Object.keys(obj).length); const missSum = missKeys.reduce((a, b) => a + b, 0); - return missSum < (totalKeys * nonNull.length) * batchThreshold; + return missSum < totalKeys * nonNull.length * batchThreshold; } return sameType(nonNull); } function detectNested(obj: any): boolean { - return typeof(obj) == 'object' && Object.values(obj).some(child => typeof(child) == 'object'); + return typeof obj == 'object' && Object.values(obj).some(child => typeof child == 'object'); } function concat(arrays: any[][]): any[] { @@ -168,7 +184,7 @@ function createBlock(curIndent: string, indent: string, brackets: string, elemen function sameType(objects: any[]): boolean { const nonNull = objects.filter(obj => obj !== undefined); - return nonNull.length > 0 ? nonNull.every(obj => (typeof obj === typeof nonNull[0])) : true; + return nonNull.length > 0 ? nonNull.every(obj => typeof obj === typeof nonNull[0]) : true; } function stringifySingleLine(obj: any): string { @@ -179,9 +195,15 @@ function stringifySingleLine(obj: any): string { } else if (typeof obj === 'string') { return `"${obj}"`; } else if (Array.isArray(obj)) { - return '[' + obj.map(x => stringifySingleLine(x)).join(', ') + ']' + return '[' + obj.map(x => stringifySingleLine(x)).join(', ') + ']'; } else { - return '{' + Object.keys(obj).map(key => `"${key}": ${stringifySingleLine(obj[key])}`).join(', ') + '}'; + return ( + '{' + + Object.keys(obj) + .map(key => `"${key}": ${stringifySingleLine(obj[key])}`) + .join(', ') + + '}' + ); } } From f892ed67aa3eaa1ee1ff4c12a94b2241c8a3788e Mon Sep 17 00:00:00 2001 From: J-shang <33053116+J-shang@users.noreply.github.com> Date: Mon, 21 Sep 2020 18:38:33 +0800 Subject: [PATCH 3/6] Add preCommand option to support configuring experimental environment by user (#2875) --- .../TrainingService/RemoteMachineMode.md | 76 +++++++++++++++++++ docs/en_US/Tutorial/ExperimentConfig.md | 15 ++++ examples/trials/mnist-tfv2/config_remote.yml | 32 ++++++++ .../rest_server/restValidationSchemas.ts | 3 +- .../remote_machine/extends/linuxCommands.ts | 10 ++- .../remote_machine/extends/windowsCommands.ts | 10 ++- .../remote_machine/osCommands.ts | 1 + .../remote_machine/remoteMachineData.ts | 1 + .../remote_machine/shellExecutor.ts | 5 ++ .../remote_machine/test/shellExecutor.test.ts | 25 ++++++ .../test/remoteMachineTrainingService.test.ts | 4 +- tools/nni_cmd/config_schema.py | 6 +- 12 files changed, 181 insertions(+), 7 deletions(-) create mode 100644 examples/trials/mnist-tfv2/config_remote.yml diff --git a/docs/en_US/TrainingService/RemoteMachineMode.md b/docs/en_US/TrainingService/RemoteMachineMode.md index bb8c9d5d67..f25aa364bc 100644 --- a/docs/en_US/TrainingService/RemoteMachineMode.md +++ b/docs/en_US/TrainingService/RemoteMachineMode.md @@ -107,3 +107,79 @@ Files in `codeDir` will be uploaded to remote machines automatically. You can ru ```bash nnictl create --config examples/trials/mnist-annotation/config_remote.yml ``` + +### Configure python environment + +By default, commands and scripts will be executed in the default environment in remote machine. If there are multiple python virtual environments in your remote machine, and you want to run experiments in a specific environment, then use __preCommand__ to specify a python environment on your remote machine. + +Use `examples/trials/mnist-tfv2` as the example. Below is content of `examples/trials/mnist-tfv2/config_remote.yml`: + +```yaml +authorName: default +experimentName: example_mnist +trialConcurrency: 1 +maxExecDuration: 1h +maxTrialNum: 10 +#choice: local, remote, pai +trainingServicePlatform: remote +searchSpacePath: search_space.json +#choice: true, false +useAnnotation: false +tuner: + #choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner + #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: ${replace_to_your_remote_machine_ip} + username: ${replace_to_your_remote_machine_username} + sshKeyPath: ${replace_to_your_remote_machine_sshKeyPath} + # Pre-command will be executed before the remote machine executes other commands. + # Below is an example of specifying python environment. + # If you want to execute multiple commands, please use "&&" to connect them. + # preCommand: source ${replace_to_absolute_path_recommended_here}/bin/activate + # preCommand: source ${replace_to_conda_path}/bin/activate ${replace_to_conda_env_name} + preCommand: export PATH=${replace_to_python_environment_path_in_your_remote_machine}:$PATH +``` + +The __preCommand__ will be executed before the remote machine executes other commands. So you can configure python environment path like this: + +```yaml +# Linux remote machine +preCommand: export PATH=${replace_to_python_environment_path_in_your_remote_machine}:$PATH +# Windows remote machine +preCommand: set path=${replace_to_python_environment_path_in_your_remote_machine};%path% +``` + +Or if you want to activate the `virtualenv` environment: + +```yaml +# Linux remote machine +preCommand: source ${replace_to_absolute_path_recommended_here}/bin/activate +# Windows remote machine +preCommand: ${replace_to_absolute_path_recommended_here}\\scripts\\activate +``` + +Or if you want to activate the `conda` environment: + +```yaml +# Linux remote machine +preCommand: source ${replace_to_conda_path}/bin/activate ${replace_to_conda_env_name} +# Windows remote machine +preCommand: call activate ${replace_to_conda_env_name} +``` + +If you want multiple commands to be executed, you can use `&&` to connect these commands: + +```yaml +preCommand: command1 && command2 && command3 +``` + +__Note__: Because __preCommand__ will execute before other commands each time, it is strongly not recommended to set __preCommand__ that will make changes to system, i.e. `mkdir` or `touch`. diff --git a/docs/en_US/Tutorial/ExperimentConfig.md b/docs/en_US/Tutorial/ExperimentConfig.md index 687e9980f6..0321154e58 100644 --- a/docs/en_US/Tutorial/ExperimentConfig.md +++ b/docs/en_US/Tutorial/ExperimentConfig.md @@ -58,6 +58,7 @@ This document describes the rules to write the config file, and provides some ex - [gpuIndices](#gpuindices-3) - [maxTrialNumPerGpu](#maxtrialnumpergpu-1) - [useActiveGpu](#useactivegpu-1) + - [preCommand](#preCommand) + [kubeflowConfig](#kubeflowconfig) - [operator](#operator) - [storage](#storage) @@ -583,6 +584,14 @@ Optional. Bool. Default: false. Used to specify whether to use a GPU if there is another process. By default, NNI will use the GPU only if there is no other active process in the GPU. If __useActiveGpu__ is set to true, NNI will use the GPU regardless of another processes. This field is not applicable for NNI on Windows. +#### preCommand + +Optional. String. + +Specifies the pre-command that will be executed before the remote machine executes other commands. Users can configure the experimental environment on remote machine by setting __preCommand__. If there are multiple commands need to execute, use `&&` to connect them, such as `preCommand: command1 && command2 && ...`. + +__Note__: Because __preCommand__ will execute before other commands each time, it is strongly not recommended to set __preCommand__ that will make changes to system, i.e. `mkdir` or `touch`. + ### kubeflowConfig #### operator @@ -795,6 +804,12 @@ If run trial jobs in remote machine, users could specify the remote machine info username: test sshKeyPath: /nni/sshkey passphrase: qwert + # Pre-command will be executed before the remote machine executes other commands. + # Below is an example of specifying python environment. + # If you want to execute multiple commands, please use "&&" to connect them. + # preCommand: source ${replace_to_absolute_path_recommended_here}/bin/activate + # preCommand: source ${replace_to_conda_path}/bin/activate ${replace_to_conda_env_name} + preCommand: export PATH=${replace_to_python_environment_path_in_your_remote_machine}:$PATH ``` ### PAI mode diff --git a/examples/trials/mnist-tfv2/config_remote.yml b/examples/trials/mnist-tfv2/config_remote.yml new file mode 100644 index 0000000000..0c39914dbc --- /dev/null +++ b/examples/trials/mnist-tfv2/config_remote.yml @@ -0,0 +1,32 @@ +authorName: default +experimentName: example_mnist +trialConcurrency: 1 +maxExecDuration: 1h +maxTrialNum: 10 +#choice: local, remote, pai +trainingServicePlatform: remote +searchSpacePath: search_space.json +#choice: true, false +useAnnotation: false +tuner: + #choice: TPE, Random, Anneal, Evolution, BatchTuner, MetisTuner + #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: ${replace_to_your_remote_machine_ip} + username: ${replace_to_your_remote_machine_username} + sshKeyPath: ${replace_to_your_remote_machine_sshKeyPath} + # Pre-command will be executed before the remote machine executes other commands. + # Below is an example of specifying python environment. + # If you want to execute multiple commands, please use "&&" to connect them. + # preCommand: source ${replace_to_absolute_path_recommended_here}/bin/activate + # preCommand: source ${replace_to_conda_path}/bin/activate ${replace_to_conda_env_name} + preCommand: export PATH=${replace_to_python_environment_path_in_your_remote_machine}:$PATH diff --git a/src/nni_manager/rest_server/restValidationSchemas.ts b/src/nni_manager/rest_server/restValidationSchemas.ts index cb1a1282e7..337bdcf0c8 100644 --- a/src/nni_manager/rest_server/restValidationSchemas.ts +++ b/src/nni_manager/rest_server/restValidationSchemas.ts @@ -17,7 +17,8 @@ export namespace ValidationSchemas { passphrase: joi.string(), gpuIndices: joi.string(), maxTrialNumPerGpu: joi.number(), - useActiveGpu: joi.boolean() + useActiveGpu: joi.boolean(), + preCommand: joi.string() })), local_config: joi.object({ // eslint-disable-line @typescript-eslint/camelcase gpuIndices: joi.string(), diff --git a/src/nni_manager/training_service/remote_machine/extends/linuxCommands.ts b/src/nni_manager/training_service/remote_machine/extends/linuxCommands.ts index 76d4ac19fc..0dab8a63ea 100644 --- a/src/nni_manager/training_service/remote_machine/extends/linuxCommands.ts +++ b/src/nni_manager/training_service/remote_machine/extends/linuxCommands.ts @@ -123,11 +123,19 @@ class LinuxCommands extends OsCommands { if (isFile) { command = `bash '${script}'`; } else { - script = script.replace('"', '\\"'); + script = script.replace(/"/g, '\\"'); command = `bash -c "${script}"`; } return command; } + + public addPreCommand(preCommand: string | undefined, command: string | undefined): string | undefined{ + if (command === undefined || command === '' || preCommand === undefined || preCommand === ''){ + return command; + } else { + return `${preCommand} && ${command}`; + } + } } export { LinuxCommands }; diff --git a/src/nni_manager/training_service/remote_machine/extends/windowsCommands.ts b/src/nni_manager/training_service/remote_machine/extends/windowsCommands.ts index fd2fd2118b..2a81157e29 100644 --- a/src/nni_manager/training_service/remote_machine/extends/windowsCommands.ts +++ b/src/nni_manager/training_service/remote_machine/extends/windowsCommands.ts @@ -46,7 +46,7 @@ class WindowsCommands extends OsCommands { } public generateGpuStatsScript(scriptFolder: string): string { - return `powershell -command $env:METRIC_OUTPUT_DIR='${scriptFolder}';$app = Start-Process -FilePath python -NoNewWindow -passthru -ArgumentList '-m nni_gpu_tool.gpu_metrics_collector' -RedirectStandardOutput ${scriptFolder}\\scriptstdout -RedirectStandardError ${scriptFolder}\\scriptstderr;Write $PID ^| Out-File ${scriptFolder}\\pid -NoNewline -encoding utf8;wait-process $app.ID`; + return `powershell -command $env:Path=If($env:prePath){$env:prePath}Else{$env:Path};$env:METRIC_OUTPUT_DIR='${scriptFolder}';$app = Start-Process -FilePath python -NoNewWindow -passthru -ArgumentList '-m nni_gpu_tool.gpu_metrics_collector' -RedirectStandardOutput ${scriptFolder}\\scriptstdout -RedirectStandardError ${scriptFolder}\\scriptstderr;Write $PID ^| Out-File ${scriptFolder}\\pid -NoNewline -encoding utf8;wait-process $app.ID`; } public createFolder(folderName: string, sharedFolder: boolean = false): string { @@ -122,6 +122,14 @@ class WindowsCommands extends OsCommands { const command = `${script}`; return command; } + + public addPreCommand(preCommand: string | undefined, command: string | undefined): string | undefined{ + if (command === undefined || command === '' || preCommand === undefined || preCommand === ''){ + return command; + } else { + return `${preCommand} && set prePath=%path% && ${command}`; + } + } } export { WindowsCommands }; diff --git a/src/nni_manager/training_service/remote_machine/osCommands.ts b/src/nni_manager/training_service/remote_machine/osCommands.ts index 3c4bcb0f1c..cb110c6694 100644 --- a/src/nni_manager/training_service/remote_machine/osCommands.ts +++ b/src/nni_manager/training_service/remote_machine/osCommands.ts @@ -28,6 +28,7 @@ abstract class OsCommands { public abstract killChildProcesses(pidFileName: string, killSelf: boolean): string; public abstract extractFile(tarFileName: string, targetFolder: string): string; public abstract executeScript(script: string, isFile: boolean): string; + public abstract addPreCommand(preCommand: string | undefined, command: string | undefined): string | undefined; public joinPath(...paths: string[]): string { let dir: string = paths.filter((path: any) => path !== '').join(this.pathSpliter); diff --git a/src/nni_manager/training_service/remote_machine/remoteMachineData.ts b/src/nni_manager/training_service/remote_machine/remoteMachineData.ts index 61024c1fdd..e48d1fbf57 100644 --- a/src/nni_manager/training_service/remote_machine/remoteMachineData.ts +++ b/src/nni_manager/training_service/remote_machine/remoteMachineData.ts @@ -23,6 +23,7 @@ export class RemoteMachineMeta { //TODO: initialize varialbe in constructor public occupiedGpuIndexMap?: Map; public readonly useActiveGpu?: boolean = false; + public readonly preCommand?: string; } /** diff --git a/src/nni_manager/training_service/remote_machine/shellExecutor.ts b/src/nni_manager/training_service/remote_machine/shellExecutor.ts index 5f3a0bc78b..b093dfcd0e 100644 --- a/src/nni_manager/training_service/remote_machine/shellExecutor.ts +++ b/src/nni_manager/training_service/remote_machine/shellExecutor.ts @@ -32,6 +32,7 @@ class ShellExecutor { private tempPath: string = ""; private isWindows: boolean = false; private channelDefaultOutputs: string[] = []; + private preCommand: string | undefined; constructor() { this.log = getLogger(); @@ -47,6 +48,7 @@ class ShellExecutor { username: rmMeta.username, tryKeyboard: true, }; + this.preCommand = rmMeta.preCommand; this.name = `${rmMeta.username}@${rmMeta.ip}:${rmMeta.port}`; if (rmMeta.passwd !== undefined) { connectConfig.password = rmMeta.passwd; @@ -349,6 +351,9 @@ class ShellExecutor { let exitCode: number; const commandIndex = randomInt(10000); + if(this.osCommands !== undefined){ + command = this.osCommands.addPreCommand(this.preCommand, command); + } this.log.debug(`remoteExeCommand(${commandIndex}): [${command}]`); // Windows always uses shell, and it needs to disable to get it works. diff --git a/src/nni_manager/training_service/remote_machine/test/shellExecutor.test.ts b/src/nni_manager/training_service/remote_machine/test/shellExecutor.test.ts index 4e9d9ffb68..3aee8ba020 100644 --- a/src/nni_manager/training_service/remote_machine/test/shellExecutor.test.ts +++ b/src/nni_manager/training_service/remote_machine/test/shellExecutor.test.ts @@ -36,6 +36,7 @@ async function getRemoteFileContentLoop(executor: ShellExecutor): Promise describe('ShellExecutor test', () => { let skip: boolean = false; + let isWindows: boolean; let rmMeta: any; try { rmMeta = JSON.parse(fs.readFileSync('../../.vscode/rminfo.json', 'utf8')); @@ -86,4 +87,28 @@ describe('ShellExecutor test', () => { await getRemoteFileContentLoop(executor); await executor.close(); }); + + it('Test preCommand-1', async () => { + if (skip) { + return; + } + const executor: ShellExecutor = new ShellExecutor(); + await executor.initialize(rmMeta); + const result = await executor.executeScript("ver", false, false); + isWindows = result.exitCode == 0 && result.stdout.search("Windows") > -1; + await executor.close(); + }); + + it('Test preCommand-2', async () => { + if (skip) { + return; + } + const executor: ShellExecutor = new ShellExecutor(); + rmMeta.preCommand = isWindows ? "set TEST_PRE_COMMAND=test_pre_command" : "export TEST_PRE_COMMAND=test_pre_command"; + await executor.initialize(rmMeta); + const command = isWindows ? "python -c \"import os; print(os.environ.get(\'TEST_PRE_COMMAND\'))\"" : "python3 -c \"import os; print(os.environ.get(\'TEST_PRE_COMMAND\'))\""; + const result = (await executor.executeScript(command, false, false)).stdout.replace(/[\ +\r\n]/g, ""); + chai.expect(result).eq("test_pre_command"); + await executor.close(); + }); }); diff --git a/src/nni_manager/training_service/test/remoteMachineTrainingService.test.ts b/src/nni_manager/training_service/test/remoteMachineTrainingService.test.ts index d2446460ee..551d281f76 100644 --- a/src/nni_manager/training_service/test/remoteMachineTrainingService.test.ts +++ b/src/nni_manager/training_service/test/remoteMachineTrainingService.test.ts @@ -25,8 +25,8 @@ describe('Unit Test for RemoteMachineTrainingService', () => { Default/.vscode/rminfo.json, whose content looks like: { "ip": "10.172.121.40", - "user": "user1", - "password": "mypassword" + "username": "user1", + "passwd": "mypassword" } */ let skip: boolean = false; diff --git a/tools/nni_cmd/config_schema.py b/tools/nni_cmd/config_schema.py index 81dc1c77a5..2a7d929779 100644 --- a/tools/nni_cmd/config_schema.py +++ b/tools/nni_cmd/config_schema.py @@ -382,7 +382,8 @@ def validate(self, data): Optional('passphrase'): setType('passphrase', str), Optional('gpuIndices'): Or(int, And(str, lambda x: len([int(i) for i in x.split(',')]) > 0), error='gpuIndex format error!'), Optional('maxTrialNumPerGpu'): setType('maxTrialNumPerGpu', int), - Optional('useActiveGpu'): setType('useActiveGpu', bool) + Optional('useActiveGpu'): setType('useActiveGpu', bool), + Optional('preCommand'): setType('preCommand', str) }, { 'ip': setType('ip', str), @@ -391,7 +392,8 @@ def validate(self, data): 'passwd': setType('passwd', str), Optional('gpuIndices'): Or(int, And(str, lambda x: len([int(i) for i in x.split(',')]) > 0), error='gpuIndex format error!'), Optional('maxTrialNumPerGpu'): setType('maxTrialNumPerGpu', int), - Optional('useActiveGpu'): setType('useActiveGpu', bool) + Optional('useActiveGpu'): setType('useActiveGpu', bool), + Optional('preCommand'): setType('preCommand', str) })] } From d1c63562a92a550054fac9a809fe16970bf4acee Mon Sep 17 00:00:00 2001 From: colorjam Date: Mon, 21 Sep 2020 18:39:16 +0800 Subject: [PATCH 4/6] Add custom op support of counter (#2795) --- .../nni/compression/torch/utils/counter.py | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/sdk/pynni/nni/compression/torch/utils/counter.py b/src/sdk/pynni/nni/compression/torch/utils/counter.py index 85141db7ac..f4a3db7aa7 100644 --- a/src/sdk/pynni/nni/compression/torch/utils/counter.py +++ b/src/sdk/pynni/nni/compression/torch/utils/counter.py @@ -12,7 +12,7 @@ raise -def count_flops_params(model: nn.Module, input_size, verbose=True): +def count_flops_params(model: nn.Module, input_size, custom_ops=None, verbose=True): """ Count FLOPs and Params of the given model. This function would identify the mask on the module @@ -28,7 +28,10 @@ def count_flops_params(model: nn.Module, input_size, verbose=True): target model. input_size: list, tuple the input shape of data - + custom_ops: dict + a mapping of (module: custom operation) + the custom operation will overwrite the default operation. + for reference, please see ``custom_mask_ops``. Returns ------- @@ -44,11 +47,14 @@ def count_flops_params(model: nn.Module, input_size, verbose=True): inputs = torch.randn(input_size).to(device) hook_module_list = [] + if custom_ops is None: + custom_ops = {} + custom_mask_ops.update(custom_ops) prev_m = None for m in model.modules(): weight_mask = None m_type = type(m) - if m_type in custom_ops: + if m_type in custom_mask_ops: if isinstance(prev_m, PrunerModuleWrapper): weight_mask = prev_m.weight_mask @@ -56,7 +62,7 @@ def count_flops_params(model: nn.Module, input_size, verbose=True): hook_module_list.append(m) prev_m = m - flops, params = profile(model, inputs=(inputs, ), custom_ops=custom_ops, verbose=verbose) + flops, params = profile(model, inputs=(inputs, ), custom_ops=custom_mask_ops, verbose=verbose) for m in hook_module_list: @@ -74,7 +80,6 @@ def count_flops_params(model: nn.Module, input_size, verbose=True): def count_convNd_mask(m, x, y): """ The forward hook to count FLOPs and Parameters of convolution operation. - Parameters ---------- m : torch.nn.Module @@ -101,7 +106,6 @@ def count_convNd_mask(m, x, y): def count_linear_mask(m, x, y): """ The forward hook to count FLOPs and Parameters of linear transformation. - Parameters ---------- m : torch.nn.Module @@ -111,22 +115,21 @@ def count_linear_mask(m, x, y): y : torch.Tensor output data """ - output_channel = y.size()[1] - output_size = torch.zeros(y.size()[2:]).numel() + output_channel = y.numel() bias_flops = 1 if m.bias is not None else 0 if m.weight_mask is not None: output_channel = m.weight_mask.sum() // m.in_features - total_ops = output_channel * output_size * (m.in_features + bias_flops) + total_ops = output_channel * (m.in_features + bias_flops) m.total_ops += torch.DoubleTensor([int(total_ops)]) -custom_ops = { +custom_mask_ops = { nn.Conv1d: count_convNd_mask, nn.Conv2d: count_convNd_mask, nn.Conv3d: count_convNd_mask, nn.Linear: count_linear_mask, -} +} \ No newline at end of file From a480208306ab898eac06161b1fef25a547e13476 Mon Sep 17 00:00:00 2001 From: J-shang <33053116+J-shang@users.noreply.github.com> Date: Mon, 21 Sep 2020 18:48:13 +0800 Subject: [PATCH 5/6] fix experiment import bug and add it cases: experiment import (#2878) --- docs/en_US/TrialExample/SklearnExamples.md | 2 +- .../sklearn/classification/search_space.json | 2 +- src/nni_manager/common/manager.ts | 1 + src/nni_manager/core/nnimanager.ts | 4 ++++ src/nni_manager/rest_server/restHandler.ts | 11 +++++++++ .../rest_server/test/mockedNNIManager.ts | 4 ++++ src/sdk/pynni/nni/msg_dispatcher.py | 1 + test/config/integration_tests.yml | 7 ++++++ .../sklearn-classification.yml | 23 +++++++++++++++++++ .../config/nnictl_experiment/test_import.json | 4 ++++ test/nni_test/nnitest/utils.py | 1 + test/nni_test/nnitest/validators.py | 14 ++++++++++- tools/nni_cmd/updater.py | 16 +++++++++++-- 13 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 test/config/nnictl_experiment/sklearn-classification.yml create mode 100644 test/config/nnictl_experiment/test_import.json diff --git a/docs/en_US/TrialExample/SklearnExamples.md b/docs/en_US/TrialExample/SklearnExamples.md index 0c481ee2ac..469db6b201 100644 --- a/docs/en_US/TrialExample/SklearnExamples.md +++ b/docs/en_US/TrialExample/SklearnExamples.md @@ -67,7 +67,7 @@ It is easy to use NNI in your scikit-learn code, there are only a few steps. "kernel": {"_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]} + "coef0": {"_type":"uniform","_value":[0.01, 0.1]} } ``` diff --git a/examples/trials/sklearn/classification/search_space.json b/examples/trials/sklearn/classification/search_space.json index f63e07bda6..c4b4ffb0c8 100644 --- a/examples/trials/sklearn/classification/search_space.json +++ b/examples/trials/sklearn/classification/search_space.json @@ -3,5 +3,5 @@ "kernel": {"_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]} + "coef0": {"_type":"uniform","_value":[0.01, 0.1]} } \ No newline at end of file diff --git a/src/nni_manager/common/manager.ts b/src/nni_manager/common/manager.ts index c003598abc..1f3972ae43 100644 --- a/src/nni_manager/common/manager.ts +++ b/src/nni_manager/common/manager.ts @@ -87,6 +87,7 @@ abstract class Manager { public abstract getExperimentProfile(): Promise; public abstract updateExperimentProfile(experimentProfile: ExperimentProfile, updateType: ProfileUpdateType): Promise; public abstract importData(data: string): Promise; + public abstract getImportedData(): Promise; public abstract exportData(): Promise; public abstract addCustomizedTrialJob(hyperParams: string): Promise; diff --git a/src/nni_manager/core/nnimanager.ts b/src/nni_manager/core/nnimanager.ts index ad243f4835..6ec4d0e21d 100644 --- a/src/nni_manager/core/nnimanager.ts +++ b/src/nni_manager/core/nnimanager.ts @@ -108,6 +108,10 @@ class NNIManager implements Manager { return this.dataStore.storeTrialJobEvent('IMPORT_DATA', '', data); } + public getImportedData(): Promise { + return this.dataStore.getImportedData(); + } + public async exportData(): Promise { return this.dataStore.exportTrialHpConfigs(); } diff --git a/src/nni_manager/rest_server/restHandler.ts b/src/nni_manager/rest_server/restHandler.ts index af44d71a01..1a4d87ec02 100644 --- a/src/nni_manager/rest_server/restHandler.ts +++ b/src/nni_manager/rest_server/restHandler.ts @@ -47,6 +47,7 @@ class NNIRestHandler { this.getExperimentProfile(router); this.updateExperimentProfile(router); this.importData(router); + this.getImportedData(router); this.startExperiment(router); this.getTrialJobStatistics(router); this.setClusterMetaData(router); @@ -143,6 +144,16 @@ class NNIRestHandler { }); } + private getImportedData(router: Router): void { + router.get('/experiment/imported-data', (req: Request, res: Response) => { + this.nniManager.getImportedData().then((importedData: string[]) => { + res.send(JSON.stringify(importedData)); + }).catch((err: Error) => { + this.handleError(err, res); + }); + }); + } + private startExperiment(router: Router): void { router.post('/experiment', expressJoi(ValidationSchemas.STARTEXPERIMENT), (req: Request, res: Response) => { if (isNewExperiment()) { diff --git a/src/nni_manager/rest_server/test/mockedNNIManager.ts b/src/nni_manager/rest_server/test/mockedNNIManager.ts index e45819d6cb..b3bd549c03 100644 --- a/src/nni_manager/rest_server/test/mockedNNIManager.ts +++ b/src/nni_manager/rest_server/test/mockedNNIManager.ts @@ -33,6 +33,10 @@ export class MockedNNIManager extends Manager { public importData(data: string): Promise { return Promise.resolve(); } + public getImportedData(): Promise { + const ret: string[] = ["1", "2"]; + return Promise.resolve(ret); + } public async exportData(): Promise { const ret: string = ''; return Promise.resolve(ret); diff --git a/src/sdk/pynni/nni/msg_dispatcher.py b/src/sdk/pynni/nni/msg_dispatcher.py index d66aca458c..7e3232e4f9 100644 --- a/src/sdk/pynni/nni/msg_dispatcher.py +++ b/src/sdk/pynni/nni/msg_dispatcher.py @@ -114,6 +114,7 @@ def handle_import_data(self, data): data: a list of dictionaries, each of which has at least two keys, 'parameter' and 'value' """ for entry in data: + entry['value'] = entry['value'] if type(entry['value']) is str else json_tricks.dumps(entry['value']) entry['value'] = json_tricks.loads(entry['value']) self.tuner.import_data(data) diff --git a/test/config/integration_tests.yml b/test/config/integration_tests.yml index 97e3e8adad..fa17fd26c3 100644 --- a/test/config/integration_tests.yml +++ b/test/config/integration_tests.yml @@ -135,6 +135,13 @@ testCases: validator: class: ExportValidator +- name: experiment-import + configFile: test/config/nnictl_experiment/sklearn-classification.yml + validator: + class: ImportValidator + kwargs: + import_data_file_path: config/nnictl_experiment/test_import.json + - name: nnicli configFile: test/config/examples/sklearn-regression.yml config: diff --git a/test/config/nnictl_experiment/sklearn-classification.yml b/test/config/nnictl_experiment/sklearn-classification.yml new file mode 100644 index 0000000000..5a803e40d2 --- /dev/null +++ b/test/config/nnictl_experiment/sklearn-classification.yml @@ -0,0 +1,23 @@ +authorName: nni +experimentName: default_test +maxExecDuration: 5m +maxTrialNum: 4 +trialConcurrency: 2 +searchSpacePath: ../../../examples/trials/sklearn/classification/search_space.json + +tuner: + builtinTunerName: TPE +assessor: + builtinAssessorName: Medianstop + classArgs: + optimize_mode: maximize +trial: + codeDir: ../../../examples/trials/sklearn/classification + command: python3 main.py + gpuNum: 0 + +useAnnotation: false +multiPhase: false +multiThread: false + +trainingServicePlatform: local diff --git a/test/config/nnictl_experiment/test_import.json b/test/config/nnictl_experiment/test_import.json new file mode 100644 index 0000000000..6a8c396b9e --- /dev/null +++ b/test/config/nnictl_experiment/test_import.json @@ -0,0 +1,4 @@ +[ + {"parameter": {"C": 0.15940134774738896, "kernel": "sigmoid", "degree": 3, "gamma": 0.07295826917955316, "coef0": 0.0978204758732429}, "value": 0.6}, + {"parameter": {"C": 0.5556430724708544, "kernel": "linear", "degree": 3, "gamma": 0.04957496655414671, "coef0": 0.08520868779907687}, "value": 0.7} +] diff --git a/test/nni_test/nnitest/utils.py b/test/nni_test/nnitest/utils.py index 795bd8aefe..bdd3fd7fea 100644 --- a/test/nni_test/nnitest/utils.py +++ b/test/nni_test/nnitest/utils.py @@ -24,6 +24,7 @@ STATUS_URL = API_ROOT_URL + '/check-status' TRIAL_JOBS_URL = API_ROOT_URL + '/trial-jobs' METRICS_URL = API_ROOT_URL + '/metric-data' +GET_IMPORTED_DATA_URL = API_ROOT_URL + '/experiment/imported-data' def read_last_line(file_name): '''read last line of a file and return None if file not found''' diff --git a/test/nni_test/nnitest/validators.py b/test/nni_test/nnitest/validators.py index 5ad9090c18..ff349ebc2b 100644 --- a/test/nni_test/nnitest/validators.py +++ b/test/nni_test/nnitest/validators.py @@ -7,7 +7,8 @@ import json import requests from nnicli import Experiment -from utils import METRICS_URL +from nni_cmd.updater import load_search_space +from utils import METRICS_URL, GET_IMPORTED_DATA_URL class ITValidator: @@ -33,6 +34,17 @@ def __call__(self, rest_endpoint, experiment_dir, nni_source_dir, **kwargs): print('\n\n') remove('report.json') +class ImportValidator(ITValidator): + def __call__(self, rest_endpoint, experiment_dir, nni_source_dir, **kwargs): + exp_id = osp.split(experiment_dir)[-1] + import_data_file_path = kwargs.get('import_data_file_path') + proc = subprocess.run(['nnictl', 'experiment', 'import', exp_id, '-f', import_data_file_path]) + assert proc.returncode == 0, \ + '`nnictl experiment import {0} -f {1}` failed with code {2}'.format(exp_id, import_data_file_path, proc.returncode) + imported_data = requests.get(GET_IMPORTED_DATA_URL).json() + origin_data = load_search_space(import_data_file_path).replace(' ', '') + assert origin_data in imported_data + class MetricsValidator(ITValidator): def __call__(self, rest_endpoint, experiment_dir, nni_source_dir, **kwargs): self.check_metrics(nni_source_dir, **kwargs) diff --git a/tools/nni_cmd/updater.py b/tools/nni_cmd/updater.py index c9991b8bab..071a167f70 100644 --- a/tools/nni_cmd/updater.py +++ b/tools/nni_cmd/updater.py @@ -7,7 +7,7 @@ from .url_utils import experiment_url, import_data_url from .config_utils import Config from .common_utils import get_json_content, print_normal, print_error, print_warning -from .nnictl_utils import get_experiment_port, get_config_filename +from .nnictl_utils import get_experiment_port, get_config_filename, detect_process from .launcher_utils import parse_time from .constants import REST_TIME_OUT, TUNERS_SUPPORTING_IMPORT_DATA, TUNERS_NO_NEED_TO_IMPORT_DATA @@ -115,7 +115,19 @@ def import_data(args): validate_file(args.filename) validate_dispatcher(args) content = load_search_space(args.filename) - args.port = get_experiment_port(args) + + nni_config = Config(get_config_filename(args)) + rest_port = nni_config.get_config('restServerPort') + rest_pid = nni_config.get_config('restServerPid') + if not detect_process(rest_pid): + print_error('Experiment is not running...') + return + running, _ = check_rest_server_quick(rest_port) + if not running: + print_error('Restful server is not running') + return + + args.port = rest_port if args.port is not None: if import_data_to_restful_server(args, content): pass From ec5af41fdc777f0a27168f4f03901ab72b07aaf8 Mon Sep 17 00:00:00 2001 From: Ningxin Zheng <49771382+zheng-ningxin@users.noreply.github.com> Date: Mon, 21 Sep 2020 23:57:03 +0800 Subject: [PATCH 6/6] Constraint-aware one-shot pruners (#2657) --- docs/en_US/Compressor/DependencyAware.md | 55 +++ docs/en_US/Compressor/Pruner.md | 20 +- docs/en_US/model_compression.rst | 2 +- docs/en_US/pruning.rst | 17 + docs/img/dependency-aware.jpg | Bin 0 -> 84121 bytes docs/img/mask_conflict.jpg | Bin 0 -> 90144 bytes docs/img/mobilev2_l1_cifar.jpg | Bin 0 -> 989397 bytes examples/model_compress/model_prune_torch.py | 73 ++- .../nni/compression/torch/pruning/__init__.py | 1 - .../nni/compression/torch/pruning/one_shot.py | 260 +++++++++- .../torch/pruning/structured_pruning.py | 463 +++++++++++++++--- .../compression/torch/utils/mask_conflict.py | 1 + .../torch/utils/shape_dependency.py | 3 + src/sdk/pynni/tests/test_dependecy_aware.py | 147 ++++++ 14 files changed, 924 insertions(+), 118 deletions(-) create mode 100644 docs/en_US/Compressor/DependencyAware.md create mode 100644 docs/en_US/pruning.rst create mode 100644 docs/img/dependency-aware.jpg create mode 100644 docs/img/mask_conflict.jpg create mode 100644 docs/img/mobilev2_l1_cifar.jpg create mode 100644 src/sdk/pynni/tests/test_dependecy_aware.py diff --git a/docs/en_US/Compressor/DependencyAware.md b/docs/en_US/Compressor/DependencyAware.md new file mode 100644 index 0000000000..6881198ef4 --- /dev/null +++ b/docs/en_US/Compressor/DependencyAware.md @@ -0,0 +1,55 @@ +# Dependency-aware Mode for Filter Pruning + +Currently, we have several filter pruning algorithm for the convolutional layers: FPGM Pruner, L1Filter Pruner, L2Filter Pruner, Activation APoZ Rank Filter Pruner, Activation Mean Rank Filter Pruner, Taylor FO On Weight Pruner. In these filter pruning algorithms, the pruner will prune each convolutional layer separately. While pruning a convolution layer, the algorithm will quantify the importance of each filter based on some specific rules(such as l1-norm), and prune the less important filters. + +As [dependency analysis utils](./CompressionUtils.md) shows, if the output channels of two convolutional layers(conv1, conv2) are added together, then these two conv layers have channel dependency with each other(more details please see [Compression Utils](./CompressionUtils.md)). Take the following figure as an example. +![](../../img/mask_conflict.jpg) + +If we prune the first 50% of output channels(filters) for conv1, and prune the last 50% of output channels for conv2. Although both layers have pruned 50% of the filters, the speedup module still needs to add zeros to align the output channels. In this case, we cannot harvest the speed benefit from the model pruning. + + + To better gain the speed benefit of the model pruning, we add a dependency-aware mode for the Filter Pruner. In the dependency-aware mode, the pruner prunes the model not only based on the l1 norm of each filter, but also the topology of the whole network architecture. + +In the dependency-aware mode(`dependency_aware` is set `True`), the pruner will try to prune the same output channels for the layers that have the channel dependencies with each other, as shown in the following figure. + +![](../../img/dependency-aware.jpg) + +Take the dependency-aware mode of L1Filter Pruner as an example. Specifically, the pruner will calculate the L1 norm (for example) sum of all the layers in the dependency set for each channel. Obviously, the number of channels that can actually be pruned of this dependency set in the end is determined by the minimum sparsity of layers in this dependency set(denoted by `min_sparsity`). According to the L1 norm sum of each channel, the pruner will prune the same `min_sparsity` channels for all the layers. Next, the pruner will additionally prune `sparsity` - `min_sparsity` channels for each convolutional layer based on its own L1 norm of each channel. For example, suppose the output channels of `conv1` , `conv2` are added together and the configured sparsities of `conv1` and `conv2` are 0.3, 0.2 respectively. In this case, the `dependency-aware pruner` will + + - First, prune the same 20% of channels for `conv1` and `conv2` according to L1 norm sum of `conv1` and `conv2`. + - Second, the pruner will additionally prune 10% channels for `conv1` according to the L1 norm of each channel of `conv1`. + +In addition, for the convolutional layers that have more than one filter group, `dependency-aware pruner` will also try to prune the same number of the channels for each filter group. Overall, this pruner will prune the model according to the L1 norm of each filter and try to meet the topological constrains(channel dependency, etc) to improve the final speed gain after the speedup process. + +In the dependency-aware mode, the pruner will provide a better speed gain from the model pruning. + +## Usage +In this section, we will show how to enable the dependency-aware mode for the filter pruner. Currently, only the one-shot pruners such as FPGM Pruner, L1Filter Pruner, L2Filter Pruner, Activation APoZ Rank Filter Pruner, Activation Mean Rank Filter Pruner, Taylor FO On Weight Pruner, support the dependency-aware mode. + +To enable the dependency-aware mode for `L1FilterPruner`: +```python +from nni.compression.torch import L1FilterPruner +config_list = [{ 'sparsity': 0.8, 'op_types': ['Conv2d'] }] +# dummy_input is necessary for the dependency_aware mode +dummy_input = torch.ones(1, 3, 224, 224).cuda() +pruner = L1FilterPruner(model, config_list, dependency_aware=True, dummy_input=dummy_input) +# for L2FilterPruner +# pruner = L2FilterPruner(model, config_list, dependency_aware=True, dummy_input=dummy_input) +# for FPGMPruner +# pruner = FPGMPruner(model, config_list, dependency_aware=True, dummy_input=dummy_input) +# for ActivationAPoZRankFilterPruner +# pruner = ActivationAPoZRankFilterPruner(model, config_list, statistics_batch_num=1, , dependency_aware=True, dummy_input=dummy_input) +# for ActivationMeanRankFilterPruner +# pruner = ActivationMeanRankFilterPruner(model, config_list, statistics_batch_num=1, dependency_aware=True, dummy_input=dummy_input) +# for TaylorFOWeightFilterPruner +# pruner = TaylorFOWeightFilterPruner(model, config_list, statistics_batch_num=1, dependency_aware=True, dummy_input=dummy_input) + +pruner.compress() +``` + +## Evaluation +In order to compare the performance of the pruner with or without the dependency-aware mode, we use L1FilterPruner to prune the Mobilenet_v2 separately when the dependency-aware mode is turned on and off. To simplify the experiment, we use the uniform pruning which means we allocate the same sparsity for all convolutional layers in the model. +We trained a Mobilenet_v2 model on the cifar10 dataset and prune the model based on this pretrained checkpoint. The following figure shows the accuracy and FLOPs of the model pruned by different pruners. +![](../../img/mobilev2_l1_cifar.jpg) + +In the figure, the `Dependency-aware` represents the L1FilterPruner with dependency-aware mode enabled. `L1 Filter` is the normal `L1FilterPruner` without the dependency-aware mode, and the `No-Dependency` means pruner only prunes the layers that has no channel dependency with other layers. As we can see in the figure, when the dependency-aware mode enabled, the pruner can bring higher accuracy under the same Flops. \ No newline at end of file diff --git a/docs/en_US/Compressor/Pruner.md b/docs/en_US/Compressor/Pruner.md index 0901c2a46d..cc0de93768 100644 --- a/docs/en_US/Compressor/Pruner.md +++ b/docs/en_US/Compressor/Pruner.md @@ -114,7 +114,9 @@ FPGMPruner prune filters with the smallest geometric median. ![](../../img/fpgm_fig1.png) ->Previous works utilized “smaller-norm-less-important” criterion to prune filters with smaller norm values in a convolutional neural network. In this paper, we analyze this norm-based criterion and point out that its effectiveness depends on two requirements that are not always met: (1) the norm deviation of the filters should be large; (2) the minimum norm of the filters should be small. To solve this problem, we propose a novel filter pruning method, namely Filter Pruning via Geometric Median (FPGM), to compress the model regardless of those two requirements. Unlike previous methods, FPGM compresses CNN models by pruning filters with redundancy, rather than those with “relatively less” importance. +>Previous works utilized “smaller-norm-less-important” criterion to prune filters with smaller norm values in a convolutional neural network. In this paper, we analyze this norm-based criterion and point out that its effectiveness depends on two requirements that are not always met: (1) the norm deviation of the filters should be large; (2) the minimum norm of the filters should be small. To solve this problem, we propose a novel filter pruning method, namely Filter Pruning via Geometric Median (FPGM), to compress the model regardless of those two requirements. Unlike previous methods, FPGM compresses CNN models by pruning filters with redundancy, rather than those with “relatively less” importance. + +We also provide a dependency-aware mode for this pruner to get better speedup from the pruning. Please reference [dependency-aware](./DependencyAware.md) for more details. ### Usage @@ -154,6 +156,8 @@ This is an one-shot pruner, In ['PRUNING FILTERS FOR EFFICIENT CONVNETS'](https: > 4. A new kernel matrix is created for both the ![](http://latex.codecogs.com/gif.latex?i)th and ![](http://latex.codecogs.com/gif.latex?i+1)th layers, and the remaining kernel > weights are copied to the new model. +In addition, we also provide a dependency-aware mode for the L1FilterPruner. For more details about the dependency-aware mode, please reference [dependency-aware mode](./DependencyAware.md). + ### Usage PyTorch code @@ -189,6 +193,8 @@ The experiments code can be found at [examples/model_compress]( https://github.c This is a structured pruning algorithm that prunes the filters with the smallest L2 norm of the weights. It is implemented as a one-shot pruner. +We also provide a dependency-aware mode for this pruner to get better speedup from the pruning. Please reference [dependency-aware](./DependencyAware.md) for more details. + ### Usage PyTorch code @@ -200,6 +206,7 @@ pruner = L2FilterPruner(model, config_list) pruner.compress() ``` + ### User configuration for L2Filter Pruner ##### PyTorch @@ -208,6 +215,7 @@ pruner.compress() ``` *** + ## ActivationAPoZRankFilter Pruner ActivationAPoZRankFilter Pruner is a pruner which prunes the filters with the smallest importance criterion `APoZ` calculated from the output activations of convolution layers to achieve a preset level of network sparsity. The pruning criterion `APoZ` is explained in the paper [Network Trimming: A Data-Driven Neuron Pruning Approach towards Efficient Deep Architectures](https://arxiv.org/abs/1607.03250). @@ -216,6 +224,8 @@ The APoZ is defined as: ![](../../img/apoz.png) +We also provide a dependency-aware mode for this pruner to get better speedup from the pruning. Please reference [dependency-aware](./DependencyAware.md) for more details. + ### Usage PyTorch code @@ -234,6 +244,8 @@ Note: ActivationAPoZRankFilterPruner is used to prune convolutional layers withi You can view [example](https://github.com/microsoft/nni/blob/master/examples/model_compress/model_prune_torch.py) for more information. + + ### User configuration for ActivationAPoZRankFilter Pruner ##### PyTorch @@ -247,6 +259,8 @@ You can view [example](https://github.com/microsoft/nni/blob/master/examples/mod ActivationMeanRankFilterPruner is a pruner which prunes the filters with the smallest importance criterion `mean activation` calculated from the output activations of convolution layers to achieve a preset level of network sparsity. The pruning criterion `mean activation` is explained in section 2.2 of the paper[Pruning Convolutional Neural Networks for Resource Efficient Inference](https://arxiv.org/abs/1611.06440). Other pruning criteria mentioned in this paper will be supported in future release. +We also provide a dependency-aware mode for this pruner to get better speedup from the pruning. Please reference [dependency-aware](./DependencyAware.md) for more details. + ### Usage PyTorch code @@ -265,6 +279,7 @@ Note: ActivationMeanRankFilterPruner is used to prune convolutional layers withi You can view [example](https://github.com/microsoft/nni/blob/master/examples/model_compress/model_prune_torch.py) for more information. + ### User configuration for ActivationMeanRankFilterPruner ##### PyTorch @@ -273,6 +288,7 @@ You can view [example](https://github.com/microsoft/nni/blob/master/examples/mod ``` *** + ## TaylorFOWeightFilter Pruner TaylorFOWeightFilter Pruner is a pruner which prunes convolutional layers based on estimated importance calculated from the first order taylor expansion on weights to achieve a preset level of network sparsity. The estimated importance of filters is defined as the paper [Importance Estimation for Neural Network Pruning](http://jankautz.com/publications/Importance4NNPruning_CVPR19.pdf). Other pruning criteria mentioned in this paper will be supported in future release. @@ -281,6 +297,8 @@ TaylorFOWeightFilter Pruner is a pruner which prunes convolutional layers based ![](../../img/importance_estimation_sum.png) +We also provide a dependency-aware mode for this pruner to get better speedup from the pruning. Please reference [dependency-aware](./DependencyAware.md) for more details. + ### Usage PyTorch code diff --git a/docs/en_US/model_compression.rst b/docs/en_US/model_compression.rst index e594ba1fb7..8e5dce684a 100644 --- a/docs/en_US/model_compression.rst +++ b/docs/en_US/model_compression.rst @@ -17,7 +17,7 @@ For details, please refer to the following tutorials: Overview Quick Start - Pruners + Pruning Quantizers Automatic Model Compression Model Speedup diff --git a/docs/en_US/pruning.rst b/docs/en_US/pruning.rst new file mode 100644 index 0000000000..0f06d2efc8 --- /dev/null +++ b/docs/en_US/pruning.rst @@ -0,0 +1,17 @@ +################# +Pruning +################# + +NNI provides several pruning algorithms that support fine-grained weight pruning and structural filter pruning. +It supports Tensorflow and PyTorch with unified interface. +For users to prune their models, they only need to add several lines in their code. +For the structural filter pruning, NNI also provides a dependency-aware mode. In the dependency-aware mode, the +filter pruner will get better speed gain after the speedup. + +For details, please refer to the following tutorials: + +.. toctree:: + :maxdepth: 2 + + Pruners + Dependency Aware Mode diff --git a/docs/img/dependency-aware.jpg b/docs/img/dependency-aware.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d2f9b57db3d9c2bd4af70cb5aa9b84ffdedd6148 GIT binary patch literal 84121 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‰y+vbQyc{T7Dt=M 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%0DrNEq6kHqf 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 UDB>@)`H{(=|H-_0=|b1P0kA)P)&Kwi literal 0 HcmV?d00001 diff --git a/docs/img/mobilev2_l1_cifar.jpg b/docs/img/mobilev2_l1_cifar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..202e5740e13b96277b4d933b61135e5b33da4e36 GIT binary patch literal 989397 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