main
py 63 lines 1.85 KB
Raw
1 # SPDX-License-Identifier: Apache-2.0
2 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
4 from fastapi import APIRouter, Request
5 from fastapi.responses import JSONResponse
6
7 from vllm.engine.protocol import EngineClient
8 from vllm.entrypoints.serve.tokenize.serving import ServingTokenization
9 from vllm.logger import init_logger
10 from vllm.version import __version__ as VLLM_VERSION
11
12 router = APIRouter()
13
14 logger = init_logger(__name__)
15
16
17 def base(request: Request) -> ServingTokenization:
18 # Reuse the existing instance
19 return tokenization(request)
20
21
22 def tokenization(request: Request) -> ServingTokenization:
23 return request.app.state.serving_tokenization
24
25
26 def engine_client(request: Request) -> EngineClient:
27 return request.app.state.engine_client
28
29
30 @router.get("/load")
31 async def get_server_load_metrics(request: Request):
32 # This endpoint returns the current server load metrics.
33 # It tracks requests utilizing the GPU from the following routes:
34 # - /v1/responses
35 # - /v1/responses/{response_id}
36 # - /v1/responses/{response_id}/cancel
37 # - /v1/messages
38 # - /v1/chat/completions
39 # - /v1/completions
40 # - /v1/audio/transcriptions
41 # - /v1/audio/translations
42 # - /v1/embeddings
43 # - /pooling
44 # - /classify
45 # - /score
46 # - /v1/score
47 # - /rerank
48 # - /v1/rerank
49 # - /v2/rerank
50 return JSONResponse(content={"server_load": request.app.state.server_load_metrics})
51
52
53 @router.get("/version")
54 async def show_version():
55 ver = {"version": VLLM_VERSION}
56 return JSONResponse(content=ver)
57
58
59 @router.get("/kv_event_sources")
60 async def kv_event_sources(raw_request: Request):
61 """KV-event publisher config per DP rank; empty on render-only servers."""
62 client: EngineClient | None = raw_request.app.state.engine_client
63 return client.get_kv_event_sources() if client is not None else {}