-
Notifications
You must be signed in to change notification settings - Fork 112
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
ML keras #4172
base: master
Are you sure you want to change the base?
ML keras #4172
Conversation
jenkins build this please |
jenkins build this please |
This does not add a dependency on a third party library, so then I assume it instead embeds Keras in some way? Or have I misunderstood the purpose of this PR? |
Is there a reason this is added to opm-common instead of being a separate repository? Do we, somehow, need to make (selected) objects in this repository, or any of its downstream repositories for that matter, "aware" of Keras? |
We use Keras for the training process (it doesnt need to be done in OPM). The generated models are subsequently embedded and run in OPM. I have updated the description to provide some context. |
jenkins build this please |
jenkins build this please |
Maybe I'm missing something, but as far as I can tell no-one have answered my question from last week
I would really like an answer to this before I consider the details of the PR. |
Sorry for not answering earlier. The idea is to apply the ML-Keras inside OPM for different tasks. This is only the first PR to add the Keras ML model. The applications will follow. For an example of a ML near well model using ML-Keras check out https://github.com/cssr-tools/ML_near_well. Since the ML-Keras model framework is general. We hope it would be useful for the OPM community and therefore suggest to add it to opm-common |
Okay, utility/convenience is clearly one reason for adding it here. Would it be impossible to make [your/certain use cases] work if it were located elsewhere? Do you, for instance, need access to the internals/private data members or member functions of |
jenkins build this please |
Exact! For instance, we need access to the automatic differentiation tools within OPM. |
jenkins build this please |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are a lot of changes needed here. I have only looked at the C++ code, and I probably missed some. I have not really checked that the activation functions or the layers do what a user of Keras would expect. I have not looked at any of the Python code, someone else must do that.
I have requested many changes, but I hope it provides a useful learning experience. Feel free to ask about anything that is unclear!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some comments on the python bits. I think a major point is that the folder opm/ml_tools
, which contains only python code, should probably be moved to say the python
folder or similar. And since these scripts use external libraries (tf, numpy, keras) I would really like to see a requirements.txt
file specifying the versions used. Especially tensorflow is known to be problematic her.
Thanks all for the valuables comments and suggestions. |
jenkins build this please |
1 similar comment
jenkins build this please |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have looked at the c++ parts, which have been improved a lot. Still quite a few things to address, but I think this will converge eventually!
opm/ml/keras_model.hpp
Outdated
data_.resize(i * j * k * l); | ||
} | ||
|
||
inline void Flatten() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is still a problem.
Integrating Keras capabilities to OPM.
Draft pull request to test/discuss implications of the changes in OPM.
This enables the straightforward and adaptable integration of neural networks into OPM scripts. These models are initially trained using the Keras library in Python, stored in a format readable for the OPM framework and subsequently deployed within OPM.
When the user initializes and loads a stored Keras model inside an OPM script, an automated deployment process handles all the translation. This process works by operating a series of steps handling model interpretation, layer conversion, optimization, and code generation steps to adapt the Keras model to a native OPM function.