Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[tune](deps): Bump nevergrad from 0.4.2.post5 to 0.4.3 in /python/requirements #7

Closed

Conversation

dependabot[bot]
Copy link

@dependabot dependabot bot commented on behalf of github Feb 15, 2021

Bumps nevergrad from 0.4.2.post5 to 0.4.3.

Release notes

Sourced from nevergrad's releases.

0.4.3

This version provides a few fixes and the new multi-objective API of optimizers (you can now provide a list/array of float to tell directly). This allows fore more efficient multi-objective optimization for some optimizers (DE, NGOpt). Future work will continue to improve multi-objective capacities and aim at improving constraints management.

See CHANGELOG for details.

Changelog

Sourced from nevergrad's changelog.

0.4.3 (2021-01-28)

Important changes

  • tell method can now receive a list/array of losses for multi-objective optimization #775. For now it is neither robust, nor scalable, nor stable, nor optimal so be careful when using it. More information in the documentation.
  • The old way to perform multiobjective optimization, through the use of :code:MultiobjectiveFunction, is now deprecated and will be removed after version 0.4.3 #1017.
  • By default, the optimizer now returns the best set of parameter as recommendation #951, considering that the function is deterministic. The previous behavior would use an estimation of noise to provide the pessimistic best point, leading to unexpected behaviors #947. You can can back to this behavior by specifying: :code:parametrization.descriptors.deterministic_function = False

