-
Notifications
You must be signed in to change notification settings - Fork 665
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
Creates DJL manual engine initialization #2885
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fixes deepjavalibrary#2875 reverts deepjavalibrary#2876 This adds new support for DJL manual initialization of engines to support `DJL_ENGINE_MANUAL_INIT`. Once done, no engines providers will be found or loaded on startup. Instead, they can be added manually by: ```java PtEngineProvider provider = new PtEngineProvider(); provider.getEngine(); // Optional, throws exception if the provider can not load Engine.registerEngine(provider); Engine.setDefaultEngine(provider.getEngineName()); // Optional, sets as default ```
…pjavalibrary#2884)" This reverts commit 586bb07.
Codecov ReportAttention:
❗ Your organization needs to install the Codecov GitHub app to enable full functionality. Additional details and impacted files@@ Coverage Diff @@
## master #2885 +/- ##
============================================
+ Coverage 72.08% 72.27% +0.18%
- Complexity 5126 7277 +2151
============================================
Files 473 721 +248
Lines 21970 32499 +10529
Branches 2351 3389 +1038
============================================
+ Hits 15838 23488 +7650
- Misses 4925 7389 +2464
- Partials 1207 1622 +415 ☔ View full report in Codecov by Sentry. |
This makes several updates: - engines will now initialize once per instance of EngineProvider rather than re-attempt to initialize - Registering an engine can overwrite the existing one - All engines now use the synchronized form rather than the static instance holder. This allows them to have multiple versions and be local to the instance rather than global (but the instance is saved globally)
siddvenk
reviewed
Jan 9, 2024
siddvenk
approved these changes
Jan 9, 2024
siddvenk
added a commit
to siddvenk/djl
that referenced
this pull request
Jan 10, 2024
This reverts commit 6141c48.
zachgk
added a commit
to zachgk/djl-serving
that referenced
this pull request
Jan 10, 2024
This updates DJL Serving to follow the engine initialization standards set in deepjavalibrary/djl#2885. First, it updates the PyEngineProvider to follow the EngineProvider conventions. It also updates the DependencyManager, fixing some bugs that inspired deepjavalibrary/djl#2934. The dependency manager before this change would always re-register the engine with a new provider. Beforehand, the engine was fully static and unable to re-initialize, so this would not accidentally re-initialize engines. After this, it would re-initialize engines that did not support it causing errors. Instead, it should only register new engines rather than all providers to avoid these accidental re-initialization.
frankfliu
added a commit
to onaple/djl
that referenced
this pull request
Feb 26, 2024
This reverts commit 6141c48.
frankfliu
added a commit
that referenced
this pull request
Feb 26, 2024
…turns null when called concurrently. (#3005) * Fixes cases where the getEngine method in the EngineProvider class returns null when called concurrently. * Revert "Creates DJL manual engine initialization (#2885)" This reverts commit 6141c48. --------- Co-authored-by: 王旭 <wangxu75@meituan.com> Co-authored-by: Frank Liu <frankfliu2000@gmail.com>
frankfliu
pushed a commit
that referenced
this pull request
Apr 26, 2024
* Creates DJL manual engine initialization fixes #2875 reverts #2876 This adds new support for DJL manual initialization of engines to support `DJL_ENGINE_MANUAL_INIT`. Once done, no engines providers will be found or loaded on startup. Instead, they can be added manually by: ```java PtEngineProvider provider = new PtEngineProvider(); provider.getEngine(); // Optional, throws exception if the provider can not load Engine.registerEngine(provider); Engine.setDefaultEngine(provider.getEngineName()); // Optional, sets as default ``` * Revert "[tensorflow] Revert InstanceHolder for TensorFlow engine (#2884)" This reverts commit 586bb07. * Revert "[api] Replace double-check singlton with lazy initialization (#2826)" This reverts commit 3927867. * Make engines initialized This makes several updates: - engines will now initialize once per instance of EngineProvider rather than re-attempt to initialize - Registering an engine can overwrite the existing one - All engines now use the synchronized form rather than the static instance holder. This allows them to have multiple versions and be local to the instance rather than global (but the instance is saved globally) * Throws Exception on bad getEngine * Removes unnecessary check
frankfliu
added a commit
that referenced
this pull request
Apr 26, 2024
…turns null when called concurrently. (#3005) * Fixes cases where the getEngine method in the EngineProvider class returns null when called concurrently. * Revert "Creates DJL manual engine initialization (#2885)" This reverts commit 6141c48. --------- Co-authored-by: 王旭 <wangxu75@meituan.com> Co-authored-by: Frank Liu <frankfliu2000@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
fixes #2875
reverts #2876, #2884
This adds new support for DJL manual initialization of engines to support
DJL_ENGINE_MANUAL_INIT
. Once done, no engines providers will be found or loaded on startup. Instead, they can be added manually by: