THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
- Java wrapper around new Scala API - One approach being considered is using the new Scala API bindings from inside Java. It is already possible to call the Scala bindings from inside Java but the current process would be very painful for users to implement. To improve upon this experience, a Java wrapper would be created to call the Scala bindings. The wrapper could be designed so that it abstracts away the complexities of the Java/Scala interaction and is more idiomatic for the Java inferencing use case.
- Advantages
- Interaction with the native code is already done. The implementation and maintenance should be simplified due to this.
- Disadvantages
- At a minimum this would introduce a dependency upon the Scala compiler.
- Interaction with the Scala code could be complicated due to differences in the languages. Known issues are forming Scala collections and leveraging default values. Changes to the Scala API or the introduction of a builder function seems like the most obvious solutions here.
- Advantages
- Writing a Java API that directly calls the native code - Doing this would be designing and implementing a Java API that will interact with the native code using JNI/JNA. Similar to the other solution, the API would be designed to make Java inferencing simple and idiomatic.
- Advantages
- No added dependencies
- No surprises from interacting with the Scala code
- Disadvantages
- It is difficult to write and test JNI code.
- Possible duplication of efforts between this and the Scala API
- Advantages
Class Diagram
draw.io Diagram | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Sequence Diagram
draw.io Diagram | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
Code Block | ||||
---|---|---|---|---|
| ||||
/*
* loadModel
* Loads a model from a model file into this instance of the class.
*
* Input parameters
* modelSource - this is the location of the model file. Supports local disk access and S3.
*
* Exceptions
* AccessDeniedException
* AmazonS3Exception
*/
void loadModel(String modelSource){} |
Code Block | ||||
---|---|---|---|---|
| ||||
/*
* predict
* Takes input that will be fed to the model for forward passes to produce predictions.
*
* Input Parameters
* modelInput - Any type of Java collection (set, queue, lists, etc). This will be fed into the model to get the predictions.
*
*/
void predict(Collection<E> modelInput){} |
Code Block | ||||
---|---|---|---|---|
| ||||
/*
* getPredictions
* Gets the predictions resulting from the last call to predict.
*
* Response
* Returns the results from the latest call to predict in the form of a List<List<T>>
*/
List<List<T>> getPredictions() {} |
Alternative Approaches considered
...