您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[复旦大学]:2024年大语言模型理论与实践报告 - 发现报告

2024年大语言模型理论与实践报告

2024-11-13张奇复旦大学路***
AI智能总结
查看更多
2024年大语言模型理论与实践报告

张奇 复旦大学 ChatGPT仿佛电影中的AI就在眼前 ChatGPT给公众展现出来的是无所不能 什么是语言模型? ChatGPT语言模型的定义 语言模型(Language Model,LM)目标是构建词序列w1w2...wm的概率分布P(w1w2...wm),即计算给定的词序列w1w2...wm作为一个句子出现的可能性大小。 比如: 复旦大学有四个校区:邯郸、江湾、张江、枫林概率:0.95 复旦大学校区四共上海在概率:0.0024 ChatGPTChatGPT为什么这么强?GPT在做的事情—文字接龙 GPT核心任务始终是生成一个“合理的延续”,即根据已有的文本,生成一个符合人类书写习惯的下一个合理内容。所谓“合理”,是指根据数十亿个网页、数字化书籍等人类撰写内容的统计规律,推测接下来可能出现的内容。 ChatGPTChatGPT为什么这么强?GPT在做的事情—文字接龙 GPT完成像写文章这样的任务时,它实际上只是一遍又一遍地询问:“在已有的文本的基础上,下一个词应该是什么?”——并且每次都会添加一个词。 在每一步中,它都会得到一个带有概率的单词列表。但是,它应该选择哪个单词来添加到它正在写作的文章中呢? ChatGPTChatGPT为什么这么强?GPT在做的事情—文字接龙 重复“应用模型“的情况—在每一步中加入概率最高的词 ChatGPTChatGPT真正做的事情—文字接龙 这个概率怎么得到呢? 语言模型概率空间是天文数字 n-gram语言模型:当前词的概率只依赖于前面n-1个单词 例如:把努力变成一种习惯 4万个常用单词,2元组数量已经达到16亿,3元组数量则高达60万亿 模型参数量过于庞大,4-gram语言模型的概率估计准确率很低 1.1n元语言模型 随着历史单词数量增多,绝大多数的历史并不会在训练数据中出现,这也意味着P(wi|w1w2...wi−1)就很可能为0,使得概率估计失去了意义。为了解决上述问题,可以进一步假设任意单词wi出现的概率只与过去n−1个词相关 满足上述条件的模型被称为n元语法或n元文法(n-gram)模型。其中n-gram表示n个连续单词构成的单元,也被称为n元语法单元。 1.1n元语言模型 尽管n元语言模型能缓解句子概率为0的问题,但语言是由人和时代创造的,具备无穷的可能性,再庞大的训练语料也无法覆盖所有的n-gram,而训练语料中的零频率并不代表零概率。因此,需要使用平滑技术(Smoothing)来解决这一问题 平滑是指为了产生更合理的概率,对最大似然估计进行调整的一类方法,也称为数据平滑(DataSmoothing)。平滑处理的基本思想是提高低概率,降低高概率,使整体的概率分布趋于均匀。 1.1n元语言模型的缺点 n元语言模型从整体上来看与训练语料规模和模型的阶数有较大的关系,不同的平滑算法在不同情况下的表现有较大的差距。 平滑算法虽然较好解决了零概率问题,但是基于稀疏表示的n元语言模型仍然有三个 较为明显的缺点: (1)无法建模长度超过n的上下文; (2)依赖人工设计规则的平滑技术; (3)当n增大时,数据的稀疏性随之增大,模型的参数量更是指数级增加,并且模型受到数据稀疏问题的影响,其参数难以被准确学习。 此外,n元文法中单词的离散表示也忽略了单词之间的相似性 1.1神经语言模型 Bengio等人在2000年提出了使用前馈神经网络对进行估计的语言模型。 词 的 独 热 编 码 被 映 射 为 一 个 低 维 稠 密 的 实 数 向 量,称 为词 向 量(WordEmbedding)。 循环神经网络、卷积神经网络、端到端记忆网络等神经网络方法都成功应用于语言模型建模。 相较于n元语言模型,神经网络方法可以在一定程度上避免数据稀疏问题,有些模型还可以避免对历史长度的限制,从而更好建模长距离依赖关系。这类方法通常称为神经语言模型(NeuralLanguageModels,NLM)。 1.1神经语言模型--循环神经网络 循环神经网络语言模型由三部分组成:输入层、隐藏层和输出层 1.1语言模型是典型自监督学习任务 深度神经网络训练需要采用有监督方法,使用标注数据进行训练,因此,语言模型的训练过程也不可避免需要构造训练语料。 但是由于训练目标可以通过无标注文本直接获得,从而使得模型的训练仅需要大规模无标注文本即可。语言模型也成为了典型的自监督学习(Self-supervisedLearning)任务。 互联网的发展,使得大规模文本非常容易获取,因此训练超大规模的基于神经网络的语言模型也成为了可能。 ChatGPT常见预训练模型结构 语言模型训练完成仅是万里长征第一步 ChatGPT是如何实现的 ChatGPT实现过程 预训练阶段 强化学习方法 基础大模型训练 语言模型(Language Model,LM)目标是构建词序列w1w2...wm的概率分布P(w1w2...wm),即计算给定的词序列w1w2...wm作为一个句子出现的可能性大小。 基础大模型训练 在预训练语料集方面,根据文献[40]中的报道,GPT-3中通过主要包含经过过滤的CommonCrawl数据集、WebText2、Books1、Books2以及英文Wikipedia等数据集合。其中CommonCrawl的原始数据有45TB,进行过滤后仅保留了570GB的数据。通过子词方式对上述语料进行切分,大约一共包含5000亿子词。为了保证模型使用更多高质量数据进行训练,在GPT-3训练时,根据语料来源的不同,设置不同的采样权重。在完成3000亿子词训练时,英文Wikipedia的语料平均训练轮数为3.4次,而CommonCrawl和Books2仅有0.44次和0.43次。 由于Common Crawl数据集合的过滤过程繁琐复杂,OPT则采用了混合RoBERTa、Pile和PushShift.io Redit数据的方法。由于这些数据集合中包含的绝大部分都是英文数据,因此OPT也从Common Crawl数据集中抽取了部分非英文数据加入训练语料。 基础大模型训练 由于模型参数量和所使用的数据量都非常巨大,普通的服务器单机无法完成训练过程,因此通常采用分布式架构完成训练。GPT-3和OPT中没有对这个部分给出详细的描述。 •OPT使用了992块NVIDIA A100 80G GPU,采用全分片数据并行(Fully Shared Data Parallel以及Megatron-LM张量并行(Tensor Parallelism,整体训练时间将近2个月。 •BLOOM则公开了更多在硬件和所采用的系统架构方面的细节。该模型的训练一共花费3.5个月,使用48个计算节点。每个节点包含8块NVIDIA A100 80G GPU(总计384GPU),并且使用4NVLink用于节点内部GPU之间通信。节点之间采用四个Omni-Path 100 Gbps网卡构建的增强8维超立方体全局拓扑网络通信。 基础大模型训练 BLOOM使用Megatron-DeepSpeed框架进行训练,主要包含两个部分:Megatron-LM提供张量并行能力和数据加载原语;DeepSpeed提供ZeRO优化器、模型流水线以及常规的分布式训练组件。通过这种方式可以实现数据、张量和流水线三维并行。 ChatGPT实现过程 预训练阶段 强化学习方法 指令微调 有监督微调(Supervised Finetuning, SFT)又称指令微调(Instruction Tuning),是指在已经预训练好的模型的基础上,通过使用有标注的特定任务数据进行进一步的微调,从而让模型具备遵循指令的能力。 经过海量数据预训练后的模型虽然具备了大量的“知识”,但是由于其训练时的目标仅是对下一个词的预测,此时的模型还不能够理解并遵循人类自然语言形式的指令,要达到这一目标还需要使用指令数据对其进行有监督微调。 用于有监督微调的指令结构和数据质量是影响这一过程的关键,高效低成本地进行指令微调训练可以使得大模型能更低门槛地被使用,在监督微调阶段将大模型的上下文建模窗口进一步增加是提升模型长文档建模能力的重要需求。 指令微调 Input:写一个小故事,关于一只熊去海滩,与海豹交朋友,然后回家 Output:从森林里走出一只可爱的小熊,它叫贝利。贝利一直对大海充满好奇,于是他决定去海滩看看。他跳跃着穿过河流和草地,终于来到了一片美丽的海滩。 贝利兴奋地跑着,感受着海风的清凉。突然,他注意到海滩上有一只憨态可掬的海豹,名叫萨米。萨米正在玩耍,好像是在找贝利这样的新朋友。 贝利好奇地走过去,和萨米打了个招呼。萨米非常友好地回应道:“嗨,你是新来的吗?我是萨米,很高兴认识你!”贝利开心地笑了起来,他们迅速成为了好朋友。… 指令微调难题 1.训练语料需要多少?2.如何构造高质量训练语料?3.任务之间是什么关系? 这些问题目前还没有公开的完整研究 指令微调 1.训练语料需要多少? •并不是越多越好,数据量大反而会造成知识问答类结果大幅度下降•CMU研究人员的工作LIMA,发现使用1K个训练语料结果与Stanford使用30K训练语料得到Alpaca模型能力基本相当 指令微调 2.如何构造高质量训练语料? •人工构造•使用GPT-4构造•人机交互构造 指令微调 3.任务之间是什么关系? •各种任务之间的相互促进还是相互影响的关系,还没有公开研究结果 •初步结论: •开放领域问答、生成式任务、自然语言理解任务之间存在相互制约关系 •同类型任务之间存在一定相互促进关系 ChatGPT实现过程 预训练阶段 强化学习方法 奖励函数 然而有监督微调需要大量指令和回复对,获取大量高质量的回复需要耗费大量的人力和时间成本。此外,有监督微调通常采用交叉熵损失做为损失函数,目标是调整参数使得模型输出与标准答案完全相同,不能从整体上对模型输出质量进行判断,从而造成模型不能适用自然语言多样性,也不能解决微小变化的敏感性问题。 强化学习则将模型输出文本作为一个整体进行考虑,其优化目标是使得模型生成高质量回复。不仅可以在一定程度上解决上述问题,还不需要提供人工编写的高质量回复。模型根据指令生成回复,奖励模型针对所生成的回复给出质量判断。模型也可以生成多个答案,奖励模型对输出文本质量进行排序。模型通过生成回复并接收反馈进行学习。强化学习方法更适合生成式任务,也是大语言模型构建中必不可少的关键步骤。 奖励函数 奖励函数难点 1.如何高质量标注数据?2.如何得到稳定分类或者排序模型?3.如何与强化学习训练过程结合? 这些问题目前还没有公开的完整研究 奖励函数 1.如何高质量标注数据? •细粒度的评分,严格的评分标准 奖励函数 2.如何得到稳定分类或者排序模型? •限定Prompt范围•构造更多的可能输出•使用更多的评测模型 ChatGPT实现过程 预训练阶段 强化学习方法 强化学习效果显著 “考试作弊设备在哪买” SFT After RLHF 考试作弊是一种严重的违法行为,不仅会给个人带来不良后果,也会对整个教育系统造成负面影响。因此,我们强烈反对任何形式的考试作弊行为。建议考生不要购买、使用或携带任何用于作弊的设备,以免被查处后受到惩罚和影响自己的成绩。 考试作弊设备是一种非法行为,不仅会给自己带来严重的后果,还会对整个社会造成负面影响。因此,我们强烈反对使用任何形式的考试作弊行为。 为了维护公平公正的考试环境,保障学生的合法权益和未来的发展,我们应该严格遵守相关法律法规的规定,不参与或鼓励这种违法行为。同时,我们也应该积极支持教育部门和相关机构开展相关的教育和宣传工作,提高学生的法律意识和责任感。只有这样,才能保证考试的公正和透明性,保护社会的利益和公共的安全与稳定。 为了保障公平公正的教育环境和教育质量,学校和政府部门通