@@ -24,14 +24,18 @@ function usage {
24
24
echo " usage: $( basename ${0} ) required... [optional]..."
25
25
echo
26
26
echo " required:"
27
- echo " -M | --mode"
28
- echo " Either 'direct' (offline / static) or"
29
- echo " 'server' (online / dynamic)."
30
27
echo " -W | --dir_work"
31
28
echo " Working directory / path."
32
29
echo " This is where the experiment is executed from,"
33
30
echo " including where working files (e.g., compile artifacts)"
34
31
echo " are written to / loaded from."
32
+ echo " -M | --mode"
33
+ echo " Either 'direct' (offline / static) or"
34
+ echo " 'server' (online / dynamic)."
35
+ echo " -m | --model_name"
36
+ echo " Either a friendly model name "
37
+ echo " (e.g., ibm-granite/granite-3.3-8b-instruct)"
38
+ echo " or a (full / relative) path to a model folder."
35
39
echo
36
40
echo " optional:"
37
41
echo " -O | --dir_outs"
@@ -41,32 +45,49 @@ function usage {
41
45
echo " Also added to the outputs directory, if different."
42
46
echo " Prefix is added before the experiment timestamp."
43
47
echo " Useful for grouping a sweep of experiments together."
48
+ echo " -S | --dir_suff"
49
+ echo " Suffix (name/path) to be added to directories."
50
+ echo " Similar behavior to --dir_pref."
44
51
echo " -T | --exp_time"
45
52
echo " Experiment timestamp."
46
53
echo " Used in combination with other pieces of information"
47
54
echo " to uniquely identify the experiment."
48
55
echo " If not provided, a timestamp will be generated."
56
+ echo " -r | --model_root"
57
+ echo " Root directory for models."
58
+ echo " If specified, this will be combined to the model name"
59
+ echo " to form a complete model path."
60
+ echo " -e | --env"
61
+ echo " Environment variable to set (KEY=VALUE format)."
62
+ echo " Can be specified multiple times."
63
+ echo " Use KEY=__UNSET__ to unset a variable."
49
64
echo
50
65
exit 1
51
66
}
52
67
68
+ envs=()
69
+
53
70
while [[ ${# } -gt 0 ]]; do
54
71
arg=${1} ; case ${arg} in
55
- -M | --mode ) shift ; mode=${1} ;;
56
- -W | --dir_work ) shift ; dir_work=${1} ;;
57
- -O | --dir_outs ) shift ; dir_outs=${1} ;;
58
- -P | --dir_pref ) shift ; dir_pref=${1} ;;
59
- -T | --exp_time ) shift ; exp_time=${1} ;;
60
- -m | --model ) shift ; model=${1} ;;
61
- -h | --help ) shift ; usage ;;
62
- -- ) shift ; rem=${@ } ; break ;;
63
- * ) shift ; arg_invalid ${arg} ;;
72
+ -W | --dir_work ) shift ; dir_work=${1} ;;
73
+ -M | --mode ) shift ; mode=${1} ;;
74
+ -m | --model_name ) shift ; model_name=${1} ;;
75
+ -O | --dir_outs ) shift ; dir_outs=${1} ;;
76
+ -P | --dir_pref ) shift ; dir_pref=${1} ;;
77
+ -S | --dir_suff ) shift ; dir_suff=${1} ;;
78
+ -T | --exp_time ) shift ; exp_time=${1} ;;
79
+ -r | --model_root ) shift ; model_root=${1} ;;
80
+ -e | --env ) shift ; envs+=(" ${1} " ) ;;
81
+ -h | --help ) shift ; usage ;;
82
+ -- ) shift ; rem=${@ } ; break ;;
83
+ * ) shift ; arg_invalid ${arg} ;;
64
84
esac ; shift
65
85
done
66
86
67
87
for arg in \
68
88
mode \
69
89
dir_work \
90
+ model_name \
70
91
; do
71
92
if [[ -z " ${! arg:- } " ]]; then arg_missing --${arg} ; fi
72
93
done
75
96
# ---------------------
76
97
77
98
dir_outs=${dir_outs:- ${dir_work} }
78
- dir_pref=${dir_pref:- }
79
99
exp_time=${exp_time:- $(date +% Y% m% d-% H% M% S.% N)}
80
100
81
101
# ==============================================================================
82
102
# SETUP
83
103
# ==============================================================================
84
104
85
- wdir=${dir_work} /${dir_pref} /${exp_time}
86
- odir=${dir_outs} /${dir_pref} /${exp_time}
105
+ wdir=${dir_work} /${dir_pref} /${exp_time} / ${dir_suff}
106
+ odir=${dir_outs} /${dir_pref} /${exp_time} / ${dir_suff}
87
107
88
108
mkdir -p ${wdir}
89
109
mkdir -p ${odir}
90
110
91
111
echo
92
- echo " (runner) wdir = ${wdir} "
93
- echo " (runner) odir = ${odir} "
112
+ echo " wdir = ${wdir} "
113
+ echo " odir = ${odir} "
94
114
95
115
# ==============================================================================
96
116
# SERVER MODE
@@ -101,7 +121,11 @@ function run_mode_server {
101
121
server=${rem%% -- * }
102
122
client=${rem#* -- }
103
123
104
- cmd=" ${SDIR} /${server} "
124
+ if [[ -n ${model_root} ]]; then model=${model_root} /${model_name}
125
+ else model=${model_name}
126
+ fi
127
+
128
+ cmd=" ${SDIR} /${server} --model ${model} "
105
129
106
130
echo ${cmd} & > ${odir} /server.cmd
107
131
eval ${cmd} & > ${odir} /server.log &
@@ -136,11 +160,12 @@ done
136
160
echo " done, server is ready!"
137
161
138
162
# get true pid
163
+
139
164
vllm_server_pid=$( \
140
165
grep " Started server process" ${odir} /server.log | \
141
166
grep -o ' [0-9]\+' )
142
167
143
- cmd=" ${SDIR} /${client} "
168
+ cmd=" ${SDIR} /${client} --model ${model} "
144
169
145
170
echo
146
171
echo ${cmd} & > ${odir} /client.cmd
@@ -167,14 +192,37 @@ kill -2 ${server_pid}
167
192
function run_mode_direct {
168
193
169
194
if [[ -z ${rem} ]]; then
195
+ echo
170
196
echo " nothing to do"
171
197
exit 1
172
198
fi
173
199
174
- cmd=${SDIR} /${rem}
200
+ echo
201
+
202
+ for keyval in ${envs[@]} ; do
203
+ key=${keyval%% =* }
204
+ val=${keyval#* =}
205
+
206
+ echo " FMWORK EXP ${keyval} " & >> ${odir} /driver.log
207
+
208
+ if [[ ${val} == __UNSET__ ]]; then unset ${key}
209
+ else export ${key} =${val}
210
+ fi
211
+ done
212
+
213
+ echo & >> ${odir} /driver.log
214
+ env | sort | sed ' s/^/FMWORK ENV /' & >> ${odir} /driver.log
215
+
216
+ if [[ -n ${model_root} ]]; then
217
+ model=" --model_root ${model_root} --model_name ${model_name} "
218
+ else
219
+ model=" --model_name ${model_name} "
220
+ fi
221
+
222
+ cmd=" ${SDIR} /${rem} ${model} "
175
223
176
- echo ${cmd} & > ${odir} /driver.cmd
177
- eval ${cmd} | & tee ${odir} /driver.log
224
+ echo ${cmd} & > ${odir} /driver.cmd
225
+ eval ${cmd} | & tee -a ${odir} /driver.log
178
226
179
227
}
180
228
@@ -184,12 +232,18 @@ eval ${cmd} |& tee ${odir}/driver.log
184
232
185
233
cd ${wdir}
186
234
235
+ echo " model_root ${model_root} " >> ${odir} /runner.log
236
+ echo " model_name ${model_name} " >> ${odir} /runner.log
237
+ echo " time_start $( date " +%s.%N" ) " >> ${odir} /runner.log
238
+
187
239
if [[ ${mode} == direct ]]; then run_mode_direct
188
240
elif [[ ${mode} == server ]]; then run_mode_server
189
241
else
190
242
echo " error: invalid mode: '${mode} '"
191
243
exit 1
192
244
fi
193
245
246
+ echo " time_end $( date " +%s.%N" ) " >> ${odir} /runner.log
247
+
194
248
echo
195
249
0 commit comments