YOLOv8 early stopping automatically ends training when validation performance has stopped improving for a specified number of epochs. The patience parameter controls how long YOLOv8 waits before stopping. In current Ultralytics training settings, the default patience value is 100, meaning training can stop when validation performance fails to improve for 100 consecutive epochs.
Introduction to YOLOv8 Early Stopping and Patience
Training a YOLOv8 model for more epochs does not always improve its performance.
A model may improve rapidly during the first part of training and then reach a point where validation performance stops getting better.
For example:
Epoch 40 → improving
Epoch 60 → improving
Epoch 80 → best result
Epoch 100 → no improvement
Epoch 120 → no improvement
Continuing training indefinitely after the model has stopped improving wastes computation and may increase the risk of overfitting.
Early stopping solves this problem by monitoring validation performance and stopping training after a configurable waiting period.
What Is Early Stopping in YOLOv8?
Early stopping is a training mechanism that automatically ends a run before the maximum number of epochs is reached when the model has stopped improving.
Ultralytics describes patience as the number of epochs to wait without improvement in validation metrics before stopping training.
Why Early Stopping Is Used
Early stopping helps avoid training for many unnecessary epochs.
Suppose you configure:
epochs=500
but the model reaches its best validation performance at epoch:
180
If validation performance never improves again, training for all 500 epochs may provide little value.
With early stopping, the run can end automatically once the patience limit is reached.
How It Prevents Unnecessary Training
Conceptually:
Training Begins
↓
Validation Improves
↓
Best Epoch Updated
↓
No Improvement
↓
Patience Counter Increases
↓
Patience Limit Reached
↓
Training Stops
This can save:
- GPU time,
- electricity,
- training cost,
- unnecessary experiment duration.
What Does Patience Mean in YOLOv8?
The patience parameter defines how many epochs YOLOv8 allows without a new best validation result before early stopping is triggered.
The current default is:
patience=100
How the Patience Value Works
Suppose:
patience=20
and the best validation result occurs at epoch:
75
If no better result appears for the next 20 epochs, training can stop around:
95
Conceptually:
Best Epoch = 75
76 → no improvement
77 → no improvement
...
94 → no improvement
95 → patience reached
If a new best result appears before the patience limit is reached, the waiting period is effectively reset around the new best epoch.
What Happens When Validation Stops Improving
When no improvement occurs, Ultralytics continues training until the difference between the current epoch and the best epoch reaches the configured patience value.
The internal early-stopping logic tracks the best fitness and best epoch and stops after the configured number of non-improving epochs.
How YOLOv8 Early Stopping Works
YOLOv8 evaluates model performance during training and keeps track of the best result found so far.
Monitoring Validation Performance
At validation time, YOLOv8 calculates task-specific metrics.
For object detection, these can include measures such as:
precision
recall
mAP50
mAP50-95
The trainer combines validation performance into a fitness value used for checkpoint selection and early-stopping decisions rather than simply monitoring raw training loss alone.
The important concept is:
current fitness
vs
best fitness so far
If the current result is better, the best epoch is updated.
Tracking the Best Training Epoch
Suppose training produces:
Epoch 30 → fitness 0.61
Epoch 40 → fitness 0.66
Epoch 50 → fitness 0.69
Epoch 60 → fitness 0.67
Epoch 70 → fitness 0.68
The best epoch remains:
Epoch 50
because:
0.69
is still the best fitness obtained.
The early-stopping system then measures how long it has been since that best result.
When Training Automatically Stops
If:
current_epoch - best_epoch >= patience
training can stop.
For example:
best_epoch = 120
patience = 50
If no new best fitness occurs, training may stop around:
epoch 170
This behavior is reflected in Ultralytics’ early-stopping implementation.
How to Set Patience in YOLOv8
Patience can be configured through the CLI or Python API.
Set Patience Using the YOLO CLI
For example:
yolo detect train model=yolov8n.pt data=data.yaml epochs=300 patience=50
This means:
maximum epochs = 300
patience = 50
Training can stop before epoch 300 if validation performance does not improve for 50 epochs.
The patience setting is part of Ultralytics Train mode.
Set Patience in Python
Using Python:
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.train(
data="data.yaml",
epochs=300,
patience=50
)
A more patient training run might use:
model.train(
data="data.yaml",
epochs=500,
patience=100
)
Disable Early Stopping
Ultralytics early-stopping behavior can be disabled by setting:
patience=0
This behavior has been documented in Ultralytics issue guidance related to resuming and disabling early stopping.
For example:
yolo detect train model=yolov8n.pt data=data.yaml epochs=300 patience=0
With early stopping disabled, training can continue until another stopping condition is reached, such as the configured epoch limit.
Choosing the Best Patience Value
There is no universal best patience value.
The correct value depends on how noisy validation performance is and how long the model typically needs to improve.
Patience for Small Datasets
Small datasets can produce noisy validation metrics because a small number of images may strongly affect results.
A patience value that is too low may stop training during a temporary plateau.
For example:
patience=5
may be too aggressive for some small datasets.
A larger value such as:
20
50
100
may provide more room for metrics to recover.
The exact value should be selected from observed training behavior.
Patience for Large Datasets
Large datasets often contain many batches per epoch and can have more stable validation trends.
However, they may also require longer training before improvements become apparent.
A larger patience value may therefore still be useful.
For example:
epochs=300
patience=50
or:
epochs=500
patience=100
can be reasonable starting configurations for longer experiments.
Balancing Training Time and Model Performance
A low patience value:
patience=10
can save time but increases the risk of stopping during a temporary plateau.
A high patience value:
patience=100
allows more recovery time but may continue training much longer after meaningful improvement has ended.
The best value balances:
model improvement
training cost
metric variability
total epochs
YOLOv8 Patience and Number of Epochs
epochs and patience control different stopping conditions.
Difference Between Epochs and Patience
epochs defines the maximum intended training duration:
epochs=300
patience defines how long YOLOv8 will wait after the best validation result:
patience=50
Conceptually:
epochs
= hard upper training limit
patience
= early-stop waiting window
What Happens If Patience Is Higher Than Epochs
Suppose:
epochs=50
patience=100
The run reaches its epoch limit before 100 non-improving epochs can accumulate.
In practice, early stopping is unlikely to trigger before normal epoch completion in such a configuration.
This makes the effective stopping condition mainly:
epochs=50
How Early Stopping Affects Long Training Runs
Early stopping is especially useful when you deliberately configure a generous epoch limit.
For example:
epochs=1000
patience=100
You allow the model to continue training for as long as improvement continues, but you do not force all 1000 epochs if performance plateaus early.
This is often more practical than trying to guess the exact ideal number of epochs in advance.
Benefits of Early Stopping in YOLOv8
Early stopping provides several practical benefits.
Reduces Unnecessary Training
If the model is no longer improving, stopping avoids hundreds of unproductive epochs.
For example:
Configured epochs = 500
Actual stop = 240
This can significantly reduce training time.
Helps Control Overfitting
Early stopping may help limit overfitting because it can end training when validation performance stops improving.
However, it should not be treated as a complete solution to overfitting.
Overfitting can also require:
- more data,
- better augmentation,
- smaller model capacity,
- weight decay,
- cleaner annotations.
Early stopping is one useful control mechanism among several.
Saves GPU Time and Resources
Long YOLO training runs can consume substantial resources.
Stopping automatically can save:
GPU hours
cloud training cost
electricity
experiment time
This becomes particularly valuable when tuning many models.
Common Early Stopping Problems
Incorrect patience values can make early stopping less useful.
Training Stops Too Early
Suppose validation performance temporarily stops improving:
Epoch 60 → best
Epoch 61–70 → plateau
Epoch 75 → would improve
If:
patience=10
training may stop before reaching epoch 75.
The solution may be to increase patience.
Validation Metrics Fluctuate
Validation metrics rarely improve perfectly every epoch.
A curve may look like:
0.62
0.64
0.63
0.65
0.64
0.66
These small fluctuations are normal.
A patience value should provide enough room for noisy validation results without terminating training prematurely.
Patience Value Is Too Low
An extremely low value such as:
patience=1
means one short period without improvement can trigger early stopping.
This is usually too aggressive for most real-world training runs.
Even Ultralytics’ training guidance examples use multi-epoch patience windows rather than expecting every epoch to produce a new best result.
Model Continues Training Without Improvement
This happens when patience is too large.
For example:
best epoch = 150
patience = 200
YOLO can continue until roughly epoch:
350
without a new best result.
If training cost is important and long plateaus are common, reduce patience.
Best Practices for YOLOv8 Early Stopping
Early stopping works best when used together with careful monitoring.
Monitor Training and Validation Metrics
Do not judge training using only:
training loss
Also monitor:
validation metrics
mAP
precision
recall
validation loss
A model may continue reducing training loss while validation performance has already stopped improving.
Use a Suitable Patience Value
Start with a reasonable value rather than an extreme one.
The current Ultralytics default is:
100
For shorter experiments, a smaller patience may make sense.
For long or noisy experiments, a larger patience window can reduce premature stopping.
Keep the Best Model Checkpoint
Early stopping is closely related to checkpoint selection.
YOLO training typically produces:
best.pt
last.pt
best.pt represents the best-performing saved checkpoint according to the training fitness criteria.
Even if training continues beyond the best epoch before patience is reached, you can still use the best checkpoint for validation or inference.
FAQs About YOLOv8 Early Stopping and Patience
What is early stopping in YOLOv8?
Early stopping automatically ends YOLOv8 training when validation performance has not improved for a specified number of epochs.
The waiting period is controlled by:
patience
Ultralytics describes it as the number of epochs to wait without validation improvement before stopping.
What does patience mean in YOLOv8?
Patience is the number of epochs YOLOv8 allows to pass without a new best validation result.
For example:
patience=50
means training can stop after 50 epochs without improvement.
What is the default patience value in YOLOv8?
The current default Ultralytics Train mode value is:
patience=100
Because defaults can change between software versions, it is useful to specify the value explicitly when experiment reproducibility matters.
How do I change patience in YOLOv8?
Using CLI:
yolo detect train model=yolov8n.pt data=data.yaml patience=50
Using Python:
model.train(
data="data.yaml",
patience=50
)
The setting is part of the standard Ultralytics training configuration.
Can I disable early stopping in YOLOv8?
Yes.
Use:
patience=0
For example:
yolo detect train model=yolov8n.pt data=data.yaml epochs=300 patience=0
Ultralytics issue guidance confirms that patience=0 disables early stopping.
Does early stopping prevent overfitting?
It can help reduce overfitting by ending training after validation performance stops improving.
However, it does not guarantee that overfitting will never occur.
Dataset quality, augmentation, model capacity, and regularization remain important.
What happens when YOLOv8 reaches the patience limit?
When the number of epochs since the best validation fitness reaches the configured patience value, the early-stopping logic signals the trainer to stop.
The best-performing checkpoint remains available for later use. Ultralytics’ early-stopping implementation tracks the best fitness and best epoch for this decision.
Conclusion
YOLOv8 early stopping and patience provide an automatic way to prevent training from continuing indefinitely after validation performance has stopped improving.
The key setting is:
patience
Current Ultralytics Train mode uses:
patience=100
as the default.
A simple training command is:
yolo detect train model=yolov8n.pt data=data.yaml epochs=300 patience=50
The training logic can be summarized as:
Train Model
↓
Validate
↓
New Best Result?
↙ ↘
Yes No
↓ ↓
Reset Increase
Best Waiting Period
Epoch ↓
Patience Reached?
↓
Stop
Use a smaller patience when training cost matters and validation behavior is stable. Use a larger value when metrics fluctuate or improvements may appear after long plateaus.
For reproducible experiments, specify both epochs and patience explicitly, monitor validation performance, and keep the best.pt checkpoint rather than assuming the final training epoch always produces the best model.
I’m Jane Austen, a skilled content writer with the ability to simplify any complex topic. I focus on delivering valuable tips and strategies throughout my articles.