diff --git a/docs/source-pytorch/api_references.rst b/docs/source-pytorch/api_references.rst index 4ad07accc0..9ed881dc8e 100644 --- a/docs/source-pytorch/api_references.rst +++ b/docs/source-pytorch/api_references.rst @@ -254,7 +254,6 @@ utilities data deepspeed distributed - finite_checks memory model_summary parsing diff --git a/src/lightning/pytorch/CHANGELOG.md b/src/lightning/pytorch/CHANGELOG.md index 21cb1a1e1f..f3801f8ecb 100644 --- a/src/lightning/pytorch/CHANGELOG.md +++ b/src/lightning/pytorch/CHANGELOG.md @@ -184,6 +184,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). - Removed `Trainer.model` setter ([#16462](https://github.com/Lightning-AI/lightning/pull/16462)) +- Removed the unused `lightning.pytorch.utilities.finite_checks.print_nan_gradients` function ([#16682](https://github.com/Lightning-AI/lightning/pull/16682)) +- Removed the unused `lightning.pytorch.utilities.finite_checks.detect_nan_parameters` function ([#16682](https://github.com/Lightning-AI/lightning/pull/16682)) + - Tuner removal * Removed the deprecated `trainer.tuning` property ([#16379](https://github.com/Lightning-AI/lightning/pull/16379)) * Removed the deprecated `TrainerFn.TUNING` and `RunningStage.TUNING` enums ([#16379](https://github.com/Lightning-AI/lightning/pull/16379)) diff --git a/src/lightning/pytorch/utilities/finite_checks.py b/src/lightning/pytorch/utilities/finite_checks.py deleted file mode 100644 index cb37a2704e..0000000000 --- a/src/lightning/pytorch/utilities/finite_checks.py +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright The Lightning AI team. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""Helper functions to detect NaN/Inf values.""" - -import logging - -import torch -import torch.nn as nn - -log = logging.getLogger(__name__) - - -def print_nan_gradients(model: nn.Module) -> None: - """Iterates over model parameters and prints out parameter + gradient information if NaN.""" - for param in model.parameters(): - if (param.grad is not None) and torch.isnan(param.grad.float()).any(): - log.info(f"{param}, {param.grad}") - - -def detect_nan_parameters(model: nn.Module) -> None: - """Iterates over model parameters and prints gradients if any parameter is not finite. - - Raises: - ValueError: - If ``NaN`` or ``inf`` values are found - """ - for name, param in model.named_parameters(): - if not torch.isfinite(param).all(): - print_nan_gradients(model) - raise ValueError( - f"Detected nan and/or inf values in `{name}`." - " Check your forward pass for numerically unstable operations." - ) diff --git a/tests/tests_pytorch/utilities/test_finite_checks.py b/tests/tests_pytorch/utilities/test_finite_checks.py deleted file mode 100644 index d47e2c3f2a..0000000000 --- a/tests/tests_pytorch/utilities/test_finite_checks.py +++ /dev/null @@ -1,20 +0,0 @@ -import math - -import pytest -import torch -import torch.nn as nn - -from lightning.pytorch.utilities.finite_checks import detect_nan_parameters - - -@pytest.mark.parametrize("value", (math.nan, math.inf, -math.inf)) -def test_detect_nan_parameters(value): - model = nn.Linear(2, 3) - - detect_nan_parameters(model) - - nn.init.constant_(model.bias, value) - assert not torch.isfinite(model.bias).all() - - with pytest.raises(ValueError, match=r".*Detected nan and/or inf values in `bias`.*"): - detect_nan_parameters(model)