import sys
from abc import ABC, abstractmethod
from unittest.mock import MagicMock
import torch.nn as nn
def _maybe_mock_vllm():
try:
import vllm return except ImportError:
pass
class BaseModelLoader(ABC):
def __init__(self, load_config):
self.load_config = load_config
@abstractmethod
def download_model(self, model_config) -> None:
raise NotImplementedError
@abstractmethod
def load_weights(self, model: nn.Module, model_config) -> None:
raise NotImplementedError
def load_model(self, vllm_config, model_config):
raise NotImplementedError
def register_model_loader(load_format):
def _wrapper(cls):
return cls
return _wrapper
vllm_mods = {
"vllm": MagicMock(),
"vllm.config": MagicMock(),
"vllm.config.load": MagicMock(),
"vllm.model_executor": MagicMock(),
"vllm.model_executor.model_loader": MagicMock(),
"vllm.model_executor.model_loader.base_loader": MagicMock(),
"vllm.model_executor.model_loader.default_loader": MagicMock(),
"vllm.model_executor.model_loader.dummy_loader": MagicMock(),
"vllm.model_executor.model_loader.utils": MagicMock(),
"vllm.utils": MagicMock(),
"vllm.utils.torch_utils": MagicMock(),
"vllm.distributed": MagicMock(),
}
vllm_mods["vllm.model_executor.model_loader.base_loader"].BaseModelLoader = BaseModelLoader
vllm_mods["vllm.model_executor.model_loader"].register_model_loader = register_model_loader
vllm_mods["vllm.model_executor.model_loader"].BaseModelLoader = BaseModelLoader
from contextlib import contextmanager
@contextmanager
def _set_default_torch_dtype(dtype):
yield
vllm_mods["vllm.utils.torch_utils"].set_default_torch_dtype = _set_default_torch_dtype
for mod_name, mod in vllm_mods.items():
sys.modules[mod_name] = mod
_maybe_mock_vllm()