langchain-chatchat代码使用

有用的链接

langchian-chatchat代码结构

  • web页面:http://127.0.0.1:8501/
  • 后端接口:http://127.0.0.1:7861/docs
    在这里插入图片描述

部署

按照readme说的来就好

  • 0.2.10版本有点bug,使用0.2.9版本。

模型

  • Qwen 14B
  • Qwen 72B的int4模型
  • Qwen 34B的1.5版本
  • 在config/model_config.py中添加新模型

测试(Qwen 14B)

GPU占用在30G左右

问题1:一个文件,怎么样才能让大模型检索得到

1. 调整文本分割(默认阈值为0.60)

  • 单段文本最大长度:100
    相邻文本重合长度:50
    结论:能检索到
    知识库效果
    在这里插入图片描述
    知识库问答效果:
    在这里插入图片描述
  • 单段文本最大长度:250
    相邻文本重合长度:50
    结论:不能检索到
    知识库效果
    在这里插入图片描述
    知识库问答效果
    在这里插入图片描述

2. 调整文本匹配阈值(默认文本分割为250、50)

问答效果

  • 阈值 1.5
    结论:能找到
    在这里插入图片描述

问题2:加了扰动之后,模型是否还能找到

加扰动后,知识库效果(单段最多100,重叠50)
原因被藏在很多无关内容中
在这里插入图片描述
问答效果

  • 阈值 0.6
    结论:找不到
    在这里插入图片描述
  • 阈值 1.78
    结论:能回答
    在这里插入图片描述

问题3:读取表格的能力

1.能否对表格做问答

知识库效果
在这里插入图片描述
问答效果

  • 阈值 0.60
    不能回答
    在这里插入图片描述
  • 阈值:1.78
    能回答
    在这里插入图片描述

2.能否对表格做总结

知识库效果
在这里插入图片描述
问答效果

  • 阈值0.60
    结论:不能总结
    在这里插入图片描述

  • 阈值 1.78
    结论:能总结
    在这里插入图片描述

3.更复杂一些的表格

知识库效果(250、50)
在这里插入图片描述
问答效果

  • 阈值 1.78
    结论:能总结
    在这里插入图片描述

4.表格文件名是否有影响(默认阈值1.78)

结论:没有影响

  • 情况1
    知识库
    在这里插入图片描述
    知识库问答效果
    在这里插入图片描述
  • 情况2
    知识库
    在这里插入图片描述
    知识库问答效果
    在这里插入图片描述

5.表格翻转是否会还能回答(默认阈值1.78)

结论:能回答
在这里插入图片描述

6.长表格、复杂表格问答(默认阈值1.78)

  1. 长表格
    不能回答正确,对学生总数类的问题回答错误可能是由于能拿到的信息条数有限,得不到所有数据
  • 提问1:表中一共多少名同学
    将信息条数调至最大(20条)回答仍错误
    在这里插入图片描述
    在这里插入图片描述
  • 提问2:xxx同学成绩是多少?
    回答正确
    在这里插入图片描述
  1. 复杂表格
    不能找到答案
  • 提问1:课程名称是什么?教师是谁?总结这门课情况
    在这里插入图片描述
  • 提问2:任课教师是谁?
    在这里插入图片描述
  • 提问3:这门课叫什么?
    在这里插入图片描述
    在这里插入图片描述
  • 提问4:帮我总结一下这个班的情况,例如:班级一共多少人、平均分是多少、期中期末表现如何
    在这里插入图片描述

问题4:知识库对话模式下,支持指定文件名?

结论:不行
在这里插入图片描述

问题5:文件对话模式下,支持文件名?

1. 指定文件名去做总结

结论:不支持在这里插入图片描述

2. 指定文中某一段

结论:不支持
在这里插入图片描述

问题6:Qwen是否具备latex读取能力

1. latex形式的图

一个折线图,横坐标是人名,纵坐标是成绩
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}

\begin{document}

\begin{figure}[h]
\centering
\begin{tikzpicture}
\begin{axis}[
    width=12cm,
    height=8cm,
    xlabel={姓名},
    ylabel={总成绩},
    xtick=data,
    xticklabels={
        侯景文,
        史婕,
        樊晓昊,
        林家輝,
        王玉琛,
        丁培隆,
        俞子豪,
        李克伟,
        李其乐,
        殷亦达,
        陈波宇,
        阿卜杜热黑木·麦麦提托合提,
        白亦芃,
        蔡浩彬,
        蔡明洋,
        陈楚彬,
        戴易彤,
        杜恩泽,
        付明鋆,
        高豪龙
    },
    x tick label style={rotate=45, anchor=east, align=center},
    ytick={0,20,...,100},
    ymin=0,
    ymax=100,
    grid=major,
    ymajorgrids=true,
    xticklabel style={font=\footnotesize}
]

