3 ms·
I'm quite a fan of lightgbm4j. It is a JNI Wrapper, but the API is decent. Training itself happens in native code, but the real advantage your support code gets
by exabrial 5mo ago
I'm quite a fan of lightgbm4j. It is a JNI Wrapper, but the API is decent. Training itself happens in native code, but the real advantage your support code gets compiled to native through the JVM's compiler.
I've also authored a Machine Learning Model compiler for the JVM: https://github.com/exabrial/petrify https://github.com/exabrial/petrify . This allows you to take Many Trees/Ensembles/Regressors/Classifiers/etc and compile them as regular Java classes! ...removing the long dependency chain that ML Models drag with them to run in production. It's also very memory efficient; exactly one array allocation invocation, with 0 other Garbage Collector pressure. Your weights and splits are also stored in the constant pool; making it an excellent C2 target and do not add to the additional heap memory pressure!
Overall, I think it's an ideal language for Data Science; but what it lacks compared to Python is community engagement. Oracle has Tribuo, which is actually quite good; but Oracle is still learning to interact with the open source community.