| import sys | |
| from typing import Any | |
| from models.loader.args import parser | |
| from models.loader import LoaderCheckPoint | |
| from configs.model_config import (llm_model_dict, LLM_MODEL) | |
| from models.base import BaseAnswer | |
| loaderCheckPoint: LoaderCheckPoint = None | |
| def loaderLLM(llm_model: str = None, no_remote_model: bool = False, use_ptuning_v2: bool = False) -> Any: | |
| """ | |
| init llm_model_ins LLM | |
| :param llm_model: model_name | |
| :param no_remote_model: remote in the model on loader checkpoint, if your load local model to add the ` --no-remote-model | |
| :param use_ptuning_v2: Use p-tuning-v2 PrefixEncoder | |
| :return: | |
| """ | |
| pre_model_name = loaderCheckPoint.model_name | |
| llm_model_info = llm_model_dict[pre_model_name] | |
| if no_remote_model: | |
| loaderCheckPoint.no_remote_model = no_remote_model | |
| if use_ptuning_v2: | |
| loaderCheckPoint.use_ptuning_v2 = use_ptuning_v2 | |
| if llm_model: | |
| llm_model_info = llm_model_dict[llm_model] | |
| if loaderCheckPoint.no_remote_model: | |
| loaderCheckPoint.model_name = llm_model_info['name'] | |
| else: | |
| loaderCheckPoint.model_name = llm_model_info['pretrained_model_name'] | |
| loaderCheckPoint.model_path = llm_model_info["local_model_path"] | |
| if 'FastChatOpenAILLM' in llm_model_info["provides"]: | |
| loaderCheckPoint.unload_model() | |
| else: | |
| loaderCheckPoint.reload_model() | |
| provides_class = getattr(sys.modules['models'], llm_model_info['provides']) | |
| modelInsLLM = provides_class(checkPoint=loaderCheckPoint) | |
| if 'FastChatOpenAILLM' in llm_model_info["provides"]: | |
| modelInsLLM.set_api_base_url(llm_model_info['api_base_url']) | |
| modelInsLLM.call_model_name(llm_model_info['name']) | |
| return modelInsLLM | |