|
|
|
import copy |
|
|
|
from transformers import PretrainedConfig |
|
|
|
from lmdeploy.turbomind.deploy.target_model.base import TurbomindModelConfig |
|
from lmdeploy.version import __version__ as lm_version |
|
|
|
|
|
class LMDeployConfig(PretrainedConfig): |
|
"""Lmdeploy config.""" |
|
|
|
def __init__(self, turbomind: dict = None, **kwargs): |
|
default_tm_cfg = copy.deepcopy( |
|
TurbomindModelConfig.from_dict({}, allow_none=True).__dict__) |
|
if turbomind is not None: |
|
default_tm_cfg.update(turbomind) |
|
self.turbomind = default_tm_cfg |
|
self.lmdeploy_version = lm_version |
|
super().__init__(**kwargs) |
|
|
|
@classmethod |
|
def from_pretrained(cls, pretrained_model_name_or_path, **kwargs): |
|
return_unused_kwargs = kwargs.pop('return_unused_kwargs', False) |
|
config, kwargs = super().from_pretrained(pretrained_model_name_or_path, |
|
return_unused_kwargs=True, |
|
**kwargs) |
|
for k, v in kwargs.items(): |
|
if k in config.turbomind.keys(): |
|
config.turbomind[k] = v |
|
if 'tp' in kwargs: |
|
config.turbomind['tensor_para_size'] = kwargs['tp'] |
|
if return_unused_kwargs: |
|
return config, kwargs |
|
else: |
|
return config |
|
|
|
|