Skip to content

About

Implementations for Feedzai's OpenML APIs to allow for usage of machine learning models in the Java programming language.

Resources

Stars

3 stars

Watchers

9 watching

Forks

Repository files navigation

Feedzai OpenML Providers for Java

Build Status codecov Codacy Badge

Implementations of the Feedzai OpenML API to allow support for machine learning models in Java.

All models may be used in nodes with AMD64 and ARM64 cpu architectures except for H2O-xgboost that can be used only with AMD64 cpu architectures.

Building

This is a Maven project which you can build using the following command:

mvn clean install

If the build fails compiling for ARM64 you may need to run:

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

To use the models on Operating Systems with musl (supported only for AMD64 architectures), the ENV variable FDZ_OPENML_JAVA_LIBC must be set to musl. This variable can take the values glibc and musl. H2O-xgboost can't be used with musl.

Releasing

For all releases, as the hotfix branch is ready all that's needed to actually release is to create an annotated tag pointing to the hotfix branch head.

Release lineages

The project is maintained in two parallel release lineages, each tracked by its own branch, so that clients on different Java baselines can keep receiving features:

Lineage Branch Java baseline Purpose
3.X master Java 25 Default lineage. Carries the Java 25 changes.
2.X hf-2.X pre-Java 25 (Java 8+) Hotfix lineage for clients that cannot yet run Java 25.

Both lineages ship the same providers (for example, the native XGBoost provider); the only difference is the Java baseline each one targets. When preparing a release, make the tag on the branch that matches the lineage: master for 3.x.y tags and hf-2.X for 2.x.y tags.

Public Release

For a public release you need to create and push an annotated tag. See the example below for releasing version 1.2.29:

# Ensure the tag is made on the updated branch
git fetch -a
git checkout origin/hf-1.2.X
git tag -a 1.2.29
# Your EDITOR will open. Write a good message and save as it is used on Github as a release message
git push origin 1.2.29

Then you need to create a new release with this tag. There is a "Generate release notes" button available to create the release notes, just organize them according to the previous ones.

Experimental Release

For experimental releases, the process is the same as above but with a lightweight tag instead of annotated.

#the xp part is not needed, what matters is that the tag is not annotated, but is a good indicator for others that this was a tag for an experimental release
git tag 1.5.0-xp 
git push origin 1.5.0-xp

Modules

H2O

Maven metadata URI

The openml-h2o module contains a provider that allows to load and train models with H2O.

Pull the provider from Maven Central:

<dependency>
  <groupId>com.feedzai</groupId>
  <artifactId>openml-h2o</artifactId>
  <!-- See project tags for latest version -->
  <version>1.2.0</version>
</dependency>

DataRobot

Maven metadata URI

The openml-datarobot module contains a provider that allows to load models trained with DataRobot.

Pull this module from Maven Central:

<dependency>
  <groupId>com.feedzai</groupId>
  <artifactId>openml-datarobot</artifactId>
  <!-- See project tags for latest version -->
  <version>1.2.0</version>
</dependency>

LightGBM

Maven metadata URI

The openml-lightgbm module contains a provider that allows to load models trained with Microsoft LightGBM.

Pull this module from Maven Central:

<dependency>
  <groupId>com.feedzai</groupId>
  <artifactId>openml-lightgbm</artifactId>
  <!-- See project tags for latest version -->
  <version>1.2.0</version>
</dependency>

About

Implementations for Feedzai's OpenML APIs to allow for usage of machine learning models in the Java programming language.

Resources

Stars

3 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages