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

复旦大学(张奇):2024年大语言模型理论与实践报告

信息技术2024-11-14张奇复旦大学路***
AI智能总结
查看更多
复旦大学(张奇):2024年大语言模型理论与实践报告

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