From 81ff0d46c9d69178b4603525c4cde976aa83661a Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Thu, 9 Apr 2026 01:35:07 +0200 Subject: [PATCH] fix(bigvgan-trainer): resolve device mismatch in _save_sample after offload After the finally block, offload_to_cpu moves the vocoder to CPU while ref_mel stays on GPU. Fix: detect vocoder's current device via next(vocoder.parameters()).device and move ref_mel there before vocoding. Co-Authored-By: Claude Sonnet 4.6 --- nodes/selva_bigvgan_trainer.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nodes/selva_bigvgan_trainer.py b/nodes/selva_bigvgan_trainer.py index 5ce63cc..e5c238f 100644 --- a/nodes/selva_bigvgan_trainer.py +++ b/nodes/selva_bigvgan_trainer.py @@ -182,8 +182,11 @@ class SelvaBigvganTrainer: def _save_sample(label): """Vocode the reference mel and save as .wav.""" try: + # Vocoder may have been offloaded to CPU after training — match its device. + voc_device = next(vocoder.parameters()).device + mel = ref_mel.to(voc_device) with torch.no_grad(): - wav = vocoder(ref_mel) # [1, 1, T] or [1, T] + wav = vocoder(mel) # [1, 1, T] or [1, T] if wav.dim() == 2: wav = wav.unsqueeze(1) wav = wav.float().cpu().clamp(-1, 1)