文章目录
Chatglm2-6B学习与实践笔记
@(莹莹的NLP)
Chatglm2-6B简介
- Chatglm2-6B是Chatglm-6B的二代对话模型,除了拥有第一代对话流畅、部署门槛低的特性之外,还有以下几个优点:1.更强大的性能,在各个测评集上均有较大幅度的提升。2.可以接受更长的上下文,基座模型由chatglm-6b的2k提升至了32k,并在训练的过程中采用的是8k的对话上下文。3.更高效的推理,将Multi-Head Attention替换成了Multi-Query Attention,降低了显存占用,且加快了推理的速度。4.协议更加的开放,在取得许可的情况下,可进行商用。
Chatglm2-6B实践
Chatglm2-6B运行环境部署
- 由于之前已经搭建好的Chatglm-6B的环境,就直接在这个环境的基础上进行Chatglm2-6B的部署。
Chatglm2-6B模型权重文件下载地址
- 模型下载地址:https://www.huggingface.co/THUDM/chatglm2-6b/tree/main。因为使用的服务器不能联网,所有采用离线加载的形式,手动的将该链接下的files中的所有内容下载下来,在上传到服务器上去。
模型推理
代码调用的方式
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("/data/home/huangying-ghq/download/models/chatglm2-6b/", trust_remote_code=True)
model = AutoModel.from_pretrained("/data/home/huangying-ghq/download/models/chatglm2-6b/", trust_remote_code=True)
model = model.cuda(3).half().eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
print('*'*20)
response, history = model.chat(tokenizer, "年收入20万,购买寿险这类保险产品的建议有哪些呢", history=history)
print(response)
- 运行结果展示:
gradio网页版推理
-
在命令行运行:
-
在运行web_demo.py之前需要将模型路径指定成自己放置模型的路径
-
运行结果如下:
-
note :粘贴服务地址到浏览器上的时候,一直显示loading,我的服务器不能联网,还以为在下载什么东西,结果再次刷新就行了,页面就正常打开了。
streamlit网页版推理
-
在命令行运行:,运行之前同样需要将代码中的模型改为自己路径下的,否则会从huggingface上进行下载。
-
运行的界面显示:
-
note:在运行的过程中,transformer的版本为4.24,报错了,升级版本至4.30即可
#####命令行推理
- 命令行运行:
,同样,如果本地下载好了模型可以替换成自己的模型存放路径。 - 运行的效果:
#####API部署
-
命令行运行:
-
结果显示:
总结:
- streamlit界面生成回复的时候感觉要比gradio要快一些,看起来要舒服一些;
- 该项目提供了多种部署方式,非常容易上手,可快速的应用在自己的项目中,此次学习,也仅仅是把服务给搭起来,项目细节还需要进一步进行探索;
- Chatglm2-6B后续需要补知识点
- FlashAttention原理
- Multi-Query Attention原理