| |
| |
|
|
| import weakref |
|
|
| import pytest |
|
|
| from vllm import LLM, PoolingParams |
| from vllm.distributed import cleanup_dist_env_and_memory |
| from vllm.platforms import current_platform |
|
|
| MODEL_NAME = "intfloat/multilingual-e5-small" |
|
|
| PROMPTS = [ |
| "Hello, my name is", |
| "The president of the United States is", |
| "The capital of France is", |
| "The future of AI is", |
| ] |
|
|
| TOKEN_IDS = [ |
| |
| |
| [1000], |
| [1000, 1001], |
| [1000, 1002, 1001], |
| [1000, 1003, 1001, 1002], |
| ] |
|
|
|
|
| @pytest.fixture(scope="module") |
| def llm(): |
| |
| |
| attention_config = None |
| if current_platform.is_rocm(): |
| attention_config = {"backend": "FLEX_ATTENTION"} |
|
|
| |
| |
| llm = LLM( |
| model=MODEL_NAME, |
| max_num_batched_tokens=32768, |
| tensor_parallel_size=1, |
| gpu_memory_utilization=0.75, |
| enforce_eager=True, |
| seed=0, |
| attention_config=attention_config, |
| ) |
|
|
| yield weakref.proxy(llm) |
|
|
| del llm |
|
|
| cleanup_dist_env_and_memory() |
|
|
|
|
| @pytest.mark.skip_global_cleanup |
| def test_multiple_pooling_params(llm: LLM): |
| pooling_params = [ |
| PoolingParams(), |
| PoolingParams(), |
| PoolingParams(), |
| PoolingParams(), |
| ] |
|
|
| |
| outputs = llm.encode(PROMPTS, pooling_params=pooling_params, pooling_task="embed") |
| assert len(PROMPTS) == len(outputs) |
|
|
| |
| with pytest.raises(ValueError): |
| outputs = llm.encode( |
| PROMPTS, pooling_params=pooling_params[:3], pooling_task="embed" |
| ) |
|
|
| |
| single_pooling_params = PoolingParams() |
| outputs = llm.encode( |
| PROMPTS, pooling_params=single_pooling_params, pooling_task="embed" |
| ) |
| assert len(PROMPTS) == len(outputs) |
|
|
| |
| outputs = llm.encode(PROMPTS, pooling_params=None, pooling_task="embed") |
| assert len(PROMPTS) == len(outputs) |
|
|
|
|
| def test_right_side_truncation(llm: LLM): |
| |
| tokenizer = llm.get_tokenizer() |
| assert tokenizer.truncation_side == "right" |
|
|