跳转至

5.1 项目整体简介

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

学习目标

  • 了解项目背景
  • 理解ChatGLM-6B模型架构原理
  • 安装项目必备的工具包
  • 了解整体项目架构

1. 项目简介

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

2. ChatGLM-6B模型

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。

2.2 模型配置(6B)

配置 数据
参数 6.2B
隐藏层维度 4096
层数 28
注意力头数 32
训练数据 1T
词表大小 130528
最大长度 2048

2.3 硬件要求(官网介绍)

量化等级 最低GPU显存(推理) 最低GPU显存(高效参数微调)
FP16(无量化) 13GB 14GB
INT8 10GB 9GB
INT4 6GB 7GB

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

2.4 模型特点

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

3. 环境配置

3.1 基础环境配置:

本次环境依赖于趋动云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元/小时

3.2 安装依赖包:

  1. 创建一个虚拟环境,您可以把 llm_env 修改为任意你想要新建的环境名称:
conda create -n llm_env python=3.9
  1. 激活新建虚拟环境并安装响应的依赖包:
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文件内容如上所示


4. 项目架构

项目架构流程图:

项目代码架构图:

小结总结

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