77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
"""
|
|
Dynamic module loading utilities for custom HuggingFace models.
|
|
Ported from latest vLLM to support auto_map in model config.
|
|
"""
|
|
import os
|
|
from typing import Dict, Optional, Type, Union
|
|
|
|
from transformers.dynamic_module_utils import (
|
|
get_class_from_dynamic_module,
|
|
resolve_trust_remote_code,
|
|
)
|
|
|
|
import vllm.envs as envs
|
|
from vllm.logger import init_logger
|
|
|
|
logger = init_logger(__name__)
|
|
|
|
|
|
def try_get_class_from_dynamic_module(
|
|
class_reference: str,
|
|
pretrained_model_name_or_path: str,
|
|
trust_remote_code: bool,
|
|
cache_dir: Optional[Union[str, os.PathLike]] = None,
|
|
force_download: bool = False,
|
|
resume_download: Optional[bool] = None,
|
|
proxies: Optional[Dict[str, str]] = None,
|
|
token: Optional[Union[bool, str]] = None,
|
|
revision: Optional[str] = None,
|
|
local_files_only: bool = False,
|
|
repo_type: Optional[str] = None,
|
|
code_revision: Optional[str] = None,
|
|
warn_on_fail: bool = True,
|
|
**kwargs,
|
|
) -> Optional[Type]:
|
|
"""
|
|
As `transformers.dynamic_module_utils.get_class_from_dynamic_module`,
|
|
but ignoring any errors.
|
|
|
|
This allows vLLM to load custom models that define their own
|
|
model classes via the `auto_map` field in config.json.
|
|
"""
|
|
try:
|
|
resolve_trust_remote_code(
|
|
trust_remote_code,
|
|
pretrained_model_name_or_path,
|
|
has_local_code=False,
|
|
has_remote_code=True,
|
|
)
|
|
|
|
return get_class_from_dynamic_module(
|
|
class_reference,
|
|
pretrained_model_name_or_path,
|
|
cache_dir=cache_dir,
|
|
force_download=force_download,
|
|
resume_download=resume_download,
|
|
proxies=proxies,
|
|
token=token,
|
|
revision=revision,
|
|
local_files_only=local_files_only,
|
|
repo_type=repo_type,
|
|
code_revision=code_revision,
|
|
**kwargs,
|
|
)
|
|
except Exception:
|
|
location = "ModelScope" if envs.VLLM_USE_MODELSCOPE else "HF Hub"
|
|
|
|
if warn_on_fail:
|
|
logger.warning(
|
|
"Unable to load %s from %s on %s.",
|
|
class_reference,
|
|
pretrained_model_name_or_path,
|
|
location,
|
|
exc_info=True,
|
|
)
|
|
|
|
return None
|