Created
May 2, 2025 13:42
-
-
Save simonpcouch/6a669095ef618ada1f7026f77d88bcac to your computer and use it in GitHub Desktop.
Revisions
-
simonpcouch created this gist
May 2, 2025 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,115 @@ Smoke test for parallelism in stacks' member fitting re: https://github.com/tidymodels/stacks/issues/234. ## With CRAN, sequential ``` r # pak::pak("stacks") library(stacks) reg_st <- stacks() %>% add_candidates(reg_res_lr) %>% add_candidates(reg_res_svm) %>% add_candidates(reg_res_sp) reg_st <- blend_predictions(reg_st) system.time({ reg_st <- fit_members(reg_st) }) #> user system elapsed #> 0.370 0.006 0.513 ``` <sup>Created on 2025-05-02 with [reprex v2.1.1](https://reprex.tidyverse.org)</sup> # With CRAN, parallel Tune warns here, but stacks knows what to do with doParallel still in this case. ``` r # pak::pak("stacks") library(stacks) library(doParallel) #> Loading required package: foreach #> Loading required package: iterators #> Loading required package: parallel registerDoParallel(cores = 4) reg_st <- stacks() %>% add_candidates(reg_res_lr) %>% add_candidates(reg_res_svm) %>% add_candidates(reg_res_sp) reg_st <- blend_predictions(reg_st) #> Warning: ! tune detected a parallel backend registered with foreach but no backend #> registered with future. #> ℹ Support for parallel processing with foreach was soft-deprecated in tune #> 1.2.1. #> ℹ See ?parallelism (`?tune::parallelism()`) to learn more. system.time({ reg_st <- fit_members(reg_st) }) #> user system elapsed #> 0.313 0.127 0.338 ``` <sup>Created on 2025-05-02 with [reprex v2.1.1](https://reprex.tidyverse.org)</sup> ## With dev, parallel (future) ...with the analogous multisession: ``` r # pak::pak("tidymodels/stacks") library(stacks) library(future) plan(multisession(workers = 4)) reg_st <- stacks() %>% add_candidates(reg_res_lr) %>% add_candidates(reg_res_svm) %>% add_candidates(reg_res_sp) reg_st <- blend_predictions(reg_st) system.time({ reg_st <- fit_members(reg_st) }) #> user system elapsed #> 0.320 0.016 0.464 ``` <sup>Created on 2025-05-02 with [reprex v2.1.1](https://reprex.tidyverse.org)</sup> Or, using mirai: ``` r # pak::pak("tidymodels/stacks") library(stacks) library(future) plan(future.mirai::mirai_multisession(workers = 4)) reg_st <- stacks() %>% add_candidates(reg_res_lr) %>% add_candidates(reg_res_svm) %>% add_candidates(reg_res_sp) reg_st <- blend_predictions(reg_st) system.time({ reg_st <- fit_members(reg_st) }) #> user system elapsed #> 0.168 0.010 0.393 ``` <sup>Created on 2025-05-02 with [reprex v2.1.1](https://reprex.tidyverse.org)</sup>