Sync from v0.13
This commit is contained in:
41
tests/standalone_tests/lazy_imports.py
Normal file
41
tests/standalone_tests/lazy_imports.py
Normal file
@@ -0,0 +1,41 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
|
||||
|
||||
# Description: Test the lazy import module
|
||||
# The utility function cannot be placed in `vllm.utils`
|
||||
# this needs to be a standalone script
|
||||
import sys
|
||||
from contextlib import nullcontext
|
||||
|
||||
from vllm_test_utils import BlameResult, blame
|
||||
|
||||
# List of modules that should not be imported too early.
|
||||
# Lazy import `torch._inductor.async_compile` to avoid creating
|
||||
# too many processes before we set the number of compiler threads.
|
||||
# Lazy import `cv2` to avoid bothering users who only use text models.
|
||||
# `cv2` can easily mess up the environment.
|
||||
module_names = ["torch._inductor.async_compile", "cv2"]
|
||||
|
||||
|
||||
def any_module_imported():
|
||||
return any(module_name in sys.modules for module_name in module_names)
|
||||
|
||||
|
||||
# In CI, we only check finally if the module is imported.
|
||||
# If it is indeed imported, we can rerun the test with `use_blame=True`,
|
||||
# which will trace every function call to find the first import location,
|
||||
# and help find the root cause.
|
||||
# We don't run it in CI by default because it is slow.
|
||||
use_blame = False
|
||||
context = blame(any_module_imported) if use_blame else nullcontext()
|
||||
with context as result:
|
||||
import vllm # noqa
|
||||
|
||||
if use_blame:
|
||||
assert isinstance(result, BlameResult)
|
||||
print(f"the first import location is:\n{result.trace_stack}")
|
||||
|
||||
assert not any_module_imported(), (
|
||||
f"Some the modules in {module_names} are imported. To see the first"
|
||||
f" import location, run the test with `use_blame=True`."
|
||||
)
|
||||
67
tests/standalone_tests/python_only_compile.sh
Normal file
67
tests/standalone_tests/python_only_compile.sh
Normal file
@@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
# This script tests if the python only compilation works correctly
|
||||
# for users who do not have any compilers installed on their system
|
||||
|
||||
set -e
|
||||
|
||||
merge_base_commit=$(git merge-base HEAD origin/main)
|
||||
echo "INFO: current merge base commit with main: $merge_base_commit"
|
||||
git show --oneline -s $merge_base_commit
|
||||
|
||||
# test whether the metadata.json url is valid, retry each 3 minutes up to 5 times
|
||||
# this avoids cumbersome error messages & manual retries in case the precompiled wheel
|
||||
# for the given commit is still being built in the release pipeline
|
||||
meta_json_url="https://wheels.vllm.ai/$merge_base_commit/vllm/metadata.json"
|
||||
echo "INFO: will use metadata.json from $meta_json_url"
|
||||
|
||||
for i in {1..5}; do
|
||||
echo "Checking metadata.json URL (attempt $i)..."
|
||||
if curl --fail "$meta_json_url" > metadata.json; then
|
||||
echo "INFO: metadata.json URL is valid."
|
||||
# check whether it is valid json by python
|
||||
if python3 -m json.tool metadata.json; then
|
||||
echo "INFO: metadata.json is valid JSON. Proceeding with the test."
|
||||
else
|
||||
echo "CRITICAL: metadata.json exists but is not valid JSON, please do report in #sig-ci channel!"
|
||||
exit 1
|
||||
fi
|
||||
break
|
||||
fi
|
||||
# failure handling
|
||||
if [ $i -eq 5 ]; then
|
||||
echo "ERROR: metadata.json URL is still not valid after 5 attempts."
|
||||
echo "ERROR: Please check whether the precompiled wheel for commit $merge_base_commit exists."
|
||||
echo " NOTE: If $merge_base_commit is a new commit on main, maybe try again after its release pipeline finishes."
|
||||
echo " NOTE: If it fails, please report in #sig-ci channel."
|
||||
exit 1
|
||||
else
|
||||
echo "WARNING: metadata.json URL is not valid. Retrying in 3 minutes..."
|
||||
sleep 180
|
||||
fi
|
||||
done
|
||||
|
||||
set -x
|
||||
|
||||
cd /vllm-workspace/
|
||||
|
||||
# uninstall vllm
|
||||
pip3 uninstall -y vllm
|
||||
# restore the original files
|
||||
mv src/vllm ./vllm
|
||||
|
||||
# remove all compilers
|
||||
apt remove --purge build-essential -y
|
||||
apt autoremove -y
|
||||
|
||||
echo 'import os; os.system("touch /tmp/changed.file")' >> vllm/__init__.py
|
||||
|
||||
VLLM_PRECOMPILED_WHEEL_COMMIT=$merge_base_commit VLLM_USE_PRECOMPILED=1 pip3 install -vvv -e .
|
||||
|
||||
# Run the script
|
||||
python3 -c 'import vllm'
|
||||
|
||||
# Check if the clangd log file was created
|
||||
if [ ! -f /tmp/changed.file ]; then
|
||||
echo "ERROR: changed.file was not created, python only compilation failed"
|
||||
exit 1
|
||||
fi
|
||||
42
tests/standalone_tests/pytorch_nightly_dependency.sh
Normal file
42
tests/standalone_tests/pytorch_nightly_dependency.sh
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/bin/sh
|
||||
# This script tests if the nightly torch packages are not overridden by the dependencies
|
||||
|
||||
set -e
|
||||
set -x
|
||||
|
||||
cd /vllm-workspace/
|
||||
|
||||
rm -rf .venv
|
||||
|
||||
uv venv .venv
|
||||
|
||||
source .venv/bin/activate
|
||||
|
||||
# check the environment
|
||||
uv pip freeze
|
||||
|
||||
echo ">>> Installing nightly torch packages"
|
||||
uv pip install --quiet torch torchvision torchaudio --pre --extra-index-url https://download.pytorch.org/whl/nightly/cu128
|
||||
|
||||
echo ">>> Capturing torch-related versions before requirements install"
|
||||
uv pip freeze | grep -E '^torch|^torchvision|^torchaudio' | sort > before.txt
|
||||
echo "Before:"
|
||||
cat before.txt
|
||||
|
||||
echo ">>> Installing requirements/nightly_torch_test.txt"
|
||||
uv pip install --quiet -r requirements/nightly_torch_test.txt
|
||||
|
||||
echo ">>> Capturing torch-related versions after requirements install"
|
||||
uv pip freeze | grep -E '^torch|^torchvision|^torchaudio' | sort > after.txt
|
||||
echo "After:"
|
||||
cat after.txt
|
||||
|
||||
echo ">>> Comparing versions"
|
||||
if diff before.txt after.txt; then
|
||||
echo "torch version not overridden."
|
||||
else
|
||||
echo "torch version overridden by nightly_torch_test.txt, \
|
||||
if the dependency is not triggered by the pytroch nightly test,\
|
||||
please add the dependency to the list 'white_list' in tools/pre_commit/generate_nightly_torch_test.py"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user