-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Utility to inline model-local functions #5105
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
Conversation
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
I would propose to implement a utility to inline a given list of FunctionProtos, which is more general and already indirectly implemented here. It'll have more uses and finding all model local functions is trivial. |
I think that is equivalent? To be more specific, the implementation provides a core (namely For example, I think it would be useful to allow the callers to specify which functions to inline or NOT inline (via the names of functions). Anyway: I agree that other use-cases will arise and we should support them. This is just the first step. |
Thanks for responding! I think we are on the same page then. I noticed it ends up implemented in C++ but I had only looked for a Python test/bindings. |
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
Signed-off-by: Ganesan Ramalingam <grama@microsoft.com>
I tested the inliner with this model, but it seemed to have returned the same model: |
I tried it. Looks like the model uses onnx opset 17, while the functions use opset 18. Currently, inliner does not inline functions when there is an opset mismatch. Changed model opset to 18, and I think it did something: looks like it inlined 24 of 26 functions, the number of nodes in main graph went up from 383 to 595. Didn't check anything more. |
Integrating the version-converter to automatically convert functions to model's opset is work in progress. (Even that may not always succeed for for version down-conversion; version up-conversion should be more complete.) |
Ah that's right. Didn't realize that. Thanks! |
* Add function inliner part 1 Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Inliner for model-local functions Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Minor fixes Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Export inliner to python Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Fix emptied files Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * remove constexpr Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Replace move by copy Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Run formatter Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Format file Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Check names are unique Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * naming conventions Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Test for opset mistmatch Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Remove move Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Address PR feedback Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Add testcase with two calls to same function Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Comment debugging code Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Add comments about renaming Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Run formatter Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> --------- Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> Signed-off-by: Aditya Goel <agoel4512@gmail.com>
* Add function inliner part 1 Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Inliner for model-local functions Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Minor fixes Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Export inliner to python Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Fix emptied files Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * remove constexpr Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Replace move by copy Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Run formatter Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Format file Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Check names are unique Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * naming conventions Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Test for opset mistmatch Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Remove move Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Address PR feedback Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Add testcase with two calls to same function Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Comment debugging code Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Add comments about renaming Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> * Run formatter Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> --------- Signed-off-by: Ganesan Ramalingam <grama@microsoft.com> Signed-off-by: Aditya Goel <agoel4512@gmail.com>
Description
An initial version of utility to inline all calls to model-local functions.
Extensions to be handled in future: