Open-Sora/opensora/registry.py

42 lines
1 KiB
Python
Raw Normal View History

2024-03-15 15:16:20 +01:00
from copy import deepcopy
import torch.nn as nn
from mmengine.registry import Registry
def build_module(module: dict | nn.Module, builder: Registry, **kwargs) -> nn.Module | None:
2024-03-15 15:16:20 +01:00
"""Build module from config or return the module itself.
Args:
module (dict | nn.Module): The module to build.
2024-03-15 15:16:20 +01:00
builder (Registry): The registry to build module.
*args, **kwargs: Arguments passed to build function.
Returns:
(None | nn.Module): The created model.
2024-03-15 15:16:20 +01:00
"""
2024-05-21 07:45:06 +02:00
if module is None:
return None
2024-03-15 15:16:20 +01:00
if isinstance(module, dict):
cfg = deepcopy(module)
for k, v in kwargs.items():
cfg[k] = v
return builder.build(cfg)
elif isinstance(module, nn.Module):
return module
elif module is None:
return None
else:
raise TypeError(f"Only support dict and nn.Module, but got {type(module)}.")
MODELS = Registry(
"model",
locations=["opensora.models"],
)
2024-03-26 10:02:41 +01:00
DATASETS = Registry(
"dataset",
locations=["opensora.datasets"],
)