From 5a61a1d9dfe9395041cd8f901524739ce34ce240 Mon Sep 17 00:00:00 2001 From: Pranav Bhat Date: Mon, 9 Jun 2025 14:53:52 +0530 Subject: [PATCH 1/3] include missing warning for multi-target forecasting support --- pytorch_forecasting/models/base/_base_model_v2.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pytorch_forecasting/models/base/_base_model_v2.py b/pytorch_forecasting/models/base/_base_model_v2.py index aceec0869..5c24e33a7 100644 --- a/pytorch_forecasting/models/base/_base_model_v2.py +++ b/pytorch_forecasting/models/base/_base_model_v2.py @@ -61,6 +61,10 @@ def __init__( " The API is not stable and may change without prior warning. " "This class is intended for beta testing and as a basic skeleton, " "but not for stable production use. " + "\n\nIMPORTANT: Multi-target forecasting (MultiLoss) is NOT supported " + "in v2 base models. For multi-target forecasting, please use " + "pytorch_forecasting.models.base.BaseModel (v1) instead. " + "Attempting to use MultiLoss with v2 models will result in runtime errors. " "Feedback and suggestions are very welcome in " "pytorch-forecasting issue 1736, " "https://github.com/sktime/pytorch-forecasting/issues/1736", From a36ec2cb13fe0c2a6a9234cf6ab88c70e208cf34 Mon Sep 17 00:00:00 2001 From: Pranav Bhat Date: Thu, 12 Jun 2025 23:36:43 +0530 Subject: [PATCH 2/3] change code to trigger a warning, subject to loss being MultiLoss --- pytorch_forecasting/models/base/_base_model_v2.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pytorch_forecasting/models/base/_base_model_v2.py b/pytorch_forecasting/models/base/_base_model_v2.py index 5c24e33a7..05eb86c6a 100644 --- a/pytorch_forecasting/models/base/_base_model_v2.py +++ b/pytorch_forecasting/models/base/_base_model_v2.py @@ -46,6 +46,17 @@ def __init__( Parameters for the learning rate scheduler. """ super().__init__() + + # simple check for MultiLoss usage. + if hasattr(loss, "__class__") and loss.__class__.__name__ == "MultiLoss": + warn( + "\nIMPORTANT: Multi-target forecasting (MultiLoss) is NOT supported " + "in v2 base models. For multi-target forecasting, please use " + "pytorch_forecasting.models.base.BaseModel (v1) instead. " + "Attempting to use MultiLoss with v2 models will result in runtime errors.", # noqa: E501 + UserWarning, + stacklevel=2, + ) self.loss = loss self.logging_metrics = logging_metrics if logging_metrics is not None else [] self.optimizer = optimizer @@ -61,10 +72,6 @@ def __init__( " The API is not stable and may change without prior warning. " "This class is intended for beta testing and as a basic skeleton, " "but not for stable production use. " - "\n\nIMPORTANT: Multi-target forecasting (MultiLoss) is NOT supported " - "in v2 base models. For multi-target forecasting, please use " - "pytorch_forecasting.models.base.BaseModel (v1) instead. " - "Attempting to use MultiLoss with v2 models will result in runtime errors. " "Feedback and suggestions are very welcome in " "pytorch-forecasting issue 1736, " "https://github.com/sktime/pytorch-forecasting/issues/1736", From a7c450f37083045f37915837dde4c886b6a38a25 Mon Sep 17 00:00:00 2001 From: Pranav Bhat Date: Fri, 13 Jun 2025 01:11:46 +0530 Subject: [PATCH 3/3] use inspect for checking is loss is a class --- pytorch_forecasting/models/base/_base_model_v2.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pytorch_forecasting/models/base/_base_model_v2.py b/pytorch_forecasting/models/base/_base_model_v2.py index 05eb86c6a..c144ba74b 100644 --- a/pytorch_forecasting/models/base/_base_model_v2.py +++ b/pytorch_forecasting/models/base/_base_model_v2.py @@ -5,6 +5,7 @@ ######################################################################################## +import inspect from typing import Optional, Union from warnings import warn @@ -48,7 +49,7 @@ def __init__( super().__init__() # simple check for MultiLoss usage. - if hasattr(loss, "__class__") and loss.__class__.__name__ == "MultiLoss": + if inspect.isclass(loss) and loss.__class__.__name__ == "MultiLoss": warn( "\nIMPORTANT: Multi-target forecasting (MultiLoss) is NOT supported " "in v2 base models. For multi-target forecasting, please use "