lmcinnes / lmcinnes/pynndescent

Run on Dask

Open
#63 9 comments 2 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.