[CI] Pin the Rust TreeCore build to the resolved libtorch instead of interpreter discovery (#37696)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
77aee20259
commit
6a0c55fd6c
@@ -74,7 +74,11 @@ def torch_build_configuration(
|
|||||||
cxx11_abi = bool(torch_module._C._GLIBCXX_USE_CXX11_ABI)
|
cxx11_abi = bool(torch_module._C._GLIBCXX_USE_CXX11_ABI)
|
||||||
|
|
||||||
environment = dict(os.environ if base_environment is None else base_environment)
|
environment = dict(os.environ if base_environment is None else base_environment)
|
||||||
environment["LIBTORCH_USE_PYTORCH"] = "1"
|
environment.pop("LIBTORCH_USE_PYTORCH", None)
|
||||||
|
environment["LIBTORCH"] = os.fspath(torch_root)
|
||||||
|
environment["LIBTORCH_INCLUDE"] = os.fspath(torch_root)
|
||||||
|
environment["LIBTORCH_LIB"] = os.fspath(torch_root)
|
||||||
|
environment["LIBTORCH_CXX11_ABI"] = "1" if cxx11_abi else "0"
|
||||||
# tch 0.24 targets Torch 2.11. The compatibility header below covers the
|
# tch 0.24 targets Torch 2.11. The compatibility header below covers the
|
||||||
# API removals in the supported 2.12/2.13 builds, after this explicit gate.
|
# API removals in the supported 2.12/2.13 builds, after this explicit gate.
|
||||||
environment["LIBTORCH_BYPASS_VERSION_CHECK"] = "1"
|
environment["LIBTORCH_BYPASS_VERSION_CHECK"] = "1"
|
||||||
|
|||||||
@@ -324,20 +324,6 @@ setup_cargo_cache() {
|
|||||||
mark_step_done "${FUNCNAME[0]}"
|
mark_step_done "${FUNCNAME[0]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
invalidate_torch_rust_cache() {
|
|
||||||
if [ "${SGLANG_BUILD_RUST_EXTS:-}" = "none" ]; then
|
|
||||||
mark_step_done "${FUNCNAME[0]}"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# uv's editable build uses a temporary torch path. Rebuild these units
|
|
||||||
# under the lock so Cargo does not reuse that path in a later job.
|
|
||||||
cargo clean --release --manifest-path "${REPO_ROOT}/rust/sglang-radix-tree/Cargo.toml" \
|
|
||||||
-p torch-sys -p sglang-radix-tree
|
|
||||||
|
|
||||||
mark_step_done "${FUNCNAME[0]}"
|
|
||||||
}
|
|
||||||
|
|
||||||
release_cargo_cache_lock() {
|
release_cargo_cache_lock() {
|
||||||
if [ "${CARGO_TARGET_LOCK_HELD:-0}" = "1" ]; then
|
if [ "${CARGO_TARGET_LOCK_HELD:-0}" = "1" ]; then
|
||||||
flock --unlock 9
|
flock --unlock 9
|
||||||
@@ -918,7 +904,6 @@ main() {
|
|||||||
install_pytorch_stack
|
install_pytorch_stack
|
||||||
install_cuda12_deepep_wheel
|
install_cuda12_deepep_wheel
|
||||||
setup_cargo_cache
|
setup_cargo_cache
|
||||||
invalidate_torch_rust_cache
|
|
||||||
install_sglang
|
install_sglang
|
||||||
release_cargo_cache_lock
|
release_cargo_cache_lock
|
||||||
# Diffusion B200 CI imports torch inside install_sglang_kernel after removing
|
# Diffusion B200 CI imports torch inside install_sglang_kernel after removing
|
||||||
|
|||||||
@@ -441,10 +441,15 @@ crate-type = ["cdylib"]
|
|||||||
"PATH": "/usr/bin",
|
"PATH": "/usr/bin",
|
||||||
"CXXFLAGS": "-O2",
|
"CXXFLAGS": "-O2",
|
||||||
"RUSTFLAGS": "-Ctarget-cpu=x86-64",
|
"RUSTFLAGS": "-Ctarget-cpu=x86-64",
|
||||||
|
"LIBTORCH_USE_PYTORCH": "1",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(build.environment["LIBTORCH_USE_PYTORCH"], "1")
|
self.assertNotIn("LIBTORCH_USE_PYTORCH", build.environment)
|
||||||
|
self.assertEqual(build.environment["LIBTORCH"], str(torch_root))
|
||||||
|
self.assertEqual(build.environment["LIBTORCH_INCLUDE"], str(torch_root))
|
||||||
|
self.assertEqual(build.environment["LIBTORCH_LIB"], str(torch_root))
|
||||||
|
self.assertEqual(build.environment["LIBTORCH_CXX11_ABI"], "1")
|
||||||
self.assertEqual(build.environment["LIBTORCH_BYPASS_VERSION_CHECK"], "1")
|
self.assertEqual(build.environment["LIBTORCH_BYPASS_VERSION_CHECK"], "1")
|
||||||
self.assertIn(str(compat_header), build.environment["CXXFLAGS"])
|
self.assertIn(str(compat_header), build.environment["CXXFLAGS"])
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
import importlib.util
|
|
||||||
import re
|
|
||||||
import unittest
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
REPO_ROOT = Path(__file__).resolve().parents[4]
|
|
||||||
CI_REGISTER_PATH = REPO_ROOT / "python" / "sglang" / "test" / "ci" / "ci_register.py"
|
|
||||||
INSTALL_SCRIPT = REPO_ROOT / "scripts" / "ci" / "cuda" / "ci_install_dependency.sh"
|
|
||||||
|
|
||||||
|
|
||||||
def _load_module(name, path):
|
|
||||||
spec = importlib.util.spec_from_file_location(name, path)
|
|
||||||
module = importlib.util.module_from_spec(spec)
|
|
||||||
spec.loader.exec_module(module)
|
|
||||||
return module
|
|
||||||
|
|
||||||
|
|
||||||
register_cpu_ci = _load_module("ci_register", CI_REGISTER_PATH).register_cpu_ci
|
|
||||||
register_cpu_ci(est_time=0, suite="base-a-test-cpu")
|
|
||||||
|
|
||||||
|
|
||||||
class TestCudaCiInstallDependencyTorchCache(unittest.TestCase):
|
|
||||||
def test_rebuilds_torch_extensions_before_editable_install(self):
|
|
||||||
script = INSTALL_SCRIPT.read_text()
|
|
||||||
|
|
||||||
self.assertRegex(
|
|
||||||
script,
|
|
||||||
re.compile(
|
|
||||||
r"setup_cargo_cache\s*\n"
|
|
||||||
r"\s*invalidate_torch_rust_cache\s*\n"
|
|
||||||
r"\s*install_sglang"
|
|
||||||
),
|
|
||||||
)
|
|
||||||
self.assertIn('"${SGLANG_BUILD_RUST_EXTS:-}" = "none"', script)
|
|
||||||
self.assertRegex(
|
|
||||||
script,
|
|
||||||
re.compile(
|
|
||||||
r"cargo clean --release --manifest-path "
|
|
||||||
r"\"\$\{REPO_ROOT\}/rust/sglang-radix-tree/Cargo\.toml\"\s*\\\n"
|
|
||||||
r"\s*-p torch-sys -p sglang-radix-tree"
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
unittest.main()
|
|
||||||
Reference in New Issue
Block a user