From 1fc26af954f58b18a559471eacf6d2b0e30db91b Mon Sep 17 00:00:00 2001 From: William Falcon Date: Sun, 4 Aug 2019 13:19:23 -0500 Subject: [PATCH] cleaned up examples --- .../lightning_module_template.py | 3 + .../multi_node_cluster_template.py | 3 + .../single_cpu_template.py | 2 +- .../single_gpu_node_16bit_template.py | 2 +- ...ate.py => single_gpu_node_ddp_template.py} | 2 +- .../single_gpu_node_dp_template.py | 2 +- .../single_gpu_template.py | 109 ------------------ 7 files changed, 10 insertions(+), 113 deletions(-) rename pytorch_lightning/examples/new_project_templates/{single_gpu_node_template.py => single_gpu_node_ddp_template.py} (98%) delete mode 100644 pytorch_lightning/examples/new_project_templates/single_gpu_template.py diff --git a/pytorch_lightning/examples/new_project_templates/lightning_module_template.py b/pytorch_lightning/examples/new_project_templates/lightning_module_template.py index 993a7b77..483a4e3a 100644 --- a/pytorch_lightning/examples/new_project_templates/lightning_module_template.py +++ b/pytorch_lightning/examples/new_project_templates/lightning_module_template.py @@ -1,3 +1,6 @@ +""" +Example template for defining a system +""" import os from collections import OrderedDict import torch.nn as nn diff --git a/pytorch_lightning/examples/new_project_templates/multi_node_cluster_template.py b/pytorch_lightning/examples/new_project_templates/multi_node_cluster_template.py index 1d7bbe24..88876ebe 100644 --- a/pytorch_lightning/examples/new_project_templates/multi_node_cluster_template.py +++ b/pytorch_lightning/examples/new_project_templates/multi_node_cluster_template.py @@ -1,3 +1,6 @@ +""" +Multi-node example (GPU) +""" import os import numpy as np from time import sleep diff --git a/pytorch_lightning/examples/new_project_templates/single_cpu_template.py b/pytorch_lightning/examples/new_project_templates/single_cpu_template.py index da449ab4..2d1e8c20 100644 --- a/pytorch_lightning/examples/new_project_templates/single_cpu_template.py +++ b/pytorch_lightning/examples/new_project_templates/single_cpu_template.py @@ -1,5 +1,5 @@ """ -Runs a model on a single node across N-gpus. +Runs a model on a single node on CPU only.. """ import os import numpy as np diff --git a/pytorch_lightning/examples/new_project_templates/single_gpu_node_16bit_template.py b/pytorch_lightning/examples/new_project_templates/single_gpu_node_16bit_template.py index 1f2d5d3f..7ece5ade 100644 --- a/pytorch_lightning/examples/new_project_templates/single_gpu_node_16bit_template.py +++ b/pytorch_lightning/examples/new_project_templates/single_gpu_node_16bit_template.py @@ -1,5 +1,5 @@ """ -Runs a model on a single node across N-gpus. +16-bit single node, CPU example """ import os import numpy as np diff --git a/pytorch_lightning/examples/new_project_templates/single_gpu_node_template.py b/pytorch_lightning/examples/new_project_templates/single_gpu_node_ddp_template.py similarity index 98% rename from pytorch_lightning/examples/new_project_templates/single_gpu_node_template.py rename to pytorch_lightning/examples/new_project_templates/single_gpu_node_ddp_template.py index 28551651..6d10062d 100644 --- a/pytorch_lightning/examples/new_project_templates/single_gpu_node_template.py +++ b/pytorch_lightning/examples/new_project_templates/single_gpu_node_ddp_template.py @@ -7,7 +7,6 @@ import torch from test_tube import HyperOptArgumentParser, Experiment from pytorch_lightning.models.trainer import Trainer - from pytorch_lightning.callbacks import EarlyStopping, ModelCheckpoint SEED = 2334 @@ -72,6 +71,7 @@ def main(hparams): checkpoint_callback=checkpoint, early_stop_callback=early_stop, gpus=hparams.gpus, + distributed_backend='ddp' ) # ------------------------ diff --git a/pytorch_lightning/examples/new_project_templates/single_gpu_node_dp_template.py b/pytorch_lightning/examples/new_project_templates/single_gpu_node_dp_template.py index 6eb66f6b..50c615ad 100644 --- a/pytorch_lightning/examples/new_project_templates/single_gpu_node_dp_template.py +++ b/pytorch_lightning/examples/new_project_templates/single_gpu_node_dp_template.py @@ -1,5 +1,5 @@ """ -Runs a model on a single node across N-gpus. +Runs a model on a single node across N-gpus using dataParallel """ import os import numpy as np diff --git a/pytorch_lightning/examples/new_project_templates/single_gpu_template.py b/pytorch_lightning/examples/new_project_templates/single_gpu_template.py deleted file mode 100644 index 902c0bc9..00000000 --- a/pytorch_lightning/examples/new_project_templates/single_gpu_template.py +++ /dev/null @@ -1,109 +0,0 @@ -""" -Runs a model on a single node across N-gpus. -""" -import os -import numpy as np -import torch - -from test_tube import HyperOptArgumentParser, Experiment -from pytorch_lightning.models.trainer import Trainer - -from pytorch_lightning.callbacks import EarlyStopping, ModelCheckpoint - -SEED = 2334 -torch.manual_seed(SEED) -np.random.seed(SEED) - -from lightning_module_template import LightningTemplateModel - - -def main(hparams): - """ - Main training routine specific for this project - :param hparams: - :return: - """ - # ------------------------ - # 1 INIT LIGHTNING MODEL - # ------------------------ - print('loading model...') - model = LightningTemplateModel(hparams) - print('model built') - - # ------------------------ - # 2 INIT TEST TUBE EXP - # ------------------------ - - # init experiment - exp = Experiment( - name=hyperparams.experiment_name, - save_dir=hyperparams.test_tube_save_path, - autosave=False, - description='test demo' - ) - - exp.argparse(hparams) - exp.save() - - # ------------------------ - # 3 DEFINE CALLBACKS - # ------------------------ - model_save_path = '{}/{}/{}'.format(hparams.model_save_path, exp.name, exp.version) - early_stop = EarlyStopping( - monitor='val_acc', - patience=3, - verbose=True, - mode='max' - ) - - checkpoint = ModelCheckpoint( - filepath=model_save_path, - save_best_only=True, - verbose=True, - monitor='val_loss', - mode='min' - ) - - # ------------------------ - # 4 INIT TRAINER - # ------------------------ - trainer = Trainer( - experiment=exp, - checkpoint_callback=checkpoint, - early_stop_callback=early_stop, - gpus=hparams.gpus, - ) - - # ------------------------ - # 5 START TRAINING - # ------------------------ - trainer.fit(model) - - -if __name__ == '__main__': - - # dirs - root_dir = os.path.dirname(os.path.realpath(__file__)) - demo_log_dir = os.path.join(root_dir, 'pt_lightning_demo_logs') - checkpoint_dir = os.path.join(demo_log_dir, 'model_weights') - test_tube_dir = os.path.join(demo_log_dir, 'test_tube_data') - - # although we user hyperOptParser, we are using it only as argparse right now - parent_parser = HyperOptArgumentParser(strategy='grid_search', add_help=False) - - # gpu args - parent_parser.add_argument('--gpus', type=str, default='0', help='how many gpus to use in the node. -1 uses all the gpus on the node') - parent_parser.add_argument('--test_tube_save_path', type=str, default=test_tube_dir, help='where to save logs') - parent_parser.add_argument('--model_save_path', type=str, default=checkpoint_dir, help='where to save model') - parent_parser.add_argument('--experiment_name', type=str, default='pt_lightning_exp_a', help='test tube exp name') - - # allow model to overwrite or extend args - parser = LightningTemplateModel.add_model_specific_args(parent_parser, root_dir) - hyperparams = parser.parse_args() - - # --------------------- - # RUN TRAINING - # --------------------- - # run on HPC cluster - print(f'RUNNING INTERACTIVE MODE ON GPUS. gpu ids: {hyperparams.gpus}') - main(hyperparams)