@@ -102,6 +102,7 @@ jobs:
102102
103103 set-test-environment :
104104 needs : [check-changes, build-sglang-image]
105+ if : (needs.check-changes.result == 'success' && needs.build-sglang-image.result == 'skipped') || needs.build-sglang-image.result == 'success'
105106 runs-on : ubuntu-latest
106107 outputs :
107108 aws-account-id : ${{ steps.set-env.outputs.AWS_ACCOUNT_ID }}
@@ -114,23 +115,160 @@ jobs:
114115 - name : Set test environment
115116 id : set-env
116117 run : |
118+
117119 if [[ "${{ needs.build-sglang-image.result }}" == "success" ]]; then
118120 AWS_ACCOUNT_ID=${{ vars.AWS_ACCOUNT_ID }}
119121 IMAGE_URI=${{ needs.build-sglang-image.outputs.ci-image }}
120122 elif [[ "${{ needs.check-changes.outputs.build-change }}" == "true" && "${{ needs.build-sglang-image.result }}" != "success" ]]; then
121123 AWS_ACCOUNT_ID=${{ vars.PROD_AWS_ACCOUNT_ID }}
122124 IMAGE_URI=${{ vars.PROD_AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_REGION }}.amazonaws.com/${{ env.PROD_SAGEMAKER_IMAGE }}
123125 fi
126+ echo ${AWS_ACCOUNT_ID}
127+ echo ${IMAGE_URI}
128+ echo ${SGLANG_VERSION}
124129 echo AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} >> ${GITHUB_OUTPUT}
125- echo SGLANG_VERSION=${SGLANG_VERSION} >> ${GITHUB_OUTPUT}
126130 echo IMAGE_URI=${IMAGE_URI} >> ${GITHUB_OUTPUT}
131+ echo SGLANG_VERSION=${SGLANG_VERSION} >> ${GITHUB_OUTPUT}
132+
133+ sglang-local-benchmark-test :
134+ needs : [set-test-environment]
135+ if : needs.set-test-environment.result == 'success'
136+ runs-on :
137+ - codebuild-runner-${{ github.run_id }}-${{ github.run_attempt }}
138+ fleet:x86-g6xl-runner
139+ steps :
140+ - name : Checkout DLC source
141+ uses : actions/checkout@v5
142+
143+ - name : Container pull
144+ uses : ./.github/actions/ecr-authenticate
145+ with :
146+ aws-account-id : ${{ needs.set-test-environment.outputs.aws-account-id }}
147+ aws-region : ${{ vars.AWS_REGION }}
148+ image-uri : ${{ needs.set-test-environment.outputs.image-uri }}
149+
150+ - name : Setup for SGLang datasets
151+ run : |
152+ mkdir -p /tmp/sglang/dataset
153+ if [ ! -f /tmp/sglang/dataset/ShareGPT_V3_unfiltered_cleaned_split.json ]; then
154+ echo "Downloading ShareGPT dataset..."
155+ wget -P /tmp/sglang/dataset https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json
156+ else
157+ echo "ShareGPT dataset already exists. Skipping download."
158+ fi
159+
160+ - name : Start container
161+ run : |
162+ CONTAINER_ID=$(docker run -d -it --rm --gpus=all \
163+ -v ${HOME}/.cache/huggingface:/root/.cache/huggingface \
164+ -v /tmp/sglang/dataset:/dataset \
165+ -p 30000:30000 \
166+ -e SM_SGLANG_MODEL_PATH=Qwen/Qwen3-0.6B \
167+ -e SM_SGLANG_REASONING_PARSER=qwen3 \
168+ -e SM_SGLANG_HOST=127.0.0.1 \
169+ -e SM_SGLANG_PORT=30000 \
170+ -e HF_TOKEN=${{ secrets.HUGGING_FACE_HUB_TOKEN }} \
171+ ${{ needs.set-test-environment.outputs.image-uri }})
172+ echo "CONTAINER_ID=${CONTAINER_ID}" >> ${GITHUB_ENV}
173+ echo "Waiting for container startup ..."
174+ sleep 60s
175+ docker logs ${CONTAINER_ID}
176+
177+ - name : Run SGLang tests
178+ run : |
179+ docker exec ${CONTAINER_ID} python3 -m sglang.bench_serving \
180+ --backend sglang \
181+ --host 127.0.0.1 --port 30000 \
182+ --num-prompts 1000 \
183+ --model Qwen/Qwen3-0.6B \
184+ --dataset-name sharegpt \
185+ --dataset-path /dataset/ShareGPT_V3_unfiltered_cleaned_split.json
186+
187+ - name : Cleanup container and images
188+ if : always()
189+ uses : ./.github/actions/container-cleanup
190+ with :
191+ container_id : ${{ env.CONTAINER_ID }}
192+
193+ sglang-lang-test :
194+ needs : [set-test-environment]
195+ if : needs.set-test-environment.result == 'success'
196+ runs-on :
197+ - codebuild-runner-${{ github.run_id }}-${{ github.run_attempt }}
198+ fleet:x86-g6exl-runner
199+ steps :
200+ - name : Checkout DLC source
201+ uses : actions/checkout@v5
202+
203+ - name : Container pull
204+ uses : ./.github/actions/ecr-authenticate
205+ with :
206+ aws-account-id : ${{ needs.set-test-environment.outputs.aws-account-id }}
207+ aws-region : ${{ vars.AWS_REGION }}
208+ image-uri : ${{ needs.set-test-environment.outputs.image-uri }}
209+
210+ - name : Checkout SGLang tests
211+ uses : actions/checkout@v5
212+ with :
213+ repository : sgl-project/sglang
214+ ref : v${{ needs.set-test-environment.outputs.sglang-version }}
215+ path : sglang_source
216+
217+ - name : Start container
218+ run : |
219+ CONTAINER_ID=$(docker run -d -it --rm --gpus=all --entrypoint /bin/bash \
220+ -v ${HOME}/.cache/huggingface:/root/.cache/huggingface \
221+ -v ./sglang_source:/workdir --workdir /workdir \
222+ -e HF_TOKEN=${{ secrets.HUGGING_FACE_HUB_TOKEN }} \
223+ ${{ needs.set-test-environment.outputs.image-uri }})
224+ echo "CONTAINER_ID=${CONTAINER_ID}" >> ${GITHUB_ENV}
225+
226+ - name : Setup for SGLang tests
227+ run : |
228+ docker exec ${CONTAINER_ID} sh -c '
229+ set -eux
230+
231+ bash scripts/ci/ci_install_dependency.sh
232+ '
233+
234+ - name : Run SGLang tests
235+ run : |
236+ docker exec ${CONTAINER_ID} sh -c '
237+ set -eux
238+ nvidia-smi
127239
128- test-sglang-image :
240+ # Frontend Test
241+ cd /workdir/test/lang
242+ python3 run_suite.py --suite per-commit
243+ '
244+
245+ - name : Cleanup container and images
246+ if : always()
247+ uses : ./.github/actions/container-cleanup
248+ with :
249+ container_id : ${{ env.CONTAINER_ID }}
250+
251+ sglang-sagemaker-endpoint-test :
129252 needs : [set-test-environment]
130- if : needs.set-test-environment.result == 'success'
131- uses : ./.github/workflows/test-sglang.yml
132- with :
133- aws-account-id : ${{ needs.set-test-environment.outputs.aws-account-id }}
134- aws-region : ${{ vars.AWS_REGION }}
135- image-uri : ${{ needs.set-test-environment.outputs.image-uri }}
136- sglang-version : ${{ needs.set-test-environment.outputs.sglang-version }}
253+ if : needs.set-test-environment.result == 'success'
254+ runs-on :
255+ - codebuild-runner-${{ github.run_id }}-${{ github.run_attempt }}
256+ fleet:default-runner
257+ steps :
258+ - name : Checkout DLC source
259+ uses : actions/checkout@v5
260+
261+ - run : .github/scripts/runner_setup.sh
262+ - name : Install test dependencies
263+ run : |
264+ uv venv
265+ source .venv/bin/activate
266+
267+ uv pip install -r test/requirements.txt
268+ uv pip install -r test/sglang/sagemaker/requirements.txt
269+
270+ - name : Run sagemaker tests
271+ run : |
272+ source .venv/bin/activate
273+ cd test/
274+ python3 -m pytest -vs -rA --image-uri ${{ needs.set-test-environment.outputs.image-uri }} sglang/sagemaker
0 commit comments