Model Registry PatternA Design Pattern for Dynamic Model Management in PythonRegistration and Instantiation Flow1. Model Definitionclass ModelRegistry: _registry = {} @classmethod def register(cls, name): def wrapper(model_cls): cls._registry[name] = model_cls2. Define & Register Models@ModelRegistry.register('resnet18')class ResNet18(nn.Module): def __init__(self, **kwargs): super().__init__() # model implementation def forward(self, x): return x3. Model Factory Methods@classmethoddef get_model(cls, name, **kwargs): try: model_cls = cls._registry[ name] return model_cls(**kwargs) except KeyError:Advanced Usage ExamplesConfiguration-Driven# Load from config.jsonimport jsonwith open('config.json') as f: config = json.load(f)model_name = config['model']model = ModelRegistry.get_model( name=model_name, **config.get('params', {}))Plugin Architecture# Load models dynamicallyimport glob, importlibdef load_plugins( plugins_dir='plugins'): pattern = f'{plugins_dir}/*.py' for path in glob.glob(pattern): spec = importlib.util .spec_from_file(path)Command-Line Interface# CLI with argparseimport argparseparser = argparse.ArgumentParser( description='Model Selection')parser.add_argument( '--model', choices=list( ModelRegistry._registry.keys() )
Mastodon