Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenDAS
vllm_cscc
Commits
c012f7f6
Commit
c012f7f6
authored
Nov 10, 2024
by
zhuwenwen
Browse files
update tests of kernels and basic_correctness
parent
55c5f16f
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
74 additions
and
69 deletions
+74
-69
tests/basic_correctness/test_basic_correctness.py
tests/basic_correctness/test_basic_correctness.py
+2
-1
tests/basic_correctness/test_chunked_prefill.py
tests/basic_correctness/test_chunked_prefill.py
+65
-65
tests/kernels/test_attention.py
tests/kernels/test_attention.py
+2
-1
tests/kernels/test_attention_selector.py
tests/kernels/test_attention_selector.py
+5
-2
No files found.
tests/basic_correctness/test_basic_correctness.py
View file @
c012f7f6
...
@@ -36,7 +36,8 @@ def test_vllm_gc_ed():
...
@@ -36,7 +36,8 @@ def test_vllm_gc_ed():
@
pytest
.
mark
.
parametrize
(
"model"
,
MODELS
)
@
pytest
.
mark
.
parametrize
(
"model"
,
MODELS
)
@
pytest
.
mark
.
parametrize
(
"backend"
,
[
"FLASH_ATTN"
,
"XFORMERS"
,
"FLASHINFER"
])
# @pytest.mark.parametrize("backend", ["FLASH_ATTN", "XFORMERS", "FLASHINFER"])
@
pytest
.
mark
.
parametrize
(
"backend"
,
[
"FLASH_ATTN"
])
@
pytest
.
mark
.
parametrize
(
"dtype"
,
[
"half"
])
@
pytest
.
mark
.
parametrize
(
"dtype"
,
[
"half"
])
@
pytest
.
mark
.
parametrize
(
"max_tokens"
,
[
5
])
@
pytest
.
mark
.
parametrize
(
"max_tokens"
,
[
5
])
@
pytest
.
mark
.
parametrize
(
"enforce_eager"
,
[
False
,
True
])
@
pytest
.
mark
.
parametrize
(
"enforce_eager"
,
[
False
,
True
])
...
...
tests/basic_correctness/test_chunked_prefill.py
View file @
c012f7f6
...
@@ -121,71 +121,71 @@ def test_models_distributed(
...
@@ -121,71 +121,71 @@ def test_models_distributed(
)
)
@
pytest
.
mark
.
parametrize
(
#
@pytest.mark.parametrize(
"kv_cache_dtype,model"
,
#
"kv_cache_dtype,model",
[(
"fp8_e4m3"
,
#
[("fp8_e4m3",
"nm-testing/TinyLlama-1.1B-compressed-tensors-kv-cache-scheme"
)])
#
"nm-testing/TinyLlama-1.1B-compressed-tensors-kv-cache-scheme")])
# Due to low-precision numerical divergence, we only test logprob of 4 tokens
#
# Due to low-precision numerical divergence, we only test logprob of 4 tokens
@
pytest
.
mark
.
parametrize
(
"max_tokens"
,
[
4
])
#
@pytest.mark.parametrize("max_tokens", [4])
@
pytest
.
mark
.
parametrize
(
"chunked_prefill_token_size"
,
[
4
,
16
])
#
@pytest.mark.parametrize("chunked_prefill_token_size", [4, 16])
@
pytest
.
mark
.
parametrize
(
"enforce_eager"
,
[
False
,
True
])
#
@pytest.mark.parametrize("enforce_eager", [False, True])
# NOTE: Increasing this in this suite will fail CI because we currently cannot
#
# NOTE: Increasing this in this suite will fail CI because we currently cannot
# reset distributed env properly. Use a value > 1 just when you test.
#
# reset distributed env properly. Use a value > 1 just when you test.
@
pytest
.
mark
.
parametrize
(
"tensor_parallel_size"
,
[
1
])
#
@pytest.mark.parametrize("tensor_parallel_size", [1])
# Due to low-precision numerical divergence, this test is too sensitive to
#
# Due to low-precision numerical divergence, this test is too sensitive to
# the async postprocessor
#
# the async postprocessor
@
pytest
.
mark
.
parametrize
(
"disable_async_output_proc"
,
[
True
])
#
@pytest.mark.parametrize("disable_async_output_proc", [True])
def
test_models_with_fp8_kv_cache
(
#
def test_models_with_fp8_kv_cache(
vllm_runner
,
#
vllm_runner,
example_prompts
,
#
example_prompts,
kv_cache_dtype
:
str
,
#
kv_cache_dtype: str,
model
:
str
,
#
model: str,
max_tokens
:
int
,
#
max_tokens: int,
chunked_prefill_token_size
:
int
,
#
chunked_prefill_token_size: int,
enforce_eager
:
bool
,
#
enforce_eager: bool,
tensor_parallel_size
:
int
,
#
tensor_parallel_size: int,
disable_async_output_proc
:
bool
,
#
disable_async_output_proc: bool,
)
->
None
:
#
) -> None:
"""
#
"""
Check output logprobs match between no_chunked_prefill and chunked_prefill
#
Check output logprobs match between no_chunked_prefill and chunked_prefill
with fp8 kv cache. General fp8 kv-cache tests are covered in test_fp8.py,
#
with fp8 kv cache. General fp8 kv-cache tests are covered in test_fp8.py,
so here we only check chunked prefill.
#
so here we only check chunked prefill.
"""
#
"""
NUM_LOG_PROBS
=
8
#
NUM_LOG_PROBS = 8
max_num_seqs
=
chunked_prefill_token_size
#
max_num_seqs = chunked_prefill_token_size
max_num_batched_tokens
=
chunked_prefill_token_size
#
max_num_batched_tokens = chunked_prefill_token_size
with
vllm_runner
(
#
with vllm_runner(
model
,
#
model,
tensor_parallel_size
=
tensor_parallel_size
,
#
tensor_parallel_size=tensor_parallel_size,
enforce_eager
=
enforce_eager
,
#
enforce_eager=enforce_eager,
max_num_seqs
=
max_num_seqs
,
#
max_num_seqs=max_num_seqs,
kv_cache_dtype
=
kv_cache_dtype
,
#
kv_cache_dtype=kv_cache_dtype,
disable_async_output_proc
=
disable_async_output_proc
,
#
disable_async_output_proc=disable_async_output_proc,
)
as
vllm_model
:
#
) as vllm_model:
no_chunked_prefill_outputs
=
vllm_model
.
generate_greedy_logprobs
(
#
no_chunked_prefill_outputs = vllm_model.generate_greedy_logprobs(
example_prompts
,
max_tokens
,
NUM_LOG_PROBS
)
#
example_prompts, max_tokens, NUM_LOG_PROBS)
with
vllm_runner
(
#
with vllm_runner(
model
,
#
model,
max_num_batched_tokens
=
max_num_batched_tokens
,
#
max_num_batched_tokens=max_num_batched_tokens,
enable_chunked_prefill
=
True
,
#
enable_chunked_prefill=True,
tensor_parallel_size
=
tensor_parallel_size
,
#
tensor_parallel_size=tensor_parallel_size,
enforce_eager
=
enforce_eager
,
#
enforce_eager=enforce_eager,
max_num_seqs
=
max_num_seqs
,
#
max_num_seqs=max_num_seqs,
kv_cache_dtype
=
kv_cache_dtype
,
#
kv_cache_dtype=kv_cache_dtype,
disable_async_output_proc
=
disable_async_output_proc
,
#
disable_async_output_proc=disable_async_output_proc,
)
as
vllm_model
:
#
) as vllm_model:
chunked_prefill_outputs
=
vllm_model
.
generate_greedy_logprobs
(
#
chunked_prefill_outputs = vllm_model.generate_greedy_logprobs(
example_prompts
,
max_tokens
,
NUM_LOG_PROBS
)
#
example_prompts, max_tokens, NUM_LOG_PROBS)
check_logprobs_close
(
#
check_logprobs_close(
outputs_0_lst
=
no_chunked_prefill_outputs
,
#
outputs_0_lst=no_chunked_prefill_outputs,
outputs_1_lst
=
chunked_prefill_outputs
,
#
outputs_1_lst=chunked_prefill_outputs,
name_0
=
"no_chunked_prefill"
,
#
name_0="no_chunked_prefill",
name_1
=
"chunked_prefill"
,
#
name_1="chunked_prefill",
)
#
)
@
pytest
.
mark
.
parametrize
(
"max_tokens"
,
[
16
])
@
pytest
.
mark
.
parametrize
(
"max_tokens"
,
[
16
])
...
...
tests/kernels/test_attention.py
View file @
c012f7f6
...
@@ -115,7 +115,8 @@ def ref_single_query_cached_kv_attention(
...
@@ -115,7 +115,8 @@ def ref_single_query_cached_kv_attention(
@
pytest
.
mark
.
parametrize
(
@
pytest
.
mark
.
parametrize
(
"version"
,
[
"v1"
,
"v2"
]
if
not
is_hip
()
else
[
"v1"
,
"v2"
,
"rocm"
])
# "version", ["v1", "v2"] if not is_hip() else ["v1", "v2", "rocm"])
"version"
,
[
"v1"
,
"v2"
])
@
pytest
.
mark
.
parametrize
(
"num_seqs"
,
NUM_GEN_SEQS
)
@
pytest
.
mark
.
parametrize
(
"num_seqs"
,
NUM_GEN_SEQS
)
@
pytest
.
mark
.
parametrize
(
"num_heads"
,
NUM_HEADS
)
@
pytest
.
mark
.
parametrize
(
"num_heads"
,
NUM_HEADS
)
@
pytest
.
mark
.
parametrize
(
"head_size"
,
HEAD_SIZES
)
@
pytest
.
mark
.
parametrize
(
"head_size"
,
HEAD_SIZES
)
...
...
tests/kernels/test_attention_selector.py
View file @
c012f7f6
...
@@ -8,9 +8,12 @@ from vllm.attention.selector import which_attn_to_use
...
@@ -8,9 +8,12 @@ from vllm.attention.selector import which_attn_to_use
from
vllm.utils
import
STR_FLASH_ATTN_VAL
,
STR_INVALID_VAL
from
vllm.utils
import
STR_FLASH_ATTN_VAL
,
STR_INVALID_VAL
# @pytest.mark.parametrize(
# "name", ["TORCH_SDPA", "ROCM_FLASH", "XFORMERS", "FLASHINFER", "OPENVINO"])
# @pytest.mark.parametrize("device", ["cpu", "openvino", "hip", "cuda"])
@
pytest
.
mark
.
parametrize
(
@
pytest
.
mark
.
parametrize
(
"name"
,
[
"TORCH_SDPA"
,
"ROCM_FLASH"
,
"XFORMERS"
,
"FLASHINFER"
,
"OPENVINO"
])
"name"
,
[
"TORCH_SDPA"
,
"ROCM_FLASH"
,
"XFORMERS"
,
"FLASHINFER"
])
@
pytest
.
mark
.
parametrize
(
"device"
,
[
"cpu"
,
"openvino"
,
"hip"
,
"cuda"
])
@
pytest
.
mark
.
parametrize
(
"device"
,
[
"cpu"
,
"hip"
,
"cuda"
])
def
test_env
(
name
:
str
,
device
:
str
,
monkeypatch
):
def
test_env
(
name
:
str
,
device
:
str
,
monkeypatch
):
"""Test that the attention selector can be set via environment variable.
"""Test that the attention selector can be set via environment variable.
Note that we do not test FlashAttn because it is the default backend.
Note that we do not test FlashAttn because it is the default backend.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment