updated docs

This commit is contained in:
William Falcon
2019-07-26 23:23:56 -04:00
parent 8e7d3c6737
commit 0ce180f6ec
@@ -14,8 +14,6 @@ Otherwise, to Define a Lightning Module, implement the following methods:
- [validation_end](RequiredTrainerInterface.md#validation_end) - [validation_end](RequiredTrainerInterface.md#validation_end)
- [configure_optimizers](RequiredTrainerInterface.md#configure_optimizers) - [configure_optimizers](RequiredTrainerInterface.md#configure_optimizers)
- [get_save_dict](RequiredTrainerInterface.md#get_save_dict)
- [load_model_specific](RequiredTrainerInterface.md#load_model_specific)
- [tng_dataloader](RequiredTrainerInterface.md#tng_dataloader) - [tng_dataloader](RequiredTrainerInterface.md#tng_dataloader)
- [tng_dataloader](RequiredTrainerInterface.md#tng_dataloader) - [tng_dataloader](RequiredTrainerInterface.md#tng_dataloader)
@@ -23,6 +21,8 @@ Otherwise, to Define a Lightning Module, implement the following methods:
**Optional**: **Optional**:
- [on_save_checkpoint](RequiredTrainerInterface.md#on_save_checkpoint)
- [on_load_checkpoint](RequiredTrainerInterface.md#on_load_checkpoint)
- [update_tng_log_metrics](RequiredTrainerInterface.md#update_tng_log_metrics) - [update_tng_log_metrics](RequiredTrainerInterface.md#update_tng_log_metrics)
- [add_model_specific_args](RequiredTrainerInterface.md#add_model_specific_args) - [add_model_specific_args](RequiredTrainerInterface.md#add_model_specific_args)
@@ -245,34 +245,35 @@ def configure_optimizers(self):
``` ```
--- ---
### get_save_dict ### on_save_checkpoint
``` {.python} ``` {.python}
def get_save_dict(self) def on_save_checkpoint(self, checkpoint)
``` ```
Called by lightning to checkpoint your model. Lightning saves current epoch, current batch nb, etc... Called by lightning to checkpoint your model. Lightning saves the training state (current epoch, global_step, etc)
All you have to return is what specifically about your lightning model you want to checkpoint. and also saves the model state_dict. If you want to save anything else, use this method to add your own
key-value pair.
##### Return ##### Return
Dictionary - No required keys. Most of the time as described in this example. Nothing
**Example** **Example**
``` {.python} ``` {.python}
def get_save_dict(self): def on_save_checkpoint(self, checkpoint):
# 99% of use cases this is all you need to return # 99% of use cases you don't need to implement this method
checkpoint = {'state_dict': self.state_dict()} checkpoint['something_cool_i_want_to_save'] = my_cool_pickable_object
return checkpoint
``` ```
--- ---
### load_model_specific ### on_load_checkpoint
``` {.python} ``` {.python}
def load_model_specific(self, checkpoint) def on_load_checkpoint(self, checkpoint)
``` ```
Called by lightning to restore your model. This is your chance to restore your model using the keys you added in get_save_dict. Called by lightning to restore your model. Lighting auto-restores global step, epoch, etc...
Lightning will automatically restore current epoch, batch nb, etc. It also restores the model state_dict.
If you saved something with **on_save_checkpoint** this is your chance to restore this.
##### Return ##### Return
Nothing Nothing
@@ -280,9 +281,9 @@ Nothing
**Example** **Example**
``` {.python} ``` {.python}
def load_model_specific(self, checkpoint): def on_load_checkpoint(self, checkpoint):
# you defined 'state_dict' in get_save_dict() # 99% of the time you don't need to implement this method
self.load_state_dict(checkpoint['state_dict']) self.something_cool_i_want_to_save = checkpoint['something_cool_i_want_to_save']
``` ```
--- ---