-
Notifications
You must be signed in to change notification settings - Fork 45
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Current situation
Optimagic does not make a check for infinite values in gradients. Some optimizers do and raise an error if any infinite values are encountered. The error message raised by optimizers is necessarily based on internal (flat) gradients.
Possible improvements
- Make the check in optimagic (
fun
andfun_and_jac
of theInternalOptimizationProblem
) and raise an error message based on external (non-flat) gradients - Integrate this with our error handling. If
error_handling
is set tocontinue
we could treat infinite values in gradients as error and replace the function value and gradient with penalty versions.
Example
This topic came up in a skillmodels application by @hmgaudecker using the fides optimizer
│ /home/skanehealth/skane-struct-bw/.pixi/envs/default/lib/python3.13/site-packages/fides/minimize │
│ .py:793 in check_finite │
│ │
│ 790 │ │ if not np.isfinite(grad).all(): │
│ 791 │ │ │ self.exitflag = ExitFlag.NOT_FINITE │
│ 792 │ │ │ ix = np.where(np.logical_not(np.isfinite(grad))) │
│ ❱ 793 │ │ │ raise RuntimeError('Encountered non-finite gradient entries' │
│ 794 │ │ │ │ │ │ │ f' {grad[ix]} for indices {ix} ' │
│ 795 │ │ │ │ │ │ │ f'{pointstr}') │
│ 796 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
RuntimeError: Encountered non-finite gradient entries [
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan
] for indices (
array([
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 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, 48, 49, 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, 88, 89, 90,
91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
117, 118, 119, 120, 121
]),
) at initial point.
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request