hahahafofo's picture
init
79ec61a
raw
history blame contribute delete
No virus
2.91 kB
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()