Convert formatting to use ruff instead of yapf + isort (#26247)
Signed-off-by: Harry Mellor <19981378+hmellor@users.noreply.github.com>
This commit is contained in:
@@ -46,23 +46,22 @@ def log_stats_enabled_engine_args():
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_async_llm_replace_default_loggers(
|
||||
log_stats_enabled_engine_args):
|
||||
async def test_async_llm_replace_default_loggers(log_stats_enabled_engine_args):
|
||||
"""
|
||||
RayPrometheusStatLogger should replace the default PrometheusStatLogger
|
||||
"""
|
||||
|
||||
engine = AsyncLLM.from_engine_args(log_stats_enabled_engine_args,
|
||||
stat_loggers=[RayPrometheusStatLogger])
|
||||
assert isinstance(engine.logger_manager.prometheus_logger,
|
||||
RayPrometheusStatLogger)
|
||||
engine = AsyncLLM.from_engine_args(
|
||||
log_stats_enabled_engine_args, stat_loggers=[RayPrometheusStatLogger]
|
||||
)
|
||||
assert isinstance(engine.logger_manager.prometheus_logger, RayPrometheusStatLogger)
|
||||
engine.shutdown()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_async_llm_add_to_default_loggers(log_stats_enabled_engine_args):
|
||||
"""
|
||||
It's still possible to use custom stat loggers exclusively by passing
|
||||
It's still possible to use custom stat loggers exclusively by passing
|
||||
disable_log_stats=True in addition to a list of custom stat loggers.
|
||||
"""
|
||||
# Create engine_args with disable_log_stats=True for this test
|
||||
@@ -70,12 +69,14 @@ async def test_async_llm_add_to_default_loggers(log_stats_enabled_engine_args):
|
||||
disabled_log_engine_args.disable_log_stats = True
|
||||
|
||||
# Disable default loggers; pass custom stat logger to the constructor
|
||||
engine = AsyncLLM.from_engine_args(disabled_log_engine_args,
|
||||
stat_loggers=[DummyStatLogger])
|
||||
engine = AsyncLLM.from_engine_args(
|
||||
disabled_log_engine_args, stat_loggers=[DummyStatLogger]
|
||||
)
|
||||
|
||||
assert len(engine.logger_manager.per_engine_logger_dict[0]) == 1
|
||||
assert isinstance(engine.logger_manager.per_engine_logger_dict[0][0],
|
||||
DummyStatLogger)
|
||||
assert isinstance(
|
||||
engine.logger_manager.per_engine_logger_dict[0][0], DummyStatLogger
|
||||
)
|
||||
|
||||
# log_stats is still True, since custom stat loggers are used
|
||||
assert engine.log_stats
|
||||
|
||||
@@ -4,8 +4,13 @@
|
||||
import prometheus_client
|
||||
import pytest
|
||||
|
||||
from vllm.v1.metrics.reader import (Counter, Gauge, Histogram, Vector,
|
||||
get_metrics_snapshot)
|
||||
from vllm.v1.metrics.reader import (
|
||||
Counter,
|
||||
Gauge,
|
||||
Histogram,
|
||||
Vector,
|
||||
get_metrics_snapshot,
|
||||
)
|
||||
|
||||
pytestmark = pytest.mark.cpu_test
|
||||
|
||||
@@ -20,10 +25,12 @@ def test_registry(monkeypatch):
|
||||
|
||||
@pytest.mark.parametrize("num_engines", [1, 4])
|
||||
def test_gauge_metric(test_registry, num_engines):
|
||||
g = prometheus_client.Gauge("vllm:test_gauge",
|
||||
"Test gauge metric",
|
||||
labelnames=["model", "engine_index"],
|
||||
registry=test_registry)
|
||||
g = prometheus_client.Gauge(
|
||||
"vllm:test_gauge",
|
||||
"Test gauge metric",
|
||||
labelnames=["model", "engine_index"],
|
||||
registry=test_registry,
|
||||
)
|
||||
for i in range(num_engines):
|
||||
g.labels(model="foo", engine_index=str(i)).set(98.5)
|
||||
|
||||
@@ -41,10 +48,12 @@ def test_gauge_metric(test_registry, num_engines):
|
||||
|
||||
@pytest.mark.parametrize("num_engines", [1, 4])
|
||||
def test_counter_metric(test_registry, num_engines):
|
||||
c = prometheus_client.Counter("vllm:test_counter",
|
||||
"Test counter metric",
|
||||
labelnames=["model", "engine_index"],
|
||||
registry=test_registry)
|
||||
c = prometheus_client.Counter(
|
||||
"vllm:test_counter",
|
||||
"Test counter metric",
|
||||
labelnames=["model", "engine_index"],
|
||||
registry=test_registry,
|
||||
)
|
||||
for i in range(num_engines):
|
||||
c.labels(model="bar", engine_index=str(i)).inc(19)
|
||||
|
||||
@@ -62,11 +71,13 @@ def test_counter_metric(test_registry, num_engines):
|
||||
|
||||
@pytest.mark.parametrize("num_engines", [1, 4])
|
||||
def test_histogram_metric(test_registry, num_engines):
|
||||
h = prometheus_client.Histogram("vllm:test_histogram",
|
||||
"Test histogram metric",
|
||||
labelnames=["model", "engine_index"],
|
||||
buckets=[10, 20, 30, 40, 50],
|
||||
registry=test_registry)
|
||||
h = prometheus_client.Histogram(
|
||||
"vllm:test_histogram",
|
||||
"Test histogram metric",
|
||||
labelnames=["model", "engine_index"],
|
||||
buckets=[10, 20, 30, 40, 50],
|
||||
registry=test_registry,
|
||||
)
|
||||
for i in range(num_engines):
|
||||
hist = h.labels(model="blaa", engine_index=str(i))
|
||||
hist.observe(42)
|
||||
@@ -97,7 +108,8 @@ def test_vector_metric(test_registry, num_engines):
|
||||
"vllm:spec_decode_num_accepted_tokens_per_pos",
|
||||
"Vector-like counter metric",
|
||||
labelnames=["position", "model", "engine_index"],
|
||||
registry=test_registry)
|
||||
registry=test_registry,
|
||||
)
|
||||
for i in range(num_engines):
|
||||
c.labels(position="0", model="llama", engine_index=str(i)).inc(10)
|
||||
c.labels(position="1", model="llama", engine_index=str(i)).inc(5)
|
||||
|
||||
@@ -8,8 +8,7 @@ import ray
|
||||
from vllm.config import ModelDType
|
||||
from vllm.sampling_params import SamplingParams
|
||||
from vllm.v1.engine.async_llm import AsyncEngineArgs, AsyncLLM
|
||||
from vllm.v1.metrics.ray_wrappers import (RayPrometheusMetric,
|
||||
RayPrometheusStatLogger)
|
||||
from vllm.v1.metrics.ray_wrappers import RayPrometheusMetric, RayPrometheusStatLogger
|
||||
|
||||
|
||||
@pytest.fixture(scope="function", autouse=True)
|
||||
@@ -17,7 +16,7 @@ def use_v1_only(monkeypatch):
|
||||
"""
|
||||
The change relies on V1 APIs, so set VLLM_USE_V1=1.
|
||||
"""
|
||||
monkeypatch.setenv('VLLM_USE_V1', '1')
|
||||
monkeypatch.setenv("VLLM_USE_V1", "1")
|
||||
|
||||
|
||||
MODELS = [
|
||||
@@ -34,24 +33,23 @@ def test_engine_log_metrics_ray(
|
||||
dtype: ModelDType,
|
||||
max_tokens: int,
|
||||
) -> None:
|
||||
""" Simple smoke test, verifying this can be used without exceptions.
|
||||
"""Simple smoke test, verifying this can be used without exceptions.
|
||||
Need to start a Ray cluster in order to verify outputs."""
|
||||
|
||||
@ray.remote(num_gpus=1)
|
||||
class EngineTestActor:
|
||||
|
||||
async def run(self):
|
||||
# Set environment variable inside the Ray actor since environment
|
||||
# variables from pytest fixtures don't propagate to Ray actors
|
||||
os.environ['VLLM_USE_V1'] = '1'
|
||||
os.environ["VLLM_USE_V1"] = "1"
|
||||
|
||||
engine_args = AsyncEngineArgs(model=model,
|
||||
dtype=dtype,
|
||||
disable_log_stats=False,
|
||||
enforce_eager=True)
|
||||
engine_args = AsyncEngineArgs(
|
||||
model=model, dtype=dtype, disable_log_stats=False, enforce_eager=True
|
||||
)
|
||||
|
||||
engine = AsyncLLM.from_engine_args(
|
||||
engine_args, stat_loggers=[RayPrometheusStatLogger])
|
||||
engine_args, stat_loggers=[RayPrometheusStatLogger]
|
||||
)
|
||||
|
||||
for i, prompt in enumerate(example_prompts):
|
||||
results = engine.generate(
|
||||
@@ -73,32 +71,40 @@ def test_sanitized_opentelemetry_name():
|
||||
|
||||
# Only a-z, A-Z, 0-9, _, test valid characters are preserved
|
||||
valid_name = "valid_metric_123_abcDEF"
|
||||
assert RayPrometheusMetric._get_sanitized_opentelemetry_name(
|
||||
valid_name) == valid_name
|
||||
assert (
|
||||
RayPrometheusMetric._get_sanitized_opentelemetry_name(valid_name) == valid_name
|
||||
)
|
||||
|
||||
# Test dash, dot, are replaced
|
||||
name_with_dash_dot = "metric-name.test"
|
||||
expected = "metric_name_test"
|
||||
assert RayPrometheusMetric._get_sanitized_opentelemetry_name(
|
||||
name_with_dash_dot) == expected
|
||||
assert (
|
||||
RayPrometheusMetric._get_sanitized_opentelemetry_name(name_with_dash_dot)
|
||||
== expected
|
||||
)
|
||||
|
||||
# Test colon is replaced with underscore
|
||||
name_with_colon = "metric:name"
|
||||
expected = "metric_name"
|
||||
assert RayPrometheusMetric._get_sanitized_opentelemetry_name(
|
||||
name_with_colon) == expected
|
||||
assert (
|
||||
RayPrometheusMetric._get_sanitized_opentelemetry_name(name_with_colon)
|
||||
== expected
|
||||
)
|
||||
|
||||
# Test multiple invalid characters are replaced
|
||||
name_with_invalid = "metric:name@with#special%chars"
|
||||
expected = "metric_name_with_special_chars"
|
||||
assert RayPrometheusMetric._get_sanitized_opentelemetry_name(
|
||||
name_with_invalid) == expected
|
||||
assert (
|
||||
RayPrometheusMetric._get_sanitized_opentelemetry_name(name_with_invalid)
|
||||
== expected
|
||||
)
|
||||
|
||||
# Test mixed valid and invalid characters
|
||||
complex_name = "vllm:engine_stats/time.latency_ms-99p"
|
||||
expected = "vllm_engine_stats_time_latency_ms_99p"
|
||||
assert RayPrometheusMetric._get_sanitized_opentelemetry_name(
|
||||
complex_name) == expected
|
||||
assert (
|
||||
RayPrometheusMetric._get_sanitized_opentelemetry_name(complex_name) == expected
|
||||
)
|
||||
|
||||
# Test empty string
|
||||
assert RayPrometheusMetric._get_sanitized_opentelemetry_name("") == ""
|
||||
|
||||
@@ -6,16 +6,18 @@ from vllm.v1.metrics.stats import IterationStats
|
||||
def test_iteration_stats_repr():
|
||||
iteration_stats = IterationStats()
|
||||
iteration_stats.iteration_timestamp = 0
|
||||
expected_repr = ("IterationStats("
|
||||
"iteration_timestamp=0, "
|
||||
"num_generation_tokens=0, "
|
||||
"num_prompt_tokens=0, "
|
||||
"num_preempted_reqs=0, "
|
||||
"finished_requests=[], "
|
||||
"max_num_generation_tokens_iter=[], "
|
||||
"n_params_iter=[], "
|
||||
"time_to_first_tokens_iter=[], "
|
||||
"inter_token_latencies_iter=[], "
|
||||
"waiting_lora_adapters={}, "
|
||||
"running_lora_adapters={})")
|
||||
expected_repr = (
|
||||
"IterationStats("
|
||||
"iteration_timestamp=0, "
|
||||
"num_generation_tokens=0, "
|
||||
"num_prompt_tokens=0, "
|
||||
"num_preempted_reqs=0, "
|
||||
"finished_requests=[], "
|
||||
"max_num_generation_tokens_iter=[], "
|
||||
"n_params_iter=[], "
|
||||
"time_to_first_tokens_iter=[], "
|
||||
"inter_token_latencies_iter=[], "
|
||||
"waiting_lora_adapters={}, "
|
||||
"running_lora_adapters={})"
|
||||
)
|
||||
assert repr(iteration_stats) == expected_repr
|
||||
|
||||
Reference in New Issue
Block a user