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

GPU support #76

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from
Draft

GPU support #76

wants to merge 7 commits into from

Conversation

topepo
Copy link
Member

@topepo topepo commented Nov 5, 2023

No description provided.

@topepo
Copy link
Member Author

topepo commented Nov 6, 2023

I'm getting messages that say

[W MPSFallback.mm:11] Warning: The operator 'aten::sgn.out' is not currently supported on the MPS backend and will fall back to run on the CPU. This may have performance implications. (function operator())

I'm doing some initial testing and the gpu is taking 2x-4x more time than the cpu version

tibble::tribble(
 ~seed,    ~n, ~extra_cols, ~hidden_units, ~epochs,   ~cpu,    ~gpu, ~gpu_to_cpu,
   836, 1e+06,         100,            10,     100,  85.83,  224.07,        2.61,
   836, 1e+06,         100,            10,    1000, 489.62,  934.22,        1.91,
   836, 1e+06,         100,            10,     500, 299.11,  582.33,        1.95,
   836, 1e+06,         100,           100,     100, 441.41, 1977.09,        4.48
 )

Here is a reprex. I'm on an m1 max macstudio (Mac13,1)

library(tidymodels)
library(brulee) # pak::pak(c("tidymodels/brulee#76"), ask = FALSE)

# ------------------------------------------------------------------------------

tidymodels_prefer()
theme_set(theme_bw())
options(pillar.advice = FALSE, pillar.min_title_chars = Inf)

# ------------------------------------------------------------------------------

set.seed(836)
sim_tr <-
 sim_regression(1e+06) %>%
 bind_cols(sim_noise(1e+06, num_vars = 100))

# ------------------------------------------------------------------------------

cpu_time <-
 system.time({
  cpu_fit <-
   brulee_mlp(outcome ~ ., data = sim_tr,
              hidden_units = 10, epochs = 100, stop_iter = 100)
 })

# ------------------------------------------------------------------------------

gpu_time <-
 system.time({
  gpu_fit <-
   brulee_mlp(outcome ~ ., data = sim_tr,
              hidden_units = 10, epochs = 100, stop_iter = 100,
              device = "mps")
 })

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant