Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: chunk series in parallel forecast #915

Merged
merged 4 commits into from
Sep 19, 2024
Merged

fix: chunk series in parallel forecast #915

merged 4 commits into from
Sep 19, 2024

Conversation

jmoralez
Copy link
Member

@jmoralez jmoralez commented Sep 19, 2024

Submits chunks of series to each executor to reduce the communication overhead. The behavior is to create 100 tasks for each executor, so that we can better balance the work whilst keeping communication low and update the progress bar relatively frequently.

The relevant changes in behavior are:

  • The progress bar will now show the number of tasks (100 * n_jobs) instead of the number of series. It also won't show the rate and the expected remaining time, since it varies too much and can be confusing.
  • The overhead of the parallel processing is very low again (as in 1.7.5), so simple models like the SeasonalNaive run very fast. On my tests with SeasonalNaive this is slightly faster than 1.7.5.
    • 500k: 1.7.5: 16s, this PR 13s
    • 1M: 1.7.5: 30s, this PR 25s

Fixes #898

Copy link

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

@jmoralez jmoralez added the fix label Sep 19, 2024
@jmoralez jmoralez marked this pull request as ready for review September 19, 2024 17:02
@jmoralez jmoralez merged commit b3e8409 into main Sep 19, 2024
30 checks passed
@jmoralez jmoralez deleted the chunk-parallel-fcst branch September 19, 2024 17:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

SeasonalNaive (and other models) spend a lot of time acquiring thread locks
1 participant