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

Refactor communication and storage of optimization results #8811

Open
verveerpj opened this issue May 6, 2024 · 0 comments · Fixed by #9161 · May be fixed by #9763
Open

Refactor communication and storage of optimization results #8811

verveerpj opened this issue May 6, 2024 · 0 comments · Fixed by #9161 · May be fixed by #9763

Comments

@verveerpj
Copy link
Contributor

verveerpj commented May 6, 2024

The current storage for everest optimization results should be ported away from the seba-sqlite to something as close to the ERT storage as possible. The results generated by Everest can be seen as:
(1) forward model runs w/ inputs (Everest controls / ERT parameters) and outputs (Everest objectives / ERT GEN_DATA responses)
(2) optimization results computed by ROPT, where the forward model responses are used as inputs. Some of these are not explicitly existing in ERT storage

Course of action:

  1. Move storage logic out of seba_sqlite: Store everest results in ERT storage #9161
  2. Add Everest realization metadata to ERT storage #9751
  3. (blocked by #9751) Use ERT storage for Everest simulator cache #9674
  4. (blocked by #9751) Reduce redundant storage of Everest responses/parameters #9752

Considerations/notes:

  • All things computed by ROPT cannot be retrieved from ERT storage, this includes constraint violations, and basically any dataframe starting with batch_, meaning various aggregations of results per-realization. Recomputation of these should be very fast if we resolve #9764

Issue
Optimization results are currently stored in an SQLite database, which is used by Everest via a snapshot object to report and store results. This approach is not directly supported anymore by the ropt which is used by Everest to run the optimization. Everest uses the seba-sqlite package which provides the original code from Seba to support the SQLite database.

This code should be replaced in Everest for the following reasons:

  • Reliability issues with the SQLite database, in particular on NFS files systems.
  • Performance is poor.
  • The code has not kept up with new features that have added in recent years, impeding proper monitoring and storage of results. For instance, when auto-normalization is used, the console output does not handle scaled results properly due to missing information.
  • The seba-sqlite code is deprecated, TNO will not continue to support it.

Instead of using the database, Everest should receive optimization results directly from ropt via the provided callback mechanism, and take appropriate actions to report and store results.

Definition of done
When the SQLite code has been removed from Everest and all current reporting and storage functionality is available.

Blocked by equinor/everest#118

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment