From 8439b41274cea70dc63dd131e67da52f3bb2d480 Mon Sep 17 00:00:00 2001 From: Vladimir Shitov Date: Sun, 20 Sep 2026 15:07:17 +0200 Subject: [PATCH 1/7] senkin_tmp: expose the LightGBM compute knobs New arguments --lgbm_learning_rate, --lgbm_n_folds, --lgbm_max_bin and --lgbm_n_jobs (worker processes over protein targets, from the library's train_lightgbm_kfold). The network fold count (--n_folds) is now separate from the LightGBM one. Defaults unchanged for now. Co-Authored-By: Claude Fable 5.1 --- .../senkin_tmp_train/config.vsh.yaml | 30 ++++++++++++++++++- .../senkin_tmp/senkin_tmp_train/script.py | 15 ++++++++-- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml index 46642bb3..49be92e3 100644 --- a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml +++ b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml @@ -17,7 +17,14 @@ arguments: - name: "--n_folds" type: integer default: 5 - description: Number of cross-validation folds for LightGBM and neural network training. + description: Number of cross-validation folds for the neural networks (one network per fold, predictions averaged). + - name: "--lgbm_n_folds" + type: integer + default: 5 + description: | + Number of cross-validation folds for the LightGBM models, whose out-of-fold predictions are + features of the neural networks. Fewer folds cut the LightGBM time proportionally at a small + cost in the quality of these features. - name: "--lgbm_boost_rounds" type: integer default: 10000 @@ -40,6 +47,27 @@ arguments: type: integer default: 100 description: TSVD components for reducing LightGBM predictions before NN input. + - name: "--lgbm_learning_rate" + type: double + default: 0.01 + description: | + LightGBM learning rate. The original solution used 0.01 with up to 10000 rounds, which takes + days on the benchmark datasets; a higher rate with fewer rounds reaches the same LightGBM + quality in a fraction of the time. + - name: "--lgbm_max_bin" + type: integer + default: 63 + description: | + Number of histogram bins per feature in LightGBM (library default 255). 63 halves the memory + of the binned whole-transcriptome inputs held by every worker process (3 instead of 6.6 GB per + fold on the NeurIPS 2022 CITE data) at identical validation loss and slightly faster rounds. + - name: "--lgbm_n_jobs" + type: integer + default: -1 + description: | + Number of worker processes training different protein targets in parallel; the allocated CPUs + are divided among them. -1 uses one process per allocated CPU (each with one thread), which is + several times faster than one target at a time with all threads. engines: - type: docker image: nvidia/cuda:12.8.1-cudnn-runtime-ubuntu24.04 diff --git a/src/methods/senkin_tmp/senkin_tmp_train/script.py b/src/methods/senkin_tmp/senkin_tmp_train/script.py index 0c6c1eaf..7bd8ac11 100644 --- a/src/methods/senkin_tmp/senkin_tmp_train/script.py +++ b/src/methods/senkin_tmp/senkin_tmp_train/script.py @@ -29,10 +29,14 @@ "input_test_mod1": "resources_test/task_predict_modality/openproblems_neurips2021/bmmc_cite/normal/test_mod1.h5ad", "output": "output_model.pkl", "n_folds": 5, + "lgbm_n_folds": 5, "lgbm_boost_rounds": 10000, "lgbm_early_stopping": 100, "nn_epochs": 100, "n_tsvd_components": 100, + "lgbm_learning_rate": 0.01, + "lgbm_max_bin": 63, + "lgbm_n_jobs": -1, } meta = {"name": "senkin_tmp", "resources_dir": "src/methods/senkin_tmp/senkin_tmp_train", "cpus": None} ## VIASH END @@ -148,6 +152,7 @@ def _feature_names(adata): Y_prot_raw = to_dense(adata_prot_train.layers.get("counts", adata_prot_train.X), dtype=np.float64) folds = KFold(n_splits=par["n_folds"], shuffle=True, random_state=666) +lgbm_folds = KFold(n_splits=par["lgbm_n_folds"], shuffle=True, random_state=666) n_tsvd = par["n_tsvd_components"] boost_rounds = par["lgbm_boost_rounds"] early_stop = par["lgbm_early_stopping"] @@ -157,9 +162,12 @@ def _feature_names(adata): # meta["cpus"], so the threads oversubscribe and thrash -- the same class of slowdown # fixed for guanlab in #59. Leave the library default when cpus is unknown (local runs). _n_threads = meta.get("cpus") -if _n_threads: - for _p in (lgbm_params_1, lgbm_params_2, lgbm_params_3, lgbm_params_4): +for _p in (lgbm_params_1, lgbm_params_2, lgbm_params_3, lgbm_params_4): + if _n_threads: _p["num_threads"] = _n_threads + _p["learning_rate"] = par["lgbm_learning_rate"] + _p["max_bin"] = par["lgbm_max_bin"] +lgbm_n_jobs = par["lgbm_n_jobs"] # --------------------------------------------------------------------------- # LightGBM — 4 models, train+test passed together (original design) @@ -168,8 +176,9 @@ def _feature_names(adata): def _lgbm(X_all, Y, params, description): logger.info(f"Training LightGBM {description}...") return get_lgbm_predictions( - X_all[train_idx], Y, X_all[test_idx], folds, params, + X_all[train_idx], Y, X_all[test_idx], lgbm_folds, params, n_tsvd_components=n_tsvd, num_boost_round=boost_rounds, early_stopping_rounds=early_stop, + n_jobs=lgbm_n_jobs, ) lgbm1_svd_all = _lgbm(X_lognorm_all, Y_prot_train, lgbm_params_1, "model 1 (log-normalized RNA -> proteins)") From 2f6107e9fbda00cda9c45433c39cbf56722928ea Mon Sep 17 00:00:00 2001 From: Vladimir Shitov Date: Sun, 20 Sep 2026 18:15:25 +0200 Subject: [PATCH 2/7] senkin_tmp: pin the library to the parallel LightGBM branch (to be replaced by main after the library release) Co-Authored-By: Claude Fable 5.1 --- src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml | 2 +- src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml b/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml index 27151ff6..2baaa1c0 100644 --- a/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml +++ b/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml @@ -18,7 +18,7 @@ engines: image: openproblems/base_pytorch_nvidia:1 setup: - type: docker - run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git + run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@9826aae71d9d1584247ee21b8f39d244b0329af4 - type: python packages: - lightgbm>=4.0 diff --git a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml index 49be92e3..0932f48c 100644 --- a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml +++ b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml @@ -94,7 +94,7 @@ engines: github: - openproblems-bio/core#subdirectory=packages/python/openproblems - type: docker - run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git + run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@9826aae71d9d1584247ee21b8f39d244b0329af4 runners: - type: executable - type: nextflow From dedbd432e406520389d9f620f5297c66f46bb046 Mon Sep 17 00:00:00 2001 From: Vladimir Shitov Date: Sun, 20 Sep 2026 18:15:49 +0200 Subject: [PATCH 3/7] senkin_tmp: list joblib in the image packages (the library is installed with --no-deps) Co-Authored-By: Claude Fable 5.1 --- src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml | 1 + src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml b/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml index 2baaa1c0..e4d2afca 100644 --- a/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml +++ b/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml @@ -24,6 +24,7 @@ engines: - lightgbm>=4.0 - tensorflow>=2.12 - scikit-learn>=1.1 + - joblib>=1.4 - mudata>=0.2 - muon>=0.1 - fast-array-utils diff --git a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml index 0932f48c..8ce0d648 100644 --- a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml +++ b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml @@ -88,6 +88,7 @@ engines: - jsonschema - lightgbm>=4.0 - scikit-learn>=1.1 + - joblib>=1.4 - mudata>=0.2 - muon>=0.1 - fast-array-utils From 259d6a9db3659d26095f4232eaa8f1eb31a5391c Mon Sep 17 00:00:00 2001 From: Vladimir Shitov Date: Sun, 20 Sep 2026 19:00:39 +0200 Subject: [PATCH 4/7] senkin_tmp: pass the allocated memory to the LightGBM stage as its worker budget Co-Authored-By: Claude Fable 5.1 --- src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml | 2 +- src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml | 2 +- src/methods/senkin_tmp/senkin_tmp_train/script.py | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml b/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml index e4d2afca..d2f2268e 100644 --- a/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml +++ b/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml @@ -18,7 +18,7 @@ engines: image: openproblems/base_pytorch_nvidia:1 setup: - type: docker - run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@9826aae71d9d1584247ee21b8f39d244b0329af4 + run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@7f5b7977fc92b01423b7adaddfbeb1687766c69c - type: python packages: - lightgbm>=4.0 diff --git a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml index 8ce0d648..c9d53455 100644 --- a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml +++ b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml @@ -95,7 +95,7 @@ engines: github: - openproblems-bio/core#subdirectory=packages/python/openproblems - type: docker - run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@9826aae71d9d1584247ee21b8f39d244b0329af4 + run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@7f5b7977fc92b01423b7adaddfbeb1687766c69c runners: - type: executable - type: nextflow diff --git a/src/methods/senkin_tmp/senkin_tmp_train/script.py b/src/methods/senkin_tmp/senkin_tmp_train/script.py index 7bd8ac11..843ade42 100644 --- a/src/methods/senkin_tmp/senkin_tmp_train/script.py +++ b/src/methods/senkin_tmp/senkin_tmp_train/script.py @@ -38,7 +38,7 @@ "lgbm_max_bin": 63, "lgbm_n_jobs": -1, } -meta = {"name": "senkin_tmp", "resources_dir": "src/methods/senkin_tmp/senkin_tmp_train", "cpus": None} +meta = {"name": "senkin_tmp", "resources_dir": "src/methods/senkin_tmp/senkin_tmp_train", "cpus": None, "memory_gb": None} ## VIASH END sys.path.append(meta["resources_dir"]) @@ -168,6 +168,8 @@ def _feature_names(adata): _p["learning_rate"] = par["lgbm_learning_rate"] _p["max_bin"] = par["lgbm_max_bin"] lgbm_n_jobs = par["lgbm_n_jobs"] +# Let the library keep the LightGBM worker processes within the allocated memory (a tenth is left for the rest). +lgbm_memory_budget_gb = meta["memory_gb"] * 0.9 if meta.get("memory_gb") else None # --------------------------------------------------------------------------- # LightGBM — 4 models, train+test passed together (original design) @@ -178,7 +180,7 @@ def _lgbm(X_all, Y, params, description): return get_lgbm_predictions( X_all[train_idx], Y, X_all[test_idx], lgbm_folds, params, n_tsvd_components=n_tsvd, num_boost_round=boost_rounds, early_stopping_rounds=early_stop, - n_jobs=lgbm_n_jobs, + n_jobs=lgbm_n_jobs, memory_budget_gb=lgbm_memory_budget_gb, ) lgbm1_svd_all = _lgbm(X_lognorm_all, Y_prot_train, lgbm_params_1, "model 1 (log-normalized RNA -> proteins)") From 0689d27617a71b9540e5962fe8991486af439147 Mon Sep 17 00:00:00 2001 From: Vladimir Shitov Date: Sun, 20 Sep 2026 21:13:57 +0200 Subject: [PATCH 5/7] senkin_tmp: LightGBM defaults that fit the benchmark's 8 h on 16 CPUs learning rate 0.1, at most 200 rounds with early stopping 20, 3 LightGBM folds (networks keep 5), 63 histogram bins, one worker per CPU within the allocated memory. Measured on the NeurIPS 2021/2022 CITE datasets: the LightGBM stage keeps its per-target quality within 0.003 of a 1000-round run, and the final predictions are unchanged compared with 300 rounds and 5 folds (2021: Pearson per cell 0.822 either way). Co-Authored-By: Claude Fable 5.1 --- .../senkin_tmp_predict/config.vsh.yaml | 2 +- .../senkin_tmp_train/config.vsh.yaml | 21 +++++++++++-------- .../senkin_tmp/senkin_tmp_train/script.py | 8 +++---- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml b/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml index d2f2268e..54a48c28 100644 --- a/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml +++ b/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml @@ -18,7 +18,7 @@ engines: image: openproblems/base_pytorch_nvidia:1 setup: - type: docker - run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@7f5b7977fc92b01423b7adaddfbeb1687766c69c + run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@896f2657d60d67e8abf040c3e193e9d9e0f74f99 - type: python packages: - lightgbm>=4.0 diff --git a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml index c9d53455..1a53c9c7 100644 --- a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml +++ b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml @@ -20,20 +20,24 @@ arguments: description: Number of cross-validation folds for the neural networks (one network per fold, predictions averaged). - name: "--lgbm_n_folds" type: integer - default: 5 + default: 3 description: | Number of cross-validation folds for the LightGBM models, whose out-of-fold predictions are features of the neural networks. Fewer folds cut the LightGBM time proportionally at a small cost in the quality of these features. - name: "--lgbm_boost_rounds" type: integer - default: 10000 - description: Maximum LightGBM boosting rounds (early stopping applies). + default: 200 + description: | + Maximum LightGBM boosting rounds (early stopping applies). The original solution used up to + 10000 rounds at learning rate 0.01, which takes days on the benchmark datasets; 200 rounds at + learning rate 0.1 give the same LightGBM quality as 1000 rounds within 0.003 (per-target + Pearson) and the same final predictions. info: test_default: 50 - name: "--lgbm_early_stopping" type: integer - default: 100 + default: 20 description: LightGBM early stopping patience (rounds without improvement). info: test_default: 10 @@ -49,11 +53,10 @@ arguments: description: TSVD components for reducing LightGBM predictions before NN input. - name: "--lgbm_learning_rate" type: double - default: 0.01 + default: 0.1 description: | - LightGBM learning rate. The original solution used 0.01 with up to 10000 rounds, which takes - days on the benchmark datasets; a higher rate with fewer rounds reaches the same LightGBM - quality in a fraction of the time. + LightGBM learning rate. The original solution used 0.01 with up to 10000 rounds; 0.1 with a few + hundred rounds reaches the same LightGBM quality in a fraction of the time. - name: "--lgbm_max_bin" type: integer default: 63 @@ -95,7 +98,7 @@ engines: github: - openproblems-bio/core#subdirectory=packages/python/openproblems - type: docker - run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@7f5b7977fc92b01423b7adaddfbeb1687766c69c + run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@896f2657d60d67e8abf040c3e193e9d9e0f74f99 runners: - type: executable - type: nextflow diff --git a/src/methods/senkin_tmp/senkin_tmp_train/script.py b/src/methods/senkin_tmp/senkin_tmp_train/script.py index 843ade42..c484e90f 100644 --- a/src/methods/senkin_tmp/senkin_tmp_train/script.py +++ b/src/methods/senkin_tmp/senkin_tmp_train/script.py @@ -29,12 +29,12 @@ "input_test_mod1": "resources_test/task_predict_modality/openproblems_neurips2021/bmmc_cite/normal/test_mod1.h5ad", "output": "output_model.pkl", "n_folds": 5, - "lgbm_n_folds": 5, - "lgbm_boost_rounds": 10000, - "lgbm_early_stopping": 100, + "lgbm_n_folds": 3, + "lgbm_boost_rounds": 200, + "lgbm_early_stopping": 20, "nn_epochs": 100, "n_tsvd_components": 100, - "lgbm_learning_rate": 0.01, + "lgbm_learning_rate": 0.1, "lgbm_max_bin": 63, "lgbm_n_jobs": -1, } From da87618c3b32c8e7ca92cf97989bbcd755a87ac6 Mon Sep 17 00:00:00 2001 From: Vladimir Shitov Date: Sun, 20 Sep 2026 22:42:19 +0200 Subject: [PATCH 6/7] senkin_tmp: free the log-normalized matrix after LightGBM model 1; pin the library Co-Authored-By: Claude Fable 5.1 --- src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml | 2 +- src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml | 2 +- src/methods/senkin_tmp/senkin_tmp_train/script.py | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml b/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml index 54a48c28..b3469f38 100644 --- a/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml +++ b/src/methods/senkin_tmp/senkin_tmp_predict/config.vsh.yaml @@ -18,7 +18,7 @@ engines: image: openproblems/base_pytorch_nvidia:1 setup: - type: docker - run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@896f2657d60d67e8abf040c3e193e9d9e0f74f99 + run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@be8bee65c146316e579ae092c43247284ba801fe - type: python packages: - lightgbm>=4.0 diff --git a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml index 1a53c9c7..c316b2d2 100644 --- a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml +++ b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml @@ -98,7 +98,7 @@ engines: github: - openproblems-bio/core#subdirectory=packages/python/openproblems - type: docker - run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@896f2657d60d67e8abf040c3e193e9d9e0f74f99 + run: pip install --no-cache-dir --no-deps git+https://github.com/lueckenlab/senkin-tmp-cite-pred.git@be8bee65c146316e579ae092c43247284ba801fe runners: - type: executable - type: nextflow diff --git a/src/methods/senkin_tmp/senkin_tmp_train/script.py b/src/methods/senkin_tmp/senkin_tmp_train/script.py index c484e90f..a0cbd564 100644 --- a/src/methods/senkin_tmp/senkin_tmp_train/script.py +++ b/src/methods/senkin_tmp/senkin_tmp_train/script.py @@ -184,6 +184,8 @@ def _lgbm(X_all, Y, params, description): ) lgbm1_svd_all = _lgbm(X_lognorm_all, Y_prot_train, lgbm_params_1, "model 1 (log-normalized RNA -> proteins)") +del X_lognorm_all # not needed any more; keeps the parent's footprint (and hence the memory left for workers) small +gc.collect() X_comb_all = np.concatenate([X_clr_tsvd_all, X_raw_selected_all, X_sqrt_tsvd_all, X_sqrt_pca_all], axis=1) lgbm2_svd_all = _lgbm(X_comb_all, Y_prot_train, lgbm_params_2, "model 2 (CLR-TSVD + selected genes + normalized TSVD/PCA -> proteins)") @@ -191,7 +193,7 @@ def _lgbm(X_all, Y, params, description): lgbm3_svd_all = _lgbm(X_counts_all, Y_prot_train, lgbm_params_3, "model 3 (raw counts -> proteins)") lgbm4_svd_all = _lgbm(X_counts_all, Y_prot_raw, lgbm_params_4, "model 4 (raw counts -> raw proteins)") -del X_counts_all, X_lognorm_all +del X_counts_all gc.collect() # --------------------------------------------------------------------------- From 043215c2c794dd42092f9dbd75f304e8aafe482c Mon Sep 17 00:00:00 2001 From: Vladimir Shitov Date: Mon, 21 Sep 2026 01:05:14 +0200 Subject: [PATCH 7/7] senkin_tmp: default to 100 LightGBM rounds 200 rounds barely cut the time on the 2022 data (early stopping already ends most models around 170 rounds); 100 rounds keep the final predictions unchanged and leave a safe margin under the 8 h limit. Co-Authored-By: Claude Fable 5.1 --- src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml | 8 ++++---- src/methods/senkin_tmp/senkin_tmp_train/script.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml index c316b2d2..ef7ec762 100644 --- a/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml +++ b/src/methods/senkin_tmp/senkin_tmp_train/config.vsh.yaml @@ -27,12 +27,12 @@ arguments: cost in the quality of these features. - name: "--lgbm_boost_rounds" type: integer - default: 200 + default: 100 description: | Maximum LightGBM boosting rounds (early stopping applies). The original solution used up to - 10000 rounds at learning rate 0.01, which takes days on the benchmark datasets; 200 rounds at - learning rate 0.1 give the same LightGBM quality as 1000 rounds within 0.003 (per-target - Pearson) and the same final predictions. + 10000 rounds at learning rate 0.01, which takes days on the benchmark datasets. At learning + rate 0.1, 100 rounds keep the LightGBM per-target quality within 0.015 (NeurIPS 2021) / 0.003 + (NeurIPS 2022) of 300 rounds, and the final predictions of the networks are unchanged. info: test_default: 50 - name: "--lgbm_early_stopping" diff --git a/src/methods/senkin_tmp/senkin_tmp_train/script.py b/src/methods/senkin_tmp/senkin_tmp_train/script.py index a0cbd564..bc2c87e4 100644 --- a/src/methods/senkin_tmp/senkin_tmp_train/script.py +++ b/src/methods/senkin_tmp/senkin_tmp_train/script.py @@ -30,7 +30,7 @@ "output": "output_model.pkl", "n_folds": 5, "lgbm_n_folds": 3, - "lgbm_boost_rounds": 200, + "lgbm_boost_rounds": 100, "lgbm_early_stopping": 20, "nn_epochs": 100, "n_tsvd_components": 100,