From 4e0f5d5ec9e9eeb2e892740dd105a901556b134e Mon Sep 17 00:00:00 2001 From: Linlang <30293408+SunsetWolf@users.noreply.github.com> Date: Wed, 21 Jan 2026 15:09:34 +0800 Subject: [PATCH] fix: use semantic version comparison for PyTorch scheduler compatibility (#2094) --- qlib/contrib/model/pytorch_nn.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qlib/contrib/model/pytorch_nn.py b/qlib/contrib/model/pytorch_nn.py index 190d1ba45..9f427bd94 100644 --- a/qlib/contrib/model/pytorch_nn.py +++ b/qlib/contrib/model/pytorch_nn.py @@ -10,6 +10,7 @@ import os import gc import numpy as np import pandas as pd +from packaging import version from typing import Callable, Optional, Text, Union from sklearn.metrics import roc_auc_score, mean_squared_error @@ -148,7 +149,7 @@ class DNNModelPytorch(Model): if scheduler == "default": # In torch version 2.7.0, the verbose parameter has been removed. Reference Link: # https://github.com/pytorch/pytorch/pull/147301/files#diff-036a7470d5307f13c9a6a51c3a65dd014f00ca02f476c545488cd856bea9bcf2L1313 - if str(torch.__version__).split("+", maxsplit=1)[0] <= "2.6.0": + if version.parse(str(torch.__version__).split("+", maxsplit=1)[0]) <= version.parse("2.6.0"): # Reduce learning rate when loss has stopped decrease self.scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau( # pylint: disable=E1123 self.train_optimizer,