From 18ddb5fe624fcc8210d08fc2a5dbb28119498e85 Mon Sep 17 00:00:00 2001 From: Jiaxin Shan Date: Mon, 11 Nov 2024 23:32:00 -0800 Subject: [PATCH 1/2] Update project logos and uncomplished docs --- .../source/assets/logos/aibrix-logo-light.png | Bin 23766 -> 0 bytes docs/source/assets/logos/aibrix-logo.jpeg | Bin 0 -> 34059 bytes docs/source/features/gateway-plugins.rst | 42 ++++++++++++------ docs/source/features/runtime.rst | 4 -- docs/source/index.rst | 4 +- 5 files changed, 31 insertions(+), 19 deletions(-) delete mode 100644 docs/source/assets/logos/aibrix-logo-light.png create mode 100644 docs/source/assets/logos/aibrix-logo.jpeg diff --git a/docs/source/assets/logos/aibrix-logo-light.png b/docs/source/assets/logos/aibrix-logo-light.png deleted file mode 100644 index 6ec0c000c6866d96bf41e72101ffbf95ff59a0e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23766 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�P23=b!}d`fUej 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 )a#2dO889^}>g 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 Date: Mon, 11 Nov 2024 23:45:27 -0800 Subject: [PATCH 2/2] Add the support to override metrics fetch interval --- pkg/cache/cache.go | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go index 89f7b3d1..bbb7d17b 100644 --- a/pkg/cache/cache.go +++ b/pkg/cache/cache.go @@ -24,6 +24,7 @@ import ( "io" "math" "net/http" + "os" "strconv" "strings" "sync" @@ -59,19 +60,30 @@ type Cache struct { requestTrace map[string]map[string]int // model_name: map[Log2(input_token)-Log2(output_token)]request_count } +const ( + modelIdentifier = "model.aibrix.ai/name" + podPort = 8000 + defaultPodMetricRefreshIntervalInMS = 50 + writeRequestTraceIntervalInSeconds = 10 + expireWriteRequestTraceIntervalInMins = 10 +) + var ( instance Cache metricNames = []string{"num_requests_running", "num_requests_waiting", "num_requests_swapped", "avg_prompt_throughput_toks_per_s", "avg_generation_throughput_toks_per_s"} //, "e2e_request_latency_seconds_sum"} + podMetricRefreshIntervalInMilliseconds = getPodMetricRefreshInterval() ) -const ( - modelIdentifier = "model.aibrix.ai/name" - podPort = 8000 - podMetricRefreshIntervalInMilliseconds = 50 - writeRequestTraceIntervalInSeconds = 10 - expireWriteRequestTraceIntervalInMins = 10 -) +func getPodMetricRefreshInterval() time.Duration { + value, exists := os.LookupEnv("AIBRIX_POD_METRIC_REFRESH_INTERVAL_MS") + if exists { + if intValue, err := strconv.Atoi(value); err == nil { + return time.Duration(intValue) * time.Millisecond + } + } + return time.Duration(defaultPodMetricRefreshIntervalInMS) * time.Millisecond +} func GetCache() (*Cache, error) { if !instance.initialized {