赞
踩
微调、本地知识库和 prompt 是LMM模型调整和优化中的重要概念,它们之间有一定的关系和区别。
在aliyun选择硬件资源,选择镜像版本时格外注意pytorch、cuda的版本:pytorch=2.1.2、cuda=12.1、python=3.10,还有modelscope=1.11.0与Tensorflow=2.14.0。
序号 | 资源明细 |
---|---|
1 | 32G内存,16G显卡(NVidia Tesla V100),Ubuntu20.04。 |
2 | pytorch=2.1.2、cuda=12.1、python=3.10 |
3 | modelscope=1.11.0与Tensorflow=2.14.0 |
conda create -n langchain python=3.10
conda activate langchain
git clone https://github.com/imClumsyPanda/langchain-ChatGLM.git
git lfs install
wget https://aliendao.cn/model_download.py
pip install huggingface_hub
python model_download.py --repo_id GanymedeNil/text2vec-large-chinese
git clone https://github.com/THUDM/ChatGLM3
cd ChatGLM3
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git chatglm3-6b-models
#按照ChatGLM3的readme.md执行requirements.txt
pip install -r requirements.txt
#web_demo_gradio.py调用出错,将这个代码复制到ChatGLM3目录,然后降级gradio从4.1*降级到3.40
pip install gradio==3.40.0
# 进入目录
$ cd langchain-ChatGLM
# 安装全部依赖
$ pip install -r requirements.txt
$ pip install -r requirements_api.txt
$ pip install -r requirements_webui.txt
python copy_config_example.py
#ToDO:修改model_copy.py相关参数
#按照官方教程,执行以下代码会报错,大概率是embd模型有误
#python init_database.py --recreate-vs
其中,model_copy.py里的默认内容不需要删除(有些教程建议删除),将embedding\model相关路径改成绝对路径即可。
#一键启动
python startup.py -a
以下为一键启动后的信息:
==============================Langchain-Chatchat Configuration==============================
操作系统:Linux-4.19.24-7.34.cbp.al7.x86_64-x86_64-with-glibc2.35.
python版本:3.10.13 (main, Sep 11 2023, 13:44:35) [GCC 11.2.0]
项目版本:v0.2.10
langchain版本:0.0.354. fastchat版本:0.2.35
当前使用的分词器:ChineseRecursiveTextSplitter
当前启动的LLM模型:['chatglm3-6b', 'zhipu-api', 'openai-api'] @ cuda
{'device': 'cuda',
'host': '0.0.0.0',
'infer_turbo': False,
'model_path': '/mnt/workspace/langchain-ChatGLM/ChatGLM3/THUDM/chatglm3-6b',
'model_path_exists': True,
'port': 20002}
{'api_key': '',
'device': 'auto',
'host': '0.0.0.0',
'infer_turbo': False,
'online_api': True,
'port': 21001,
'provider': 'ChatGLMWorker',
'version': 'glm-4',
'worker_class': <class 'server.model_workers.zhipu.ChatGLMWorker'>}
{'api_base_url': 'https://api.openai.com/v1',
'api_key': '',
'device': 'auto',
'host': '0.0.0.0',
'infer_turbo': False,
'model_name': 'gpt-4',
'online_api': True,
'openai_proxy': '',
'port': 20002}
当前Embbedings模型: text2vec-large-chinese @ cuda
==============================Langchain-Chatchat Configuration==============================
启动成功。
python startup.py -a
会报错。pip install pydantic==1.10.13
按照ChatGLM3中相关readme.md的教程操作。遇到找不到peft,安装:
pip install peft
python web_demo_gradio.py
#指定地址,且指定为本机127地址,自动生成端口号,浏览器可以访问
streamlit run web_demo_streamlit.py --server.address=127.0.0.1
ipython kernel install --name chatglm3-demo --user
streamlit run main.py --server.address=127.0.0.1
ValueError: 'text2vec-large-chinese' is not in list
python init_database.py --recreate-vs
wget https://aliendao.cn/model_download.py
pip install huggingface_hub
python model_download.py --repo_id BAAI/bge-large-zh
下载完成后,将BAAI目录放到langchain根目录。创建BAAI本地知识库:
python init_database.py --recreate-vs
成功。
进入本地知识库,可以看到BAAI成功加载。
新建本地知识库填写元信息
上传word
随便上传了一个原生的word,没有做任何预处理。报错AxiosError: Request failed with status code 403
网上有一个说法是降级streamlit,但是我启动没有用streamlit。试试再说:
pip install streamlit==1.28.0
问题解决,可以上传。
问答加载器、分词器、文档数量、源文件、向量库都是空或者叉。是否还存在问题?
2024-02-07 06:23:23,603 - utils.py[line:295] - INFO: RapidOCRDocLoader used for /mnt/workspace/langchain-ChatGLM/knowledge_base/RichardNorth/content/神经内科典型病例分析.doc
2024-02-07 06:23:24,088 - utils.py[line:377] - ERROR: PackageNotFoundError: 从文件 RichardNorth/神经内科典型病例分析.doc 加载文档时出错:Package not found at '/mnt/workspace/langchain-ChatGLM/knowledge_base/RichardNorth/content/神经内科典型病例分析.doc'
2024-02-07 06:23:24,104 - faiss_cache.py[line:38] - INFO: 已将向量库 ('RichardNorth', 'bge-large-zh') 保存到磁盘
INFO: 127.0.0.1:37936 - "POST /knowledge_base/update_docs HTTP/1.1" 200 OK
2024-02-07 06:23:24,106 - _client.py[line:1027] - INFO: HTTP Request: POST http://127.0.0.1:7861/knowledge_base/update_docs "HTTP/1.1 200 OK"
将word换成txt,重新加载,可以加载。
观察发现,本地知识库文件上传成功了,但是在分词器、向量库等后继操作,导致在问答时失败:
未找到相关文档,该回答为大模型自身能力解答!
估计是本地知识库需要规范化,也就是需要进行预处理。
参考了BAAI向量库中的本地知识库文本格式,将个人知识库txt进行处理。处理前发现文档格式确实混乱(网上下载下来的),需要进行换行、去除空格、增加markdown标题符号等。
处理完成后,再次上传,成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。