aidevelopmenttoolkit.torch_utils.optimizer_utils

get_optimizer(class_name: str, optimizer_kwargs: dict[str, Any], parameters: Iterable[nn.Parameter]) -> Optimizer

Returns an initialized PyTorch optimizer.

Parameters:
  • class_name (str) –

    The name of the optimizer class defined in torch.optim, e.g. "Adam", "AdamW", or "SGD".

  • optimizer_kwargs (Dict[str, Any]) –

    The keyword arguments to pass to the optimizer constructor, e.g. {"lr": 1e-3, "weight_decay": 1e-4}.

  • parameters (Iterable[Parameter]) –

    The model parameters to be optimized.

Returns:
  • Optimizer –

    An initialized instance of the specified PyTorch optimizer.

Source code in aidevelopmenttoolkit/torch_utils/optimizer_utils.py
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def get_optimizer(
        class_name: str,
        optimizer_kwargs: dict[str, Any],
        parameters: Iterable[nn.Parameter],
    ) -> Optimizer:
    """Returns an initialized PyTorch optimizer.

    Parameters
    ----------
    class_name : str
        The name of the optimizer class defined in `torch.optim`,
        e.g. "Adam", "AdamW", or "SGD".

    optimizer_kwargs : Dict[str, Any]
        The keyword arguments to pass to the optimizer constructor,
        e.g. {"lr": 1e-3, "weight_decay": 1e-4}.

    parameters : Iterable[nn.Parameter]
        The model parameters to be optimized.

    Returns
    -------
    Optimizer
        An initialized instance of the specified PyTorch optimizer.
    """
    optimizer_class = getattr(torch.optim, class_name, None)

    if (
        not isinstance(optimizer_class, type)
        or not issubclass(optimizer_class, Optimizer)
    ):
        logger.error(f"Value error: '{class_name}' is not a valid PyTorch optimizer class.", ValueError)

    return optimizer_class(parameters, **optimizer_kwargs)

get_lr_scheduler(class_name: str, scheduler_kwargs: dict[str, Any], optimizer: Optimizer) -> LRScheduler

Returns an initialized PyTorch learning-rate scheduler.

Parameters:
  • class_name (str) –

    The name of the scheduler class defined in torch.optim.lr_scheduler, e.g. "StepLR", "CosineAnnealingLR", or "ExponentialLR".

  • scheduler_kwargs (Dict[str, Any]) –

    The keyword arguments to pass to the scheduler constructor, e.g. {"step_size": 10, "gamma": 0.1}.

  • optimizer (Optimizer) –

    The optimizer whose learning rate will be scheduled.

Returns:
  • LRScheduler –

    An initialized instance of the specified PyTorch scheduler.

Source code in aidevelopmenttoolkit/torch_utils/optimizer_utils.py
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
def get_lr_scheduler(
        class_name: str,
        scheduler_kwargs: dict[str, Any],
        optimizer: Optimizer,
    ) -> LRScheduler:
    """Returns an initialized PyTorch learning-rate scheduler.

    Parameters
    ----------
    class_name : str
        The name of the scheduler class defined in
        `torch.optim.lr_scheduler`,
        e.g. "StepLR", "CosineAnnealingLR", or "ExponentialLR".

    scheduler_kwargs : Dict[str, Any]
        The keyword arguments to pass to the scheduler constructor,
        e.g. {"step_size": 10, "gamma": 0.1}.

    optimizer : Optimizer
        The optimizer whose learning rate will be scheduled.

    Returns
    -------
    LRScheduler
        An initialized instance of the specified PyTorch scheduler.
    """
    scheduler_class = getattr(torch.optim.lr_scheduler, class_name, None)

    if (
        not isinstance(scheduler_class, type)
        or not issubclass(scheduler_class, LRScheduler)
    ):
        logger.error(
            f"Value error: '{class_name}' is not a valid PyTorch "
            "learning-rate scheduler class.", ValueError
        )

    return scheduler_class(optimizer, **scheduler_kwargs)