Skip to content

FastPitchModel_SSL / SSLDisentangler crash on validation: on_validation_epoch_end() missing 1 required positional argument: 'outputs' #16216

Open

Description

@udsy19

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 hook

Same 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions