pydata / pydata/patsy

joblib.parallel with patsy?

Open
#103 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
990
Forks
106
Avg merge
7d 34m
Merged PRs (30d)
1

Description

So one of my datasets can be super-huge and therefore, super-slow by my impatient standards. I can sit there for 3-5 minutes just waiting for a design matrix to be built (on one core). There's lots of terms/factors in this model. I have plenty of spare CPU's just sitting waiting for this to finish before the GLM can be kicked off.

Crazy idea... would it make any sense to incorporate joblib.parallel in patsy?

I have 2 ideas...

Simple idea is to just call joblib.parallel on the dmatrix call and make those in parallel.

Slightly more crazy idea would be to try to incorporate this inside patsy. I see 2 potential (somewhat) easy placements...

here and here

I recognize this brings opens a can of worms--transferring the data and state between the parent and child nodes is not free... new complexity in debugging... And doing things in parallel should be after other optimizations. (Tell me... is 5 minutes to run dmatrix on 30 million rows with about 50 output columns slower than you'd think?)

So before I go down this potentially very dumb rabbit hole, I'm happy to hear the thoughts of people who have better knowledge/experience with these topics.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading patsy/build.py at the two locations linked in the issue, lines 442 and 886, and review how the dmatrix call is involved. Benchmark the reported large-dataset case before evaluating joblib.parallel; the issue does not yet define an agreed implementation or testable completion criteria.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.