Updated Home (markdown)
parent
912f1d0562
commit
810bcef415
1 changed files with 41 additions and 0 deletions
41
Home.md
41
Home.md
|
|
@ -200,6 +200,47 @@ SFTTrainer(
|
|||
```
|
||||
This will cause no OOMs and make it somewhat faster with no upcasting to float32.
|
||||
|
||||
### Early Stopping
|
||||
If you want to stop the finetuning / training run since the evaluation loss is not decreasing, then you can use early stopping which stops the training process. Use `EarlyStoppingCallback`.
|
||||
|
||||
As usual, set up your trainer and your evaluation dataset and procedure:
|
||||
```python
|
||||
from trl import SFTConfig, SFTTrainer
|
||||
trainer = SFTTrainer(
|
||||
args = SFTConfig(
|
||||
fp16_full_eval = True,
|
||||
per_device_eval_batch_size = 2,
|
||||
eval_accumulation_steps = 4,
|
||||
output_dir = "training_checkpoints", # location of saved checkpoints for early stopping
|
||||
save_strategy = "steps", # save model every N steps
|
||||
save_steps = 10, # how many steps until we save the model
|
||||
save_total_limit = 3, # keep ony 3 saved checkpoints to save disk space
|
||||
eval_strategy = "steps", # evaluate every N steps
|
||||
eval_steps = 10, # how many steps until we do evaluation
|
||||
load_best_model_at_end = True, # MUST USE for early stopping
|
||||
metric_for_best_model = "eval_loss", # metric we want to early stop on
|
||||
greater_is_better = False, # the lower the eval loss, the better
|
||||
),
|
||||
model = model,
|
||||
tokenizer = tokenizer,
|
||||
train_dataset = new_dataset["train"],
|
||||
eval_dataset = new_dataset["test"],
|
||||
)
|
||||
```
|
||||
then we add a callback:
|
||||
```python
|
||||
from transformers import EarlyStoppingCallback
|
||||
early_stopping_callback = EarlyStoppingCallback(
|
||||
early_stopping_patience = 3, # How many steps we will wait if the eval loss doesn't decrease
|
||||
# For example the loss might increase, but decrease after 3 steps
|
||||
early_stopping_threshold = 0.0, # Can set higher - sets how much loss should decrease by until
|
||||
# we consider early stopping. For eg 0.01 means if loss was
|
||||
# 0.02 then 0.01, we consider to early stop the run.
|
||||
)
|
||||
trainer.add_callback(early_stopping_callback)
|
||||
```
|
||||
Then train the model as usual: `trainer.train()`
|
||||
|
||||
### Chat Templates
|
||||
Assuming your dataset is a list of list of dictionaries like the below:
|
||||
```python
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue