xxcclong / history-cache

6 stars 0 forks source link

Nodes eviction logic #2

Closed Yash685 closed 7 months ago

Yash685 commented 7 months ago

In paper you have mentioned that "To evict embeddings with significant gradient magnitudes , FreshGNN employs an approach where it invalidates the corresponding entries in the nodeID mapping array, instead of physically deleting them." ,but in code I am not able to see that being handled. Here in https://github.com/xxcclong/history-cache/blob/master/hiscache/history_cache.py#L256 you have written evict logic but that part is commented out and also it is written "TODO may be wrong". As far as I have understood the code making nodes in full2embed based on that evict mask seems correct, can you also reason out why it can be wrong?

xxcclong commented 7 months ago

Hi, According to our test, the eviction by staleness (implemented using ring buffer) is much more important than eviction by gradient. On the other hand, eviction by gradient will introduce too many bubbles in the cache (empty slot), which is harmful for performance. Therefore we decided to disable eviction by staleness. However, the logic of the code to evict by gradient is correct, and you can handle the bubbles by periodically re-organize the cache buffer (which you can refer to some classic cache designs).