From 8732dcc1c4710314332a407052988e225de386d7 Mon Sep 17 00:00:00 2001 From: liunux4odoo Date: Thu, 27 Jul 2023 08:42:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=81=A2=E5=A4=8D=E8=A2=ABPR659=E8=A6=86?= =?UTF-8?q?=E7=9B=96=E7=9A=84model=5Fconfig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- configs/model_config.py | 135 +++++++++++++++++++++++++++++++++++----- 1 file changed, 120 insertions(+), 15 deletions(-) diff --git a/configs/model_config.py b/configs/model_config.py index 846da98..ed277ee 100644 --- a/configs/model_config.py +++ b/configs/model_config.py @@ -27,7 +27,6 @@ EMBEDDING_MODEL = "text2vec" # Embedding running device EMBEDDING_DEVICE = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu" - # supported LLM models # llm_model_dict 处理了loader的一些预设行为,如加载位置,模型名称,模型处理器实例 # 在以下字典中修改属性值,以指定本地 LLM 模型存储位置 @@ -38,44 +37,113 @@ llm_model_dict = { "name": "chatglm-6b-int4-qe", "pretrained_model_name": "THUDM/chatglm-6b-int4-qe", "local_model_path": None, - "provides": "ChatGLM" + "provides": "ChatGLMLLMChain" }, "chatglm-6b-int4": { "name": "chatglm-6b-int4", "pretrained_model_name": "THUDM/chatglm-6b-int4", "local_model_path": None, - "provides": "ChatGLM" + "provides": "ChatGLMLLMChain" }, "chatglm-6b-int8": { "name": "chatglm-6b-int8", "pretrained_model_name": "THUDM/chatglm-6b-int8", "local_model_path": None, - "provides": "ChatGLM" + "provides": "ChatGLMLLMChain" }, "chatglm-6b": { "name": "chatglm-6b", "pretrained_model_name": "THUDM/chatglm-6b", "local_model_path": None, - "provides": "ChatGLM" + "provides": "ChatGLMLLMChain" + }, + "chatglm2-6b": { + "name": "chatglm2-6b", + "pretrained_model_name": "THUDM/chatglm2-6b", + "local_model_path": None, + "provides": "ChatGLMLLMChain" + }, + "chatglm2-6b-int4": { + "name": "chatglm2-6b-int4", + "pretrained_model_name": "THUDM/chatglm2-6b-int4", + "local_model_path": None, + "provides": "ChatGLMLLMChain" + }, + "chatglm2-6b-int8": { + "name": "chatglm2-6b-int8", + "pretrained_model_name": "THUDM/chatglm2-6b-int8", + "local_model_path": None, + "provides": "ChatGLMLLMChain" }, - "chatyuan": { "name": "chatyuan", "pretrained_model_name": "ClueAI/ChatYuan-large-v2", "local_model_path": None, - "provides": None + "provides": "MOSSLLMChain" }, "moss": { "name": "moss", "pretrained_model_name": "fnlp/moss-moon-003-sft", "local_model_path": None, + "provides": "MOSSLLMChain" + }, + "moss-int4": { + "name": "moss", + "pretrained_model_name": "fnlp/moss-moon-003-sft-int4", + "local_model_path": None, "provides": "MOSSLLM" }, "vicuna-13b-hf": { "name": "vicuna-13b-hf", "pretrained_model_name": "vicuna-13b-hf", "local_model_path": None, - "provides": "LLamaLLM" + "provides": "LLamaLLMChain" + }, + "vicuna-7b-hf": { + "name": "vicuna-13b-hf", + "pretrained_model_name": "vicuna-13b-hf", + "local_model_path": None, + "provides": "LLamaLLMChain" + }, + # 直接调用返回requests.exceptions.ConnectionError错误,需要通过huggingface_hub包里的snapshot_download函数 + # 下载模型,如果snapshot_download还是返回网络错误,多试几次,一般是可以的, + # 如果仍然不行,则应该是网络加了防火墙(在服务器上这种情况比较常见),基本只能从别的设备上下载, + # 然后转移到目标设备了. + "bloomz-7b1": { + "name": "bloomz-7b1", + "pretrained_model_name": "bigscience/bloomz-7b1", + "local_model_path": None, + "provides": "MOSSLLMChain" + + }, + # 实测加载bigscience/bloom-3b需要170秒左右,暂不清楚为什么这么慢 + # 应与它要加载专有token有关 + "bloom-3b": { + "name": "bloom-3b", + "pretrained_model_name": "bigscience/bloom-3b", + "local_model_path": None, + "provides": "MOSSLLMChain" + + }, + "baichuan-7b": { + "name": "baichuan-7b", + "pretrained_model_name": "baichuan-inc/baichuan-7B", + "local_model_path": None, + "provides": "MOSSLLMChain" + }, + # llama-cpp模型的兼容性问题参考https://github.com/abetlen/llama-cpp-python/issues/204 + "ggml-vicuna-13b-1.1-q5": { + "name": "ggml-vicuna-13b-1.1-q5", + "pretrained_model_name": "lmsys/vicuna-13b-delta-v1.1", + # 这里需要下载好模型的路径,如果下载模型是默认路径则它会下载到用户工作区的 + # /.cache/huggingface/hub/models--vicuna--ggml-vicuna-13b-1.1/ + # 还有就是由于本项目加载模型的方式设置的比较严格,下载完成后仍需手动修改模型的文件名 + # 将其设置为与Huggface Hub一致的文件名 + # 此外不同时期的ggml格式并不兼容,因此不同时期的ggml需要安装不同的llama-cpp-python库,且实测pip install 不好使 + # 需要手动从https://github.com/abetlen/llama-cpp-python/releases/tag/下载对应的wheel安装 + # 实测v0.1.63与本模型的vicuna/ggml-vicuna-13b-1.1/ggml-vic13b-q5_1.bin可以兼容 + "local_model_path": f'''{"/".join(os.path.abspath(__file__).split("/")[:3])}/.cache/huggingface/hub/models--vicuna--ggml-vicuna-13b-1.1/blobs/''', + "provides": "LLamaLLMChain" }, # 通过 fastchat 调用的模型请参考如下格式 @@ -83,7 +151,24 @@ llm_model_dict = { "name": "chatglm-6b", # "name"修改为fastchat服务中的"model_name" "pretrained_model_name": "chatglm-6b", "local_model_path": None, - "provides": "FastChatOpenAILLM", # 使用fastchat api时,需保证"provides"为"FastChatOpenAILLM" + "provides": "FastChatOpenAILLMChain", # 使用fastchat api时,需保证"provides"为"FastChatOpenAILLMChain" + "api_base_url": "http://localhost:8000/v1", # "name"修改为fastchat服务中的"api_base_url" + "api_key": "EMPTY" + }, + # 通过 fastchat 调用的模型请参考如下格式 + "fastchat-chatglm-6b-int4": { + "name": "chatglm-6b-int4", # "name"修改为fastchat服务中的"model_name" + "pretrained_model_name": "chatglm-6b-int4", + "local_model_path": None, + "provides": "FastChatOpenAILLMChain", # 使用fastchat api时,需保证"provides"为"FastChatOpenAILLMChain" + "api_base_url": "http://localhost:8001/v1", # "name"修改为fastchat服务中的"api_base_url" + "api_key": "EMPTY" + }, + "fastchat-chatglm2-6b": { + "name": "chatglm2-6b", # "name"修改为fastchat服务中的"model_name" + "pretrained_model_name": "chatglm2-6b", + "local_model_path": None, + "provides": "FastChatOpenAILLMChain", # 使用fastchat api时,需保证"provides"为"FastChatOpenAILLMChain" "api_base_url": "http://localhost:8000/v1" # "name"修改为fastchat服务中的"api_base_url" }, @@ -92,9 +177,29 @@ llm_model_dict = { "name": "vicuna-13b-hf", # "name"修改为fastchat服务中的"model_name" "pretrained_model_name": "vicuna-13b-hf", "local_model_path": None, - "provides": "FastChatOpenAILLM", # 使用fastchat api时,需保证"provides"为"FastChatOpenAILLM" - "api_base_url": "http://localhost:8000/v1" # "name"修改为fastchat服务中的"api_base_url" + "provides": "FastChatOpenAILLMChain", # 使用fastchat api时,需保证"provides"为"FastChatOpenAILLMChain" + "api_base_url": "http://localhost:8000/v1", # "name"修改为fastchat服务中的"api_base_url" + "api_key": "EMPTY" }, + # 调用chatgpt时如果报出: urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.openai.com', port=443): + # Max retries exceeded with url: /v1/chat/completions + # 则需要将urllib3版本修改为1.25.11 + # 如果依然报urllib3.exceptions.MaxRetryError: HTTPSConnectionPool,则将https改为http + # 参考https://zhuanlan.zhihu.com/p/350015032 + + # 如果报出:raise NewConnectionError( + # urllib3.exceptions.NewConnectionError: : + # Failed to establish a new connection: [WinError 10060] + # 则是因为内地和香港的IP都被OPENAI封了,需要切换为日本、新加坡等地 + "openai-chatgpt-3.5": { + "name": "gpt-3.5-turbo", + "pretrained_model_name": "gpt-3.5-turbo", + "provides": "FastChatOpenAILLMChain", + "local_model_path": None, + "api_base_url": "https://api.openapi.com/v1", + "api_key": "" + }, + } # LLM 名称 @@ -115,7 +220,7 @@ STREAMING = True # Use p-tuning-v2 PrefixEncoder USE_PTUNING_V2 = False - +PTUNING_DIR='./ptuning-v2' # LLM running device LLM_DEVICE = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu" @@ -128,7 +233,7 @@ PROMPT_TEMPLATE = """已知信息: 根据上述已知信息,简洁和专业的来回答用户的问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题” 或 “没有提供足够的相关信息”,不允许在答案中添加编造成分,答案请使用中文。 问题是:{question}""" -# 缓存知识库数量 +# 缓存知识库数量,如果是ChatGLM2,ChatGLM2-int4,ChatGLM2-int8模型若检索效果不好可以调成’10’ CACHED_VS_NUM = 1 # 文本分句长度 @@ -143,8 +248,8 @@ LLM_HISTORY_LEN = 3 # 知识库检索时返回的匹配内容条数 VECTOR_SEARCH_TOP_K = 5 -# 知识检索内容相关度 Score, 数值范围约为0-1100,如果为0,则不生效,经测试设置为小于500时,匹配结果更精准 -VECTOR_SEARCH_SCORE_THRESHOLD = 0 +# 知识检索内容相关度 Score, 数值范围约为0-1100,如果为0,则不生效,建议设置为500左右,经测试设置为小于500时,匹配结果更精准 +VECTOR_SEARCH_SCORE_THRESHOLD = 500 NLTK_DATA_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "nltk_data")