Skip to content

Commit ad9ac0e

Browse files
committed
Add timing for model loading and log duration
1 parent 57da9a6 commit ad9ac0e

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

mlserver/server.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import asyncio
22
import signal
33
import logging
4+
import time
45

56
from typing import Optional, List
67

@@ -122,12 +123,12 @@ async def start(self, models_settings: List[ModelSettings] = []):
122123
servers_task = asyncio.gather(*servers)
123124

124125
try:
126+
total_start: float = time.perf_counter()
125127
await asyncio.gather(
126-
*[
127-
self._model_registry.load(model_settings)
128-
for model_settings in models_settings
129-
]
128+
*[ self._timed_load(model_settings) for model_settings in models_settings ]
130129
)
130+
total_duration: float = time.perf_counter() - total_start
131+
logger.debug(f"Loaded {len(models_settings)} models in {total_duration:3f}s")
131132
except Exception:
132133
# If one of the models failed to load during startup, shutdown the
133134
# server gracefully
@@ -188,3 +189,14 @@ async def stop(self, sig: Optional[int] = None):
188189

189190
if self._metrics_server:
190191
await self._metrics_server.stop(sig)
192+
193+
async def _timed_load(self, model_settings: ModelSettings) -> MLModel:
194+
"""
195+
Load a model while measuring the elapsed time.
196+
"""
197+
t0: float = time.perf_counter()
198+
try:
199+
return await self._model_registry.load(model_settings)
200+
finally:
201+
elapsed: float = time.perf_counter() - t0
202+
logger.debug(F"Model {getattr(model_settings, 'name', '<unknown>')} loaded in {elapsed:3f}s")

0 commit comments

Comments
 (0)