跳转到内容

项目整体介绍

基于ChatGLM-6B完成多任务项目介绍

Section titled “基于ChatGLM-6B完成多任务项目介绍”
  • 了解项目背景
  • 理解ChatGLM-6B模型架构原理
  • 安装项目必备的工具包
  • 了解整体项目架构

LLM(Large Language Model)通常拥有大量的先验知识,使得其在许多自然语言处理任务上都有着不错的性能。但,想要直接利用 LLM 完成一些任务会存在一些答案解析上的困难,如规范化输出格式,严格服从输入信息等。因此,在这个项目中我们对大模型 ChatGLM-6B 进行 Finetune,使其能够更好的对齐我们所需要的输出格式。

ChatGLM-6B 是清华大学提出的一个开源、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。该模型使用了和 ChatGPT 相似的技术,经过约 1T 标识符的中英双语训练(中英文比例为 1:1),辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答(目前中文支持最好)。

相比原始Decoder模块,ChatGLM-6B模型结构有如下改动点:

  • embedding 层梯度缩减:为了提升训练稳定性,减小了 embedding 层的梯度。梯度缩减的效果相当于把 embedding 层的梯度缩小了 10 倍,减小了梯度的范数。
  • layer normalization:采用了基于 Deep Norm 的 post layer norm。
  • 激活函数:替换ReLU激活函数采用了 GeGLU 激活函数。
  • 位置编码:去除了绝对位置编码,采用了旋转位置编码 RoPE。
配置数据
参数6.2B
隐藏层维度4096
层数28
注意力头数32
训练数据1T
词表大小130528
最大长度2048

量化等级最低GPU显存(推理)最低GPU显存(高效参数微调)
FP16(无量化)13GB14GB
INT810GB9GB
INT46GB7GB

注意:显存的占用除了跟模型参数大小有关系外,还和文本支持最大长度有关

  • 优点
  • 1.较低的部署门槛: INT4 精度下,只需6GB显存,使得 ChatGLM-6B 可以部署在消费级显卡上进行推理。
  • 2.更长的序列长度: 相比 GLM-10B(序列长度1024),ChatGLM2-6B 序列长度达32K,支持更长对话和应用。
  • 人类类意图对齐训练
  • 缺点:
  • 模型容量小,相对较弱的模型记忆和语言能力。
  • 较弱的多轮对话能力。

本次环境依赖于趋动云https://platform.virtaicloud.com/算力

  • 操作系统: CentOS 7
  • CPUs: 8 core(s),内存:48G
  • GPUs: 1卡, A800, 80GB GPUs
  • Python: 3.9
  • Pytorh: 1.11.0
  • Cuda: 11.3.1
  • 价格:13.58元/小时
  1. 创建一个虚拟环境,您可以把 llm_env 修改为任意你想要新建的环境名称:
Terminal window
conda create -n llm_env python=3.9
  1. 激活新建虚拟环境并安装响应的依赖包:
Terminal window
conda activate llm_env
pip install -r requirements.txt
protobuf>=3.19.5,<3.20.1
transformers>=4.26.1
icetk
cpm_kernels
streamlit==1.17.0
matplotlib
datasets==2.10.1
accelerate==0.17.1
packaging>=20.0,
psutil,
pyyaml,
peft

requirements.txt文件内容如上所示


项目架构流程图:

项目代码架构图:

本章节主要介绍了项目的背景、项目的适配环境以及项目的整体架构流程,以此来方便我们整个项目的开发。