Skip to content

Loose the Neuropod backend version match #539

@jiaguofang

Description

@jiaguofang

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.

Describe alternatives you've considered

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions