lmcinnes / lmcinnes/pynndescent
Run on Dask
- Dominant language
- Python
- Stars
- 970
- Forks
- 107
- PR merge metrics
- No merged PRs in 30d
Description
For very large datasets it might be beneficial to run on Dask (although there is a lot of mileage in machines with lots of cores and RAM).
Joblib supports Dask as a backend, however the parallel implementation of pynndescent keeps all heap updates in memory, which may be limiting. A more distributed approach is to use Dask bags to shuffle updates across machines - this is slower but should support larger datasets. I made an initial (incomplete) attempt at this here: https://github.com/tomwhite/pynndescent/tree/dask
Contributor guide
Research direction
Review the incomplete dask branch and the parallel implementation of pynndescent first. Investigate how heap updates are kept in memory and how Dask bags could distribute them across machines. Done means a working Dask-based path that supports larger datasets, with behavior and tradeoffs validated against the existing approach.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100