I had success on a similar problem by allocating native buffers for the matrices, then using a basic CUDA call. The actual work was 100x faster than my CPU baseline.
The bottleneck of course was fetching & loading relevant data to memory to start with.
The vector API is really interesting but so frustrating that it has taken so long to materialise. The inability of Java to properly utilise parallel compute - whether it's SIMD or GPU - has been a huge factor in dealing it out of being at the forefront of modern compute.
"the remaining 2% were large batch requests", [which made up 50% of the work] .. who really watches that many shows on Netflix? What was in those batches, if someone is watching that much, why bother with serendipity at all? Most serendipitous thing you could do is shut off their subscription.
Note that they likely mean the list of candidates is large not the user history. This is for an API so perhaps 2% of client requests implemented batch requests, providing the opportunity for batch processing of that request.
This is a JVM infrastructure optimization, not a recommendation architecture breakthrough. At Netflix scale, most of the field runs GPU-accelerated ANN search (FAISS, ScaNN) for candidate retrieval.
The bottleneck of course was fetching & loading relevant data to memory to start with.
reply