Skip to content

Commit 836aad8

Browse files
committed
Improve support for direct-mode in runner
Also re-added model specification to runner (which is then distributed to either client/server or driver) and made some formatting changes. Signed-off-by: Nelson Mimura Gonzalez <[email protected]>
1 parent 7726cba commit 836aad8

File tree

1 file changed

+76
-22
lines changed

1 file changed

+76
-22
lines changed

infer/vllm/runner

Lines changed: 76 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,18 @@ function usage {
2424
echo "usage: $(basename ${0}) required... [optional]..."
2525
echo
2626
echo "required:"
27-
echo " -M | --mode"
28-
echo " Either 'direct' (offline / static) or"
29-
echo " 'server' (online / dynamic)."
3027
echo " -W | --dir_work"
3128
echo " Working directory / path."
3229
echo " This is where the experiment is executed from,"
3330
echo " including where working files (e.g., compile artifacts)"
3431
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."
3539
echo
3640
echo "optional:"
3741
echo " -O | --dir_outs"
@@ -41,32 +45,49 @@ function usage {
4145
echo " Also added to the outputs directory, if different."
4246
echo " Prefix is added before the experiment timestamp."
4347
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."
4451
echo " -T | --exp_time"
4552
echo " Experiment timestamp."
4653
echo " Used in combination with other pieces of information"
4754
echo " to uniquely identify the experiment."
4855
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."
4964
echo
5065
exit 1
5166
}
5267

68+
envs=()
69+
5370
while [[ ${#} -gt 0 ]]; do
5471
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} ;;
6484
esac; shift
6585
done
6686

6787
for arg in \
6888
mode \
6989
dir_work \
90+
model_name \
7091
; do
7192
if [[ -z "${!arg:-}" ]]; then arg_missing --${arg}; fi
7293
done
@@ -75,22 +96,21 @@ done
7596
# ---------------------
7697

7798
dir_outs=${dir_outs:-${dir_work}}
78-
dir_pref=${dir_pref:-}
7999
exp_time=${exp_time:-$(date +%Y%m%d-%H%M%S.%N)}
80100

81101
# ==============================================================================
82102
# SETUP
83103
# ==============================================================================
84104

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}
87107

88108
mkdir -p ${wdir}
89109
mkdir -p ${odir}
90110

91111
echo
92-
echo "(runner) wdir = ${wdir}"
93-
echo "(runner) odir = ${odir}"
112+
echo "wdir = ${wdir}"
113+
echo "odir = ${odir}"
94114

95115
# ==============================================================================
96116
# SERVER MODE
@@ -101,7 +121,11 @@ function run_mode_server {
101121
server=${rem%% -- *}
102122
client=${rem#* -- }
103123

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}"
105129

106130
echo ${cmd} &> ${odir}/server.cmd
107131
eval ${cmd} &> ${odir}/server.log &
@@ -136,11 +160,12 @@ done
136160
echo "done, server is ready!"
137161

138162
# get true pid
163+
139164
vllm_server_pid=$(\
140165
grep "Started server process" ${odir}/server.log |\
141166
grep -o '[0-9]\+')
142167

143-
cmd="${SDIR}/${client}"
168+
cmd="${SDIR}/${client} --model ${model}"
144169

145170
echo
146171
echo ${cmd} &> ${odir}/client.cmd
@@ -167,14 +192,37 @@ kill -2 ${server_pid}
167192
function run_mode_direct {
168193

169194
if [[ -z ${rem} ]]; then
195+
echo
170196
echo "nothing to do"
171197
exit 1
172198
fi
173199

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}"
175223

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
178226

179227
}
180228

@@ -184,12 +232,18 @@ eval ${cmd} |& tee ${odir}/driver.log
184232

185233
cd ${wdir}
186234

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+
187239
if [[ ${mode} == direct ]]; then run_mode_direct
188240
elif [[ ${mode} == server ]]; then run_mode_server
189241
else
190242
echo "error: invalid mode: '${mode}'"
191243
exit 1
192244
fi
193245

246+
echo "time_end $(date "+%s.%N")" >> ${odir}/runner.log
247+
194248
echo
195249

0 commit comments

Comments
 (0)