-
-
Notifications
You must be signed in to change notification settings - Fork 5.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[CI/Build] improve python-only dev setup (#9621)
Signed-off-by: Daniele Trifirò <[email protected]> Signed-off-by: youkaichao <[email protected]> Co-authored-by: youkaichao <[email protected]>
- Loading branch information
1 parent
82eb5ea
commit e4c34c2
Showing
4 changed files
with
102 additions
and
121 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,92 +1,14 @@ | ||
# enable python only development | ||
# copy compiled files to the current directory directly | ||
msg = """Old style python only build (without compilation) is deprecated, please check https://docs.vllm.ai/en/latest/getting_started/installation.html#python-only-build-without-compilation for the new way to do python only build (without compilation). | ||
import argparse | ||
import os | ||
import shutil | ||
import subprocess | ||
import sys | ||
import warnings | ||
TL;DR: | ||
parser = argparse.ArgumentParser( | ||
description="Development mode for python-only code") | ||
parser.add_argument('-q', | ||
'--quit-dev', | ||
action='store_true', | ||
help='Set the flag to quit development mode') | ||
args = parser.parse_args() | ||
VLLM_USE_PRECOMPILED=1 pip install -e . | ||
# cannot directly `import vllm` , because it will try to | ||
# import from the current directory | ||
output = subprocess.run([sys.executable, "-m", "pip", "show", "vllm"], | ||
capture_output=True) | ||
or | ||
assert output.returncode == 0, "vllm is not installed" | ||
export VLLM_COMMIT=33f460b17a54acb3b6cc0b03f4a17876cff5eafd # use full commit hash from the main branch | ||
export VLLM_PRECOMPILED_WHEEL_LOCATION=https://vllm-wheels.s3.us-west-2.amazonaws.com/${VLLM_COMMIT}/vllm-1.0.0.dev-cp38-abi3-manylinux1_x86_64.whl | ||
pip install -e . | ||
""" # noqa | ||
|
||
text = output.stdout.decode("utf-8") | ||
|
||
package_path = None | ||
for line in text.split("\n"): | ||
if line.startswith("Location: "): | ||
package_path = line.split(": ")[1] | ||
break | ||
|
||
assert package_path is not None, "could not find package path" | ||
|
||
cwd = os.getcwd() | ||
|
||
assert cwd != package_path, "should not import from the current directory" | ||
|
||
files_to_copy = [ | ||
"vllm/_C.abi3.so", | ||
"vllm/_moe_C.abi3.so", | ||
"vllm/vllm_flash_attn/vllm_flash_attn_c.abi3.so", | ||
"vllm/vllm_flash_attn/flash_attn_interface.py", | ||
"vllm/vllm_flash_attn/__init__.py", | ||
# "vllm/_version.py", # not available in nightly wheels yet | ||
] | ||
|
||
# Try to create _version.py to avoid version related warning | ||
# Refer to https://github.com/vllm-project/vllm/pull/8771 | ||
try: | ||
from setuptools_scm import get_version | ||
get_version(write_to="vllm/_version.py") | ||
except ImportError: | ||
warnings.warn( | ||
"To avoid warnings related to vllm._version, " | ||
"you should install setuptools-scm by `pip install setuptools-scm`", | ||
stacklevel=2) | ||
|
||
if not args.quit_dev: | ||
for file in files_to_copy: | ||
src = os.path.join(package_path, file) | ||
dst = file | ||
print(f"Copying {src} to {dst}") | ||
shutil.copyfile(src, dst) | ||
|
||
pre_built_vllm_path = os.path.join(package_path, "vllm") | ||
tmp_path = os.path.join(package_path, "vllm_pre_built") | ||
current_vllm_path = os.path.join(cwd, "vllm") | ||
|
||
print(f"Renaming {pre_built_vllm_path} to {tmp_path} for backup") | ||
shutil.copytree(pre_built_vllm_path, tmp_path) | ||
shutil.rmtree(pre_built_vllm_path) | ||
|
||
print(f"Linking {current_vllm_path} to {pre_built_vllm_path}") | ||
os.symlink(current_vllm_path, pre_built_vllm_path) | ||
else: | ||
vllm_symlink_path = os.path.join(package_path, "vllm") | ||
vllm_backup_path = os.path.join(package_path, "vllm_pre_built") | ||
current_vllm_path = os.path.join(cwd, "vllm") | ||
|
||
print(f"Unlinking {current_vllm_path} to {vllm_symlink_path}") | ||
assert os.path.islink( | ||
vllm_symlink_path | ||
), f"not in dev mode: {vllm_symlink_path} is not a symbolic link" | ||
assert current_vllm_path == os.readlink( | ||
vllm_symlink_path | ||
), "current directory is not the source code of package" | ||
os.unlink(vllm_symlink_path) | ||
|
||
print(f"Recovering backup from {vllm_backup_path} to {vllm_symlink_path}") | ||
os.rename(vllm_backup_path, vllm_symlink_path) | ||
print(msg) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters