Skip to content

[WIP] Add patience argument to run_language_modeling script#2840

Closed
thesamuel wants to merge 0 commit intohuggingface:masterfrom
thesamuel:samgehman/add-patience-to-run-language-modeling
Closed

[WIP] Add patience argument to run_language_modeling script#2840
thesamuel wants to merge 0 commit intohuggingface:masterfrom
thesamuel:samgehman/add-patience-to-run-language-modeling

Conversation

@thesamuel
Copy link

@thesamuel thesamuel commented Feb 13, 2020

Summary

Often, we want to stop training if loss does not improve for a number of epochs. This PR adds a "patience" argument, which is a limit on the number of times we can get a non-improving eval loss before stopping training early.

It is implemented by other NLP frameworks, such as AllenNLP (see trainer.py and metric_tracker.py).

Motivation

This feature allows faster fine-tuning by breaking the training loop early and avoids users the toil of checking metrics on Tensorboard.

Caveats

Often, models are evaluated once per epoch, but run_lm_finetuning.py has an option to evaluate after a set number of model update steps (dictated by --logging_steps if --evaluate_during_training is true). Because of this, I've elected to tie patience to the number of evaluations without improvement in loss.

To-do

  • Add tests
  • Fix long lines

Copy link
Member

@LysandreJik LysandreJik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is really cool!

@LysandreJik LysandreJik requested a review from julien-c February 18, 2020 21:13
Copy link
Member

@julien-c julien-c left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like at this point, this should be inside a Trainer class similar to what @jplu is doing for TF (shared between scripts) (and similar to what @srush is doing w/ Lightning), but in the meantime, LGTM. Thanks!

@thesamuel
Copy link
Author

thesamuel commented Feb 21, 2020

Sounds great! I'll go ahead and fix the code quality check.

@thesamuel thesamuel force-pushed the samgehman/add-patience-to-run-language-modeling branch from 8cc8568 to a5989b0 Compare March 18, 2020 19:49
@thesamuel thesamuel closed this May 6, 2020
@thesamuel thesamuel force-pushed the samgehman/add-patience-to-run-language-modeling branch from b51db35 to 877fc56 Compare May 6, 2020 21:13
@thesamuel thesamuel deleted the samgehman/add-patience-to-run-language-modeling branch May 6, 2020 21:14
@thesamuel
Copy link
Author

thesamuel commented May 6, 2020

Since run_langauge_modeling.py now uses the Trainer class, I'll likely create a new PR that adds patience to Trainer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants