hahahafofo's picture
init
79ec61a
import os
from loguru import logger
from utils.chatpdf import ChatPDF
from utils.llm import LLM
from utils.singleton import Singleton
MAX_INPUT_LEN = 2048
embedding_model_dict = {
"text2vec-large": "GanymedeNil/text2vec-large-chinese",
"text2vec-base": "shibing624/text2vec-base-chinese",
"sentence-transformers": "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
"ernie-tiny": "nghuyong/ernie-3.0-nano-zh",
"ernie-base": "nghuyong/ernie-3.0-base-zh",
}
# supported LLM models
llm_model_dict = {
#"chatglm-6b": "E:\\sdwebui\\image2text_prompt_generator\\models\\chatglm-6b",
#"chatglm-6b-int4": "E:\\sdwebui\\image2text_prompt_generator\\models\\chatglm-6b-int4",
"chatglm-6b": "THUDM/chatglm-6b",
"chatglm-6b-int4": "THUDM/chatglm-6b-int4",
"llama-7b": "decapoda-research/llama-7b-hf",
"llama-13b": "decapoda-research/llama-13b-hf",
"t5-lamini-flan-783M": "MBZUAI/LaMini-Flan-T5-783M",
}
llm_model_dict_list = list(llm_model_dict.keys())
embedding_model_dict_list = list(embedding_model_dict.keys())
@Singleton
class Models(object):
def __init__(self):
self._chatpdf = None
self._llm_model = None
def is_active(self):
return self._chatpdf is not None and self._llm_model is not None
@property
def chatpdf(self):
return self._chatpdf
@property
def llm_model(self):
return self._llm_model
def reset_model(self):
if self._chatpdf is not None:
del self._chatpdf
if self._llm_model is not None:
del self._llm_model
self._chatpdf = None
self._llm_model = None
def init_model(self, llm_model, llm_lora, embedding_model):
try:
self.reset_model()
llm_lora_path = None
if llm_lora is not None and os.path.exists(llm_lora):
llm_lora_path = llm_lora
self._chatpdf = ChatPDF(
sim_model_name_or_path=embedding_model_dict.get(
embedding_model,
"sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2"
),
)
self._llm_model = LLM(
gen_model_type=llm_model.split('-')[0],
gen_model_name_or_path=llm_model_dict.get(llm_model, "THUDM/chatglm-6b-int4"),
lora_model_name_or_path=llm_lora_path
)
if self._chatpdf is not None and self._llm_model is not None:
model_status = f"模型{llm_model} lora:{llm_lora} embedding:{embedding_model}已成功加载"
else:
model_status = f"llm:{self._llm_model} pdf:{self._chatpdf}加载失败"
logger.info(model_status)
return model_status
except Exception as e:
logger.error(f"加载模型失败:{e}")
raise e
models = Models.instance()