LangChain + ChatGLM-6B / ChatGLM2-6B 新手踩坑指南!

LangChain-ChatGLM-6B基本简介:
项目资源来源链接:
基于本地知识库的 ChatGLM 问答https://github.com/imClumsyPanda/langchain-ChatGLM
项目原理:
加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的top k个 -> 匹配出的文本作为上下文和问题一起添加到prompt中 -> 提交给LLM生成回答。

硬件需求:
1、ChatGLM-6B 模型硬件需求

2、Embedding 模型硬件需求
本项目中默认选用的 Embedding 模型 GanymedeNil/text2vec-large-chinese 约占用显存 3GB,也可修改为在 CPU 中运行。
软件需求:
本项目已在 Python 3.8.1 - 3.10,CUDA 11.7 环境下完成测试。已在 Windows、ARM 架构的 macOS、Linux 系统中完成测试。vue前端需要node18环境。
详见“项目资源来源链接”。
LangChain-ChatGLM-6B的开发部署:
安装的资源链接:https://github.com/imClumsyPanda/langchain-ChatGLM/blob/master/docs/INSTALL.md
第一步,配置安装环境。检查机器是否安装了 Python 3.8 及以上版本。(若版本低于3.8,可见“安装的资源链接”使用conda安装环境并激活)

第二步,进行项目依赖包安装。具体步骤可见“安装的资源链接”。在其过程中我遇到的问题以及解决方法:
问题1、No module named 'configs'
解决方法:同上一个问题,将configs.model_config全部改为configs2.model_config,并替换文档代码中所有的configs.model_config名称,即可成功安装。
问题2、No module named 'configs.model_config'
解决方法:经过试错,排除了“模型找不到该文件”或“该文件未下载到本地”的错误。最终发现该模型先读取了系统的configs,与本地的configs冲突。因此,将本地文件中所有的configs重命名为configs2并替换文档代码中所有的configs名称,即可成功安装。
第三步,执行脚本体验Web UI或命令行交互。具体步骤可见“项目资源来源链接”。

1、在体验命令行交互遇到的问题及解决方法:
问题:在执行cli_demo.py脚本体验命令行交互中,遇到了下载出错的问题(8个文件只能下载四个)。
解决方法:找到了错误在我服务器/home/sre/python/chatGPT/里,在其中加了镜像即可下载后面的四个文件。镜像代码:
tokenizer = AutoTokenizer.from_pretrained(new_dir, trust_remote_code=True, mirror="tuna")
model = AutoModel.from_pretrained(new_dir, trust_remote_code=True, mirror="tuna").half().cuda()
2、在体验Web交互遇到的问题及解决方法:
问题:配置好后不输出页面
方法:直接将自己服务器的地址加上程序输出的URL结合,将结合后的网址输入进自己的浏览器即可访问使用。

LangChain-ChatGLM2-6B的配置方法
将langchain-ChatGLM目录下的configs2中LLM 名称:LLM_MODEL = "chatglm-6b"中的chatglm-6b改为chatglm2-6b,即可运行,其他运行或修正方法同langchain-ChatGLM。

以上就是我在配置并使用LangChain-ChatGLM-6B中得到的报告,希望可以帮到大家。欢迎发私信与我共同讨论更多该领域的知识!