Skip to content

Commit 1bc4df8

Browse files
[Run] reduce the amount of env vars required to run agains a pre-deployed stack (llm-d#264)
* [Run] reduce the amount of env vars required to run agains a pre-deployed stack Also, fix a bug on `standalone` deployment for non-admins. Fix CI/CD. Added a comprehensive list of environment variables to the "launcher" pod Also allow automated extraction of the HF_TOKEN from a cluster secret All dependencies on CI/CD should be installed via install_deps.sh Signed-off-by: maugustosilva <maugusto.silva@gmail.com> --------- Signed-off-by: maugustosilva <maugusto.silva@gmail.com>
1 parent 50e50b3 commit 1bc4df8

File tree

6 files changed

+42
-37
lines changed

6 files changed

+42
-37
lines changed

.github/workflows/benchmark1.yaml

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,6 @@ jobs:
6565
./setup/install_deps.sh
6666
shell: bash
6767

68-
- name: Populate python deps
69-
run: |
70-
echo -e "pandas\ngrip>=4.6.0\nmatplotlib>=3.7.0\nnumpy>=1.22.0\nseaborn>=0.12.0\nkubernetes>=28.0.0\npykube\nkubernetes-asyncio\nGitPython" > requirements.txt
71-
72-
- name: Install python deps
73-
uses: actions/setup-python@v5
74-
with:
75-
python-version: '3.13'
76-
cache: 'pip'
77-
- run: pip install -r requirements.txt
78-
7968
- name: Cleanup target cloud (modelservice)
8069
env:
8170
LLMDBENCH_HF_TOKEN: ${{ secrets.LLMDBENCH_HF_TOKEN }}

.github/workflows/ci-pr-benchmark.yaml

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,6 @@ jobs:
3535
./setup/install_deps.sh
3636
shell: bash
3737

38-
- name: Populate python deps
39-
run: |
40-
echo -e "pandas\ngrip>=4.6.0\nmatplotlib>=3.7.0\nnumpy>=1.22.0\nseaborn>=0.12.0\nkubernetes>=28.0.0\npykube\nkubernetes-asyncio\nGitPython" > requirements.txt
41-
42-
- name: Install python deps
43-
uses: actions/setup-python@v5
44-
with:
45-
python-version: '3.13'
46-
cache: 'pip'
47-
- run: pip install -r requirements.txt
48-
4938
- name: Standup a modelservice using llm-d-inference-sim
5039
env:
5140
LLMDBENCH_HF_TOKEN: hf-token-placeholder

setup/env.sh

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,8 @@ export LLMDBENCH_CONTROL_CHECK_CLUSTER_AUTHORIZATIONS=${LLMDBENCH_CONTROL_CHECK_
155155
export LLMDBENCH_CONTROL_RESOURCE_LIST=${LLMDBENCH_CONTROL_RESOURCE_LIST:-deployment,httproute,service,gateway,gatewayparameters,inferencepool,inferencemodel,cm,ing,pod,job}
156156
export LLMDBENCH_CONTROL_STEP_00_IMPLEMENTATION=${LLMDBENCH_CONTROL_STEP_00_IMPLEMENTATION:-py}
157157
export LLMDBENCH_CONTROL_STEP_01_IMPLEMENTATION=${LLMDBENCH_CONTROL_STEP_01_IMPLEMENTATION:-py}
158-
export LLMDBENCH_CONTROL_STEP_02_IMPLEMENTATION=${LLMDBENCH_CONTROL_STEP_02_IMPLEMENTATION:-sh}
159-
export LLMDBENCH_CONTROL_STEP_03_IMPLEMENTATION=${LLMDBENCH_CONTROL_STEP_03_IMPLEMENTATION:-sh}
158+
export LLMDBENCH_CONTROL_STEP_02_IMPLEMENTATION=${LLMDBENCH_CONTROL_STEP_02_IMPLEMENTATION:-py}
159+
export LLMDBENCH_CONTROL_STEP_03_IMPLEMENTATION=${LLMDBENCH_CONTROL_STEP_03_IMPLEMENTATION:-py}
160160
export LLMDBENCH_CONTROL_STEP_04_IMPLEMENTATION=${LLMDBENCH_CONTROL_STEP_04_IMPLEMENTATION:-py}
161161
export LLMDBENCH_CONTROL_STEP_05_IMPLEMENTATION=${LLMDBENCH_CONTROL_STEP_05_IMPLEMENTATION:-sh}
162162
export LLMDBENCH_CONTROL_STEP_06_IMPLEMENTATION=${LLMDBENCH_CONTROL_STEP_06_IMPLEMENTATION:-sh}
@@ -323,16 +323,6 @@ if [[ ! -z $LLMDBENCH_HARNESS_EXPERIMENT_TREATMENTS ]]; then
323323
fi
324324
fi
325325

326-
required_vars=("LLMDBENCH_HF_TOKEN")
327-
for var in "${required_vars[@]}"; do
328-
if [ -z "${!var:-}" ]; then
329-
echo "❌ Environment variable '$var' is not set."
330-
exit 1
331-
fi
332-
done
333-
334-
export HF_TOKEN=${HF_TOKEN:-$LLMDBENCH_HF_TOKEN}
335-
336326
export LLMDBENCH_CONTROL_WORK_DIR=${LLMDBENCH_CONTROL_WORK_DIR:-$(mktemp -d -t ${LLMDBENCH_CONTROL_CLUSTER_NAME}-$(echo $0 | rev | cut -d '/' -f 1 | rev | $LLMDBENCH_CONTROL_SCMD -e 's^.sh^^g' -e 's^./^^g')XXX)}
337327
export LLMDBENCH_CONTROL_WORK_DIR_SET=${LLMDBENCH_CONTROL_WORK_DIR_SET:-0}
338328
export LLMDBENCH_CONTROL_WORK_DIR_BACKEDUP=${LLMDBENCH_CONTROL_WORK_DIR_BACKEDUP:-0}
@@ -448,4 +438,21 @@ if [[ $LLMDBENCH_CONTROL_PERMISSIONS_CHECKED -eq 0 && ${LLMDBENCH_CONTROL_CHECK_
448438
done
449439
fi
450440

451-
export LLMDBENCH_CONTROL_DEPLOY_HOST_SHELL=${SHELL:5}
441+
if [[ $LLMDBENCH_CONTROL_CALLER == "run.sh" ]]; then
442+
if [[ -z $LLMDBENCH_HF_TOKEN ]]; then
443+
announce "🔍 Environment variable \"LLMDBENCH_HF_TOKEN\" not set, attempting to extract it from secret \"LLMDBENCH_VLLM_COMMON_HF_TOKEN_NAME=${LLMDBENCH_VLLM_COMMON_HF_TOKEN_NAME}\"..."
444+
LLMDBENCH_HF_TOKEN=$($LLMDBENCH_CONTROL_KCMD --namespace $LLMDBENCH_VLLM_COMMON_NAMESPACE get secrets ${LLMDBENCH_VLLM_COMMON_HF_TOKEN_NAME} -o jsonpath='{.data.*}' | base64 -d | grep ^hf_ || true)
445+
fi
446+
fi
447+
448+
required_vars=("LLMDBENCH_HF_TOKEN")
449+
for var in "${required_vars[@]}"; do
450+
if [ -z "${!var:-}" ]; then
451+
echo "❌ Environment variable '$var' is not set."
452+
exit 1
453+
fi
454+
done
455+
456+
export HF_TOKEN=${HF_TOKEN:-$LLMDBENCH_HF_TOKEN}
457+
458+
export LLMDBENCH_CONTROL_DEPLOY_HOST_SHELL=${SHELL:5}

setup/functions.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -744,6 +744,17 @@ function get_harness_list {
744744
}
745745
export -f get_harness_list
746746

747+
function add_env_vars_to_pod {
748+
local varpattern=$1
749+
varlist=$(env | grep -E "$varpattern" | cut -d "=" -f 1)
750+
echo "# "
751+
for envvar in $varlist; do
752+
echo " - name: ${envvar}"
753+
echo " value: \"${!envvar}\""
754+
done
755+
}
756+
export -f add_env_vars_to_pod
757+
747758
function create_harness_pod {
748759
is_pvc=$(${LLMDBENCH_CONTROL_KCMD} --namespace ${LLMDBENCH_HARNESS_NAMESPACE} get pvc --ignore-not-found | grep ${LLMDBENCH_HARNESS_PVC_NAME} || true)
749760
if [[ -z ${is_pvc} ]]; then
@@ -806,6 +817,7 @@ spec:
806817
value: "${LLMDBENCH_HARNESS_STACK_ENDPOINT_URL}"
807818
- name: LLMDBENCH_HARNESS_STACK_NAME
808819
value: "$LLMDBENCH_HARNESS_STACK_NAME"
820+
$(add_env_vars_to_pod $LLMDBENCH_CONTROL_ENV_VAR_LIST_TO_POD)
809821
- name: HF_TOKEN_SECRET
810822
value: "${LLMDBENCH_VLLM_COMMON_HF_TOKEN_NAME}"
811823
- name: HUGGING_FACE_HUB_TOKEN

setup/run.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,9 @@ export LLMDBENCH_BASE64_CONTEXT_CONTENTS=$(cat $LLMDBENCH_CONTROL_WORK_DIR/envir
178178

179179
set +euo pipefail
180180
export LLMDBENCH_CURRENT_STEP=05
181+
if [[ $LLMDBENCH_CONTROL_ENVIRONMENT_TYPE_STANDALONE_ACTIVE -eq 0 && $LLMDBENCH_CONTROL_ENVIRONMENT_TYPE_MODELSERVICE_ACTIVE -eq 0 ]]; then
182+
export LLMDBENCH_VLLM_MODELSERVICE_URI_PROTOCOL="NA"
183+
fi
181184
source ${LLMDBENCH_STEPS_DIR}/05_ensure_harness_namespace_prepared.sh > /dev/null 2>&1
182185
if [[ $? -ne 0 ]]; then
183186
announce "❌ Error while attempting to setup the harness namespace"
@@ -210,18 +213,21 @@ for method in ${LLMDBENCH_DEPLOY_METHODS//,/ }; do
210213
export LLMDBENCH_VLLM_FQDN=".${LLMDBENCH_VLLM_COMMON_NAMESPACE}${LLMDBENCH_VLLM_COMMON_FQDN}"
211214

212215
if [[ $LLMDBENCH_CONTROL_ENVIRONMENT_TYPE_STANDALONE_ACTIVE -eq 1 ]]; then
216+
export LLMDBENCH_CONTROL_ENV_VAR_LIST_TO_POD="^LLMDBENCH_VLLM_COMMON|^LLMDBENCH_VLLM_STANDALONE"
213217
export LLMDBENCH_HARNESS_STACK_TYPE=vllm-prod
214218
export LLMDBENCH_HARNESS_STACK_ENDPOINT_NAME=$(${LLMDBENCH_CONTROL_KCMD} --namespace "$LLMDBENCH_VLLM_COMMON_NAMESPACE" get service --no-headers | grep standalone | awk '{print $1}' || true)
215219
export LLMDBENCH_HARNESS_STACK_ENDPOINT_PORT=80
216220
fi
217221

218222
if [[ $LLMDBENCH_CONTROL_ENVIRONMENT_TYPE_MODELSERVICE_ACTIVE -eq 1 ]]; then
223+
export LLMDBENCH_CONTROL_ENV_VAR_LIST_TO_POD="^LLMDBENCH_VLLM_COMMON|^LLMDBENCH_VLLM_MODELSERVICE|^LLMDBENCH_VLLM_INFRA|^LLMDBENCH_VLLM_GAIE"
219224
export LLMDBENCH_HARNESS_STACK_TYPE=llm-d
220225
export LLMDBENCH_HARNESS_STACK_ENDPOINT_NAME=$(${LLMDBENCH_CONTROL_KCMD} --namespace "$LLMDBENCH_VLLM_COMMON_NAMESPACE" get gateway --no-headers | grep ^infra-${LLMDBENCH_VLLM_MODELSERVICE_RELEASE}-inference-gateway | awk '{print $1}')
221226
export LLMDBENCH_HARNESS_STACK_ENDPOINT_PORT=80
222227
fi
223228

224229
if [[ $LLMDBENCH_CONTROL_ENVIRONMENT_TYPE_STANDALONE_ACTIVE -eq 0 && $LLMDBENCH_CONTROL_ENVIRONMENT_TYPE_MODELSERVICE_ACTIVE -eq 0 ]]; then
230+
export LLMDBENCH_CONTROL_ENV_VAR_LIST_TO_POD="^LLMDBENCH_VLLM_COMMON_NAMESPACE"
225231
announce "🔍 Deployment method - $LLMDBENCH_DEPLOY_METHODS - is neither \"standalone\" nor \"modelservice\". Trying to find a matching endpoint name..."
226232
export LLMDBENCH_HARNESS_STACK_TYPE=vllm-prod
227233
export LLMDBENCH_HARNESS_STACK_ENDPOINT_NAME=$(${LLMDBENCH_CONTROL_KCMD} --namespace "$LLMDBENCH_VLLM_COMMON_NAMESPACE" get service --no-headers | awk '{print $1}' | grep ${LLMDBENCH_DEPLOY_METHODS} || true)
@@ -325,7 +331,7 @@ for method in ${LLMDBENCH_DEPLOY_METHODS//,/ }; do
325331
fi
326332

327333
if [[ $LLMDBENCH_CONTROL_DRY_RUN -eq 1 ]]; then
328-
announce "ℹ️ Skipping \"${LLMDBENCH_RUN_HARNESS_LAUNCHER_NAME}\ creation"
334+
announce "ℹ️ Skipping \"${LLMDBENCH_RUN_HARNESS_LAUNCHER_NAME}\" creation"
329335
else
330336
create_harness_pod
331337

setup/steps/04_ensure_model_namespace_prepared.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ def main():
100100

101101
llmdbench_execute_cmd(actual_cmd=f'source "{ev["control_dir"]}/env.sh"', dry_run=ev["control_dry_run"] == '1', verbose=ev["control_verbose"] == '1')
102102

103+
104+
103105
api = kube_connect(f'{ev["control_work_dir"]}/environment/context.ctx')
104106
if ev["control_dry_run"] == '1':
105107
announce("DRY RUN enabled. No actual changes will be made.")
@@ -162,7 +164,7 @@ def main():
162164
dry_run=ev["control_dry_run"]
163165
))
164166

165-
if is_openshift(api):
167+
if is_openshift(api) and ev["deploy_methods"] == "modelservice" :
166168
# vllm workloads may need to run as a specific non-root UID , the default SA needs anyuid
167169
# some setups might also require privileged access for GPU resources
168170
add_scc_to_service_account(api, "anyuid", ev["vllm_common_service_account"], ev["vllm_common_namespace"], ev["control_dry_run"]=='1')

0 commit comments

Comments
 (0)