\addplot[mark=*, color=blue] coordinates {
    (侯景文, 61)
    (史婕, 55)
    (樊晓昊, 0)
    (林家輝, 66)
    (王玉琛, 87)
    (丁培隆, 69)
    (俞子豪, 60)
    (李克伟, 0)
    (李其乐, 91)
    (殷亦达, 0)
    (陈波宇, 61)
    (阿卜杜热黑木·麦麦提托合提, 66)
    (白亦芃, 89)
    (蔡浩彬, 76)
    (蔡明洋, 73)
    (陈楚彬, 72)
    (戴易彤, 82)
    (杜恩泽, 81)
    (付明鋆, 94)
    (高豪龙, 80)
};

\end{axis}
\end{tikzpicture}
\caption{总成绩折线图}
\end{figure}

\end{document}

  • 单项图问答
    在这里插入图片描述
  • 整体图信息
    在这里插入图片描述

2. latex形式的表

\documentclass{article}
\usepackage{array}

\begin{document}

\begin{table}[h]
\centering
\begin{tabular}{|c|c|c|c|c|c|c|c|}
\hline
学号 & 姓名 & 班级 & 平时成绩 & 期中成绩 & 期末成绩 & 总成绩 & 成绩标志 \\
\hline
2015210123 & 侯景文 & 2019211128 & 83 & 52 & 51 & 61 &  \\
2016210233 & 史婕 & 2019211111 & 87 & 61 & 27 & 55 &  \\
2017210177 & 樊晓昊 & 2018211121 &  &  &  & 0 &  \\
2019210738 & 林家輝 & 2019211125 & 77 & 62 & 60 & 66 &  \\
2019211125 & 王玉琛 & 2019211128 & 97 & 100 & 70 & 87 &  \\
2019211702 & 丁培隆 & 2019211126 & 87 & 75 & 52 & 69 &  \\
2019211762 & 俞子豪 & 2019211105 & 57 & 75 & 52 & 60 &  \\
2019211852 & 李克伟 & 2019211127 &  &  &  & 0 &  \\
2019212204 & 李其乐 & 2020211102 & 97 & 94 & 83 & 91 &  \\
2019212234 & 殷亦达 & 2019211119 &  &  &  & 0 &  \\
2019212520 & 陈波宇 & 2019211123 & 73 & 74 & 41 & 61 &  \\
2020210001 & 阿卜杜热黑木·麦麦提托合提 & 2020211101 & 93 & 50 & 58 & 66 &  \\
2020210002 & 白亦芃 & 2020211101 & 97 & 91 & 82 & 89 &  \\
2020210003 & 蔡浩彬 & 2020211101 & 93 & 68 & 69 & 76 &  \\
2020210004 & 蔡明洋 & 2020211101 & 97 & 71 & 57 & 73 &  \\
2020210005 & 陈楚彬 & 2020211101 & 90 & 88 & 46 & 72 &  \\
2020210006 & 戴易彤 & 2020211101 & 90 & 82 & 75 & 82 &  \\
2020210007 & 杜恩泽 & 2020211101 & 97 & 82 & 68 & 81 &  \\
2020210008 & 付明鋆 & 2020211101 & 93 & 96 & 93 & 94 &  \\
2020210009 & 高豪龙 & 2020211101 & 93 & 78 & 71 & 80 &  \\
\hline
\end{tabular}
\end{table}

\end{document}

  • 理解latex
    在这里插入图片描述
  • 单项表问答
    在这里插入图片描述
  • 整体表问答
    在这里插入图片描述

问题7:能否根据知识库中的信息出题目

1.纯文本题

  • 本地langchain-chatchat(Qwen-14B)
    在这里插入图片描述
    在这里插入图片描述
  • 百川大模型
    在这里插入图片描述
    在这里插入图片描述

2.带图的问题

  • 本地langchain-chatchat(Qwen-14B)
    不能够正确显示出图像
    在这里插入图片描述
  • 百川大模型
    不能够正确显示出图像
    在这里插入图片描述
  • chatglm大模型
    可以显示图像,但明显图像与文字描述不相符
    在这里插入图片描述
  • Qwen-VL-Plus
    千问的多模态大模型,可接受图像输入,无法输出图像
    在这里插入图片描述
  • Qwen2-7B-Instruct
    无法正确显示图像
    在这里插入图片描述

