Allow Composer to limit the total time of chain execution
Created by: J3FALL
In some cases, sklearn model.fit freezes and does not respond indefinitely. Therefore, it significantly increases the total time of composing. It would be useful to implement an additional feature for GPOptimizer that can stop the execution of a given individ (chain in population) if it works too much time (for instance, more than 5% of max_lead_time).
Subtasks:
- Implement the performance testing of SkLearn models that FEDOT currently support via running each model 10-100 times on a certain/various to catch the "freeze event"
- Improve current GPOptimizer context_manager (see CompositionTimer class) adding a feature for chain execution limiting
- Test new version of GPOptimizer on large chains (>10 models, >3 depth)
Useful links: https://www.freecodecamp.org/news/two-hours-later-and-still-running-how-to-keep-your-sklearn-fit-under-control-cc603dc1283b/ https://stackoverflow.com/questions/366682/how-to-limit-execution-time-of-a-function-call-in-python/37648512#37648512