-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path_targets.R
executable file
·126 lines (120 loc) · 4.28 KB
/
_targets.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
################################################################################
############################## BEETHOVEN #############################
##### Main file controlling the settings, options, and sourcing of targets
##### for the beethoven analysis pipeline.
############################# CONTROLLER #############################
##### `controller_250` uses full allocation of workers (~4.0 Gb per worker).
controller_250 <- crew::crew_controller_local(
name = "controller_250",
workers = 250,
seconds_idle = 30
)
##### `controller_100` uses 100 workers (~10.0 Gb per worker).
controller_100 <- crew::crew_controller_local(
name = "controller_100",
workers = 100,
seconds_idle = 30
)
##### `controller_75` uses 75 workers (~13.33 Gb per worker).
controller_75 <- crew::crew_controller_local(
name = "controller_75",
workers = 75,
seconds_idle = 30
)
##### `controller_50` uses 50 workers (~20.0 Gb per worker).
controller_50 <- crew::crew_controller_local(
name = "controller_50",
workers = 50,
seconds_idle = 30
)
##### `controller_25` uses 25 workers (~40.0 Gb per worker).
controller_25 <- crew::crew_controller_local(
name = "controller_25",
workers = 25,
seconds_idle = 30
)
##### `controller_gpu` uses 4 GPU workers.
scriptlines_apptainer <- "apptainer"
scriptlines_basedir <- "$PWD"
scriptlines_container <- "container_models.sif"
scriptlines_inputdir <- "/ddn/gs1/group/set/Projects/NRT-AP-Model/input"
scriptlines_gpu <- glue::glue(
"#SBATCH --job-name=beethovengpu \
#SBATCH --partition=geo \
#SBATCH --gres=gpu:1 \
#SBATCH --error=slurm/beethovengpu_%j.out \
{scriptlines_apptainer} exec --nv --bind {scriptlines_basedir}:/mnt ",
"--bind {scriptlines_basedir}/inst:/inst ",
"--bind {scriptlines_inputdir}:/input ",
"--bind {scriptlines_basedir}/_targets:/opt/_targets ",
"{scriptlines_container} \\"
)
controller_gpu <- crew.cluster::crew_controller_slurm(
name = "controller_gpu",
workers = 4,
seconds_idle = 30,
options_cluster = crew.cluster::crew_options_slurm(
verbose = TRUE,
script_lines = scriptlines_gpu
)
)
############################## STORE ##############################
targets::tar_config_set(store = "/opt/_targets")
############################## OPTIONS ##############################
if (Sys.getenv("BEETHOVEN") == "covariates") {
beethoven_packages <- c(
"amadeus", "targets", "tarchetypes", "dplyr", "tidyverse",
"data.table", "sf", "crew", "crew.cluster", "lubridate", "qs2"
)
} else {
beethoven_packages <- c(
"amadeus", "targets", "tarchetypes", "dplyr", "tidyverse",
"data.table", "sf", "crew", "crew.cluster", "lubridate", "qs2",
"torch", "bonsai", "dials", "lightgbm", "xgboost", "glmnet"
)
}
targets::tar_option_set(
packages = beethoven_packages,
repository = "local",
error = "continue",
memory = "transient",
format = "qs",
storage = "worker",
deployment = "worker",
garbage_collection = TRUE,
seed = 202401L,
controller = crew::crew_controller_group(
controller_250, controller_100, controller_75,
controller_50, controller_25, controller_gpu
),
resources = targets::tar_resources(
crew = targets::tar_resources_crew(controller = "controller_250")
),
retrieval = "worker"
)
########################### SOURCE TARGETS ###########################
targets::tar_source("inst/targets/targets_critical.R")
targets::tar_source("inst/targets/targets_initiate.R")
targets::tar_source("inst/targets/targets_download.R")
targets::tar_source("inst/targets/targets_aqs.R")
targets::tar_source("inst/targets/targets_calculate_fit.R")
targets::tar_source("inst/targets/targets_baselearner.R")
# targets::tar_source("inst/targets/targets_metalearner.R")
# targets::tar_source("inst/targets/targets_calculate_predict.R")
# targets::tar_source("inst/targets/targets_predict.R")
########################### SYSTEM SETTINGS ##########################
if (Sys.getenv("BEETHOVEN") == "covariates") {
target_baselearner <- target_metalearner <- target_predict <- NULL
}
############################## PIPELINE ##############################
list(
target_critical,
target_initiate,
target_download,
target_aqs,
target_calculate_fit,
target_baselearner
# target_metalearner,
# target_calculate_predict,
# target_predict
)