Other

  • DE and its variants have been updated to make full use of the multi-objective losses #789. Other optimizers convert multiobjective problems to a volume minimization, which is not always as efficient.
  • as an experimental feature we have added some preliminary support for constraint management through penalties. From then on the prefered option for penalty is to register a function returning a positive float when the constraint is satisfied. While we will wait fore more testing before documenting it, this may already cause instabilities and errors when adding cheap constraints. Please open an issue if you encounter a problem.
  • tell argument value is renamed to loss for clarification #774. This can be breaking when using named arguments!
  • ExperimentFunction now automatically records arguments used for their instantiation so that they can both be used to create a new copy, and as descriptors if there are of type int/bool/float/str [[webui] Generating a new task timeline requires moving the slider. ray-project/ray#914](facebookresearch/nevergrad#914 #914).
  • from now on, code formatting needs to be black compliant. This is simply performed by running black nevergrad. A continuous integration checks that PRs are compliant, and the precommit hooks have been adapted. For PRs branching from an old master, you can run black --line-length=110 nevergrad/<path_to_modified_file> to make your code easier to merge.
  • Pruning has been patched to make sure it is not activated too often upon convergence #1014. The bug used to lead to important slowdown when reaching near convergence.

0.4.2 (2020-08-04)

  • recommend now provides an evaluated candidate when possible. For non-deterministic parametrization like Choice, this means we won't resample, and we will actually recommend the best past evaluated candidate #668. Still, some optimizers (like TBPSA) may recommend a non-evaluated point.
  • Choice and TransitionChoice can now take a repetitions parameters for sampling several times, it is equivalent to :code:Tuple(*[Choice(options) for _ in range(repetitions)]) but can be be up to 30x faster for large numbers of repetitions #670 #696.
  • Defaults for bounds in Array is now bouncing, which is a variant of clipping avoiding over-sompling on the bounds #684 and #691.

This version should be robust. Following versions may become more unstable as we will add more native multiobjective optimization as an experimental feature. We also are in the process of simplifying the naming pattern for the "NGO/Shiwa" type optimizers which may cause some changes in the future.

0.4.1 (2020-05-07)

  • Archive now stores the best corresponding candidate. This requires twice the memory compared to before the change. #594
  • Parameter now holds a loss: Optional[float] attribute which is set and used by optimizers after the tell method.
  • Quasi-random samplers (LHSSearch, HammersleySearch, HaltonSearch etc...) now sample in the full range of bounded variables when the full_range_sampling is True #598. This required some ugly hacks, help is most welcome to find nices solutions.
  • full_range_sampling is activated by default if both range are provided in Array.set_bounds.
  • Propagate parametrization system features (generation tracking, ...) to OnePlusOne based algorithms #599.
  • Moved the Selector dataframe overlay so that basic requirements do not include pandas (only necessary for benchmarks) #609
  • Changed the version name pattern (removed the v) to unify with pypi versions. Expect more frequent intermediary versions to be pushed (deployment has now been made pseudo-automatic).
  • Started implementing more ML-oriented testbeds #642

v0.4.0 (2020-03-09)

Breaking and important changes

  • Removed all deprecated code #499. That includes:
    • instrumentation as init parameter of an Optimizer (replaced by parametrization)
    • instrumentation as attribute of an Optimizer (replaced by parametrization)
    • candidate_maker (not needed anymore)

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

@dependabot dependabot bot force-pushed the dependabot/pip/python/requirements/nevergrad-0.4.3 branch from 7a3f66c to 745aa47 Compare February 24, 2021 17:32
@dependabot @github
Copy link
Author

dependabot bot commented on behalf of github Feb 27, 2021

Superseded by #9.

@dependabot dependabot bot closed this Feb 27, 2021
@dependabot dependabot bot deleted the dependabot/pip/python/requirements/nevergrad-0.4.3 branch February 27, 2021 08:02
edoakes pushed a commit that referenced this pull request Aug 5, 2022
We encountered SIGSEGV when running Python test `python/ray/tests/test_failure_2.py::test_list_named_actors_timeout`. The stack is:

```
#0  0x00007fffed30f393 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&) ()
   from /lib64/libstdc++.so.6
#1  0x00007fffee707649 in ray::RayLog::GetLoggerName() () from /home/admin/dev/Arc/merge/ray/python/ray/_raylet.so
#2  0x00007fffee70aa90 in ray::SpdLogMessage::Flush() () from /home/admin/dev/Arc/merge/ray/python/ray/_raylet.so
#3  0x00007fffee70af28 in ray::RayLog::~RayLog() () from /home/admin/dev/Arc/merge/ray/python/ray/_raylet.so
#4  0x00007fffee2b570d in ray::asio::testing::(anonymous namespace)::DelayManager::Init() [clone .constprop.0] ()
   from /home/admin/dev/Arc/merge/ray/python/ray/_raylet.so
#5  0x00007fffedd0d95a in _GLOBAL__sub_I_asio_chaos.cc () from /home/admin/dev/Arc/merge/ray/python/ray/_raylet.so
#6  0x00007ffff7fe282a in call_init.part () from /lib64/ld-linux-x86-64.so.2
#7  0x00007ffff7fe2931 in _dl_init () from /lib64/ld-linux-x86-64.so.2
#8  0x00007ffff7fe674c in dl_open_worker () from /lib64/ld-linux-x86-64.so.2
#9  0x00007ffff7b82e79 in _dl_catch_exception () from /lib64/libc.so.6
#10 0x00007ffff7fe5ffe in _dl_open () from /lib64/ld-linux-x86-64.so.2
#11 0x00007ffff7d5f39c in dlopen_doit () from /lib64/libdl.so.2
#12 0x00007ffff7b82e79 in _dl_catch_exception () from /lib64/libc.so.6
#13 0x00007ffff7b82f13 in _dl_catch_error () from /lib64/libc.so.6
#14 0x00007ffff7d5fb09 in _dlerror_run () from /lib64/libdl.so.2
#15 0x00007ffff7d5f42a in dlopen@@GLIBC_2.2.5 () from /lib64/libdl.so.2
#16 0x00007fffef04d330 in py_dl_open (self=<optimized out>, args=<optimized out>)
    at /tmp/python-build.20220507135524.257789/Python-3.7.11/Modules/_ctypes/callproc.c:1369
```

The root cause is that when loading `_raylet.so`, `static DelayManager _delay_manager` is initialized and `RAY_LOG(ERROR) << "RAY_testing_asio_delay_us is set to " << delay_env;` is executed. However, the static variables declared in `logging.cc` are not initialized yet (in this case, `std::string RayLog::logger_name_ = "ray_log_sink"`).

It's better not to rely on the initialization order of static variables in different compilation units because it's not guaranteed. I propose to change all `RAY_LOG`s to `std::cerr` in `DelayManager::Init()`.

The crash happens in Ant's internal codebase. Not sure why this test case passes in the community version though.

BTW, I've tried different approaches:

1. Using a static local variable in `get_delay_us` and remove the global variable. This doesn't work because `init()` needs to access the variable as well.
2. Defining the global variable as type `std::unique_ptr<DelayManager>` and initialize it in `get_delay_us`. This works but it requires a lock to be thread-safe.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants