enable ut test for xpu devices (#11712)
Co-authored-by: jundu <jun.du@intel.com> Co-authored-by: Gao, Pengfei <pengfei.gao@intel.com>
This commit is contained in:
co-authored by
jundu
Gao, Pengfei
parent
0a6925639b
commit
495290aefd
@@ -10,6 +10,7 @@ import torch.multiprocessing as mp
|
||||
from torch.multiprocessing import Process
|
||||
|
||||
from sglang.srt.eplb import expert_location_updater
|
||||
from sglang.srt.utils import get_device
|
||||
from sglang.test.test_utils import CustomTestCase, find_available_port
|
||||
from sglang.utils import is_in_ci
|
||||
|
||||
@@ -61,7 +62,7 @@ class TestExpertLocationUpdater(CustomTestCase):
|
||||
def test_gpu(self):
|
||||
if is_in_ci():
|
||||
return
|
||||
self._test_common(device="cuda")
|
||||
self._test_common(device=get_device())
|
||||
|
||||
def _test_common(self, device):
|
||||
infos = []
|
||||
@@ -135,6 +136,8 @@ def _run_subprocess(
|
||||
)
|
||||
if device == "cuda":
|
||||
torch.cuda.set_device(f"cuda:{rank}")
|
||||
if device == "xpu":
|
||||
torch.xpu.set_device(f"xpu:{rank}")
|
||||
|
||||
for info in infos:
|
||||
_execute_test(info, rank=rank, num_gpus=num_gpus, device=device)
|
||||
|
||||
@@ -20,6 +20,7 @@ from sglang.srt.model_executor.model_runner import ModelRunner
|
||||
from sglang.srt.sampling.sampling_params import SamplingParams
|
||||
from sglang.srt.server_args import PortArgs, ServerArgs
|
||||
from sglang.srt.speculative.spec_info import SpeculativeAlgorithm
|
||||
from sglang.srt.utils import get_device
|
||||
from sglang.srt.utils.hf_transformers_utils import get_tokenizer
|
||||
from sglang.test.test_utils import DEFAULT_SMALL_MODEL_NAME_FOR_TEST, CustomTestCase
|
||||
|
||||
@@ -32,7 +33,7 @@ class TestForwardSplitPrefill(CustomTestCase):
|
||||
"""Set up the test environment once for all tests."""
|
||||
cls.model_path = DEFAULT_SMALL_MODEL_NAME_FOR_TEST
|
||||
cls.tp_size = 1
|
||||
cls.device = "cuda"
|
||||
cls.device = get_device()
|
||||
|
||||
# Initialize server args
|
||||
cls.server_args = ServerArgs(
|
||||
|
||||
@@ -3,16 +3,18 @@ import unittest
|
||||
|
||||
import numpy as np
|
||||
import requests
|
||||
import torch
|
||||
from transformers import AutoModelForCausalLM
|
||||
|
||||
import sglang as sgl
|
||||
from sglang.srt.utils import get_device
|
||||
from sglang.test.test_utils import (
|
||||
DEFAULT_MODEL_NAME_FOR_TEST,
|
||||
DEFAULT_SMALL_MODEL_NAME_FOR_TEST,
|
||||
DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
|
||||
DEFAULT_URL_FOR_TEST,
|
||||
CustomTestCase,
|
||||
empty_gpu_cache,
|
||||
get_gpu_count,
|
||||
is_in_ci,
|
||||
popen_launch_server,
|
||||
)
|
||||
@@ -32,7 +34,7 @@ class TestGetWeightsByName(CustomTestCase):
|
||||
def init_hf_model(self, model_name, tie_word_embeddings):
|
||||
self.hf_model = AutoModelForCausalLM.from_pretrained(
|
||||
model_name, torch_dtype="bfloat16", tie_word_embeddings=tie_word_embeddings
|
||||
).to("cuda:0")
|
||||
).to(get_device())
|
||||
|
||||
def init_backend(self, backend, dp, tp, model_name):
|
||||
self.backend = backend
|
||||
@@ -61,7 +63,7 @@ class TestGetWeightsByName(CustomTestCase):
|
||||
def clean_up(self):
|
||||
del self.hf_model
|
||||
gc.collect()
|
||||
torch.cuda.empty_cache()
|
||||
empty_gpu_cache()
|
||||
if self.backend == "Engine":
|
||||
self.engine.shutdown()
|
||||
else:
|
||||
@@ -132,11 +134,11 @@ class TestGetWeightsByName(CustomTestCase):
|
||||
("Runtime", 1, 1, DEFAULT_SMALL_MODEL_NAME_FOR_TEST),
|
||||
("Engine", 1, 1, DEFAULT_MODEL_NAME_FOR_TEST),
|
||||
]
|
||||
if torch.cuda.device_count() >= 2:
|
||||
if get_gpu_count() >= 2:
|
||||
test_suits.append(("Engine", 1, 2, DEFAULT_SMALL_MODEL_NAME_FOR_TEST))
|
||||
test_suits.append(("Runtime", 2, 1, DEFAULT_MODEL_NAME_FOR_TEST))
|
||||
|
||||
if torch.cuda.device_count() >= 4:
|
||||
if get_gpu_count() >= 4:
|
||||
test_suits.extend(
|
||||
[
|
||||
("Engine", 2, 2, DEFAULT_SMALL_MODEL_NAME_FOR_TEST),
|
||||
|
||||
@@ -7,6 +7,7 @@ from sglang.srt.layers.activation import SiluAndMul
|
||||
from sglang.srt.layers.moe.fused_moe_triton.fused_moe import fused_moe
|
||||
from sglang.srt.layers.moe.topk import TopKConfig, select_experts
|
||||
from sglang.srt.server_args import ServerArgs, set_global_server_args_for_scheduler
|
||||
from sglang.srt.utils import get_device
|
||||
|
||||
NUM_EXPERTS = [8, 64]
|
||||
TOP_KS = [2, 6]
|
||||
@@ -159,10 +160,10 @@ def test_fused_moe_wn16(
|
||||
weight_bits: int,
|
||||
):
|
||||
print(m, n, k, e, topk, dtype, group_size, has_zp, weight_bits)
|
||||
a = torch.randn((m, k), device="cuda", dtype=dtype) / 10
|
||||
w1 = torch.randn((e, 2 * n, k), device="cuda", dtype=dtype) / 10
|
||||
w2 = torch.randn((e, k, n), device="cuda", dtype=dtype) / 10
|
||||
score = torch.randn((m, e), device="cuda", dtype=dtype)
|
||||
a = torch.randn((m, k), device=get_device(), dtype=dtype) / 10
|
||||
w1 = torch.randn((e, 2 * n, k), device=get_device(), dtype=dtype) / 10
|
||||
w2 = torch.randn((e, k, n), device=get_device(), dtype=dtype) / 10
|
||||
score = torch.randn((m, e), device=get_device(), dtype=dtype)
|
||||
|
||||
if weight_bits == 4:
|
||||
pack_factor = 2
|
||||
@@ -174,16 +175,22 @@ def test_fused_moe_wn16(
|
||||
w1_ref = w1.clone()
|
||||
w2_ref = w2.clone()
|
||||
w1_qweight = torch.empty(
|
||||
(e, 2 * n, k // pack_factor), device="cuda", dtype=torch.uint8
|
||||
(e, 2 * n, k // pack_factor), device=get_device(), dtype=torch.uint8
|
||||
)
|
||||
w2_qweight = torch.empty((e, k, n // pack_factor), device="cuda", dtype=torch.uint8)
|
||||
w1_scales = torch.empty((e, 2 * n, k // group_size), device="cuda", dtype=dtype)
|
||||
w2_scales = torch.empty((e, k, n // group_size), device="cuda", dtype=dtype)
|
||||
w2_qweight = torch.empty(
|
||||
(e, k, n // pack_factor), device=get_device(), dtype=torch.uint8
|
||||
)
|
||||
w1_scales = torch.empty(
|
||||
(e, 2 * n, k // group_size), device=get_device(), dtype=dtype
|
||||
)
|
||||
w2_scales = torch.empty((e, k, n // group_size), device=get_device(), dtype=dtype)
|
||||
w1_qzeros = torch.empty(
|
||||
(e, 2 * n // pack_factor, k // group_size), device="cuda", dtype=torch.uint8
|
||||
(e, 2 * n // pack_factor, k // group_size),
|
||||
device=get_device(),
|
||||
dtype=torch.uint8,
|
||||
)
|
||||
w2_qzeros = torch.empty(
|
||||
(e, k // pack_factor, n // group_size), device="cuda", dtype=torch.uint8
|
||||
(e, k // pack_factor, n // group_size), device=get_device(), dtype=torch.uint8
|
||||
)
|
||||
|
||||
for i in range(e * 2):
|
||||
|
||||
Reference in New Issue
Block a user