-
Notifications
You must be signed in to change notification settings - Fork 56
Is there some performance data? #173
Comments
Hi @JamesIsHuang, At this moment we do not have the numbers documented. We are planning to come up with dedicated blog on this. |
For tens of millions or 100 million of vectors, have not been tested yet? It seems that the million-level performance is quite good. |
Hi @JamesIsHuang , We have done performance analysys for different vector dimensions and collection. We need t formalize and put in the consumable manner. We are prioritizing the effort to bring this to the doc. Here are some metrics for the scale you are looking at. Data set:- 150M vectors with 128 dimensions across different indices. Latencies:- |
Hi, @vamshin |
Hi @JamesIsHuang, we made k dynamic and its between 50 and 1500. Please note, we also did warmup to have graphs loaded to memory and our experiment do not account warm up time. With out warm up, initial query will take hit. |
Hi, @vamshin , I found that segment merging is a very slow process, how long did it take you to merge 150 million vectors? |
Hi @JamesIsHuang, sorry i dont have exact numbers but we could do that effectively by
|
Hey @vamshin, Are there any updates regarding the documentation of performance data? I'm currently doing some benchmarks for a project that utilizes the kNN Plugin for ES and keep running into degrading latencies over time. In order to facilitate debugging, it would be interesting to know what resources are required to calculate the neighbors within <=50ms. I'm currently running 3
and the following index settings:
and am storing vectors with a dimension of I see that you used Any help with debugging or improving latencies would be greatly appreciated :). |
Hi juliusbachnick |
Hi @vamshin , I have a question, JVM heap size is 32G, so that KNN can use is 32GB * 50% * 60% = 9.6GB, and The memory required for graphs is estimated to be 1.1 * (4 * dimension + 8 * M) bytes/vector, if I have dim 128, m = 16, so that 1.1 * (4 128 + 8 * 16) * 1,000,000 ~= 0.8 GB, I think if I want to be the best performance so that one device can only support 10M data, 100.8 = 8G less than 9.8, right? |
Hi @qingfengshiran, KNN graphs are loaded outside the ES heap. So this is not part of 32GB heap size. For Example: Consider a machine has 100 GB of memory and the JVM uses 32 GB, the k-NN plugin uses 50% of the remaining 68 GB(i.e 100GB-32GB) which is 34 GB. If memory usage exceeds this value, KNN removes the least recently used graphs and can impact search performance. |
Hi @vamshin ,I have use 4 node each node 32 core,192G memory |
@vamshin ,My request is about 2000QPS from search data size is about higher than 400M data number which dims is 128. |
Hi @qingfengshiran, I could see couple of suggestions
You could find more details here https://opendistro.github.io/for-elasticsearch-docs/docs/knn/performance-tuning/#search-performance-tuning |
Hi @vamshin , 3 At last I want to know docker compose cluster impl method, you have provide a cluster implant sample, but it is a cluster on on computer device, I want to cross different computers, one node on one device, I have tried but failed. ------data node docker-compose up. with the follow error -----master node docker-compose up. with the follow error 4 How to Warm up the index?? I have see the website, but I did not find where to set the warm up |
We have seen QPS ranging from 100s of ms to 2000ms for around 100 million vectors, depending on memory, cpu type, number of nodes, dimensions, etc. In order to get good performance, all of the vectors need to fit in memory. You can check this from the knn stats after running warmup or some queries.
yes
We will get back to you on this.
Warmup documentation can be found here. |
For docker container, i believe it doesn't matter whether your service (in this case data node) is in same docker-compose file or different. I ran following experiment and it worked successfully for me.
Let me know if you still have issues. I executed the above experiment in MacOs with docker |
Is there some performance data? Recently we want to use this plugin, but don’t know how the performance is?
The text was updated successfully, but these errors were encountered: