2022年8月,清华背景的智谱AI基于GLM框架,正式推出拥有1300亿参数的中英双语稠密模型 GLM-130B(论文地址、代码地址,论文解读之一,GLM-130B is trained on a cluster of 96 DGX-A100 GPU (8×40G) servers with a 60-day,可以较好的支持2048个token的上下文窗口)
其在一些任务上的表现优于GPT3-175B,是国内与2020年5月的GPT3在综合能力上差不多的模型之一(即便放到23年年初也并不多),这是它的一些重要特点
1.3 ChatGLM-6B的训练框架与部署步骤
1.3.1 ChatGLM-6B的训练框架
ChatGLM-6B(介绍页面、代码地址),是智谱 AI 开源、支持中英双语的对话语言模型,其
基于General Language Model(GLM)架构,具有62亿参数,无量化下占用显存13G
INT8量化级别下支持在单张11G显存的 2080Ti 上进行推理使用(因为INT8下占用显存8G)
而INT4量化级别下部署的话最低只需 6GB显存(另基于 P-Tuning v2 的高效参数微调方法的话,在INT4 下最低只需 7GB 显存即可启动微调)
INT8量化是一种将深度学习模型中的权重和激活值从32位浮点数(FP32)减少到8位整数(INT8)的技术。这种技术可以降低模型的内存占用和计算复杂度,从而减少计算资源需求,提高推理速度,同时降低能耗
量化的过程通常包括以下几个步骤:
1 量化范围选择:确定权重和激活值的最小值和最大值
2 量化映射:根据范围将32位浮点数映射到8位整数
3 反量化:将8位整数转换回浮点数,用于计算
ChatGLM-6B参考了 ChatGPT 的训练思路,在千亿基座模型GLM-130B中注入了代码预训练,通过监督微调(Supervised Fine-Tuning)、反馈自助(Feedback Bootstrap)、人类反馈强化学习(Reinforcement Learning from Human Feedback)等方式等技术实现人类意图对齐,并针对中文问答和对话进行优化
以下是具体的部署过程:
1、硬件配置
操作系统:Ubuntu_64(ubuntu22.04.3)
GPU:4050
显存:16G
2、配置环境
建议最好自己新建一个conda环境
pip install -r requirements.txt
(ChatGLM-6B/requirements.txt at main · THUDM/ChatGLM-6B · GitHub)
注意torch版本,,和transformers版本
使用的pip命令安装的,命令如下:
后面补上
3、下载项目仓库
git clone https://github.com/THUDM/ChatGLM-6B(这里github不行就换个地方我后面补上)
cd ChatGLM-6B
4、下载ChatGLM-6B模型文件
文件可以从这里下载(点击中间的下载按钮即可):https://huggingface.co/THUDM/chatglm-6b
这里都下载在了/data/sim_chatgpt/chatglm-6b下,在后面执行代码的时候需要将文件中的模型文件路径改为自己的
5、推理与部署
可运行的方式有多种
如果在本地运行,可以直接执行代码,或者使用命令行方式运行
如果想让别人公网访问,可以用下面两种方式:一种是基于Gradio,一种是基于streamlit
注意:运行代码前请检查模型文件路径是否正确,这里均改为了/data/chatglm-6b
代码运行demo
运行仓库中 cli_demo.py:
python cli_demo.py
程序会在命令行中进行交互式的对话,在命令行中输入指示并回车即可生成回复,输入 clear 可以清空对话历史,输入 stop 终止程序
基于Gradio的网页版demo
运行web_demo.py即可(注意可以设置share=True,便于公网访问):python web_demo.py(注意运行前确认下模型文件路径)
基于streamlit网页版 Demo
pip install streamlit
pip install streamlit-chat
streamlit run web_demo2.py --server.port 6006(可以将6006端口放出,便于公网访问)
默认情况下,模型以 FP16 精度加载,运行上述代码需要大概 13GB 显存。如果显存有限,还可以考虑模型量化,目前支持4/8 bit 量化
此外,可尝试部署GLM团队130B参数的ChatGLM
1.4 微调ChatGLM-6B:针对各种数据集通过LoRA或P-Tuning v2
后面补充
参考:ChatGLM两代的部署/微调/实现:从基座GLM、ChatGLM的LoRA/P-Tuning微调、6B源码解读到ChatGLM2的微调与实现_chatglm微调-CSDN博客