fix(dashboard): improve vLLM monitoring display and preserve samples (#14326)

This commit is contained in:
ssongliu
2026-11-06 23:44:30 +08:00
committed by GitHub
parent 95f12c16c3
commit 726fd94e07
13 changed files with 40 additions and 30 deletions
+2 -2
View File
@@ -1743,8 +1743,8 @@ const message = {
running: 'Running requests',
waiting: 'Waiting requests',
cacheUsage: 'KV cache usage',
promptThroughput: 'Input token throughput',
generationThroughput: 'Output token throughput',
promptThroughput: 'Input throughput',
generationThroughput: 'Output throughput',
requestThroughput: 'Completed requests',
timeToFirstToken: 'Mean time to first token',
timePerOutputToken: 'Mean inter-token latency',
+2 -2
View File
@@ -1754,8 +1754,8 @@ const message = {
running: 'Solicitudes en ejecución',
waiting: 'Solicitudes en espera',
cacheUsage: 'Uso de caché KV',
promptThroughput: 'Rendimiento de tokens de entrada',
generationThroughput: 'Rendimiento de tokens de salida',
promptThroughput: 'Rendimiento de entrada',
generationThroughput: 'Rendimiento de salida',
requestThroughput: 'Solicitudes completadas',
timeToFirstToken: 'Latencia media del primer token',
timePerOutputToken: 'Latencia media entre tokens',
+2 -2
View File
@@ -1719,8 +1719,8 @@ const message = {
running: 'درخواست‌های در حال اجرا',
waiting: 'درخواست‌های در انتظار',
cacheUsage: 'مصرف حافظه نهان KV',
promptThroughput: 'گذردهی توکن ورودی',
generationThroughput: 'گذردهی توکن خروجی',
promptThroughput: 'گذردهی ورودی',
generationThroughput: 'گذردهی خروجی',
requestThroughput: 'نرخ درخواست‌های تکمیل‌شده',
timeToFirstToken: 'میانگین تأخیر توکن اول',
timePerOutputToken: 'میانگین تأخیر بین توکن‌ها',
+2 -2
View File
@@ -1726,8 +1726,8 @@ const message = {
running: '実行中のリクエスト',
waiting: '待機中のリクエスト',
cacheUsage: 'KVキャッシュ使用率',
promptThroughput: '入力トークンスループット',
generationThroughput: '出力トークンスループット',
promptThroughput: '入力スループット',
generationThroughput: '出力スループット',
requestThroughput: '完了リクエスト数/秒',
timeToFirstToken: '平均初回トークン遅延',
timePerOutputToken: '平均トークン間遅延',
+2 -2
View File
@@ -1707,8 +1707,8 @@ const message = {
running: '실행 중인 요청',
waiting: '대기 중인 요청',
cacheUsage: 'KV 캐시 사용률',
promptThroughput: '입력 토큰 처리량',
generationThroughput: '출력 토큰 처리량',
promptThroughput: '입력 처리량',
generationThroughput: '출력 처리량',
requestThroughput: '완료 요청 속도',
timeToFirstToken: '평균 첫 토큰 지연',
timePerOutputToken: '평균 토큰 간 지연',
+2 -2
View File
@@ -1696,8 +1696,8 @@ const message = {
running: 'ຄຳຮ້ອງຂໍທີ່ກຳລັງເຮັດວຽກ',
waiting: 'ຄຳຮ້ອງຂໍທີ່ກຳລັງລໍຖ້າ',
cacheUsage: 'ການໃຊ້ງານແຄດ KV',
promptThroughput: 'ອັດຕາ Token ຂາເຂົ້າ',
generationThroughput: 'ອັດຕາ Token ຂາອອກ',
promptThroughput: 'ອັດຕາຂາເຂົ້າ',
generationThroughput: 'ອັດຕາຂາອອກ',
requestThroughput: 'ອັດຕາຄຳຮ້ອງຂໍສຳເລັດ',
timeToFirstToken: 'ເວລາລໍຖ້າສະເລ່ຍຂອງ Token ທຳອິດ',
timePerOutputToken: 'ເວລາລໍຖ້າສະເລ່ຍລະຫວ່າງ Token',
+2 -2
View File
@@ -1757,8 +1757,8 @@ const message = {
running: 'Permintaan berjalan',
waiting: 'Permintaan menunggu',
cacheUsage: 'Penggunaan cache KV',
promptThroughput: 'Daya pemprosesan token input',
generationThroughput: 'Daya pemprosesan token output',
promptThroughput: 'Daya pemprosesan input',
generationThroughput: 'Daya pemprosesan output',
requestThroughput: 'Kadar permintaan selesai',
timeToFirstToken: 'Purata kependaman token pertama',
timePerOutputToken: 'Purata kependaman antara token',
+2 -2
View File
@@ -1754,8 +1754,8 @@ const message = {
running: 'Solicitações em execução',
waiting: 'Solicitações em espera',
cacheUsage: 'Uso do cache KV',
promptThroughput: 'Taxa de tokens de entrada',
generationThroughput: 'Taxa de tokens de saída',
promptThroughput: 'Taxa de entrada',
generationThroughput: 'Taxa de saída',
requestThroughput: 'Solicitações concluídas',
timeToFirstToken: 'Latência média do primeiro token',
timePerOutputToken: 'Latência média entre tokens',
+2 -2
View File
@@ -1747,8 +1747,8 @@ const message = {
running: 'Выполняемые запросы',
waiting: 'Ожидающие запросы',
cacheUsage: 'Использование KV-кэша',
promptThroughput: 'Скорость входных токенов',
generationThroughput: 'Скорость выходных токенов',
promptThroughput: 'Скорость ввода',
generationThroughput: 'Скорость вывода',
requestThroughput: 'Завершённые запросы',
timeToFirstToken: 'Среднее время до первого токена',
timePerOutputToken: 'Средняя задержка между токенами',
+2 -2
View File
@@ -1750,8 +1750,8 @@ const message = {
running: 'Çalışan istekler',
waiting: 'Bekleyen istekler',
cacheUsage: 'KV önbellek kullanımı',
promptThroughput: 'Girdi token hızı',
generationThroughput: 'Çıktı token hızı',
promptThroughput: 'Girdi hızı',
generationThroughput: 'Çıktı hızı',
requestThroughput: 'Tamamlanan istek hızı',
timeToFirstToken: 'Ortalama ilk token gecikmesi',
timePerOutputToken: 'Ortalama token arası gecikme',
+2 -2
View File
@@ -1636,8 +1636,8 @@ const message = {
running: '執行中請求',
waiting: '等待中請求',
cacheUsage: 'KV Cache 使用率',
promptThroughput: '輸入 Token 吞吐',
generationThroughput: '輸出 Token 吞吐',
promptThroughput: '輸入吞吐',
generationThroughput: '輸出吞吐',
requestThroughput: '完成請求速率',
timeToFirstToken: '平均首 Token 延遲',
timePerOutputToken: '平均 Token 間延遲',
+2 -2
View File
@@ -1649,8 +1649,8 @@ const message = {
running: '运行中请求',
waiting: '等待中请求',
cacheUsage: 'KV Cache 使用率',
promptThroughput: '输入 Token 吞吐',
generationThroughput: '输出 Token 吞吐',
promptThroughput: '输入吞吐',
generationThroughput: '输出吞吐',
requestThroughput: '完成请求速率',
timeToFirstToken: '平均首 Token 延迟',
timePerOutputToken: '平均 Token 间延迟',
+16 -6
View File
@@ -622,6 +622,14 @@ const vllmChartOption = computed(() => ({
grid: monitorChartGrid,
legend: monitorChartLegend,
formatStr: 'tokens/s',
yAxis: [
{
type: 'value',
name: '( tokens/s )',
min: 0,
max: ({ max }: { max: number }) => (max > 0 ? undefined : 1),
},
],
tooltip: {
trigger: 'axis',
valueFormatter: (value: number | null) => `${formatVllmMetric(value)} tokens/s`,
@@ -648,12 +656,14 @@ const loadVllmOptions = async () => {
}
};
const stopVllmMonitor = () => {
const stopVllmMonitor = (resetData = true) => {
clearTimeout(vllmTimer);
vllmController?.abort();
vllmCurrent.value = undefined;
vllmPoints.value = [];
vllmLoadFailed.value = false;
if (resetData) {
vllmCurrent.value = undefined;
vllmPoints.value = [];
vllmLoadFailed.value = false;
}
};
const refreshVllmMonitor = async () => {
@@ -1364,8 +1374,8 @@ watch(
{ immediate: true, flush: 'sync' },
);
watch([chartOption, vllmInstallID, isActive], () => {
stopVllmMonitor();
watch([chartOption, vllmInstallID, isActive], ([, installID], [, previousInstallID]) => {
stopVllmMonitor(installID !== previousInstallID);
if (chartOption.value === 'vllm' && hasVllm.value && vllmInstallID.value && isActive.value) {
void refreshVllmMonitor();
}