Al Box THE CHINESE BOOK FOR LARGE LANGUAGE MODELS 大语言模型 赵鑫李军毅周昆唐天一文继荣著 Copyright©RUC AI Box
THE CHINESE BOOK FOR LARGE LANGUAGE MODELS 大语言模型 Copyright © RUC AI Box 赵鑫 李军毅 周昆 唐天一 文继荣 著
前言 2022年底,ChatGPT震撼上线,大语言模型技术迅速“席卷”了整个社会,人 工智能技术因此迎来了一次重要进展。面对大语言模型的强大性能,我们不禁要 问:支撑这些模型的背后技术究竟是什么?这一问题无疑成为了众多科研人员的 思考焦点。 必须指出的是,大模型技术并不是一蹴而就,其发展历程中先后经历了统计语 言模型、神经网络语言模型、预训练语言模型等多个发展阶段,每一步的发展都凝 结了众多科研工作者的心血与成果。作为大语言模型技术的重要推动者,OpenAI 公司引领了本次技术变革,让我们再次回顾其针对大模型技术的研发历程。2015 年,OpenAI公司正式创立,开始探素通用人工智能的技术路线。早期的OpenAI 团队围绕强化学习、多模态、语言模型等几个重要方向进行了深入研究。其中,由 lya Sutskever领导的团队主要关注语言模型的研究。当谷歌2017年推出基于注意 力机制的Transformer模型后,OpenAI团队迅速洞察到了其潜在的优越性,认为这 种模型可能是一种大规模可扩展训练的理想架构。基于此,OpCn团队开始构建 GPT系列模型,并于2018年推出了第一代GPT模型一GPT1,能够通过“通用文 本训练-特定任务微调”的范式去解决下游任务。接下来,GPT-2和GPT-3模型通 过扩大预训练数据和模型参数规模,显著提升了模型性能,并且确立了基于自然 语言形式的通用任务解决路径。在GPT-3的基础上,OpenAI又通过代码训练、人 类对齐、工具使用等技术对于模型性能不断升级,推出了功能强大的GPT-3.5系 列模型。2022年11月,ChatGPT正式上线,能够以对话形式解决多种任务,使得 用户能够通过网络API体验到语言模型的强大功能。2023年3月,OpenAI推出了 标志性的GPT4模型,将模型能力提升至全新高度,并将其扩展至拥有多模态功 能的GPT4V模型。 反观GPT系列模型的发展历程,有两点令人印象深刻。第一点是可拓展的训 练架构与学习范式:Transformer架构能够拓展到百亿、千亿甚至万亿参数规模,并 且将预训练任务统一为预测下一个词这一通用学习范式;第二点是对于数据质量 与数据规模的重视:不同于BERT时代的预训练语言模型,这次大语言模型的成 功与数据有着更为紧密的关系,高质量数据、超大规模数据成为大语言模型的关 键基础。上述的思路看似简单,但能够从早期众多的技术路线中寻找到这条路线
前 言 2022 年底,ChatGPT 震撼上线,大语言模型技术迅速“席卷”了整个社会,人 工智能技术因此迎来了一次重要进展。面对大语言模型的强大性能,我们不禁要 问:支撑这些模型的背后技术究竟是什么?这一问题无疑成为了众多科研人员的 思考焦点。 必须指出的是,大模型技术并不是一蹴而就,其发展历程中先后经历了统计语 言模型、神经网络语言模型、预训练语言模型等多个发展阶段,每一步的发展都凝 结了众多科研工作者的心血与成果。作为大语言模型技术的重要推动者,OpenAI 公司引领了本次技术变革,让我们再次回顾其针对大模型技术的研发历程。2015 年,OpenAI 公司正式创立,开始探索通用人工智能的技术路线。早期的 OpenAI 团队围绕强化学习、多模态、语言模型等几个重要方向进行了深入研究。其中,由 Ilya Sutskever 领导的团队主要关注语言模型的研究。当谷歌 2017 年推出基于注意 力机制的 Transformer 模型后,OpenAI 团队迅速洞察到了其潜在的优越性,认为这 种模型可能是一种大规模可扩展训练的理想架构。基于此,OpenAI 团队开始构建 GPT 系列模型,并于 2018 年推出了第一代 GPT 模型—GPT-1,能够通过“通用文 本训练-特定任务微调”的范式去解决下游任务。接下来,GPT-2 和 GPT-3 模型通 过扩大预训练数据和模型参数规模,显著提升了模型性能,并且确立了基于自然 语言形式的通用任务解决路径。在 GPT-3 的基础上,OpenAI 又通过代码训练、人 类对齐、工具使用等技术对于模型性能不断升级,推出了功能强大的 GPT-3.5 系 列模型。2022 年 11 月,ChatGPT 正式上线,能够以对话形式解决多种任务,使得 用户能够通过网络 API 体验到语言模型的强大功能。2023 年 3 月,OpenAI 推出了 标志性的 GPT-4 模型,将模型能力提升至全新高度,并将其扩展至拥有多模态功 能的 GPT-4V 模型。 反观 GPT 系列模型的发展历程,有两点令人印象深刻。第一点是可拓展的训 练架构与学习范式:Transformer 架构能够拓展到百亿、千亿甚至万亿参数规模,并 且将预训练任务统一为预测下一个词这一通用学习范式;第二点是对于数据质量 与数据规模的重视:不同于 BERT 时代的预训练语言模型,这次大语言模型的成 功与数据有着更为紧密的关系,高质量数据、超大规模数据成为大语言模型的关 键基础。上述的思路看似简单,但能够从早期众多的技术路线中寻找到这条路线
并且坚定地去执行这条路线,这就是OpenAI成功的关键所在。回顾OpenAI的早 期论文,实际上早在GPT2的论文中,就深人讨论了基于大规模文本预训练的通 用任务学习范式,让人不禁感叹OpenAI团队的技术前瞻性。虽然这种研究模式很 难复制,但是值得我们去思考、学习。 OpenAI团队自GPT-3开始,就很少在公开的材料中提及相关技术细节,很 多技术报告主要是介绍评测相关的内容。到目前为止,关于GT系列模型的核心 技术仍然难以完全解密。虽然有众多公司在尝试复刻GPT水平的大语言模型(如 Anthropic、.Google等),但是整体来说,OpenAI仍然在大模型技术上有着较大的 领先性。根据Sam Altman的公开采访介绍,尚未发布的GPT-5相比GPT-4将会有 重要的技术进步。如果事实如此,那么GPT5的到来将再次拉大了与当前其他大 语言模型的差距,可能意味着人类向着通用人工智能又迈出了重要一步。 相信有很多人都会有一个共同的疑问:为什么GPT水平的大模型难训练?关 于为何GPT级别的大模型难以训练,许多人可能会首先想到算力的限制。确实,为 了训练百亿级别的高水平大模型,通常需要最少百卡级别的A1OO/A800(80G)资 源,而为了充分探索训练过程中的各种细节,往往需要有千卡级别的A100/A8O0 (⑧0G)资源作为支撑。而对于千亿、万亿模型来说,所需要耗费的算力资源更是极 为庞大。目前,学术界面临的重大挑战是真正有充足资源去尝试预训练技术的团 队少之又少,因此导致了第一手经验匮乏,难以直接开展相关研究。 大模型训练涉及众多训练的细节,这些细节很多时候无法从已有科研论文中 直接获取。在统计学习时代,可以针对机器学习模型进行非常充分的实证研究,例 如使用栅格搜索参数的最优值、选择核函数、执行交叉验证等。通过广泛的调优 实验,研究人员很快就能积累充足的训练经验,进而形成对于这些统计机器学习 模型的深人理解。但是,大语言模型由于参数众多、组件复杂、训练过程也比较 复杂,早期的实验探索如果不引入任何先验知识,可能会导致指数级增长的实验 数量。然而,现实情况是,很多研究人员并没有足够的资源去完成一次完整的大 规模预训练实验,这使得掌握大模型技术的第一手经验变得尤为困难,更不用说 从零开始探索相关科研问题,极大限制了学术界在此次人工浪潮中所起到的作用 目前,能力较强的大语言模型基本都源自工业界,这一趋势随着时间的推移可能 会变得更加明显。从第一手经验中“Know-How”,对于科研人员来说非常重要,只 有接触到技术核心,才能真正理解哪些问题是有意义的,并找到解决方案。 令人欣喜的是,无论是在学术界还是工业界,人们都逐渐认识到了“开放”的
并且坚定地去执行这条路线,这就是 OpenAI 成功的关键所在。回顾 OpenAI 的早 期论文,实际上早在 GPT-2 的论文中,就深入讨论了基于大规模文本预训练的通 用任务学习范式,让人不禁感叹 OpenAI 团队的技术前瞻性。虽然这种研究模式很 难复制,但是值得我们去思考、学习。 OpenAI 团队自 GPT-3 开始,就很少在公开的材料中提及相关技术细节,很 多技术报告主要是介绍评测相关的内容。到目前为止,关于 GPT 系列模型的核心 技术仍然难以完全解密。虽然有众多公司在尝试复刻 GPT 水平的大语言模型(如 Anthropic、Google 等),但是整体来说,OpenAI 仍然在大模型技术上有着较大的 领先性。根据 Sam Altman 的公开采访介绍,尚未发布的 GPT-5 相比 GPT-4 将会有 重要的技术进步。如果事实如此,那么 GPT-5 的到来将再次拉大了与当前其他大 语言模型的差距,可能意味着人类向着通用人工智能又迈出了重要一步。 相信有很多人都会有一个共同的疑问:为什么 GPT 水平的大模型难训练?关 于为何 GPT 级别的大模型难以训练,许多人可能会首先想到算力的限制。确实,为 了训练百亿级别的高水平大模型,通常需要最少百卡级别的 A100/A800 (80G) 资 源,而为了充分探索训练过程中的各种细节,往往需要有千卡级别的 A100/A800 (80G) 资源作为支撑。而对于千亿、万亿模型来说,所需要耗费的算力资源更是极 为庞大。目前,学术界面临的重大挑战是真正有充足资源去尝试预训练技术的团 队少之又少,因此导致了第一手经验匮乏,难以直接开展相关研究。 大模型训练涉及众多训练的细节,这些细节很多时候无法从已有科研论文中 直接获取。在统计学习时代,可以针对机器学习模型进行非常充分的实证研究,例 如使用栅格搜索参数的最优值、选择核函数、执行交叉验证等。通过广泛的调优 实验,研究人员很快就能积累充足的训练经验,进而形成对于这些统计机器学习 模型的深入理解。但是,大语言模型由于参数众多、组件复杂、训练过程也比较 复杂,早期的实验探索如果不引入任何先验知识,可能会导致指数级增长的实验 数量。然而,现实情况是,很多研究人员并没有足够的资源去完成一次完整的大 规模预训练实验,这使得掌握大模型技术的第一手经验变得尤为困难,更不用说 从零开始探索相关科研问题,极大限制了学术界在此次人工浪潮中所起到的作用。 目前,能力较强的大语言模型基本都源自工业界,这一趋势随着时间的推移可能 会变得更加明显。从第一手经验中“Know-How”,对于科研人员来说非常重要,只 有接触到技术核心,才能真正理解哪些问题是有意义的,并找到解决方案。 令人欣喜的是,无论是在学术界还是工业界,人们都逐渐认识到了“开放”的
重要性,能够看到越来越多的公开的基础模型、技术代码以及学术论文,有力地 推动了大模型技术的“透明化”。只有通过开放和共享,才能汇聚全人类的智慧 共同推进人工智能技术的发展。实际上,根据现有公开的资料,大模型技术也是 “有章可循”的,如整体训练流程、数据清洗方法、指令微调技术、人类偏好对齐 算法等。根据这些技术,在算力资源支持下,研发人员已经能够较为顺利地完成 大模型的整体训练流程,并取得不错的模型效果。随着更多核心技术的揭示和开 放,大模型技术的“透明化”将进一步提高。 为了更好地整理和传播大模型技术的最新进展与技术体系,我们在2023年3 月发表了大语言模型综述文章《A Survey of Large Language Models)》,并不断进行 更新完善。这篇综述文章已经更新到第13个版本,包含了83页的正文内容,并 收录了900余篇参考文献。自英文综述文章上线后,陆续有读者询问是否有对应 的中文版本。为此,我们于2023年8月发布了该综述(v10)的中文翻译版。在 2023年12月底,为了更好地提供大模型技术的中文参考资料,我们启动了中文书 的编写工作,并且于近日完成初稿。与英文综述文章的定位不同,中文版书籍更 注重为大模型技术的入门读者提供讲解,为此我们在内容上进行了大幅度的更新 与重组,力图展现一个整体的大模型技术框架和路线图。本书适用于具有深度学 习基础的高年级本科生以及低年级研究生使用,可以作为一本入门级的技术书籍 在准备中文书的过程中,我们广泛阅读了现有的经典论文、相关代码和教材 从中提炼出核心概念、主流算法与模型,并进行了系统性的组织与介绍。我们对于 每个章节的内容初稿都进行了多次修正,力求表达的清晰性与准确性。然而,在书 写过程中,我们深感自身能力与知识的局限性,尽管已经付出了极大的努力,但 难免会有遗漏或不当之处。本书的初版仅是一个起点,我们计划在网上持续进行 内容的更新和完善,并特别欢迎读者提出宝贵的批评与建议,也会同步在网站上 对于提出宝贵建议的读者进行致谢。我们将编写此书的过程当做一个自身的学习 过程,也希望能够通过本书与读者进行深人入交流,向更多的行业同行学习。 总之,大模型技术正处于快速发展阶段,基础原理亟待探索、关键技术亟待 改善。对于科研人员而言,大模型研究工作充满了想象空间,令人为之神往。随 着技术的不断进步与共享开放,我们有理由相信,未来人工智能技术将取得更大 的进展,将在更多领域带来更为深远的影响。 作者 2024年3月31日
重要性,能够看到越来越多的公开的基础模型、技术代码以及学术论文,有力地 推动了大模型技术的“透明化”。只有通过开放和共享,才能汇聚全人类的智慧, 共同推进人工智能技术的发展。实际上,根据现有公开的资料,大模型技术也是 “有章可循”的,如整体训练流程、数据清洗方法、指令微调技术、人类偏好对齐 算法等。根据这些技术,在算力资源支持下,研发人员已经能够较为顺利地完成 大模型的整体训练流程,并取得不错的模型效果。随着更多核心技术的揭示和开 放,大模型技术的“透明化”将进一步提高。 为了更好地整理和传播大模型技术的最新进展与技术体系,我们在 2023 年 3 月发表了大语言模型综述文章《A Survey of Large Language Models》,并不断进行 更新完善。这篇综述文章已经更新到第 13 个版本,包含了 83 页的正文内容,并 收录了 900 余篇参考文献。自英文综述文章上线后,陆续有读者询问是否有对应 的中文版本。为此,我们于 2023 年 8 月发布了该综述(v10)的中文翻译版。在 2023 年 12 月底,为了更好地提供大模型技术的中文参考资料,我们启动了中文书 的编写工作,并且于近日完成初稿。与英文综述文章的定位不同,中文版书籍更 注重为大模型技术的入门读者提供讲解,为此我们在内容上进行了大幅度的更新 与重组,力图展现一个整体的大模型技术框架和路线图。本书适用于具有深度学 习基础的高年级本科生以及低年级研究生使用,可以作为一本入门级的技术书籍。 在准备中文书的过程中,我们广泛阅读了现有的经典论文、相关代码和教材, 从中提炼出核心概念、主流算法与模型,并进行了系统性的组织与介绍。我们对于 每个章节的内容初稿都进行了多次修正,力求表达的清晰性与准确性。然而,在书 写过程中,我们深感自身能力与知识的局限性,尽管已经付出了极大的努力,但 难免会有遗漏或不当之处。本书的初版仅是一个起点,我们计划在网上持续进行 内容的更新和完善,并特别欢迎读者提出宝贵的批评与建议,也会同步在网站上 对于提出宝贵建议的读者进行致谢。我们将编写此书的过程当做一个自身的学习 过程,也希望能够通过本书与读者进行深入交流,向更多的行业同行学习。 总之,大模型技术正处于快速发展阶段,基础原理亟待探索、关键技术亟待 改善。对于科研人员而言,大模型研究工作充满了想象空间,令人为之神往。随 着技术的不断进步与共享开放,我们有理由相信,未来人工智能技术将取得更大 的进展,将在更多领域带来更为深远的影响。 作者 2024 年 3 月 31 日
内容贡献 本书各章节的主要负责人和参与人名单如下: 第三章的负责人是闵映乾和杨晨,参与人有李军毅、周昆: 第四章的负责人是张君杰、侯宇蓬和周昆; 第五章的负责人是董梓灿,参与人有田震和唐天一; 第六章的负责人是唐天一和陈昱硕; 第七章的负责人是唐天一,参与人有成晓雪: 第八章的负责人是李军毅和陈志朋: 第九章的负责人是陈昱硕、刘沛羽和唐天一,参与人有周昆 第十章的负责人是李军毅、汤昕字和都一凡,参与人有王晓磊: 第十一章的负责人是任瑞阳和蒋锦昊,参与人有李军毅 第十二章的负责人是张北辰和周昆,参与人有张高玮; 第十三章的负责人是周昆,参与人(按拼音字母排序)有蒋锦吴、李依凡、刘 子康、孙文奇、王禹误、徐澜玲、杨锦霞和郑博文。 同时感谢其他参与本书编写、校对的同学,他们(按拼音字母排序)是曹乾 曹展硕、陈杰、程伽雅琪、戴孙浩、邓欣、丁毅杰、冯雪扬、高泽峰、苟志斌、辜 子惠、郭歌扬、何东楠、侯新铭、胡译文、李炳黔、李成远、李欣潼、刘恩泽、刘 炯楠、刘子涵、罗文扬、梅朗、欧柯杉、彭涵、阮恺、苏炜航、孙一丁、汤奕如、 王家鹏、王磊、王淑婷、姚峰、尹彦彬、詹玉梁、张景森、张良、朱天宇和朱余韬。 本书在编写过程得到了中国人民大学大型科学仪器共享平台的算力资源支持 在此对于陈跃国、鲁蔚征、石源三位老师表示衷心的感谢。 本书封面图片由AI工具辅助进行生成,制作人为徐澜玲
内容贡献 本书各章节的主要负责人和参与人名单如下: 第三章的负责人是闵映乾和杨晨,参与人有李军毅、周昆; 第四章的负责人是张君杰、侯宇蓬和周昆; 第五章的负责人是董梓灿,参与人有田震和唐天一; 第六章的负责人是唐天一和陈昱硕; 第七章的负责人是唐天一,参与人有成晓雪; 第八章的负责人是李军毅和陈志朋; 第九章的负责人是陈昱硕、刘沛羽和唐天一,参与人有周昆; 第十章的负责人是李军毅、汤昕宇和都一凡,参与人有王晓磊; 第十一章的负责人是任瑞阳和蒋锦昊,参与人有李军毅; 第十二章的负责人是张北辰和周昆,参与人有张高玮; 第十三章的负责人是周昆,参与人(按拼音字母排序)有蒋锦昊、李依凡、刘 子康、孙文奇、王禹淏、徐澜玲、杨锦霞和郑博文。 同时感谢其他参与本书编写、校对的同学,他们(按拼音字母排序)是曹乾、 曹展硕、陈杰、程伽雅琪、戴孙浩、邓欣、丁毅杰、冯雪扬、高泽峰、苟志斌、辜 子惠、郭歌扬、何东楠、侯新铭、胡译文、李炳黔、李成远、李欣潼、刘恩泽、刘 炯楠、刘子涵、罗文扬、梅朗、欧柯杉、彭涵、阮恺、苏炜航、孙一丁、汤奕如、 王家鹏、王磊、王淑婷、姚峰、尹彦彬、詹玉梁、张景森、张良、朱天宇和朱余韬。 本书在编写过程得到了中国人民大学大型科学仪器共享平台的算力资源支持, 在此对于陈跃国、鲁蔚征、石源三位老师表示衷心的感谢。 本书封面图片由 AI 工具辅助进行生成,制作人为徐澜玲
符号表 标量(变量) 标量(常量) 集合 向量 ai 向量a的第i个元素 [a1,a2,,aw 序列 A 矩阵 ai 矩阵A的第i行 AT 矩阵A的转置 A-1 矩阵A的逆 diag(a) 将向量a转换为对角矩阵 2 向量、矩阵的2范数 0 向量、矩阵逐元素相乘(哈达玛积) ⊕ 向量、矩阵拼接 批次矩阵乘法 卷积 梯度 ( 从N个不同元素中取出K个元素的组合数 P 概率分布 0) 渐进上界符号 实数集 期望
符号表 𝑎 标量(变量) 𝐴 标量(常量) A 集合 𝒂 向量 𝑎𝑖 向量 𝒂 的第 𝑖 个元素 [𝑎1, 𝑎2, . . . , 𝑎𝑁 ] 序列 𝑨 矩阵 𝒂𝑖 矩阵 𝑨 的第 𝑖 行 𝑨 ⊺ 矩阵 𝑨 的转置 𝑨 −1 矩阵 𝑨 的逆 diag(𝒂) 将向量 𝒂 转换为对角矩阵 ∥·∥2 向量、矩阵的 2 范数 ⊙ 向量、矩阵逐元素相乘(哈达玛积) ⊕ 向量、矩阵拼接 ⊗ 批次矩阵乘法 ∗ 卷积 ∇ 梯度 𝑁 𝐾 从 𝑁 个不同元素中取出 𝐾 个元素的组合数 𝑃(·) 概率分布 𝑂(·) 渐进上界符号 R 实数集 E 期望
目录 第一部分背景与基础知识 1 第一章引言 2 1.1语言模型的发展历程 2 12大语言模型的能力特点···········。··· 5 1.3大语言模型关键技术概览 1.4大语言模型对科技发展的影响 15本书的内容组织。…··················…······· 第二章基础介绍 15 2.1大语言模型的构建过程 15 211大规模预训练·。····.·········.··。。·, 16 212指令微调与人类对济...·..·.··17 22扩展法则.·.·.....。 2.21KM扩展法则…18 2.2.2 Chinchilla扩展法则........................ 20 2.2.3关于扩展法则的讨论 21 22 2.3.1代表性的涌现能力 ,。,,。。·,+。·4”4。”·””…”” 22 2.3.2涌现能力与扩展法则的关系··.·····.·.···.····24 2.4GPT系列模型的技术演变.。·,.,·,···.。·.,.·····., 26 2.4.1早期探索.··· 26 2.4.2规模扩展 28 243能力增强···················· 29 2.4.4性能跃升 第三章大语言模型资源 妇 31公开可用的模型检查点或AP·。,················· 32
目录 第一部分 背景与基础知识 1 第一章 引言 2 1.1 语言模型的发展历程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 大语言模型的能力特点 . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 大语言模型关键技术概览 . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4 大语言模型对科技发展的影响 . . . . . . . . . . . . . . . . . . . . . . . 11 1.5 本书的内容组织 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 第二章 基础介绍 15 2.1 大语言模型的构建过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1 大规模预训练 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.2 指令微调与人类对齐 . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2 扩展法则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.1 KM 扩展法则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.2 Chinchilla 扩展法则 . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2.3 关于扩展法则的讨论 . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3 涌现能力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3.1 代表性的涌现能力 . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3.2 涌现能力与扩展法则的关系 . . . . . . . . . . . . . . . . . . . . 24 2.4 GPT 系列模型的技术演变 . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.4.1 早期探索 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.4.2 规模扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.4.3 能力增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.4.4 性能跃升 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 第三章 大语言模型资源 32 3.1 公开可用的模型检查点或 API . . . . . . . . . . . . . . . . . . . . . . . 32
3.11公开可用的通用大语言模型检查点········。·······32 3.1.2 LLaMA变体系列········ 36 3.13大语言模型的公共API.················ 3.2常用的预训练数据集 40 3.2.1网页 。4。。4。。4。g。。·。。。。。4。。。。4。。 40 322书籍..,.,· 323维基百科· 324代码·,·。·,。 5 3.2.5混合型数据集· 33常用微调数据集。·················…········ 47 3.3.1指令微调数据集 47 3.3.2人类对齐数据集 ,·。”·,。,。·。·。。…。。。··。。。 50 3.4代码库资源...·. 3.4.1 Hugging Face开源社区...,..........·......,52 3.4.2 DeepSpeed·· 53 3.4.3 Megatron-LM 34.4本书配套资源说明·······。······。····…· 54 第二部分预训练 56 第四章数据准备 57 4.1数据来源. 57 4.11通用文本数据··· 4.12专用文本数据 4.2数据预处理··· 60 4.2.1质量过滤 60 4.2.2敏感内容过滤 63 423数据去重.....64 4.2.4数据对预训练效果的影响····。。······。··。····· 425数据预处理实践.··· 6 4.3词元化(分词).... ....70
3.1.1 公开可用的通用大语言模型检查点 . . . . . . . . . . . . . . . . 32 3.1.2 LLaMA 变体系列 . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.1.3 大语言模型的公共 API . . . . . . . . . . . . . . . . . . . . . . . 39 3.2 常用的预训练数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.1 网页 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.2 书籍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.2.3 维基百科 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.2.4 代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.2.5 混合型数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.3 常用微调数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.3.1 指令微调数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.3.2 人类对齐数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.4 代码库资源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.4.1 Hugging Face 开源社区 . . . . . . . . . . . . . . . . . . . . . . . 52 3.4.2 DeepSpeed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.4.3 Megatron-LM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.4.4 本书配套资源说明 . . . . . . . . . . . . . . . . . . . . . . . . . 54 第二部分 预训练 56 第四章 数据准备 57 4.1 数据来源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.1.1 通用文本数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.1.2 专用文本数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.2 数据预处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.2.1 质量过滤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.2.2 敏感内容过滤 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.2.3 数据去重 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.2.4 数据对预训练效果的影响 . . . . . . . . . . . . . . . . . . . . . 65 4.2.5 数据预处理实践 . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.3 词元化(分词) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
431BPE分词.···········.71 4.3.2 WordPiece分词 74 4.3.3 Unigram分词 4.3.4分词器的选用 6 4.4数据调度. 4.4.1数据混合 76 4.4.2数据课程。······…·……···…·…···· 77 4.4.3预训练数据准备概述—以YuLan模型为例.·····.··· 79 第五章模型架构 81 5.Transformer模型....,........................ 5.1.1输入编码... 512多头自注意力机制·········,····· 5.1.3前馈网络层 电 5.1.4编码器 85 5.1.5解码器 5.2详细配置.······ 5.2.1归一化方法 86 5.2.2归一化模块位置 即 5.2.3激活函数.... 5.2.4位置编码 90 5.2.5注意力机制 5.2.6混合专家模型 96 5.2.7 LLaMA的详细配置 97 5.3主流架构. 5.3.1编码器-解码器架构.·.·..·.··.....··.·.·.100 5.3.2因果解码器架构 ···.101 5.3.3前缀解码器架构 .101 5.4长上下文模型 .101 5.4.1扩展位置编码 102 5.4.2调整上下文窗口 ,。:。。,。,。。。。。。。。,。。。,。,。 .105 5.4.3长文本数据
4.3.1 BPE 分词 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.3.2 WordPiece 分词 . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.3.3 Unigram 分词 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.3.4 分词器的选用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.4 数据调度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.4.1 数据混合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.4.2 数据课程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.4.3 预训练数据准备概述——以 YuLan 模型为例 . . . . . . . . . . . 79 第五章 模型架构 81 5.1 Transformer 模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.1.1 输入编码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.1.2 多头自注意力机制 . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.1.3 前馈网络层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.1.4 编码器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 5.1.5 解码器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 5.2 详细配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 5.2.1 归一化方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 5.2.2 归一化模块位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 5.2.3 激活函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 5.2.4 位置编码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 5.2.5 注意力机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 5.2.6 混合专家模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 5.2.7 LLaMA 的详细配置 . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.3 主流架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 5.3.1 编码器-解码器架构 . . . . . . . . . . . . . . . . . . . . . . . . . 100 5.3.2 因果解码器架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.3.3 前缀解码器架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.4 长上下文模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.4.1 扩展位置编码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 5.4.2 调整上下文窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 5.4.3 长文本数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.5新型模型架构····· 5.51参数化状态空间模型··········.108 5.5.2状态空间模型变种 第六章模型预训练 112 6.1预训练任务 611语言建模········.112 6.1.2去噪自编码 6.1.3混合去噪器 6.2优化参数设置.··. …·.116 6.2.1基于批次数据的训练 .116 6.2.2学习率 6.2.3优化器 6.2.4稳定优化技术 6.3可扩展的训练技术 6.3.13D并行训练.· ....119 6.3.2零冗余优化器 .121 6.3.3激活重计算 .122 6.3.4混合精度训练 122 6.4模型参数量计算与效率分析 123 6.4.1参数量计算 123 6.42训练运算量估计.······.·.·········.·.·.124 6.4.3训练时间估计 。。 .126 6.4.4训练显存估计 .126 65预训练代码实践.······。········… ,130 第三部分微调与对齐 13s 第七章指令微调 136 71指令数据的构建。····…··········…········· ,136 7.1.1基于现有的NLP任务数据集构建...............136 7.12基于日常对话数据构建..... ......138
5.5 新型模型架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 5.5.1 参数化状态空间模型 . . . . . . . . . . . . . . . . . . . . . . . . 108 5.5.2 状态空间模型变种 . . . . . . . . . . . . . . . . . . . . . . . . . 109 第六章 模型预训练 112 6.1 预训练任务 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.1.1 语言建模 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.1.2 去噪自编码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 6.1.3 混合去噪器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 6.2 优化参数设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 6.2.1 基于批次数据的训练 . . . . . . . . . . . . . . . . . . . . . . . . 116 6.2.2 学习率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 6.2.3 优化器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 6.2.4 稳定优化技术 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 6.3 可扩展的训练技术 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 6.3.1 3D 并行训练 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 6.3.2 零冗余优化器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 6.3.3 激活重计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 6.3.4 混合精度训练 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 6.4 模型参数量计算与效率分析 . . . . . . . . . . . . . . . . . . . . . . . . 123 6.4.1 参数量计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 6.4.2 训练运算量估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 6.4.3 训练时间估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 6.4.4 训练显存估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 6.5 预训练代码实践 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 第三部分 微调与对齐 135 第七章 指令微调 136 7.1 指令数据的构建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 7.1.1 基于现有的 NLP 任务数据集构建 . . . . . . . . . . . . . . . . . 136 7.1.2 基于日常对话数据构建 . . . . . . . . . . . . . . . . . . . . . . . 138