From 52ec1ea229450ba2c5bc67d9c5de421c4731fbd9 Mon Sep 17 00:00:00 2001 From: b-zhou Date: Fri, 4 Oct 2024 11:45:51 +0200 Subject: [PATCH 1/2] test: estimate memory --- tests/testthat/test_estimate_memory.R | 91 +++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 tests/testthat/test_estimate_memory.R diff --git a/tests/testthat/test_estimate_memory.R b/tests/testthat/test_estimate_memory.R new file mode 100644 index 0000000..216e8d2 --- /dev/null +++ b/tests/testthat/test_estimate_memory.R @@ -0,0 +1,91 @@ +n_obs = 1e4 +n_feat = 100 +dt = runif(n_obs * n_feat) +dt = as.data.table(matrix(dt, nrow = n_obs, ncol = n_feat)) + +# classif +set(dt, j = "y", value = 0) +set(dt, i = seq_len(n_obs %/% 2), j = "y", value = 1) +task = as_task_classif(dt, target = "y") + +test_that("LearnerClassifRanger memory estimate is approximately correct", { + learner = lrn("classif.ranger") + learner$train(task) + true_mem = object.size(learner$model) + estim_mem = estimate_memory(learner, task) + + expect_true(true_mem <= estim_mem) +}) + +test_that("LearnerClassifXgboost memory estimate is approximately correct", { + learner = lrn("classif.xgboost") + learner$train(task) + true_mem = object.size(learner$model) + estim_mem = estimate_memory(learner, task) + + expect_true(true_mem <= estim_mem) +}) + +test_that("LearnerClassifCatboost memory estimate is approximately correct", { + learner = lrn("classif.catboost") + learner$train(task) + true_mem = object.size(learner$model) + estim_mem = estimate_memory(learner, task) + + expect_true(true_mem <= estim_mem) +}) + +test_that("LearnerClassifLightGBM memory estimate is approximately correct", { + learner = lrn("classif.lightgbm") + learner$train(task) + true_mem = object.size(learner$model) + estim_mem = estimate_memory(learner, task) + + expect_true(true_mem <= estim_mem) +}) + + +# regr +set(dt, j = "y", value = runif(n_obs)) +task = as_task_regr(dt, target = "y") + +test_that("LearnerRegrRanger memory estimate is approximately correct", { + learner = lrn("regr.ranger") + learner$train(task) + true_mem = object.size(learner$model) + estim_mem = estimate_memory(learner, task) + + expect_true(true_mem <= estim_mem) +}) + +test_that("LearnerRegrXgboost memory estimate is approximately correct", { + learner = lrn("regr.xgboost") + learner$train(task) + true_mem = object.size(learner$model) + estim_mem = estimate_memory(learner, task) + + expect_true(true_mem <= estim_mem) +}) + +test_that("LearnerRegrCatboost memory estimate is approximately correct", { + learner = lrn("regr.catboost") + learner$train(task) + true_mem = object.size(learner$model) + estim_mem = estimate_memory(learner, task) + + expect_true(true_mem <= estim_mem) +}) + +test_that("LearnerRegrLightGBM memory estimate is approximately correct", { + learner = lrn("regr.lightgbm") + learner$train(task) + true_mem = object.size(learner$model) + estim_mem = estimate_memory(learner, task) + + expect_true(true_mem <= estim_mem) +}) + +rm(dt) +rm(task) +rm(n_obs) +rm(n_feat) From d5267adc52bd9160021c1ceaede1872fd28e387b Mon Sep 17 00:00:00 2001 From: b-zhou Date: Mon, 21 Oct 2024 15:42:30 +0200 Subject: [PATCH 2/2] test: better object size estimate --- DESCRIPTION | 3 ++- tests/testthat/test_estimate_memory.R | 16 ++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 172cfb8..a7443ea 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -41,7 +41,8 @@ Suggests: ranger, rpart, testthat (>= 3.0.0), - xgboost + xgboost, + pryr Remotes: catboost/catboost/catboost/R-package, mlr-org/mlr3, diff --git a/tests/testthat/test_estimate_memory.R b/tests/testthat/test_estimate_memory.R index 216e8d2..28ab01f 100644 --- a/tests/testthat/test_estimate_memory.R +++ b/tests/testthat/test_estimate_memory.R @@ -11,7 +11,7 @@ task = as_task_classif(dt, target = "y") test_that("LearnerClassifRanger memory estimate is approximately correct", { learner = lrn("classif.ranger") learner$train(task) - true_mem = object.size(learner$model) + true_mem = pryr::object_size(learner$model) estim_mem = estimate_memory(learner, task) expect_true(true_mem <= estim_mem) @@ -20,7 +20,7 @@ test_that("LearnerClassifRanger memory estimate is approximately correct", { test_that("LearnerClassifXgboost memory estimate is approximately correct", { learner = lrn("classif.xgboost") learner$train(task) - true_mem = object.size(learner$model) + true_mem = pryr::object_size(learner$model) estim_mem = estimate_memory(learner, task) expect_true(true_mem <= estim_mem) @@ -29,7 +29,7 @@ test_that("LearnerClassifXgboost memory estimate is approximately correct", { test_that("LearnerClassifCatboost memory estimate is approximately correct", { learner = lrn("classif.catboost") learner$train(task) - true_mem = object.size(learner$model) + true_mem = pryr::object_size(learner$model) estim_mem = estimate_memory(learner, task) expect_true(true_mem <= estim_mem) @@ -38,7 +38,7 @@ test_that("LearnerClassifCatboost memory estimate is approximately correct", { test_that("LearnerClassifLightGBM memory estimate is approximately correct", { learner = lrn("classif.lightgbm") learner$train(task) - true_mem = object.size(learner$model) + true_mem = pryr::object_size(learner$model) estim_mem = estimate_memory(learner, task) expect_true(true_mem <= estim_mem) @@ -52,7 +52,7 @@ task = as_task_regr(dt, target = "y") test_that("LearnerRegrRanger memory estimate is approximately correct", { learner = lrn("regr.ranger") learner$train(task) - true_mem = object.size(learner$model) + true_mem = pryr::object_size(learner$model) estim_mem = estimate_memory(learner, task) expect_true(true_mem <= estim_mem) @@ -61,7 +61,7 @@ test_that("LearnerRegrRanger memory estimate is approximately correct", { test_that("LearnerRegrXgboost memory estimate is approximately correct", { learner = lrn("regr.xgboost") learner$train(task) - true_mem = object.size(learner$model) + true_mem = pryr::object_size(learner$model) estim_mem = estimate_memory(learner, task) expect_true(true_mem <= estim_mem) @@ -70,7 +70,7 @@ test_that("LearnerRegrXgboost memory estimate is approximately correct", { test_that("LearnerRegrCatboost memory estimate is approximately correct", { learner = lrn("regr.catboost") learner$train(task) - true_mem = object.size(learner$model) + true_mem = pryr::object_size(learner$model) estim_mem = estimate_memory(learner, task) expect_true(true_mem <= estim_mem) @@ -79,7 +79,7 @@ test_that("LearnerRegrCatboost memory estimate is approximately correct", { test_that("LearnerRegrLightGBM memory estimate is approximately correct", { learner = lrn("regr.lightgbm") learner$train(task) - true_mem = object.size(learner$model) + true_mem = pryr::object_size(learner$model) estim_mem = estimate_memory(learner, task) expect_true(true_mem <= estim_mem)