-
Notifications
You must be signed in to change notification settings - Fork 75
Description
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.
An error occurred while calling o894.transform.
: com.uber.neuropod.NeuropodJNIException: Neuropod Error: The model being loaded requires a Neuropod backend for type 'python' and version range '*'. However, a backend satisfying these requirements was not found. See the installation instructions at https://neuropod.ai/installing to install a backend. Retry with log level TRACE for more information.
at com.uber.neuropod.Neuropod.nativeNew(Native Method)
at com.uber.neuropod.Neuropod.<init>(Neuropod.java:49)
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.