目前,基于 Transformers 架构的大型语言模型 (LLM),如 GPT、T5 和 BERT,已经在各种自然语言处理 (NLP) 任务中取得了 SOTA 结果 。将预训练好的语言模型(LM) 在下游任务上进行微调已成为处理 NLP 任务的一种 范式 。与使用开箱即用的预训练 LLM (例如:零样本推理) 相比,在下游数据集上微调这些预训练 LLM 会带来 巨大的性能提升 。
但是, 随着模型变得越来越大,在消费级硬件上对模型进行全部参数的微调(full fine-tuning) 变得不可行 。此 外 , 为每个下游任务独立存储和部署微调模型变得非常昂贵,因为微调模型(调整模型的所有参数) 与原始预训 练模型的大小相同 。因此,近年来研究者们提出了各种各样的参数高效迁移学习方法(Parameter-e?icient Transfer Learning) , 即固定住 PretrAIn Language model (PLM) 的大部分参数,仅调整模型的一小部分参数来达到与全部 参数的微调接近的效果(调整的可以是模型自有的参数,也可以是额外加入的一些参数)
根据 OpenAI 联合创始人 Andrej Karpathy 在微软 Build 2023 大会上所公开的信息 , OpenAI 所使用的大规模 语言模型构建流程主要包含四个阶段:预训练、有监督微调、奖励建模、强化学习 。这四个阶段都需要不同规模 数据集合以及不同类型的算法,会产出不同类型的模型,同时所需要的资源也有非常大的差别 。
文章插图
大模型训练过程示意图
预训练 (Pretraining) 阶段需要利用海量的训练数据,包括互联网网页、维基百科、书籍、 Github、论文、问答 网站等,构建包含数千亿甚至数万亿单词的具有多样性的内容 。利用由数千块高性能 GPU 和高速网络组成超级 计算机,花费数十天完成深度神经网络参数训练, 构建基础语言模型 (Base Model)。基础大模型构建了长文本的 建模能力,使得模型具有语言生成能力,根据输入的提示词 (Prompt),模型可以生成文本补全句子 。也有部分研究 人员认为,语言模型建模过程中也隐含的构建了包括事实性知识 (Factual Knowledge) 和常识知识 (Commonsense) 在内的世界知识 (World Knowledge) 。GPT-3 完成一次训练的总计算量是 3640PFlops,按照 NVIDIA A100 80G 和平 均利用率达到 50% 计算,需要花费近一个月时间使用 1000 块 GPU 完成 。由于 GPT-3 训练采用了 NVIDIA V100 32G,其实际计算成本远高于上述计算 。参数量同样是 1750 亿的 OPT 模型,该模型训练使用了 992 块 NVIDIA A100 80G,整体训练时间将近 2 个月 。BLOOM 模型的参数量也是 1750 亿,该模型训练一共花费 3.5 个月 , 使 用包含 384 块 NVIDIA A100 80G GPU 集群完成 。可以看到大规模语言模型的训练需要花费大量的计算资源和时 间 。包括 LLaMA 系列、 Falcon 系列、百川 (Baichuan) 系列等在模型都属于此阶段 。由于训练过程需要消耗大量 的计算资源,并很容易受到超参数影响 , 如何能够提升分布式计算效率并使得模型训练稳定收敛是本阶段的重 点研究内容 。
有监督微调(Supervised F.NETuning),也称为指令微调 (Instruction Tuning),利用少量高质量数据集合,包含 用户输入的提示词 (Prompt) 和对应的理想输出结果 。用户输入包括问题、闲聊对话、任务指令等多种形式和任 务 。利用这些有监督数据,使用与预训练阶段相同的语言模型训练算法,在基础语言模型基础上再进行训练,从 而得到有监督微调模型 (SFT 模型) 。经过训练的 SFT 模型具备了初步的指令理解能力和上下文理解能力,能够完成开放领域问题、阅读理解、翻译、生成代码等能力, 也具备了一定的对未知任务的泛化能力 。由于有监督微 调阶段的所需的训练语料数量较少 , SFT 模型的训练过程并不需要消耗非常大量的计算 。根据模型的大小和训 练数据量, 通常需要数十块 GPU ,花费数天时间完成训练 。 SFT 模型具备了初步的任务完成能力, 可以开放给 用户使用, 很多类 ChatGPT 的模型都属于该类型, 包括: Alpaca 、Vicuna 、MOSS 、ChatGLM-6B 等 。很多这类 模型效果也非常好, 甚至在一些评测中达到了 ChatGPT 的 90% 的效果 。当前的一些研究表明有监督微调阶段数 据选择对 SFT 模型效果有非常大的影响, 因此如何构造少量并且高质量的训练数据是本阶段有监督微调阶段的 研究重点 。
推荐阅读
- 生成式AI与大模型有什么区别和联系?
- 使用Python语言和Pygame库,一步步打造自己的五子棋游戏!
- 网络用语vs什么意思 网络语言vs什么意思
- 春节促销活动推广语言 春节促销活动推广语言有哪些
- 节奏基石指的是有语言中最小的 节奏基石指的是
- C 语言程序如何在计算机内部工作?
- 揭秘大模型背后的知识储存与提取技术
- 大模型助力高效创建知识图谱
- 火山引擎向量数据库:抖音大规模实践
- 使用 Triton 部署 chatglm2-6b 模型