ChatGLM3-6B和langchain知识库阿里云部署

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、ChatGLM3-6B部署
    • 搭建环境
    • 部署GLM3
  • 二、Chatglm2-6b+langchain部署本地知识库
  • 三、Tips
  • 四、总结


前言

提示:这里可以添加本文要记录的大概内容:

看了几天chatglm和langchain的部署,经过不断报错,终于试出了可以运行的方案,不过本地知识库搭建还有问题,要再看看。本文主要介绍ChatGLM3-6B的部署和实现效果,和Chatglm2-6b+langchain结合的实现效果。


提示:以下是本篇文章正文内容,下面案例可供参考

一、ChatGLM3-6B部署

搭建环境

用阿里云免费资源进行创建实例,详情可参考
在这里插入图片描述点击试用,OSS那里要勾上,看别人都勾了,不过我没勾,不知道会不会有什么问题,然后授权就行了。

创建完后进入控制台,点击【交互式建模DSW】,进行创建实例,只能选择可抵扣计算时的V100或者A10,只有这两个规格的GPU是免费试用的(页面没有的话,可以过段时间再进去可能就有了,不过用哪个都行不过A10没那么耗资源)。
因为我们的是资源包,所以可以创建n个实例,我创建了一个V100的实例,配置如下:

官方镜像:pytorch2.0.1tensorflow2.13.0-cpu-py38-ubunt(最新的)

部署GLM3

1、点击创建的实例,进入terminal,输入:

apt-get update
apt-get install git-lfs 
git init
git lfs install 

2、首先git clone下载GLM3仓库,并切换到这个文件夹下

git clone https://github.com/THUDM/ChatGLM3
cd ChatGLM3

3、然后使用 pip 安装依赖:

最新版本中,建议在WEBIDE双击打开requirements.txt,然后把其中的“gradio~=3.39”修改成“gradio==3.39”

4、加好保存后,运行下面脚本:

pip install -r requirements.txt

5、git 下载本地模型

从modelscope上git下载模型,一个速度快,而且也不会因为网络问题下载不下来

git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

6、修改变量路径并启用
有2个文件需要修改变量路径,一个是basic_demo下的“web_demo.py”,另一个是chatgm3-6b下的“config.json”,都是把默认的“THUDM/”修改为“/mnt/workspace/ChatGLM3/”(就是修改为chatglm3-6b所在的本地目录)
这里的修改,可以使用vim,也可以在WEBIDE中直接左边栏双击打开文件修改(推荐)

7、运行下列代码启动web_demo.py

python /mnt/workspace/ChatGLM3/basic_demo/web_demo.py

点击第二个url跳转后就可以进行对话了。如下图所示
在这里插入图片描述

二、Chatglm2-6b+langchain部署本地知识库

借鉴网页1

借鉴网页2
大家也可以用上面部署的Chatglm3-6b模型结合langchain进行搭建,效果差不多。

先创建实例:A10,镜像在官方镜像里面选pytorch-develop:1.12-cpu-py39-ubuntu20.04

之前用镜像url输入地区url和选了官方镜像里面的*modelscope:*相关的镜像都因为版本之类的原因报错了。
更新一下:

apt-get update
apt-get install git-lfs 
git init
git lfs install 

接着下载好相关的模型和源码:

目录结构参考:
在这里插入图片描述
/mnt/workspace目录下安装,测试了一下用embedding模型为:m3e-base,进行初始化知识库的时候不会报错

git clone https://github.com/THUDM/ChatGLM2-6B.git
git clone https://www.modelscope.cn/ZhipuAI/chatglm2-6b.git
#git clone https://github.com/chatchat-space/Langchain-Chatchat.git 这两个是一样的不过下载的文件夹名字不一样
git clone https://github.com/imClumsyPanda/langchain-ChatGLM.git
cd langchain-ChatGLM
git clone https://www.modelscope.cn/xrunda/m3e-base.git
git clone https://www.modelscope.cn/thomas/text2vec-base-chinese.git

该网站有许多模型可以下载,因为现在好像没办法在https://huggingface.co/下载模型了,国内推荐在modelscope里面下载。

分别在/ChatGLM2-6B 和/langchain-ChatGLM目录下执行pip install –r requirements.txt

安装依赖。

修改模型对应路径:

1.chatglm2-6b:

chatglm2-6b模型在目录的config.json文件中修改"_name_or_path"

在这里插入图片描述

2.ChatGLM2-6B:

web_demo.pyweb_demo2.py中都把tokenizermodel的路径修改为本地chatlm2-6b的路径

在这里插入图片描述

3.langchain-ChatGLM:

  • 修改configs目录下的文件后面的.example都去掉

