FastPitchModel_SSL / SSLDisentangler crash on validation: on_validation_epoch_end() missing 1 required positional argument: 'outputs'
Describe the bug
FastPitchModel_SSL and SSLDisentangler (nemo/collections/tts/models/fastpitch_ssl.py,
nemo/collections/tts/models/ssl_tts.py) define on_validation_epoch_end(self, outputs), the
pre-Lightning-2.0 hook signature. Lightning's evaluation loop calls this hook with zero
positional arguments (_EvaluationLoop._on_evaluation_epoch_end ->
call._call_lightning_module_hook(trainer, "on_validation_epoch_end")), so any real validation
epoch on either model raises a TypeError before user code runs, aborting training at the very
first sanity-check validation pass.
The PL 2.0 migration (#6433) removed this parameter from every other model in the repo (renaming
validation_epoch_end(self, outputs) to on_validation_epoch_end(self) and switching to
self.validation_step_outputs, e.g. the sibling FastPitchModel.on_validation_epoch_end), but
left it in place on these two.
Steps/Code to reproduce bug
from nemo.collections.tts.models.fastpitch_ssl import FastPitchModel_SSL
# bypasses __init__ (needs a full model config); the crash is in the call
# signature itself, independent of any instance state
m = object.__new__(FastPitchModel_SSL.__wrapped__)
m.on_validation_epoch_end() # zero args, exactly how Lightning calls this hookSame for SSLDisentangler. A full lightning.pytorch.Trainer.fit() run with a
validation_step reaches the same call and crashes identically.
Expected behavior
Validation should run without a TypeError, the same as every other TTS model in the repo.
Actual behavior
TypeError: FastPitchModel_SSL.on_validation_epoch_end() missing 1 required positional argument: 'outputs'and the identical error for SSLDisentangler. This happens on the very first sanity-check
validation pass, before any training step runs, whenever validation_ds/check_val_every_n_epoch
is configured -- which the shipped examples/tts/conf/fastpitch_ssl.yaml and
examples/tts/conf/ssl_tts_22050.yaml both do.
Environment overview
- Environment location: Bare-metal (CPU)
- Method of NeMo install: from source (
pip install -e .)
Environment details
- OS: Linux
- PyTorch: 2.13.0+cpu
- Lightning: 2.4.0
- Python: 3.12.3
Source: NVIDIA-NeMo/Speech