Files
sglang/test/registered/ascend/test_ascend_memory_consumption.py
Sugar920 c781db0f6c [NPU] update nightly tests (#17952)
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: cy <chenyang08056032@163.com>
2026-02-03 00:13:30 +08:00

82 lines
2.2 KiB
Python

"""
Usage:
python3 -m unittest test_ascend_memory_consumption.TestMemoryConsumptionAscend.test_memory_consumption
"""
import os
import unittest
import torch
from sglang.srt.utils import kill_process_tree
from sglang.test.ci.ci_register import register_npu_ci
from sglang.test.test_utils import (
DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
DEFAULT_URL_FOR_TEST,
CustomTestCase,
popen_launch_server,
)
register_npu_ci(
est_time=400,
suite="nightly-1-npu-a3",
nightly=True,
disabled="run failed",
)
if "ASCEND_RT_VISIBLE_DEVICES" not in os.environ:
os.environ["ASCEND_RT_VISIBLE_DEVICES"] = "0,1"
DEFAULT_PORT_FOR_SRT_TEST_RUNNER = (
8000 + int(os.environ.get("ASCEND_RT_VISIBLE_DEVICES", "0")[0]) * 100
)
DEFAULT_URL_FOR_TEST = f"http://127.0.0.1:{DEFAULT_PORT_FOR_SRT_TEST_RUNNER + 1000}"
class TestMemoryConsumptionAscend(CustomTestCase):
def test_memory_consumption(self):
model = "nytopop/Qwen3-30B-A3B.w8a8"
base_url = DEFAULT_URL_FOR_TEST
### Calculate initial used memory
free_npu_memory, total_npu_memory = torch.npu.mem_get_info()
initial_used_memory = total_npu_memory - free_npu_memory
process = popen_launch_server(
model,
base_url,
timeout=DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
other_args=[
"--trust-remote-code",
"--device",
"npu",
"--attention-backend",
"ascend",
"--tp-size",
"2",
"--mem-fraction-static",
"0.8",
"--cuda-graph-bs",
"1",
"--max-total-tokens",
"1024",
"--disable-radix-cache",
"--disable-cuda-graph",
],
)
### Calculate initial used memory
free_npu_memory, total_npu_memory = torch.npu.mem_get_info()
used_memory_after_server_starting = (
total_npu_memory - free_npu_memory - initial_used_memory
) / (1 << 30)
self.assertLessEqual(float(used_memory_after_server_starting), 16.00)
# Clean up everything
kill_process_tree(process.pid)
if __name__ == "__main__":
unittest.main()