3.回答中带图

  • 本地langchain-chatchat(Qwen-14B)
    无法显示图像
    在这里插入图片描述
  • 本地langchain-chatchat(Qwen-14B)
    在这里插入图片描述
  • 本地langchain-chatchat(Qwen-14B)
    把word中的图片单独拿出来,上传到知识库中
    在这里插入图片描述
  • 百川大模型
    无法显示图像
    在这里插入图片描述
  • chatglm大模型
    能够生成带图的答案,但图文不符
    在这里插入图片描述
    在这里插入图片描述
  • Qwen-VL-Plus
    千问的多模态模型,无法绘制图像
    在这里插入图片描述
    在这里插入图片描述
  • Qwen2-7B-Instruct
    在这里插入图片描述
    在这里插入图片描述

测试(Qwen 32B 1.5)

加扰动的文档问答

能回答
速度特别。GPU占用较
在这里插入图片描述

表格问答

调整阈值后可以回答,但是速度特别。GPU占用较
在这里插入图片描述

测试 (Qwen 72B Int4)

加扰动的文档问答

能回答
速度特别(3分钟)。GPU占用较
在这里插入图片描述

表格问答

调整阈值后可以回答,但是速度特别。GPU占用较
在这里插入图片描述

测试(Qwen 14B 1.5)

测试参考Qwen 14B,回答效果差不多,1.5版本GPU占用33G左右
在这里插入图片描述

双卡A6000运行langchain-chatchat(Qwen1.5-32B)

未配置多卡加载时

加载模型时,内存占满了,GPU没用。加载完成后,内存降下来,显存增加
一张显卡跑满,另外一张显卡没用到。
回答很慢
在这里插入图片描述
在这里插入图片描述

如何配置langchain-chatchat的多卡加载

https://github.com/chatchat-space/Langchain-Chatchat/wiki/%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2#%E5%A4%9A%E5%8D%A1%E5%8A%A0%E8%BD%BD
在这里插入图片描述

在这里插入图片描述

配置双卡加载后

两张GPU均使用
回答速度提升
在这里插入图片描述
在这里插入图片描述

autoAWQ量化

安装

pip install autoawq
  • 在我的langchain-chachat虚拟环境中,安装0.2.5的版本是完全没有问题的
    安装0.2.0版本就会报错说找不到triton模块,并且当我尝试自己安装triton时,安不上。
    原因:在0.2.3之前需要triton,而它只有linux下能用,所window下安装不了0.2.3之前的版本
    在这里插入图片描述

使用

量化模型的代码

from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer

model_path = '../model/14B'
quant_path = './qunanted_14B'
quant_config = { "zero_point": True, "q_group_size": 128, "w_bit": 4, "version": "GEMM" }

# Load model
model = AutoAWQForCausalLM.from_pretrained(
    model_path, **{"low_cpu_mem_usage": True, "use_cache": False}
)
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)

# Quantize
model.quantize(tokenizer, quant_config=quant_config)

# Save quantized model
model.save_quantized(quant_path)
tokenizer.save_pretrained(quant_path)

print(f'Model is quantized and saved at "{quant_path}"')

报错

  1. no module named transformer.gmma
    autoawq与transformer的版本不匹配,autoaqw要transformers-4.40.1。
    解决办法:先卸载autoawq,再卸载transformer,然后再pip install autoawq
  2. ConnectionError: Couldn't reach 'mit-han-lab/pile-val-backup' on the Hub (ProxyError)
    这是因为连不上hugging face,把数据集下载下来放到mit-han-lab\pile-val-backup文件夹下,定位到报错的地方修改数据集地址:
# dataset = load_dataset("mit-han-lab/pile-val-backup", split="validation")
dataset = load_dataset(r"D:\zm\LLM\Qwen\Quant\mit-han-lab\pile-val-backup", split="validation")

量化中
在这里插入图片描述

使用量化模型

发现一个问题:量化 后的模型虽然GPU占用少了,但是回答却是1个字1个字蹦出来的,为什么?

  • autoawq量化的14B
    在这里插入图片描述
  • autoawq量化的72B-1.5
    在这里插入图片描述
    回答问题时,很慢。一个一个字蹦出来,大约10s钟出1个字这种
    在这里插入图片描述
  • 使用量化的32B-1.5
    在这里插入图片描述
    对话时,虽然显存占用少,但是回答却很慢,5秒1个字
    在这里插入图片描述
  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值