上图为用大模型训练酒店查询问答系统后的演示
使用大模型微调技术,通过指令跟随数据进行专有领域知识微调训练大语言模型,使它适用于特定领域下游任务。
ChatGLM模型原理
ChatGLM模型引入了一种全新的自回归空格填充的任务, 例如上图: 对原始的数据 x 1 , x 2 , x 3 , x 4 , x 5 , x 6 x_1,x_2,x_3,x_4,x_5,x_6 x1,x2,x3,x4,x5,x6,随机 m a s k mask mask了 x 3 x_3 x3和 x 5 , x 6 x_5,x_6 x5,x6,目标就是利用未 m a s k mask mask的来自回归式预测被 m a s k mask mask的信息。
ChatGLM的GLMBlock
GLMBlock是基于Transformer模型的一种变体,只有解码器。主要包含以下几个部分:
1.Layer Norm;2.Self Attention;3.GLU
微调方式:
1 LoRa :
上面是LoRa 示意图。
图中蓝色部分为预训练好的模型参数,LoRA在预训练好的模型结构旁边加入了A和B两个结构,这两个结构的参数分别初始化为高斯分布和0,那么在训练刚开始时附加的参数就是0。
在训练时只更新A、B的参数,预训练好的模型参数是固定不变的。在推断时可以利用重参数(reparametrization)思想,将AB与W合并,这样就不会在推断时引入额外的计算了。
而且对于不同的下游任务,只需要在预训练模型基础上重新训练AB就可以了,这样也能加快大模型的训练节奏。
2 P-tuning v2
上图为P-tuning v2示意图
P-tuning v2 微调方法在输入前面的每一层都加入可微调的参数。在 prefix 部分,每一层的 transformer 的 embedding 输入都需要被微调,同时,对于 prefix 部分,每一层 transformer 的输入不是从上一层输出,而是随机初始化的 embedding 作为输入。
3 RLHF
上图为RLHF整体流程
RLHF 的核心思想主要围绕第二步训练奖励模型(reward model,RM)展开。 奖励模型训练的基本思路就是利用基于人类反馈生成的人类偏好数据集,训练代表特定任务所需结果的奖励函数。第三步就是进一步利用奖励模型,通过强化学习算法近端策略优化(Proximal Policy Optimization,PPO)迭代地改进原始输入的监督微调SFT 模型,以改变其内部文本分布以优先考虑人类喜欢的序列。从某种意义上来说,奖励模型是将“人类偏好偏差”引入原始监督微调模型的一种手段。
在硬件资源有限、数据有限情况下,常用LoRa 或P-tuning微调方式
微调训练:
软硬件:电脑要有GPU,显存大于 20GB。系统Ubuntu。
训练数据:
大语言模型的微调训练数据集可以结合多种格式,包括指令跟随、多轮会话和纯文本格式。根据微调的目标和应用场景进行选择。以下是一些常见的数据集格式及其用途:
1. 指令跟随(Instruction Following)
- 格式: 数据集包含指令和相应的响应。例如,指令可能是“写一篇关于气候变化的文章”,响应则是生成的文章。
- 用途: 这种格式有助于模型学习如何根据特定指令生成内容,适用于需要遵循明确任务的场景,如问答系统、文本生成等。
2. 多轮会话(Multi-turn Dialogue)
- 格式: 数据集包含多个轮次的对话,每一轮都有用户输入和模型响应。例如,用户说“今天天气怎么样?”,模型回答“今天天气晴朗,温度大约25度。”,然后用户继续提问“明天呢?”,模型继续回答。
- 用途: 这种格式有助于模型学习如何在对话中保持上下文,适用于聊天机器人、客服系统等需要多轮交互的场景。
3. 纯文本(Plain Text)
- 格式: 数据集仅包含连续的文本,没有明确的指令或对话结构。例如,一本书的章节、新闻文章等。
- 用途: 这种格式有助于模型学习语言的通用模式和知识,适用于需要广泛语言理解的场景,如文本分类、摘要生成等。
4. 混合格式(Mixed Format)
- 格式: 数据集可能同时包含指令跟随、多轮会话和纯文本。例如,一部分数据是问答对,另一部分是多轮对话,还有一部分是纯文本。
- 用途: 这种格式有助于模型在多种任务和场景中表现良好,适用于需要广泛应用的通用语言模型。
指令跟随与多轮会话训练数据,可以用Label-Studio、H2O LLM Data Studio进行辅助数据标注。
开源数据集可以从这里选择下载:CrossWOZ/data/crosswoz/database at master · thu-coai/CrossWOZ · GitHub
上面标记处任选一种,如果要用自有数据,需要自行搜集整理。
chatglm的权重:
预训练chatglm2-6b模型下载地址:https://huggingface.co/THUDM/chatglm2-6b
因为是公司项目,代码不方便上传,可以参考开源项目,采用P-tuning微调方式GitHub - THUDM/ChatGLM2-6B: ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型