在这里插入图片描述

  • 修改model_config.py
# 01.仅指定 chatglm2-6b
LLM_MODELS = ["chatglm2-6b", ]# 02.指定为 空
ONLINE_LLM_MODEL = { }# 03.仅指定 text2vec-base-chinese chatglm2-6b
MODEL_PATH = {
"embed_model": {# 我们使用的embedding模型为:m3e-base"m3e-base":"/mnt/workspace/langchain-ChatGLM/m3e-base","text2vec-base-chinese": "/mnt/workspace/langchain-ChatGLM/text2vec-base-chinese",},"llm_model": {# 仅指定 这一个"chatglm2-6b": "/mnt/workspace/chatglm2-6b",},
}# 04.仅指定 chatglm2
SUPPORT_AGENT_MODEL = ["chatglm2",
]
  • 修改server_config.py
FSCHAT_MODEL_WORKERS = {# 所有模型共用的默认配置,可在模型专项配置中进行覆盖。"default": {"host": DEFAULT_BIND_HOST,"port": 20002,"device": LLM_DEVICE,"infer_turbo": False,}
}

安装需要的包
在这里插入图片描述

在这里插入图片描述

pip install jq
pip install streamlit_modal

创建知识库

python init_database.py --recreate-vs

等待几分钟出来下图,表示知识库创建成功,后面才能成功上传文件,之前有几次都是没创建成功,报错了,然后在网上查了一下,可能是因为之前在modelscope上面下载的embedding模型不全之类的,所以换成m3e-base就出来下面的各种进度条了。
在这里插入图片描述

执行私有库模型

python startup.py -a

点击执行后的网址就出来了:

在这里插入图片描述
可以点击【知识库管理】,上传文件,然后切换到知识库对话,如下图所示:
在这里插入图片描述
在这里插入图片描述
知识库问答例子:

问题:什么是RAGassistant avatar
RAG(Retrieval Augmented Generation)是一种结合了检索和生成技术的语言模型,旨在为自然语言处理任务提供更好的性能和可解释性。它通过从大规模文本数据集中检索有关的信息,并利用这些信息来生成更具体的回答,从而实现更好的检索性和更丰富的生成性。RAG 通常由数据提取、数据清洗、索引创建、检索、自动排序和 LLM 归纳生成等组成。其中,数据提取包括从文本、语音、图像等多模态场景中提取数据,数据清洗包括去除标点符号、停用词等,索引创建用于快速检索,检索包括在原始数据上进行查询并返回相关的答案,自动排序是对查询结果进行排序,LLM 归纳生成则是由语言模型生成更加详细的回答。RAG 的主要优点是在自然语言处理任务中提高了检索和生成任务的性能,同时提供了更好的可解释性。它适用于多种自然语言处理任务,如问答系统、对话系统等。知识库匹配结果出处 [1] RAG大模型.docxRAG不仅仅面向文本,它还可以面向语音、视频和图像等多模态场景,只要可以embedding的内容就可以 RAG架构 我喜欢把RAG——Retrieval Augmented Generation理解为Retrieval And Generation,也就是检索与生成,在加上一个数据向量和索引的工作,我们对RAG就可以总概方式地理解为“索引、检索和生成”。 以下就是RAG的主要组成,依次是数据提取——embedding(向量化)——创建索引——检索——自动排序(Rerank)——LLM归纳生成。当然这里少了使用环节,我们暂时先忽略用户提问的环节。 RAG技术细节概览 在技术细节上,我们还可以分成更细的组成。 一、数据索引 数据提取 数据清洗:包括数据Loader,提取PDF、word、markdown以及数据库和API等;出处 [2] RAG大模型.docx它的主要作用是生成(最终的答案),但是它先做了对现有文档的检索,而不是任由LLM来发挥。下面我提供一个浅显的例子来说明一下RAG: 假设一个工程师需要从厚厚的《业务操作手册》中找到相关的业务知识来帮助他完成工作,那么他有三种方式可以使用: 最原始:他可以去翻阅这么厚厚的《业务操作手册》,或者用去查询这么《业务操作手册》的电子版,然后认真阅读掌握操作方法。当然,如果他碰到的业务知识比较复杂,他就需要自己去综合这本书上面的多个章节的内容,并融会贯通;出处 [3] RAG大模型.docxhttps://blog.csdn.net/weixin_54338498/article/details/133024348检索增强生成 RAG 在问答和对话的场景下,通常可以通过检索和生成两种方式得到一个回复。检索式回复是在外部知识库中检索出满意的回复,较为可靠和可控,但回复缺乏多样性;而生成式回复则依赖于强大的语言模型中储存的内部知识,不可控,解释性差,但能生成更丰富的回复。把检索和生成结合起来,Facebook AI research 联合 UCL 和纽约大学于 2020 年提出:外部知识检索加持下的生成模型,Retrieval-Augmented Generation (RAG) 检索增强生成。 检索:这是指系统搜索庞大的数据库或存储库以查找相关信息的过程。 生成:检索后,系统生成类似人类的文本,整合获取的数据。

使用的时候内存消耗比较大

在这里插入图片描述

遗留问题:
在执行:
创建知识库

python init_database.py --recreate-vs

的时候有一个error,不过不影响后面的对话过程,目前还没去仔细研究这个问题:

ERROR: RuntimeError: 从文件 samples/Langchain-Chatchat/knowledge_base/samples/content/test_files/langchain-ChatGLM_closed.csv 加载文档时出错:Error loading Langchain-Chatchat/knowledge_base/samples/content/test_files/langchain-ChatGLM_closed.csv

可能是读不了csv文件?


三、Tips

1、该网站有许多模型可以下载,因为现在好像没办法在huggle.co下载模型了,国内推荐在modelscope里面下载。

2、当我们国内的网打不开一些模型网站时,可以先用魔法,download下来到本地,然后上传到gitee再git clone借鉴网站

3、pip install的时候建议后面加清华源,一个是速度快,还有一个是能避免一些错误(虽然不知道为什么)

pip install 安装包名字 -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn //清华大学

pip install 安装包名字 -i http://[pypi](https://so.csdn.net/so/search?q=pypi&spm=1001.2101.3001.7020).doubanio.com/simple/ --trusted-host pypi.doubanio.com //豆瓣镜像网站

四、总结

不管怎么样首先还是要自己去多实践,实践出真知,我也创建了好几个实例,用了不同环境,修改方法才慢慢摸索出来,而且试多了也大概知道一些错误怎么修改还有修改原因之类的,所以越到后面越熟练了,我做这个部署也有几天了,每天看不同的网页,阿里云、本地都有尝试(本地可能是电脑太垃了搞不起来,毕竟莫得独显),成功的时候还是比较欣慰的,所以大家一定要坚持,很多东西尤其是没试过的东西很难一蹴而就,往往需要我们不断尝试累积经验。

之后去再看看本地知识库搭建,然后了解transformer相关内容。
更新:完成本地知识库搭建,不过这只是简单上传文件搜索整合,后面具体微调训练还得继续学习其他文章,调试代码,先告一段落吧,本周重心放在Transformer上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/218646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

被央视报道过的AIGC产品-贝塔创作(BetaCreator)使用指南

产品地址:betacreator.com 真人图 人台图 商品图 商品变色 建议使用浅色服装进行变色,效果更好 如果没有浅色服装,可以先把服装颜色变为白色

视频剪辑必备的6个免费素材网站

视频剪辑需要用到很多音效、视频、图片等素材,下面我就分享几个剪辑必备的免费视频素材网站,赶紧收藏起来~ 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYwNDUx 菜鸟图库虽然是个设计素材网站,但除了设计类素材之外还有很多视频、…

python学习:浅拷贝与深拷贝详解

copy 一、 & is二、浅拷贝 & 深拷贝(一)、浅拷贝(二)、深拷贝 三、问题 一、’ ’ & ‘is’ ’ 和is是python对象比较常用的两种方式,简单来说,‘ ‘操作符比较对象之间的值是否相等,如 a b 而’is’操作符比较的是对象的身份标识是否相等,即它们是否是同一个…

Linux系统解决“Key was rejected by service”

Linux系统下加载驱动模块出现如上错误提示的原因为:此驱动未经过签名。 方法一、关闭Secure Boot 如果是物理机,需要开机进入BIOS,找到“Secure Boot”的选项,然后关闭。 如果是虚拟机,可以打开虚拟设置&#xff0c…

快速准确翻译文件夹名:英文翻译成中文,文件夹批量重命名的技巧

在处理大量文件夹时,可能会遇到要将英文文件夹名翻译成中文的情况。同时也可能要批量重命名这些文件夹。今天一起来看下云炫文件管理器如何快速准确翻译文件夹名,进行批量重命名的技巧。 下图是文件夹名翻译前后的效果图。 英文文件夹名批量翻译成中文…

3Dmax快捷键大全,让你的创作飞起来!附赠3dmax工具箱插件,快来收藏吧!

你是否曾经在3Dmax中因为繁琐的操作而感到困扰? 今天,我将为大家带来一份精心整理的3Dmax常用快捷键宝典,让你在建模、材质编辑、动画制作等各个方面都能游刃有余,让你的创作飞起来!! 💡 选择与…

27. 深度学习进阶 - 为什么RNN

文章目录 一个柯基的例子为什么RNN or CNN Hi,你好。我是茶桁。 这节课开始,我们将会讲一个比较重要的一种神经网络,它对应了咱们整个生活中很多类型的一种问题结构,它就是咱们的RNN网络。 咱们首先回忆一下,上节课咱…

【计算机网络】TCP|IP协议

目录 前言 什么是TCP/IP协议? TCP/IP协议的层次结构 TCP/IP协议的工作原理 TCP/IP协议的重要性 结语 前言 TCP/IP协议是当今互联网世界中最重要的网络协议之一,它是网络通信的基石,为数据在网络中的传输提供了可靠性和有效性。本文将深…

python编程需要的电脑配置,python编程用什么电脑

大家好,小编来为大家解答以下问题,python编程对笔记本电脑配置的要求,python编程对电脑配置的要求有哪些,现在让我们一起来看看吧! 学习python编程需要什么配置的电脑 简单的来讲,Python的话普通电脑就可以…

SAP UI5 walkthrough step1 hello word

这里我用的VS Studio 来进行本地化学习 关于SAP UI5是啥,我就不再赘述了,另外还有VS Studio 的安装,请提前做好准备 下面我们直接进入正文 1.首先在你的本地新建一个文件夹,此处我命名为:walkthrough 2.在VS中打开…

【数据结构与算法】JavaScript实现图结构

文章目录 一、图论1.1.图的简介1.2.图的表示邻接矩阵邻接表 二、封装图结构2.1.添加字典类和队列类2.2.创建图类2.3.添加顶点与边2.4.转换为字符串输出2.5.图的遍历广度优先搜索深度优先搜索 2.6.完整实现 一、图论 1.1.图的简介 什么是图? 图结构是一种与树结构…

Java中的反射

反射 Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机, Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. 反射相关的概念 2. 反射的…

HarmonyOS4.0从零开始的开发教程12给您的应用添加弹窗

HarmonyOS(十)给您的应用添加弹窗 概述 在我们日常使用应用的时候,可能会进行一些敏感的操作,比如删除联系人,这时候我们给应用添加弹窗来提示用户是否需要执行该操作,如下图所示: 弹窗是一种…

AI全栈大模型工程师(二十八)如何做好算法备案

互联网信息服务算法 什么情况下要备案? 对于B2B业务,不需要备案。 但在B2C领域,一切要视具体情况而定。 如果我们自主训练大型模型,这是必要的。 但如果是基于第三方模型提供的服务,建议选择那些已获得备案并且具有较大…

Python脚本打包

一.Windows操作系统 Python脚本打包 1.cmd窗口执行如下指令:pip install pyinstaller C:\Users\ZhuQing>pip install pyinstaller2.执行以下指令验证pyinstaller是否安装成功(pyinstaller) C:\Users\ZhuQing>pyinstaller3.被打包程序…

frp配置内网穿透步骤

frp配置内网穿透步骤 1.环境准备1.1 云服务器1.2 frp包 2. frp安装2.1 server服务端设置2.2 客户端配置 实现目标通过云服务器ip:8080访问内网电脑启动的web项目localhost:8080 1.环境准备 1.1 云服务器 服务器安装centos7.9, 安全组入口方向开通 7500 7000 8080 8060端口 …

DPDK是什么?DPDK网卡更有优势吗?

近年来,随着数字化的推进,上云成为企业数字化建设的重要指标,用云程度持续深入。可以说,云时代已经来临。 应云而生的DPDK 云时代的一个典型特征,是数据的高速增长。据华为GIV数据,预计2025年全球数据量将…

【力扣】2.两数相加

2.两数相加 这是第二题,还行豁~。 题解: 首先就是对题目的理解。这里你要知道两链表中数字的排列都是逆序的,也就是说示例一中2-4-3他原本的数字应该是342。同理可得下面链表的意思,二者相加所得到的结果也是逆序的,…

基于Java8构建Docke镜像

基于Java8构建Docke镜像 搜索java8安装包 docker search java8 --no-trunc , --no-trunc展开描述信息 选择拉取 docker pull docker.io/mykro/java8-jre,为了减少磁盘占用,选择jre版本基础镜像 在宿主机创建文件夹iot,并把所需…

python笔记(1)安装环境

1,官网下载自己电脑位数的安装包 https://www.python.org/downloads/windows/ install时勾选中add to path,把路径自动添加到环境变量 安装pycharm就不讲了 安装后选中自己的python安装包 file-> setting->project:yourprojectname ->pyt…