main
json 1,693 lines 45.6 KB
Raw
1 {
2 "annotations": {
3 "list": [
4 {
5 "builtIn": 1,
6 "datasource": {
7 "type": "grafana",
8 "uid": "-- Grafana --"
9 },
10 "enable": true,
11 "hide": true,
12 "iconColor": "rgba(0, 211, 255, 1)",
13 "name": "Annotations & Alerts",
14 "target": {
15 "limit": 100,
16 "matchAny": false,
17 "tags": [],
18 "type": "dashboard"
19 },
20 "type": "dashboard"
21 }
22 ]
23 },
24 "description": "Monitoring vLLM Inference Server",
25 "editable": true,
26 "fiscalYearStartMonth": 0,
27 "graphTooltip": 0,
28 "id": 1,
29 "links": [],
30 "liveNow": false,
31 "panels": [
32 {
33 "datasource": {
34 "type": "prometheus",
35 "uid": "${DS_PROMETHEUS}"
36 },
37 "description": "End to end request latency measured in seconds.",
38 "fieldConfig": {
39 "defaults": {
40 "color": {
41 "mode": "palette-classic"
42 },
43 "custom": {
44 "axisBorderShow": false,
45 "axisCenteredZero": false,
46 "axisColorMode": "text",
47 "axisLabel": "",
48 "axisPlacement": "auto",
49 "barAlignment": 0,
50 "barWidthFactor": 0.6,
51 "drawStyle": "line",
52 "fillOpacity": 0,
53 "gradientMode": "none",
54 "hideFrom": {
55 "legend": false,
56 "tooltip": false,
57 "viz": false
58 },
59 "insertNulls": false,
60 "lineInterpolation": "linear",
61 "lineWidth": 1,
62 "pointSize": 5,
63 "scaleDistribution": {
64 "type": "linear"
65 },
66 "showPoints": "auto",
67 "spanNulls": false,
68 "stacking": {
69 "group": "A",
70 "mode": "none"
71 },
72 "thresholdsStyle": {
73 "mode": "off"
74 }
75 },
76 "mappings": [],
77 "thresholds": {
78 "mode": "absolute",
79 "steps": [
80 {
81 "color": "green",
82 "value": null
83 },
84 {
85 "color": "red",
86 "value": 80
87 }
88 ]
89 },
90 "unit": "s"
91 },
92 "overrides": []
93 },
94 "gridPos": {
95 "h": 8,
96 "w": 12,
97 "x": 0,
98 "y": 0
99 },
100 "id": 9,
101 "options": {
102 "legend": {
103 "calcs": [],
104 "displayMode": "list",
105 "placement": "bottom",
106 "showLegend": true
107 },
108 "tooltip": {
109 "mode": "single",
110 "sort": "none"
111 }
112 },
113 "targets": [
114 {
115 "datasource": {
116 "type": "prometheus",
117 "uid": "${DS_PROMETHEUS}"
118 },
119 "disableTextWrap": false,
120 "editorMode": "builder",
121 "expr": "histogram_quantile(0.99, sum by(le) (rate(vllm:e2e_request_latency_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
122 "fullMetaSearch": false,
123 "includeNullMetadata": false,
124 "instant": false,
125 "legendFormat": "P99",
126 "range": true,
127 "refId": "A",
128 "useBackend": false
129 },
130 {
131 "datasource": {
132 "type": "prometheus",
133 "uid": "${DS_PROMETHEUS}"
134 },
135 "disableTextWrap": false,
136 "editorMode": "builder",
137 "expr": "histogram_quantile(0.95, sum by(le) (rate(vllm:e2e_request_latency_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
138 "fullMetaSearch": false,
139 "hide": false,
140 "includeNullMetadata": false,
141 "instant": false,
142 "legendFormat": "P95",
143 "range": true,
144 "refId": "B",
145 "useBackend": false
146 },
147 {
148 "datasource": {
149 "type": "prometheus",
150 "uid": "${DS_PROMETHEUS}"
151 },
152 "disableTextWrap": false,
153 "editorMode": "builder",
154 "expr": "histogram_quantile(0.9, sum by(le) (rate(vllm:e2e_request_latency_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
155 "fullMetaSearch": false,
156 "hide": false,
157 "includeNullMetadata": false,
158 "instant": false,
159 "legendFormat": "P90",
160 "range": true,
161 "refId": "C",
162 "useBackend": false
163 },
164 {
165 "datasource": {
166 "type": "prometheus",
167 "uid": "${DS_PROMETHEUS}"
168 },
169 "disableTextWrap": false,
170 "editorMode": "builder",
171 "expr": "histogram_quantile(0.5, sum by(le) (rate(vllm:e2e_request_latency_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
172 "fullMetaSearch": false,
173 "hide": false,
174 "includeNullMetadata": false,
175 "instant": false,
176 "legendFormat": "P50",
177 "range": true,
178 "refId": "D",
179 "useBackend": false
180 },
181 {
182 "datasource": {
183 "type": "prometheus",
184 "uid": "${DS_PROMETHEUS}"
185 },
186 "editorMode": "code",
187 "expr": "rate(vllm:e2e_request_latency_seconds_sum{model_name=\"$model_name\"}[$__rate_interval])\n/\nrate(vllm:e2e_request_latency_seconds_count{model_name=\"$model_name\"}[$__rate_interval])",
188 "hide": false,
189 "instant": false,
190 "legendFormat": "Average",
191 "range": true,
192 "refId": "E"
193 }
194 ],
195 "title": "E2E Request Latency",
196 "type": "timeseries"
197 },
198 {
199 "datasource": {
200 "type": "prometheus",
201 "uid": "${DS_PROMETHEUS}"
202 },
203 "description": "Number of tokens processed per second",
204 "fieldConfig": {
205 "defaults": {
206 "color": {
207 "mode": "palette-classic"
208 },
209 "custom": {
210 "axisBorderShow": false,
211 "axisCenteredZero": false,
212 "axisColorMode": "text",
213 "axisLabel": "",
214 "axisPlacement": "auto",
215 "barAlignment": 0,
216 "barWidthFactor": 0.6,
217 "drawStyle": "line",
218 "fillOpacity": 0,
219 "gradientMode": "none",
220 "hideFrom": {
221 "legend": false,
222 "tooltip": false,
223 "viz": false
224 },
225 "insertNulls": false,
226 "lineInterpolation": "linear",
227 "lineWidth": 1,
228 "pointSize": 5,
229 "scaleDistribution": {
230 "type": "linear"
231 },
232 "showPoints": "auto",
233 "spanNulls": false,
234 "stacking": {
235 "group": "A",
236 "mode": "none"
237 },
238 "thresholdsStyle": {
239 "mode": "off"
240 }
241 },
242 "mappings": [],
243 "thresholds": {
244 "mode": "absolute",
245 "steps": [
246 {
247 "color": "green",
248 "value": null
249 },
250 {
251 "color": "red",
252 "value": 80
253 }
254 ]
255 }
256 },
257 "overrides": []
258 },
259 "gridPos": {
260 "h": 8,
261 "w": 12,
262 "x": 12,
263 "y": 0
264 },
265 "id": 8,
266 "options": {
267 "legend": {
268 "calcs": [],
269 "displayMode": "list",
270 "placement": "bottom",
271 "showLegend": true
272 },
273 "tooltip": {
274 "mode": "single",
275 "sort": "none"
276 }
277 },
278 "targets": [
279 {
280 "datasource": {
281 "type": "prometheus",
282 "uid": "${DS_PROMETHEUS}"
283 },
284 "disableTextWrap": false,
285 "editorMode": "builder",
286 "expr": "rate(vllm:prompt_tokens_total{model_name=\"$model_name\"}[$__rate_interval])",
287 "fullMetaSearch": false,
288 "includeNullMetadata": false,
289 "instant": false,
290 "legendFormat": "Prompt Tokens/Sec",
291 "range": true,
292 "refId": "A",
293 "useBackend": false
294 },
295 {
296 "datasource": {
297 "type": "prometheus",
298 "uid": "${DS_PROMETHEUS}"
299 },
300 "disableTextWrap": false,
301 "editorMode": "builder",
302 "expr": "rate(vllm:generation_tokens_total{model_name=\"$model_name\"}[$__rate_interval])",
303 "fullMetaSearch": false,
304 "hide": false,
305 "includeNullMetadata": false,
306 "instant": false,
307 "legendFormat": "Generation Tokens/Sec",
308 "range": true,
309 "refId": "B",
310 "useBackend": false
311 }
312 ],
313 "title": "Token Throughput",
314 "type": "timeseries"
315 },
316 {
317 "datasource": {
318 "type": "prometheus",
319 "uid": "${DS_PROMETHEUS}"
320 },
321 "description": "Inter-token latency in seconds, measured between consecutive streamed outputs. It approximates TPOT when each output contains one token, but differs from request-level TPOT under speculative decoding or varying aggregation weights.",
322 "fieldConfig": {
323 "defaults": {
324 "color": {
325 "mode": "palette-classic"
326 },
327 "custom": {
328 "axisBorderShow": false,
329 "axisCenteredZero": false,
330 "axisColorMode": "text",
331 "axisLabel": "",
332 "axisPlacement": "auto",
333 "barAlignment": 0,
334 "barWidthFactor": 0.6,
335 "drawStyle": "line",
336 "fillOpacity": 0,
337 "gradientMode": "none",
338 "hideFrom": {
339 "legend": false,
340 "tooltip": false,
341 "viz": false
342 },
343 "insertNulls": false,
344 "lineInterpolation": "linear",
345 "lineWidth": 1,
346 "pointSize": 5,
347 "scaleDistribution": {
348 "type": "linear"
349 },
350 "showPoints": "auto",
351 "spanNulls": false,
352 "stacking": {
353 "group": "A",
354 "mode": "none"
355 },
356 "thresholdsStyle": {
357 "mode": "off"
358 }
359 },
360 "mappings": [],
361 "thresholds": {
362 "mode": "absolute",
363 "steps": [
364 {
365 "color": "green",
366 "value": null
367 },
368 {
369 "color": "red",
370 "value": 80
371 }
372 ]
373 },
374 "unit": "s"
375 },
376 "overrides": []
377 },
378 "gridPos": {
379 "h": 8,
380 "w": 12,
381 "x": 0,
382 "y": 8
383 },
384 "id": 10,
385 "options": {
386 "legend": {
387 "calcs": [],
388 "displayMode": "list",
389 "placement": "bottom",
390 "showLegend": true
391 },
392 "tooltip": {
393 "mode": "single",
394 "sort": "none"
395 }
396 },
397 "targets": [
398 {
399 "datasource": {
400 "type": "prometheus",
401 "uid": "${DS_PROMETHEUS}"
402 },
403 "disableTextWrap": false,
404 "editorMode": "builder",
405 "expr": "histogram_quantile(0.99, sum by(le) (rate(vllm:inter_token_latency_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
406 "fullMetaSearch": false,
407 "includeNullMetadata": false,
408 "instant": false,
409 "legendFormat": "P99",
410 "range": true,
411 "refId": "A",
412 "useBackend": false
413 },
414 {
415 "datasource": {
416 "type": "prometheus",
417 "uid": "${DS_PROMETHEUS}"
418 },
419 "disableTextWrap": false,
420 "editorMode": "builder",
421 "expr": "histogram_quantile(0.95, sum by(le) (rate(vllm:inter_token_latency_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
422 "fullMetaSearch": false,
423 "hide": false,
424 "includeNullMetadata": false,
425 "instant": false,
426 "legendFormat": "P95",
427 "range": true,
428 "refId": "B",
429 "useBackend": false
430 },
431 {
432 "datasource": {
433 "type": "prometheus",
434 "uid": "${DS_PROMETHEUS}"
435 },
436 "disableTextWrap": false,
437 "editorMode": "builder",
438 "expr": "histogram_quantile(0.9, sum by(le) (rate(vllm:inter_token_latency_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
439 "fullMetaSearch": false,
440 "hide": false,
441 "includeNullMetadata": false,
442 "instant": false,
443 "legendFormat": "P90",
444 "range": true,
445 "refId": "C",
446 "useBackend": false
447 },
448 {
449 "datasource": {
450 "type": "prometheus",
451 "uid": "${DS_PROMETHEUS}"
452 },
453 "disableTextWrap": false,
454 "editorMode": "builder",
455 "expr": "histogram_quantile(0.5, sum by(le) (rate(vllm:inter_token_latency_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
456 "fullMetaSearch": false,
457 "hide": false,
458 "includeNullMetadata": false,
459 "instant": false,
460 "legendFormat": "P50",
461 "range": true,
462 "refId": "D",
463 "useBackend": false
464 },
465 {
466 "datasource": {
467 "type": "prometheus",
468 "uid": "${DS_PROMETHEUS}"
469 },
470 "editorMode": "code",
471 "expr": "rate(vllm:inter_token_latency_seconds_sum{model_name=\"$model_name\"}[$__rate_interval])\n/\nrate(vllm:inter_token_latency_seconds_count{model_name=\"$model_name\"}[$__rate_interval])",
472 "hide": false,
473 "instant": false,
474 "legendFormat": "Mean",
475 "range": true,
476 "refId": "E"
477 }
478 ],
479 "title": "Inter Token Latency",
480 "type": "timeseries"
481 },
482 {
483 "datasource": {
484 "type": "prometheus",
485 "uid": "${DS_PROMETHEUS}"
486 },
487 "description": "Per-request Time Per Output Token (TPOT) in seconds, computed as (end-to-end latency - TTFT) divided by the number of output tokens minus one. Requests with no more than one output token are recorded as zero; vllm bench serve excludes these requests from its TPOT statistics.",
488 "fieldConfig": {
489 "defaults": {
490 "color": {
491 "mode": "palette-classic"
492 },
493 "custom": {
494 "axisBorderShow": false,
495 "axisCenteredZero": false,
496 "axisColorMode": "text",
497 "axisLabel": "",
498 "axisPlacement": "auto",
499 "barAlignment": 0,
500 "barWidthFactor": 0.6,
501 "drawStyle": "line",
502 "fillOpacity": 0,
503 "gradientMode": "none",
504 "hideFrom": {
505 "legend": false,
506 "tooltip": false,
507 "viz": false
508 },
509 "insertNulls": false,
510 "lineInterpolation": "linear",
511 "lineWidth": 1,
512 "pointSize": 5,
513 "scaleDistribution": {
514 "type": "linear"
515 },
516 "showPoints": "auto",
517 "spanNulls": false,
518 "stacking": {
519 "group": "A",
520 "mode": "none"
521 },
522 "thresholdsStyle": {
523 "mode": "off"
524 }
525 },
526 "mappings": [],
527 "thresholds": {
528 "mode": "absolute",
529 "steps": [
530 {
531 "color": "green",
532 "value": null
533 },
534 {
535 "color": "red",
536 "value": 80
537 }
538 ]
539 },
540 "unit": "s"
541 },
542 "overrides": []
543 },
544 "gridPos": {
545 "h": 8,
546 "w": 12,
547 "x": 12,
548 "y": 48
549 },
550 "id": 17,
551 "options": {
552 "legend": {
553 "calcs": [],
554 "displayMode": "list",
555 "placement": "bottom",
556 "showLegend": true
557 },
558 "tooltip": {
559 "mode": "single",
560 "sort": "none"
561 }
562 },
563 "targets": [
564 {
565 "datasource": {
566 "type": "prometheus",
567 "uid": "${DS_PROMETHEUS}"
568 },
569 "disableTextWrap": false,
570 "editorMode": "builder",
571 "expr": "histogram_quantile(0.99, sum by(le) (rate(vllm:request_time_per_output_token_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
572 "fullMetaSearch": false,
573 "includeNullMetadata": false,
574 "instant": false,
575 "legendFormat": "P99",
576 "range": true,
577 "refId": "A",
578 "useBackend": false
579 },
580 {
581 "datasource": {
582 "type": "prometheus",
583 "uid": "${DS_PROMETHEUS}"
584 },
585 "disableTextWrap": false,
586 "editorMode": "builder",
587 "expr": "histogram_quantile(0.95, sum by(le) (rate(vllm:request_time_per_output_token_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
588 "fullMetaSearch": false,
589 "hide": false,
590 "includeNullMetadata": false,
591 "instant": false,
592 "legendFormat": "P95",
593 "range": true,
594 "refId": "B",
595 "useBackend": false
596 },
597 {
598 "datasource": {
599 "type": "prometheus",
600 "uid": "${DS_PROMETHEUS}"
601 },
602 "disableTextWrap": false,
603 "editorMode": "builder",
604 "expr": "histogram_quantile(0.9, sum by(le) (rate(vllm:request_time_per_output_token_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
605 "fullMetaSearch": false,
606 "hide": false,
607 "includeNullMetadata": false,
608 "instant": false,
609 "legendFormat": "P90",
610 "range": true,
611 "refId": "C",
612 "useBackend": false
613 },
614 {
615 "datasource": {
616 "type": "prometheus",
617 "uid": "${DS_PROMETHEUS}"
618 },
619 "disableTextWrap": false,
620 "editorMode": "builder",
621 "expr": "histogram_quantile(0.5, sum by(le) (rate(vllm:request_time_per_output_token_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
622 "fullMetaSearch": false,
623 "hide": false,
624 "includeNullMetadata": false,
625 "instant": false,
626 "legendFormat": "P50",
627 "range": true,
628 "refId": "D",
629 "useBackend": false
630 },
631 {
632 "datasource": {
633 "type": "prometheus",
634 "uid": "${DS_PROMETHEUS}"
635 },
636 "editorMode": "code",
637 "expr": "rate(vllm:request_time_per_output_token_seconds_sum{model_name=\"$model_name\"}[$__rate_interval])\n/\nrate(vllm:request_time_per_output_token_seconds_count{model_name=\"$model_name\"}[$__rate_interval])",
638 "hide": false,
639 "instant": false,
640 "legendFormat": "Mean",
641 "range": true,
642 "refId": "E"
643 }
644 ],
645 "title": "Time Per Output Token (TPOT)",
646 "type": "timeseries"
647 },
648 {
649 "datasource": {
650 "type": "prometheus",
651 "uid": "${DS_PROMETHEUS}"
652 },
653 "description": "Number of requests in RUNNING, WAITING, and SWAPPED state",
654 "fieldConfig": {
655 "defaults": {
656 "color": {
657 "mode": "palette-classic"
658 },
659 "custom": {
660 "axisBorderShow": false,
661 "axisCenteredZero": false,
662 "axisColorMode": "text",
663 "axisLabel": "",
664 "axisPlacement": "auto",
665 "barAlignment": 0,
666 "barWidthFactor": 0.6,
667 "drawStyle": "line",
668 "fillOpacity": 0,
669 "gradientMode": "none",
670 "hideFrom": {
671 "legend": false,
672 "tooltip": false,
673 "viz": false
674 },
675 "insertNulls": false,
676 "lineInterpolation": "linear",
677 "lineWidth": 1,
678 "pointSize": 5,
679 "scaleDistribution": {
680 "type": "linear"
681 },
682 "showPoints": "auto",
683 "spanNulls": false,
684 "stacking": {
685 "group": "A",
686 "mode": "none"
687 },
688 "thresholdsStyle": {
689 "mode": "off"
690 }
691 },
692 "mappings": [],
693 "thresholds": {
694 "mode": "absolute",
695 "steps": [
696 {
697 "color": "green",
698 "value": null
699 },
700 {
701 "color": "red",
702 "value": 80
703 }
704 ]
705 },
706 "unit": "none"
707 },
708 "overrides": []
709 },
710 "gridPos": {
711 "h": 8,
712 "w": 12,
713 "x": 12,
714 "y": 8
715 },
716 "id": 3,
717 "options": {
718 "legend": {
719 "calcs": [],
720 "displayMode": "list",
721 "placement": "bottom",
722 "showLegend": true
723 },
724 "tooltip": {
725 "mode": "single",
726 "sort": "none"
727 }
728 },
729 "targets": [
730 {
731 "datasource": {
732 "type": "prometheus",
733 "uid": "${DS_PROMETHEUS}"
734 },
735 "disableTextWrap": false,
736 "editorMode": "builder",
737 "expr": "vllm:num_requests_running{model_name=\"$model_name\"}",
738 "fullMetaSearch": false,
739 "includeNullMetadata": true,
740 "instant": false,
741 "legendFormat": "Num Running",
742 "range": true,
743 "refId": "A",
744 "useBackend": false
745 },
746 {
747 "datasource": {
748 "type": "prometheus",
749 "uid": "${DS_PROMETHEUS}"
750 },
751 "disableTextWrap": false,
752 "editorMode": "builder",
753 "expr": "vllm:num_requests_waiting{model_name=\"$model_name\"}",
754 "fullMetaSearch": false,
755 "hide": false,
756 "includeNullMetadata": true,
757 "instant": false,
758 "legendFormat": "Num Waiting",
759 "range": true,
760 "refId": "C",
761 "useBackend": false
762 }
763 ],
764 "title": "Scheduler State",
765 "type": "timeseries"
766 },
767 {
768 "datasource": {
769 "type": "prometheus",
770 "uid": "${DS_PROMETHEUS}"
771 },
772 "description": "P50, P90, P95, and P99 TTFT latency in seconds.",
773 "fieldConfig": {
774 "defaults": {
775 "color": {
776 "mode": "palette-classic"
777 },
778 "custom": {
779 "axisBorderShow": false,
780 "axisCenteredZero": false,
781 "axisColorMode": "text",
782 "axisLabel": "",
783 "axisPlacement": "auto",
784 "barAlignment": 0,
785 "barWidthFactor": 0.6,
786 "drawStyle": "line",
787 "fillOpacity": 0,
788 "gradientMode": "none",
789 "hideFrom": {
790 "legend": false,
791 "tooltip": false,
792 "viz": false
793 },
794 "insertNulls": false,
795 "lineInterpolation": "linear",
796 "lineWidth": 1,
797 "pointSize": 5,
798 "scaleDistribution": {
799 "type": "linear"
800 },
801 "showPoints": "auto",
802 "spanNulls": false,
803 "stacking": {
804 "group": "A",
805 "mode": "none"
806 },
807 "thresholdsStyle": {
808 "mode": "off"
809 }
810 },
811 "mappings": [],
812 "thresholds": {
813 "mode": "absolute",
814 "steps": [
815 {
816 "color": "green",
817 "value": null
818 },
819 {
820 "color": "red",
821 "value": 80
822 }
823 ]
824 },
825 "unit": "s"
826 },
827 "overrides": []
828 },
829 "gridPos": {
830 "h": 8,
831 "w": 12,
832 "x": 0,
833 "y": 16
834 },
835 "id": 5,
836 "options": {
837 "legend": {
838 "calcs": [],
839 "displayMode": "list",
840 "placement": "bottom",
841 "showLegend": true
842 },
843 "tooltip": {
844 "mode": "single",
845 "sort": "none"
846 }
847 },
848 "targets": [
849 {
850 "datasource": {
851 "type": "prometheus",
852 "uid": "${DS_PROMETHEUS}"
853 },
854 "disableTextWrap": false,
855 "editorMode": "builder",
856 "expr": "histogram_quantile(0.99, sum by(le) (rate(vllm:time_to_first_token_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
857 "fullMetaSearch": false,
858 "hide": false,
859 "includeNullMetadata": false,
860 "instant": false,
861 "legendFormat": "P99",
862 "range": true,
863 "refId": "A",
864 "useBackend": false
865 },
866 {
867 "datasource": {
868 "type": "prometheus",
869 "uid": "${DS_PROMETHEUS}"
870 },
871 "disableTextWrap": false,
872 "editorMode": "builder",
873 "expr": "histogram_quantile(0.95, sum by(le) (rate(vllm:time_to_first_token_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
874 "fullMetaSearch": false,
875 "includeNullMetadata": false,
876 "instant": false,
877 "legendFormat": "P95",
878 "range": true,
879 "refId": "B",
880 "useBackend": false
881 },
882 {
883 "datasource": {
884 "type": "prometheus",
885 "uid": "${DS_PROMETHEUS}"
886 },
887 "disableTextWrap": false,
888 "editorMode": "builder",
889 "expr": "histogram_quantile(0.9, sum by(le) (rate(vllm:time_to_first_token_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
890 "fullMetaSearch": false,
891 "hide": false,
892 "includeNullMetadata": false,
893 "instant": false,
894 "legendFormat": "P90",
895 "range": true,
896 "refId": "C",
897 "useBackend": false
898 },
899 {
900 "datasource": {
901 "type": "prometheus",
902 "uid": "${DS_PROMETHEUS}"
903 },
904 "disableTextWrap": false,
905 "editorMode": "builder",
906 "expr": "histogram_quantile(0.5, sum by(le) (rate(vllm:time_to_first_token_seconds_bucket{model_name=\"$model_name\"}[$__rate_interval])))",
907 "fullMetaSearch": false,
908 "hide": false,
909 "includeNullMetadata": false,
910 "instant": false,
911 "legendFormat": "P50",
912 "range": true,
913 "refId": "D",
914 "useBackend": false
915 },
916 {
917 "datasource": {
918 "type": "prometheus",
919 "uid": "${DS_PROMETHEUS}"
920 },
921 "editorMode": "code",
922 "expr": "rate(vllm:time_to_first_token_seconds_sum{model_name=\"$model_name\"}[$__rate_interval])\n/\nrate(vllm:time_to_first_token_seconds_count{model_name=\"$model_name\"}[$__rate_interval])",
923 "hide": false,
924 "instant": false,
925 "legendFormat": "Average",
926 "range": true,
927 "refId": "E"
928 }
929 ],
930 "title": "Time To First Token Latency",
931 "type": "timeseries"
932 },
933 {
934 "datasource": {
935 "type": "prometheus",
936 "uid": "${DS_PROMETHEUS}"
937 },
938 "description": "Percentage of used cache blocks by vLLM.",
939 "fieldConfig": {
940 "defaults": {
941 "color": {
942 "mode": "palette-classic"
943 },
944 "custom": {
945 "axisBorderShow": false,
946 "axisCenteredZero": false,
947 "axisColorMode": "text",
948 "axisLabel": "",
949 "axisPlacement": "auto",
950 "barAlignment": 0,
951 "barWidthFactor": 0.6,
952 "drawStyle": "line",
953 "fillOpacity": 0,
954 "gradientMode": "none",
955 "hideFrom": {
956 "legend": false,
957 "tooltip": false,
958 "viz": false
959 },
960 "insertNulls": false,
961 "lineInterpolation": "linear",
962 "lineWidth": 1,
963 "pointSize": 5,
964 "scaleDistribution": {
965 "type": "linear"
966 },
967 "showPoints": "auto",
968 "spanNulls": false,
969 "stacking": {
970 "group": "A",
971 "mode": "none"
972 },
973 "thresholdsStyle": {
974 "mode": "off"
975 }
976 },
977 "mappings": [],
978 "thresholds": {
979 "mode": "absolute",
980 "steps": [
981 {
982 "color": "green",
983 "value": null
984 },
985 {
986 "color": "red",
987 "value": 80
988 }
989 ]
990 },
991 "unit": "percentunit"
992 },
993 "overrides": []
994 },
995 "gridPos": {
996 "h": 8,
997 "w": 12,
998 "x": 12,
999 "y": 16
1000 },
1001 "id": 4,
1002 "options": {
1003 "legend": {
1004 "calcs": [],
1005 "displayMode": "list",
1006 "placement": "bottom",
1007 "showLegend": true
1008 },
1009 "tooltip": {
1010 "mode": "single",
1011 "sort": "none"
1012 }
1013 },
1014 "targets": [
1015 {
1016 "datasource": {
1017 "type": "prometheus",
1018 "uid": "${DS_PROMETHEUS}"
1019 },
1020 "editorMode": "code",
1021 "expr": "vllm:kv_cache_usage_perc{model_name=\"$model_name\"}",
1022 "instant": false,
1023 "legendFormat": "GPU Cache Usage",
1024 "range": true,
1025 "refId": "A"
1026 }
1027 ],
1028 "title": "Cache Utilization",
1029 "type": "timeseries"
1030 },
1031 {
1032 "datasource": {
1033 "type": "prometheus",
1034 "uid": "${DS_PROMETHEUS}"
1035 },
1036 "description": "Heatmap of request prompt length",
1037 "fieldConfig": {
1038 "defaults": {
1039 "custom": {
1040 "hideFrom": {
1041 "legend": false,
1042 "tooltip": false,
1043 "viz": false
1044 },
1045 "scaleDistribution": {
1046 "type": "linear"
1047 }
1048 }
1049 },
1050 "overrides": []
1051 },
1052 "gridPos": {
1053 "h": 8,
1054 "w": 12,
1055 "x": 0,
1056 "y": 24
1057 },
1058 "id": 12,
1059 "options": {
1060 "calculate": false,
1061 "cellGap": 1,
1062 "cellValues": {
1063 "unit": "none"
1064 },
1065 "color": {
1066 "exponent": 0.5,
1067 "fill": "dark-orange",
1068 "min": 0,
1069 "mode": "scheme",
1070 "reverse": false,
1071 "scale": "exponential",
1072 "scheme": "Spectral",
1073 "steps": 64
1074 },
1075 "exemplars": {
1076 "color": "rgba(255,0,255,0.7)"
1077 },
1078 "filterValues": {
1079 "le": 1e-9
1080 },
1081 "legend": {
1082 "show": true
1083 },
1084 "rowsFrame": {
1085 "layout": "auto",
1086 "value": "Request count"
1087 },
1088 "tooltip": {
1089 "mode": "single",
1090 "showColorScale": false,
1091 "yHistogram": true
1092 },
1093 "yAxis": {
1094 "axisLabel": "Prompt Length",
1095 "axisPlacement": "left",
1096 "reverse": false,
1097 "unit": "none"
1098 }
1099 },
1100 "pluginVersion": "11.2.0",
1101 "targets": [
1102 {
1103 "datasource": {
1104 "type": "prometheus",
1105 "uid": "${DS_PROMETHEUS}"
1106 },
1107 "disableTextWrap": false,
1108 "editorMode": "builder",
1109 "expr": "sum by(le) (increase(vllm:request_prompt_tokens_bucket{model_name=\"$model_name\"}[$__rate_interval]))",
1110 "format": "heatmap",
1111 "fullMetaSearch": false,
1112 "includeNullMetadata": true,
1113 "instant": false,
1114 "legendFormat": "{{le}}",
1115 "range": true,
1116 "refId": "A",
1117 "useBackend": false
1118 }
1119 ],
1120 "title": "Request Prompt Length",
1121 "type": "heatmap"
1122 },
1123 {
1124 "datasource": {
1125 "type": "prometheus",
1126 "uid": "${DS_PROMETHEUS}"
1127 },
1128 "description": "Heatmap of request generation length",
1129 "fieldConfig": {
1130 "defaults": {
1131 "custom": {
1132 "hideFrom": {
1133 "legend": false,
1134 "tooltip": false,
1135 "viz": false
1136 },
1137 "scaleDistribution": {
1138 "type": "linear"
1139 }
1140 }
1141 },
1142 "overrides": []
1143 },
1144 "gridPos": {
1145 "h": 8,
1146 "w": 12,
1147 "x": 12,
1148 "y": 24
1149 },
1150 "id": 13,
1151 "options": {
1152 "calculate": false,
1153 "cellGap": 1,
1154 "cellValues": {
1155 "unit": "none"
1156 },
1157 "color": {
1158 "exponent": 0.5,
1159 "fill": "dark-orange",
1160 "min": 0,
1161 "mode": "scheme",
1162 "reverse": false,
1163 "scale": "exponential",
1164 "scheme": "Spectral",
1165 "steps": 64
1166 },
1167 "exemplars": {
1168 "color": "rgba(255,0,255,0.7)"
1169 },
1170 "filterValues": {
1171 "le": 1e-9
1172 },
1173 "legend": {
1174 "show": true
1175 },
1176 "rowsFrame": {
1177 "layout": "auto",
1178 "value": "Request count"
1179 },
1180 "tooltip": {
1181 "mode": "single",
1182 "showColorScale": false,
1183 "yHistogram": true
1184 },
1185 "yAxis": {
1186 "axisLabel": "Generation Length",
1187 "axisPlacement": "left",
1188 "reverse": false,
1189 "unit": "none"
1190 }
1191 },
1192 "pluginVersion": "11.2.0",
1193 "targets": [
1194 {
1195 "datasource": {
1196 "type": "prometheus",
1197 "uid": "${DS_PROMETHEUS}"
1198 },
1199 "disableTextWrap": false,
1200 "editorMode": "builder",
1201 "expr": "sum by(le) (increase(vllm:request_generation_tokens_bucket{model_name=\"$model_name\"}[$__rate_interval]))",
1202 "format": "heatmap",
1203 "fullMetaSearch": false,
1204 "includeNullMetadata": true,
1205 "instant": false,
1206 "legendFormat": "{{le}}",
1207 "range": true,
1208 "refId": "A",
1209 "useBackend": false
1210 }
1211 ],
1212 "title": "Request Generation Length",
1213 "type": "heatmap"
1214 },
1215 {
1216 "datasource": {
1217 "type": "prometheus",
1218 "uid": "${DS_PROMETHEUS}"
1219 },
1220 "description": "Number of finished requests by their finish reason: either an EOS token was generated or the max sequence length was reached.",
1221 "fieldConfig": {
1222 "defaults": {
1223 "color": {
1224 "mode": "palette-classic"
1225 },
1226 "custom": {
1227 "axisBorderShow": false,
1228 "axisCenteredZero": false,
1229 "axisColorMode": "text",
1230 "axisLabel": "",
1231 "axisPlacement": "auto",
1232 "barAlignment": 0,
1233 "barWidthFactor": 0.6,
1234 "drawStyle": "line",
1235 "fillOpacity": 0,
1236 "gradientMode": "none",
1237 "hideFrom": {
1238 "legend": false,
1239 "tooltip": false,
1240 "viz": false
1241 },
1242 "insertNulls": false,
1243 "lineInterpolation": "linear",
1244 "lineWidth": 1,
1245 "pointSize": 5,
1246 "scaleDistribution": {
1247 "type": "linear"
1248 },
1249 "showPoints": "auto",
1250 "spanNulls": false,
1251 "stacking": {
1252 "group": "A",
1253 "mode": "none"
1254 },
1255 "thresholdsStyle": {
1256 "mode": "off"
1257 }
1258 },
1259 "mappings": [],
1260 "thresholds": {
1261 "mode": "absolute",
1262 "steps": [
1263 {
1264 "color": "green"
1265 },
1266 {
1267 "color": "red",
1268 "value": 80
1269 }
1270 ]
1271 }
1272 },
1273 "overrides": []
1274 },
1275 "gridPos": {
1276 "h": 8,
1277 "w": 12,
1278 "x": 0,
1279 "y": 32
1280 },
1281 "id": 11,
1282 "options": {
1283 "legend": {
1284 "calcs": [],
1285 "displayMode": "list",
1286 "placement": "bottom",
1287 "showLegend": true
1288 },
1289 "tooltip": {
1290 "mode": "single",
1291 "sort": "none"
1292 }
1293 },
1294 "targets": [
1295 {
1296 "datasource": {
1297 "type": "prometheus",
1298 "uid": "${DS_PROMETHEUS}"
1299 },
1300 "disableTextWrap": false,
1301 "editorMode": "builder",
1302 "expr": "sum by(finished_reason) (increase(vllm:request_success_total{model_name=\"$model_name\"}[$__rate_interval]))",
1303 "fullMetaSearch": false,
1304 "includeNullMetadata": true,
1305 "instant": false,
1306 "interval": "",
1307 "legendFormat": "__auto",
1308 "range": true,
1309 "refId": "A",
1310 "useBackend": false
1311 }
1312 ],
1313 "title": "Finish Reason",
1314 "type": "timeseries"
1315 },
1316 {
1317 "datasource": {
1318 "default": false,
1319 "type": "prometheus",
1320 "uid": "${DS_PROMETHEUS}"
1321 },
1322 "fieldConfig": {
1323 "defaults": {
1324 "color": {
1325 "mode": "palette-classic"
1326 },
1327 "custom": {
1328 "axisBorderShow": false,
1329 "axisCenteredZero": false,
1330 "axisColorMode": "text",
1331 "axisLabel": "seconds",
1332 "axisPlacement": "auto",
1333 "barAlignment": 0,
1334 "barWidthFactor": 0.6,
1335 "drawStyle": "line",
1336 "fillOpacity": 0,
1337 "gradientMode": "none",
1338 "hideFrom": {
1339 "legend": false,
1340 "tooltip": false,
1341 "viz": false
1342 },
1343 "insertNulls": false,
1344 "lineInterpolation": "linear",
1345 "lineWidth": 1,
1346 "pointSize": 5,
1347 "scaleDistribution": {
1348 "type": "linear"
1349 },
1350 "showPoints": "auto",
1351 "spanNulls": false,
1352 "stacking": {
1353 "group": "A",
1354 "mode": "none"
1355 },
1356 "thresholdsStyle": {
1357 "mode": "off"
1358 }
1359 },
1360 "mappings": [],
1361 "thresholds": {
1362 "mode": "absolute",
1363 "steps": [
1364 {
1365 "color": "green"
1366 },
1367 {
1368 "color": "red",
1369 "value": 80
1370 }
1371 ]
1372 }
1373 },
1374 "overrides": []
1375 },
1376 "gridPos": {
1377 "h": 8,
1378 "w": 12,
1379 "x": 12,
1380 "y": 32
1381 },
1382 "id": 14,
1383 "options": {
1384 "legend": {
1385 "calcs": [],
1386 "displayMode": "list",
1387 "placement": "bottom",
1388 "showLegend": true
1389 },
1390 "tooltip": {
1391 "mode": "single",
1392 "sort": "none"
1393 }
1394 },
1395 "targets": [
1396 {
1397 "datasource": {
1398 "type": "prometheus",
1399 "uid": "${DS_PROMETHEUS}"
1400 },
1401 "disableTextWrap": false,
1402 "editorMode": "code",
1403 "expr": "rate(vllm:request_queue_time_seconds_sum{model_name=\"$model_name\"}[$__rate_interval])",
1404 "fullMetaSearch": false,
1405 "includeNullMetadata": true,
1406 "instant": false,
1407 "legendFormat": "__auto",
1408 "range": true,
1409 "refId": "A",
1410 "useBackend": false
1411 }
1412 ],
1413 "title": "Queue Time",
1414 "type": "timeseries"
1415 },
1416 {
1417 "datasource": {
1418 "default": false,
1419 "type": "prometheus",
1420 "uid": "${DS_PROMETHEUS}"
1421 },
1422 "fieldConfig": {
1423 "defaults": {
1424 "color": {
1425 "mode": "palette-classic"
1426 },
1427 "custom": {
1428 "axisBorderShow": false,
1429 "axisCenteredZero": false,
1430 "axisColorMode": "text",
1431 "axisLabel": "",
1432 "axisPlacement": "auto",
1433 "barAlignment": 0,
1434 "barWidthFactor": 0.6,
1435 "drawStyle": "line",
1436 "fillOpacity": 0,
1437 "gradientMode": "none",
1438 "hideFrom": {
1439 "legend": false,
1440 "tooltip": false,
1441 "viz": false
1442 },
1443 "insertNulls": false,
1444 "lineInterpolation": "linear",
1445 "lineWidth": 1,
1446 "pointSize": 5,
1447 "scaleDistribution": {
1448 "type": "linear"
1449 },
1450 "showPoints": "auto",
1451 "spanNulls": false,
1452 "stacking": {
1453 "group": "A",
1454 "mode": "none"
1455 },
1456 "thresholdsStyle": {
1457 "mode": "off"
1458 }
1459 },
1460 "mappings": [],
1461 "thresholds": {
1462 "mode": "absolute",
1463 "steps": [
1464 {
1465 "color": "green"
1466 },
1467 {
1468 "color": "red",
1469 "value": 80
1470 }
1471 ]
1472 }
1473 },
1474 "overrides": []
1475 },
1476 "gridPos": {
1477 "h": 8,
1478 "w": 12,
1479 "x": 0,
1480 "y": 40
1481 },
1482 "id": 15,
1483 "options": {
1484 "legend": {
1485 "calcs": [],
1486 "displayMode": "list",
1487 "placement": "bottom",
1488 "showLegend": true
1489 },
1490 "tooltip": {
1491 "mode": "single",
1492 "sort": "none"
1493 }
1494 },
1495 "targets": [
1496 {
1497 "datasource": {
1498 "type": "prometheus",
1499 "uid": "${DS_PROMETHEUS}"
1500 },
1501 "disableTextWrap": false,
1502 "editorMode": "code",
1503 "expr": "rate(vllm:request_prefill_time_seconds_sum{model_name=\"$model_name\"}[$__rate_interval])",
1504 "fullMetaSearch": false,
1505 "includeNullMetadata": true,
1506 "instant": false,
1507 "legendFormat": "Prefill",
1508 "range": true,
1509 "refId": "A",
1510 "useBackend": false
1511 },
1512 {
1513 "datasource": {
1514 "type": "prometheus",
1515 "uid": "${DS_PROMETHEUS}"
1516 },
1517 "editorMode": "code",
1518 "expr": "rate(vllm:request_decode_time_seconds_sum{model_name=\"$model_name\"}[$__rate_interval])",
1519 "hide": false,
1520 "instant": false,
1521 "legendFormat": "Decode",
1522 "range": true,
1523 "refId": "B"
1524 }
1525 ],
1526 "title": "Requests Prefill and Decode Time",
1527 "type": "timeseries"
1528 },
1529 {
1530 "datasource": {
1531 "default": false,
1532 "type": "prometheus",
1533 "uid": "${DS_PROMETHEUS}"
1534 },
1535 "fieldConfig": {
1536 "defaults": {
1537 "color": {
1538 "mode": "palette-classic"
1539 },
1540 "custom": {
1541 "axisBorderShow": false,
1542 "axisCenteredZero": false,
1543 "axisColorMode": "text",
1544 "axisLabel": "",
1545 "axisPlacement": "auto",
1546 "barAlignment": 0,
1547 "barWidthFactor": 0.6,
1548 "drawStyle": "line",
1549 "fillOpacity": 0,
1550 "gradientMode": "none",
1551 "hideFrom": {
1552 "legend": false,
1553 "tooltip": false,
1554 "viz": false
1555 },
1556 "insertNulls": false,
1557 "lineInterpolation": "linear",
1558 "lineWidth": 1,
1559 "pointSize": 5,
1560 "scaleDistribution": {
1561 "type": "linear"
1562 },
1563 "showPoints": "auto",
1564 "spanNulls": false,
1565 "stacking": {
1566 "group": "A",
1567 "mode": "none"
1568 },
1569 "thresholdsStyle": {
1570 "mode": "off"
1571 }
1572 },
1573 "mappings": [],
1574 "thresholds": {
1575 "mode": "absolute",
1576 "steps": [
1577 {
1578 "color": "green"
1579 },
1580 {
1581 "color": "red",
1582 "value": 80
1583 }
1584 ]
1585 }
1586 },
1587 "overrides": []
1588 },
1589 "gridPos": {
1590 "h": 8,
1591 "w": 12,
1592 "x": 12,
1593 "y": 40
1594 },
1595 "id": 16,
1596 "options": {
1597 "legend": {
1598 "calcs": [],
1599 "displayMode": "list",
1600 "placement": "bottom",
1601 "showLegend": true
1602 },
1603 "tooltip": {
1604 "mode": "single",
1605 "sort": "none"
1606 }
1607 },
1608 "targets": [
1609 {
1610 "datasource": {
1611 "type": "prometheus",
1612 "uid": "${DS_PROMETHEUS}"
1613 },
1614 "disableTextWrap": false,
1615 "editorMode": "code",
1616 "expr": "rate(vllm:request_max_num_generation_tokens_sum{model_name=\"$model_name\"}[$__rate_interval])",
1617 "fullMetaSearch": false,
1618 "includeNullMetadata": true,
1619 "instant": false,
1620 "legendFormat": "Tokens",
1621 "range": true,
1622 "refId": "A",
1623 "useBackend": false
1624 }
1625 ],
1626 "title": "Max Generation Token in Sequence Group",
1627 "type": "timeseries"
1628 }
1629 ],
1630 "refresh": "",
1631 "schemaVersion": 39,
1632 "tags": [],
1633 "templating": {
1634 "list": [
1635 {
1636 "current": {
1637 "selected": false,
1638 "text": "prometheus",
1639 "value": "edx8memhpd9tsa"
1640 },
1641 "hide": 0,
1642 "includeAll": false,
1643 "label": "datasource",
1644 "multi": false,
1645 "name": "DS_PROMETHEUS",
1646 "options": [],
1647 "query": "prometheus",
1648 "queryValue": "",
1649 "refresh": 1,
1650 "regex": "",
1651 "skipUrlSync": false,
1652 "type": "datasource"
1653 },
1654 {
1655 "current": {
1656 "selected": false,
1657 "text": "/share/datasets/public_models/Meta-Llama-3-8B-Instruct",
1658 "value": "/share/datasets/public_models/Meta-Llama-3-8B-Instruct"
1659 },
1660 "datasource": {
1661 "type": "prometheus",
1662 "uid": "${DS_PROMETHEUS}"
1663 },
1664 "definition": "label_values(model_name)",
1665 "hide": 0,
1666 "includeAll": false,
1667 "label": "model_name",
1668 "multi": false,
1669 "name": "model_name",
1670 "options": [],
1671 "query": {
1672 "query": "label_values(model_name)",
1673 "refId": "StandardVariableQuery"
1674 },
1675 "refresh": 1,
1676 "regex": "",
1677 "skipUrlSync": false,
1678 "sort": 0,
1679 "type": "query"
1680 }
1681 ]
1682 },
1683 "time": {
1684 "from": "now-5m",
1685 "to": "now"
1686 },
1687 "timepicker": {},
1688 "timezone": "",
1689 "title": "vLLM",
1690 "uid": "b281712d-8bff-41ef-9f3f-71ad43c05e9b",
1691 "version": 8,
1692 "weekStart": ""
1693 }