A high-throughput and memory-efficient inference and serving engine for LLMs
Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git
Synced Nov 15, 01:00 UTC
Avoid direct comparison of floating point numbers (#21002)
Signed-off-by: Max de Bayser <mbayser@br.ibm.com>
Maximilien de Bayser committed
Jul 16, 2025 at 01:12 UTC
6ebf3137905f1329dfd3f4c5ccf3f87c16f88ddc
5 files changed
+44
-7
tests/entrypoints/openai/test_classification.py
+5
-1
@@ -176,4 +176,8 @@ async def test_invocations(server: RemoteOpenAIServer):
176
invocation_output = invocation_response.json()
177
178
assert classification_output.keys() == invocation_output.keys()
179
- assert classification_output["data"] == invocation_output["data"]
179
+ for classification_data, invocation_data in zip(
180
+ classification_output["data"], invocation_output["data"]):
181
+ assert classification_data.keys() == invocation_data.keys()
182
+ assert classification_data["probs"] == pytest.approx(
183
+ invocation_data["probs"], rel=0.01)
tests/entrypoints/openai/test_embedding.py
+15
-2
@@ -14,6 +14,7 @@ from vllm.transformers_utils.tokenizer import get_tokenizer
14
15
from ...models.language.pooling.embed_utils import (
16
run_embedding_correctness_test)
17
+from ...models.utils import check_embeddings_close
18
from ...utils import RemoteOpenAIServer
19
20
MODEL_NAME = "intfloat/multilingual-e5-small"
@@ -321,7 +322,13 @@ async def test_invocations(server: RemoteOpenAIServer,
322
invocation_output = invocation_response.json()
323
324
assert completion_output.keys() == invocation_output.keys()
324
- assert completion_output["data"] == invocation_output["data"]
325
+ for completion_data, invocation_data in zip(completion_output["data"],
326
+ invocation_output["data"]):
327
+ assert completion_data.keys() == invocation_data.keys()
328
+ check_embeddings_close(embeddings_0_lst=[completion_data["embedding"]],
329
+ embeddings_1_lst=[invocation_data["embedding"]],
330
+ name_0="completion",
331
+ name_1="invocation")
332
333
334
@pytest.mark.asyncio
@@ -355,4 +362,10 @@ async def test_invocations_conversation(server: RemoteOpenAIServer):
362
invocation_output = invocation_response.json()
363
364
assert chat_output.keys() == invocation_output.keys()
358
- assert chat_output["data"] == invocation_output["data"]
365
+ for chat_data, invocation_data in zip(chat_output["data"],
366
+ invocation_output["data"]):
367
+ assert chat_data.keys() == invocation_data.keys()
368
+ check_embeddings_close(embeddings_0_lst=[chat_data["embedding"]],
369
+ embeddings_1_lst=[invocation_data["embedding"]],
370
+ name_0="chat",
371
+ name_1="invocation")
tests/entrypoints/openai/test_pooling.py
+14
-2
@@ -281,7 +281,13 @@ async def test_invocations(server: RemoteOpenAIServer):
281
invocation_output = invocation_response.json()
282
283
assert completion_output.keys() == invocation_output.keys()
284
- assert completion_output["data"] == invocation_output["data"]
284
+ for completion_data, invocation_data in zip(completion_output["data"],
285
+ invocation_output["data"]):
286
+ assert completion_data.keys() == invocation_data.keys()
287
+ check_embeddings_close(embeddings_0_lst=completion_data["data"],
288
+ embeddings_1_lst=invocation_data["data"],
289
+ name_0="completion",
290
+ name_1="invocation")
291
292
293
@pytest.mark.asyncio
@@ -314,4 +320,10 @@ async def test_invocations_conversation(server: RemoteOpenAIServer):
320
invocation_output = invocation_response.json()
321
322
assert chat_output.keys() == invocation_output.keys()
317
- assert chat_output["data"] == invocation_output["data"]
323
+ for chat_data, invocation_data in zip(chat_output["data"],
324
+ invocation_output["data"]):
325
+ assert chat_data.keys() == invocation_data.keys()
326
+ check_embeddings_close(embeddings_0_lst=chat_data["data"],
327
+ embeddings_1_lst=invocation_data["data"],
328
+ name_0="chat",
329
+ name_1="invocation")
tests/entrypoints/openai/test_rerank.py
+5
-1
@@ -120,4 +120,8 @@ def test_invocations(server: RemoteOpenAIServer):
120
invocation_output = invocation_response.json()
121
122
assert rerank_output.keys() == invocation_output.keys()
123
- assert rerank_output["results"] == invocation_output["results"]
123
+ for rerank_result, invocations_result in zip(rerank_output["results"],
124
+ invocation_output["results"]):
125
+ assert rerank_result.keys() == invocations_result.keys()
126
+ assert rerank_result["relevance_score"] == pytest.approx(
127
+ invocations_result["relevance_score"], rel=0.01)
tests/entrypoints/openai/test_score.py
+5
-1
@@ -215,4 +215,8 @@ class TestModel:
215
invocation_output = invocation_response.json()
216
217
assert score_output.keys() == invocation_output.keys()
218
- assert score_output["data"] == invocation_output["data"]
218
+ for score_data, invocation_data in zip(score_output["data"],
219
+ invocation_output["data"]):
220
+ assert score_data.keys() == invocation_data.keys()
221
+ assert score_data["score"] == pytest.approx(
222
+ invocation_data["score"], rel=0.01)