Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions mlserver/repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@ async def list(self) -> List[ModelSettings]:
def _load_model_settings(self, model_settings_path: str) -> ModelSettings:
model_settings = ModelSettings.parse_file(model_settings_path)

# TODO: Raise warning if name is different than folder's name
if not model_settings.name:
# If name not present, default to folder name
default_model_name = os.path.basename(os.path.dirname(model_settings_path))
model_settings.name = default_model_name

if not model_settings.parameters:
model_settings.parameters = ModelParameters()

Expand Down
2 changes: 1 addition & 1 deletion mlserver/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class ModelSettings(BaseSettings):
class Config:
env_prefix = ENV_PREFIX_MODEL_SETTINGS

name: str
name: str = ""

# Model metadata
platform: str = ""
Expand Down
16 changes: 15 additions & 1 deletion tests/test_repository.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import os
import json

from mlserver.repository import ModelRepository, DEFAULT_MODEL_SETTINGS_FILENAME
from mlserver.settings import ModelSettings, ENV_PREFIX_MODEL_SETTINGS
Expand Down Expand Up @@ -30,7 +31,6 @@ async def test_list_multi_model(multi_model_folder: str):

assert len(settings_list) == 5
for idx, model_settings in enumerate(settings_list):
# Models get read in reverse
assert model_settings.parameters.version == f"v{idx}" # type: ignore


Expand Down Expand Up @@ -63,6 +63,20 @@ async def test_list_fallback(
)


async def test_name_fallback(model_folder: str, model_repository: ModelRepository):
# Create empty model-settings.json file
model_settings = ModelSettings()
model_settings_path = os.path.join(model_folder, DEFAULT_MODEL_SETTINGS_FILENAME)
with open(model_settings_path, "w") as model_settings_file:
d = model_settings.dict()
del d["name"]
d["implementation"] = get_import_path(d["implementation"])
json.dump(d, model_settings_file)

model_settings = model_repository._load_model_settings(model_settings_path)
assert model_settings.name == os.path.basename(model_folder)


async def test_find(
model_repository: ModelRepository, sum_model_settings: ModelSettings
):
Expand Down