@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 6ebf313790
Fork 0

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)