-
Notifications
You must be signed in to change notification settings - Fork 77
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
Loose the Neuropod backend version match #539
Comments
This is a good suggestion and something I've thought about a bit. Unfortunately, it's kinda tricky to do correctly. The backends depend on code compiled into We can use tools to track this and ensure we don't break ABI compatibility for backends within a All of the above also will likely make our CI tooling more complex as well. Adding version mismatch flexibility will be fairly complex to do (and test) correctly so we need to figure out if it's worth it. Maybe there's another solution that's simpler (e.g. mount backends as a docker volume at runtime instead of building them into the image, inject them the same way you inject the 1 This depends on if we want to follow semver or not. For example, PyTorch does a minor release every quarter (~90 days), but these minor releases contain backwards incompatible changes (which goes against semver rules): https://github.com/pytorch/pytorch/releases |
To clarify, we haven't changed a header file in a way that should impact ABI compatibility since June of last year. However, the point of the quote above is that it would be very easy to accidentally break ABI compatibility. |
Feature
Is your feature request related to a problem? Please describe.
In Michelangelo, Neuropod JNI and backends are built into different places: Neuropod JNI is built into a michelangelo.jar, while backends are built into a Docker image. When upgrading the Neuropod version, e.g. 0.3.0-rc5 to 0.3.0-rc6, we often see the following issue across our use cases. The main reason is that when the issue happens, the michelangelo.jar got upgraded with a newer Neuropod JNI version (e.g. 0.3.0-rc6), but the backends in the Docker image are still with an old version (e.g. 0.3.0-rc5). This is unavoidable since many users build their own training pipelines and we don't have an efficient way to upgrade the new version in all the places.
Describe the solution you'd like
Instead of matching the exact version between Neuropod JNI and backends, can you maintain a backward-compatible list of versions? Meaning Neuropod JNI 0.3.0-rc6 can be compatible with [0.3.0-rc6, 0.3.0-rc5, 0.3.0-rc4, ...]. In this way, the Neuropod JNI version in michelangelo.jar can be different from the backends version in the Docker image. So that users won't get the above error when there is a Neuropod version upgrade.
Describe alternatives you've considered
Additional context
The text was updated successfully, but these errors were encountered: