|
关于我们
书单推荐 更多 新书推荐 更多 |
Transformer 技术纵深:架构解析与前沿突破 ![]() 《Transformer技术纵深:架构解析与前沿突破》采用“源码剖析”与“论文精读”相结合的方式,系统拆解Transformer的核心技术。通过精读经典论文,逐层梳理其理论脉络与运行机制,帮助读者筑牢知识根基,带领读者对照主流框架的开源实现,逆向解析其设计意图,在实战复现中深化理解。这种从理论到实践的双重路径,旨在让读者轻松跨越学习障碍。无论是在校学生、科研人员还是产业开发者,都能凭借此书夯实AI根基、把握技术前沿,并快速将Transformer应用于产品创新。希望《Transformer技术纵深:架构解析与前沿突破》成为一把钥匙,帮助读者在Transformer的世界里扎稳马步、持续深耕、步步进阶。 基础筑基:注意力机制、编码器-解码器、Transformer核心架构,筑牢技术根基。核心破壁:Token、嵌入层、自注意力、MHA、FFN,拆解核心模块实现逻辑。前沿延伸:RoPE、FlashAttention、MoE、LoRA,紧跟技术演进趋势。高阶攻坚:KVCache优化、投机解码、SGLang生态,解锁工业级落地能力。 大语言模型:热潮之下的真实图景 当下,我们正置身于大型语言模型(Large Language Model,LLM)掀起的技术浪潮中心。这种颠覆性技术的应用触角,已悄然延伸至几乎所有数字交互场景:商业服务里,它化身智能客服秒回咨询、自动生成内容并精准推荐;教育场景中,可针对不同学习者提供定制化辅导、自动构建智能题库、实时伴学;研发环节,还能辅助编写代码、辅助学术文章创作、梳理文献形成系统综述。更值得关注的是,这类模型正悄然改写人机交互的固有模式,让人类与人工智能的对话告别生硬的指令,变得更自然、更具智慧,也更高效。无论是协助编写代码、激发创意写作灵感,还是完成语言翻译、破解复杂问题,大语言模型都已成为跨越多个领域的通用智能工具,深刻改变着人们的工作与创作方式。 在这场技术浪潮中,模型API恰似时代赠予每个人的“万能钥匙”,其操作简洁,蕴藏强大能量,仿佛只需轻轻插入对应的“锁孔”——无论是业务需求的对接,还是创新想法的落地——就能为使用者打开通往未来机遇的大门。看着模型不断展现出的惊人能力,从快速生成文案到精准分析数据,人们不禁心生憧憬,似乎通用人工智能(Artif icial General Intelligence,AGI)的大门已近在眼前,触手可及。 但现实往往比憧憬更复杂。当满怀热忱的开发者们握紧这把“万能钥匙”,试图在实际业务中开启能支撑商业价值的“宝藏之门”时,却频频遭遇阻碍。原本在演示中表现出色的模型,一进入充满复杂性与不确定性的生产环境,便立刻暴露出脆弱的一面:它可能会凭空生成不实信息(即“幻觉”),可能在处理长文本时遗忘前面上下文,在API调用失败时毫无应对办法,也无法及时获取并运用企业最新的内部知识????这把看似能打开多种“锁具”的“万能钥匙”,在持续、高强度的实际应用中,竟像一件精度不足的工具,既无法适配所有业务场景的“锁芯”,也难以承受长期使用的损耗,更无法支撑起稳定的业务需求。 因此,在为大语言模型日新月异的能力感到振奋的同时,我们更需要保持一份冷静,深入探究其本质——唯有如此,才能避免对它产生不切实际的期待,合理规划应用方向。我们不能只停留在“会用”模型的层面,更要去理解它究竟是什么、能力的边界在哪里,以及未来又会朝着怎样的方向演化。要做到这一点,或许我们应当从让人工智能真正走进大众视野的关键节点出发,一步步拨开技术的表象,深入其核心架构与运行逻辑,探寻大语言模型能力的源头与局限。 Transformer:跨领域理解AI的核心基石 对于渴望跨领域探索人工智能的求知者来说,Transformer 架构宛如一座矗立在技术前沿的高峰,无法绕行。Transformer 自诞生以来,始终稳坐AI 领域核心技术的宝座,作为深度学习领域的一次革命性突破,它不仅在自然语言处理(Natural Language Processing,NLP)领域稳居主导地位,更逐步将影响力拓展至计算机视觉、语音处理乃至科学计算等多个领域,成为连接不同AI 子领域的重要技术桥梁。 Transformer 架构的问世,最初是为了攻克自然语言处理中的长距离依赖难题。其核心创新在于引入了注意力机制,这一机制使模型能够摆脱传统循环神经网络的序列依赖,转而对输入序列进行并行处理。这不仅提高了模型捕捉语言上下文关联的效率,还使其能够精准把握长距离依赖关系, 为后续技术的飞速发展奠定了坚实基础。 时至今日,Transformer 的影响力已渗透到人工智能领域的各个角落。无论是GPT 系列、DeepSeek-R1 等大语言模型掀起的生成式AI 热潮,还是Vision Transformer 在图像分析领域的迅速崛起,都离不开Transformer 架构的技术支撑。与此同时,研究者们也从未停止对这一架构的优化与革新。通过轻量化设计降低资源消耗,通过高效注意力机制提升计算效率,通过多模态融合打破领域壁垒,研究者们持续拓宽Transformer 的应用场景与效率边界。 可以说,Transformer 已经超越了单一模型架构的范畴,发展成为一种贯穿多领域的技术范式。它的热度不仅没有随时间消退,反而随着新技术的迭代和新应用的涌现而持续升温,成为推动人工智能向更广阔领域探索的核心动力。对于每一位希望跨领域了解AI 的学习者而言,Transformer 不仅是一座必须攀登的技术高峰,更是一把开启AI 世界大门的钥匙。 本书的创作缘起与初心 本书的灵感并非空穴来风,而是始于笔者在个人博客连载的“Transformer 探秘”系列文章。最初决定开启这个写作计划,实则是两重现实需求交织下的自然选择。 一方面,在日常交流中,笔者经常会遇到两类朋友:一类是从非人工智能领域跨界而来,希望投身于AI 行业;另一类则是对AI 抱有浓厚兴趣,渴望踏入这个领域的初学者。他们共同的诉求是,在较短时间内建立对Transformer 的系统认知,而非零散地获取碎片化知识。另一方面,过去三年间,笔者团队将核心精力投入端侧AI 的研发工作,团队里汇聚了不少深耕Android 开发的专家, 为了帮助这些精通移动端技术却对AI 相对陌生的同事快速理解相关技术原理,搭建起AI 知识框架,笔者迫切需要整理一套条理清晰、由浅入深的学习材料。 带着这样的需求,笔者曾尝试在网络上搜寻合适的资源,结果发现,现有内容要么过于零散, 缺乏体系;要么过于艰深,对初学者不够友好,始终未能找到完全契合需求的学习资料。也正因如此,笔者萌生了撰写这个系列文章的想法:希望能从零起步,一步步拆解Transformer 的技术细节,既解答“它如何工作”的问题,又阐明“它为何要这样设计”的底层逻辑,让刚入门的朋友能轻松开启Transformer 的学习之旅;同时,笔者也计划在内容中融入近年涌现的特色论文观点与前沿理念,使有AI 基础的从业者也能从中接触到新视角、获得新启发。 而在后续整理、扩充并完善这个系列的过程中,意外的收获也随之而来:笔者不仅修正了自己此前对Transformer 某些技术点的模糊认知与偏差理解,更在反复梳理与深化思考的过程中,完成了一次自我知识体系的迭代与提升。可以说,这个系列不仅是一份面向读者的Transformer 技术解析,更是笔者个人在AI 领域持续学习、不断成长的真实记录。如今将其系统化梳理为书籍,亦是希望这份带着温度与思考的学习心得,能为更多同行者提供助力。 本书架构说明 为帮助读者由浅入深、系统掌握Transformer 技术体系,本书依循“基础认知—核心拆解—扩展延伸—高阶优化”的逻辑脉络,分为4 篇共33 章,各篇章的定位与内容安排如下。 第1 篇为基础篇,包含第1 章至第4 章。本篇首先从注意力机制的起源切入,逐步展开对Transformer 整体架构的解析,随后分别阐述编码器与解码器的核心设计,以及模型训练与推理的基本流程。本篇旨在带领读者从技术发展的历史脉络与全局视角出发,建立对Transformer 的初步认知与整体把握,为后续深入学习奠定基础。 第2 篇为核心篇,包含第5 章至第14 章。本篇聚焦Transformer 的核心构成模块,依次讲解词元(token)的生成与处理逻辑、嵌入层的原理与作用、位置编码的设计思路与分类、自注意力机制的工作原理、掩码注意力的应用场景、多头注意力的优势与实现、FFN 的结构与功能、残差连接与归一化的作用,以及模型生成过程中的采样策略。这些内容是理解Transformer 运行机制的关键, 也是后续探索扩展与优化技术的核心前提。 第3 篇为扩展篇,包含第15 章至第22 章。该篇围绕Transformer 核心技术的延伸与创新展开, 具体介绍旋转位置编码(RoPE)的设计优势、FlashAttention 对注意力计算效率的优化、KV 缓存(KV Cache)在推理提速中的应用、混合专家模型(MoE)对模型规模与效率的平衡、低秩适应(LoRA)在模型微调中的价值、长度外推技术对上下文窗口的扩展方法,以及大模型量化技术在资源节约方面的实践。这些内容展现了Transformer 技术在实际应用中的拓展方向,可帮助读者了解技术演进的前沿动态。 第4 篇为高阶篇,包含第23 章至第33 章。作为本书的高阶内容,此篇聚焦Transformer 在性能与效率上的深度优化策略,详细讲解KV Cache 的进阶优化技巧、多头潜在注意力(MLA)的设计与应用、MoE 模型的训练与推理优化方法、投机解码与前瞻解码在提升生成速度上的原理与实践,以及其他面向工业级部署的优化思路。通过这些内容,读者可深入掌握Transformer 在复杂场景下的高效应用方案,为实际工程实践提供技术支撑。 本书读者群定位 本书以“系统梳理Transformer 技术体系、兼顾理论深度与实践参考”为核心目标,采用内容从基础入门到高阶优化的递进设计,主要面向以下几类读者。 其一,希望进入人工智能领域的初学者,包括计算机相关专业的本科生、研究生,或者从非AI 领域(如服务器开发、移动开发、数据科学等)跨界而来的技术从业者。这类读者往往需要一套条理清晰的学习框架,本书基础篇对注意力机制、Transformer 架构的入门讲解,能帮助他们快速建立技术认知,避开碎片化学习的误区。 其二,已有初步AI 基础、需深入理解Transformer 核心原理的开发者与研究者。例如,从事自然语言处理、计算机视觉等方向的算法工程师,或专注于大模型应用开发的技术人员。本书核心篇对token 处理、自注意力、FFN 等模块的拆解,以及扩展篇对RoPE、KV Cache、LoRA 等实用技术的解析,可助力他们夯实技术基础,厘清核心模块的运行逻辑。 其三,聚焦大模型工程化落地的技术团队成员,包括负责模型推理优化、端侧部署、性能调优的工程师。本书高阶篇对KV Cache 进阶优化、投机解码、MoE 效率提升等高阶内容的讲解,结合工业界实践视角,能为他们解决实际项目中的效率瓶颈、资源约束等问题提供参考,帮助他们将技术转化为落地能力。 此外,对人工智能技术演进感兴趣的技术管理者、产品经理,或者希望系统了解大模型底层技术的科研爱好者,也可通过本书各篇章的梯度内容,从全局到细节把握Transformer 技术脉络,理解技术背后的设计逻辑与演进方向,为技术选型、团队协作或知识储备提供支持。 本书的学习依托与内容说明 在Transformer 技术的讲解过程中,以The Annotated Transformer 这篇文章为核心学习依托,但该文章并非简单的文献摘录,而是对Transformer 原始论文的深度解读笔记——其作者不仅以博客形式呈现对论文的理解,更通过代码实现了论文中的模型,并结合实际运行的代码逻辑,对论文的技术细节展开了细致拆解。 相较于互联网上其他可获取的Transformer 模型实现,这篇文章的代码在学习与解读层面具备显著优势:其结构设计更贴合教学场景,代码注释详尽且逻辑清晰,能让读者直观看到论文理论如何转化为实际代码,极大地降低了“从理论到实践”的理解门槛。为便于后续表述,本书将此代码简称为“哈佛源码”。 需要特别说明的是,本书中呈现的示例代码均经过精简处理。在解析过程中,我们会剔除不影响核心逻辑理解的非主体代码;同时,对于函数中不影响核心功能阐释的次要参数,也会酌情省略。这样的处理旨在剥离技术无关的干扰信息,让读者能快速聚焦于Transformer 核心模块的代码实现逻辑,提升学习效率。 此外,本书部分内容包含个人在学习过程中的梳理与思考,其中不乏基于现有技术原理进行的反向推导或合理猜测。这些内容可能与各个原始论文作者的初始设计思路,或者技术发展的实际历史脉络存在差异。做出这样的呈现,核心目的在于通过更贴近直观认知的推导方式,为读者提供易于理解的技术解释——当某种推导路径能更清晰地展现技术原理的合理性时,我们便选择以此种方式展开讲解。当然,若这些个人解读存在偏差,还恳请各位读者不吝指出,共同完善对Transformer 技术的准确认知。 本书涉及的开源代码版本 因为各个框架发展很快,在本书写作过程中,笔者往往会针对某一个框架的多个版本进行研读,具体框架的主要版本对应关系请扫描“本书资源”二维码查看。 致谢 首先,在本书(包括博客)的写作过程中,笔者参考和学习了大量论文、博客和讲座视频, 在此对这些作者(苏剑林、方佳瑞、章明星、唐翔昊、姜富春、于泽平、杨鹏程、周舒畅、王庆法、杜凌霄、猛猿、尘伊光,河畔草lxr、手抓饼熊、刀刀宁、大方、BBuf、SayHelloCode、Civ、DefTruth、YyWangCS、YeungNLP、Taki、Linsight、Antinomi、iioSnail、Flood Sung、aaronxic、tomsheep、pika-jy、极客博哥、迷途小书僮、进击的Killua、莲子、看图学、铁心核桃、阿杰、zartbot、phimes、Tensorlong、李伟华、边路腰刀等)表示深深的感谢。 其次,感谢唐敏老师、聂兰顺老师,以及李昭福和张怡能两位专家在百忙之中为本书写推荐语,谢谢你们的鼓励和支持。 最后,特别感谢笔者的家人,因为写博客和整理书稿,笔者牺牲了大量本应该陪伴家人的时间,谢谢家人对笔者的支持和包容。 因为笔者的水平和精力都有限,而且本书的内容较多、涉及的技术较广,谬误和疏漏之处在所难免,很多技术点设计的细节描述得不够详尽,恳请广大技术专家和读者指正,可以扫描“技术支持”二维码与笔者联系。或者通过博客园、CSDN、掘金或者微信公众号搜索“罗西的思考”来找到笔者进行交流。笔者也将密切跟踪Transformer 的发展,吸取读者的意见,适时编写本书的升级版本。 此刻,我们正站在构建未来的前沿地带。当技术的浪潮不断向前奔涌,Transformer 及其背后的思想,正成为推动浪潮的核心力量。接下来,就让我们一同踏上这段充满发现与创造的旅程,在拆解技术本质的过程中触摸智能的温度,在探索应用边界的脚步里预见未来的模样。这趟旅程或许会偶遇迷雾,但每一步深入,都将让我们离AI 的真谛更近一分。 柳浩 2025 年12 月 柳浩:网名“罗西的思考”,浙江大学硕士。曾就职于多家世界500强企业,主导过多个大型项目。技术栈广博,有丰富的各种大型软件开发和系统架构经验,对机器学习框架、微服务框架、大数据引擎、NoSQL、消息队列、分布式追踪系统、可观测系统、可靠性设计、移动开发方案和源码有着深刻的理解和认识,出版过《分布式机器学习——系统、工程与实战》一书。柳渤:哈尔滨工业大学硕士。曾就职于华为,精通算法设计、计算理论、人工智能、数据库理论、网络通信,在通信行业耕耘十余年,有超大规模软件设计与开发经验。 第1篇 基础篇 第1章 注意力机制 2 1.1 背景知识2 1.1.1 Seq2Seq 2 1.1.2 编码器-解码器架构 2 1.2 技术挑战3 1.2.1 对齐问题 4 1.2.2 长距离依赖问题 4 1.2.3 CNN方案 4 1.2.4 RNN方案 5 1.2.5 当前方案的局限性 6 1.3 注意力机制的原理、通用结构、计算流程和效果 6 1.3.1 注意力机制的原理 6 1.3.2 注意力模型的通用结构 8 1.3.3 注意力机制的计算流程 10 1.3.4 注意力机制的效果 12 1.4 注意力的发展历史 14 第2章 Transformer架构18 2.1 Transformer的总体设计19 2.1.1 设计思路 19 2.1.2 模型结构 19 2.1.3 注意力结构 20 2.1.4 推理阶段的执行流程 21 2.1.5 小结 21 2.2 如何构建Transformer 21 2.2.1 构建逻辑 22 2.2.2 主体功能类 23 2.3 Transformer的输入 25 2.3.1 输入分类 25 2.3.2 输入模块 26 2.4 Transformer块的结构 27 2.4.1 MHA 28 2.4.2 FFN 29 2.4.3 辅助模块 29 2.5 Transformer的输出 29 2.5.1 解码器的输出结果 29 2.5.2 输出概率 30 2.6 Transformer的可解释性 31 2.6.1 机理可解释性 31 2.6.2 机器学习视角 32 2.6.3 数学视角 33 2.6.4 物理学视角 35 2.7 总结 35 第3章 编码器与解码器 36 3.1 编码器 37 3.1.1 编码器的结构 37 3.1.2 编码器的输入与输出 38 3.1.3 编码器的执行流程 38 3.1.4 编码器的实现 39 3.2 解码器 41 3.2.1 解码器的结构 41 3.2.2 解码器的输入与输出 41 3.2.3 解码器的执行流程 41 3.2.4 解码器的实现 43 3.3 注意力分类 44 3.3.1 全局自注意力 45 3.3.2 掩码自注意力 45 3.3.3 交叉注意力 46 3.3.4 注意力的逻辑流程实现 47 3.4 Transformer架构分类 48 3.4.1 仅解码器架构 49 3.4.2 仅解码器架构的优势 49 第4章 训练与推理 51 4.1 训练 51 4.1.1 自回归模型的特点 51 4.1.2 模型的输入 52 4.1.3 Dropout 52 4.1.4 损失函数 54 4.1.5 学习率 57 4.1.6 权重初始化 58 4.1.7 Teacher Forcing 58 4.1.8 优化器 62 4.1.9 并行机制 66 4.2 推理 68 第2 篇 核心篇 第5 章 token 71 5.1 分词 72 5.2 词表 73 5.3 分词器 74 5.3.1 分词的粒度 75 5.3.2 分词器的实现 76 5.4 BPE 77 5.4.1 BPE 的算法 78 5.4.2 MINBPE 的实现 78 5.4.3 BPE 的优势和劣势 81 5.5 其他算法 81 5.6 优化与演进 83 5.6.1 BLT 模型 83 5.6.2 LCM 83 第6 章 嵌入层原理与作用 85 6.1 嵌入向量的演进思路 86 6.1.1 向量 86 6.1.2 嵌入向量 87 6.2 嵌入层 90 6.2.1 词嵌入的转换过程 90 6.2.2 嵌入层的实现 92 6.2.3 嵌入的训练 94 6.3 文本嵌入 96 6.3.1 文本嵌入模型的历史 96 6.3.2 Word2Vec 96 6.3.3 ELMo 98 6.3.4 BERT 98 6.3.5 BGE 100 6.3.6 LLM-As-Embedding 100 6.3.7 LLM2Vec 101 6.3.8 基于提示工程的方案 102 6.3.9 基于MoE 的方案 102 第7 章 位置编码的设计思路 103 7.1 位置编码面临的问题 103 7.1.1 词序的重要性 103 7.1.2 Transformer 的架构缺陷 103 7.1.3 位置编码的设计思路 104 7.1.4 位置编码的性质 104 7.2 编码方案的演化 106 7.2.1 整型数字位置编码 106 7.2.2 乘法表示位置编码 106 7.2.3 归一化位置编码 106 7.2.4 二进制位置编码 107 7.2.5 需求拓展 108 7.2.6 正弦位置编码 109 7.3 正弦位置编码的设计思路 112 7.3.1 使用多维度的原因 112 7.3.2 使用多频率的原因 112 7.3.3 使用正余弦的原因 113 7.3.4 表达绝对位置 113 7.3.5 表达相对位置 114 7.3.6 使用相加操作的原因 114 7.4 正弦位置编码特性与思考 115 7.4.1 无向性 115 7.4.2 远程衰减性 115 7.4.3 外推性 116 7.5 NoPE 118 7.5.1 NoPE 的优势 118 7.5.2 NoPE 的劣势 118 7.6 正弦位置编码的实现 119 第8 章 位置编码分类 121 8.1 绝对位置编码与相对位置编码的区别 121 8.1.1 从直观视角思考 121 8.1.2 从模型视角思考 122 8.1.3 绝对位置编码与相对位置编码的优缺点 123 8.2 绝对位置编码 123 8.3 相对位置编码 124 8.3.1 相对位置的意义 124 8.3.2 相对位置编码的设计思路 125 8.3.3 正弦位置编码的基础公式 126 8.3.4 经典式相对位置编码 126 8.3.5 XLNET 中的相对位置编码 127 8.3.6 TENER 中的相对位置编码 128 8.3.7 T5 中的相对位置编码 129 8.3.8 DeBERTa 中的相对位置编码 130 8.3.9 TUPE 中的相对位置编码 130 8.3.10 ALiBi 中的相对位置编码 131 8.3.11 从偏置角度进行划分 132 第9 章 自注意力 134 9.1 自注意力的原理 134 9.1.1 自注意力的设计思路 134 9.1.2 自注意力的输入 135 9.1.3 查询矩阵/ 键矩阵/ 值矩阵 135 9.2 自注意力的关键模块 138 9.2.1 权重矩阵 138 9.2.2 softmax 140 9.2.3 缩放点积注意力 142 9.2.4 点积注意力函数 142 9.2.5 缩放机制 143 9.2.6 注意力分数操作 144 9.2.7 点积替代方案 144 9.3 自注意力的实现 145 9.3.1 哈佛源码 145 9.3.2 Llama 3 147 第10 章 掩码注意力 150 10.1 填充掩码 150 10.1.1 面对的需求 150 10.1.2 填充掩码的实现 152 10.2 序列掩码 153 10.2.1 面对的需求 153 10.2.2 序列掩码的实现 154 10.2.3 序列掩码的延伸价值与潜在局限 157 10.3 核心变量 158 10.3.1 掩码的应用逻辑 159 10.3.2 核心变量的说明 159 10.4 PyTorch 的掩码 160 第11 章 MHA 162 11.1 背景知识 162 11.2 MHA 的原理 164 11.2.1 MHA 的网络架构 164 11.2.2 MHA 的设计思路 166 11.2.3 MHA 的计算流程 167 11.2.4 MHA 的特性与思考 168 11.2.5 MHA 的优势 170 11.3 MHA 的实现 170 11.3.1 MultiHeadedAttention 类 170 11.3.2 MHA 的运算逻辑 170 11.3.3 应用MHA 174 11.4 MHA 的改进 175 第12 章 FFN 177 12.1 FFN 的网络架构 177 12.1.1 FFN 的数学表示 178 12.1.2 FFN 的中间层比率 178 12.1.3 逐位置操作 179 12.1.4 激活函数的作用 180 12.2 FFN 的实现 182 12.2.1 哈佛源码的FFN 实现 182 12.2.2 Llama 3 的实现 183 12.2.3 gpt-oss 的实现 183 12.3 FFN 的功用 185 12.4 知识运用与调控 187 12.4.1 知识提取 187 12.4.2 知识记忆 188 12.4.3 知识定位 190 12.4.4 修改知识 191 第13 章 残差连接与归一化 193 13.1 残差连接 193 13.1.1 面临的问题 193 13.1.2 相关研究 193 13.1.3 网络架构 195 13.1.4 ResNet 的功用 196 13.2 归一化 197 13.2.1 面临的问题 197 13.2.2 归一化的概念 197 13.2.3 归一化的类型 197 13.3 BatchNorm 198 13.3.1 BatchNorm 的公式 198 13.3.2 BatchNorm 的功用 199 13.3.3 PyTorch 中BatchNorm示例 200 13.3.4 BatchNorm 的问题 200 13.4 LayerNorm 201 13.4.1 LayerNorm 的公式 202 13.4.2 LayerNorm 的功用 202 13.4.3 Post-Norm 与Pre-Norm 203 13.5 扩展比对 206 13.5.1 InstanceNorm 206 13.5.2 GroupNorm 206 13.5.3 四种归一化的比对 207 13.6 实现 209 13.6.1 残差的实现 209 13.6.2 LayerNorm 的实现 210 13.7 优化与演进 211 13.7.1 RMSNorm 211 13.7.2 DeepNorm 213 13.7.3 RealFormer 214 13.7.4 nGPT 214 13.7.5 DeepSeek mHC 214 第14 章 生成与采样 216 14.1 Generator 217 14.1.1 线性层的功能 217 14.1.2 softmax 层的功能 217 14.1.3 Generator 类的实现 217 14.1.4 Generator 类的应用 218 14.2 采样 219 14.2.1 常见采样方法 220 14.2.2 贪心搜索采样方法 220 14.2.3 束搜索采样方法 221 14.2.4 top-k 采样方法 224 14.2.5 top-p 采样方法 225 14.3 采样参数 226 14.3.1 温度参数 226 14.3.2 重复惩罚参数 228 14.4 logits 的分析 230 14.4.1 中间隐状态的变化规律 230 14.4.2 利用pre-softmax 推理logits 230 14.4.3 在隐空间进行思考 231 14.4.4 基于熵的采样 231 14.5 权重共享 232 14.5.1 Vanilla Transformer 的权重共享 232 14.5.2 共享词表权重 233 14.5.3 共享FC 和嵌入 233 第3 篇 扩展篇 第15 章 RoPE 236 15.1 总体概述 237 15.1.1 正弦位置编码的改进点 237 15.1.2 RoPE 的改进方案 237 15.2 RoPE 的原理推导 237 15.2.1 f () 函数的重要性 238 15.2.2 f () 函数的目标 238 15.2.3 f () 函数的逐步推导 239 15.2.4 正式定义 242 15.2.5 RoPE 与正弦位置编码的比对 246 15.3 RoPE 的特性与思考 246 15.4 RoPE 的实现 250 15.4.1 Llama 3 250 15.4.2 rotate_half 253 第16 章 FlashAttention 256 16.1 内存和计算 257 16.2 优化注意力机制 258 16.2.1 标准注意力机制 258 16.2.2 解决方案 260 16.3 softmax 的改进 266 16.3.1 原生softmax 266 16.3.2 safe softmax 266 16.3.3 online softmax 267 16.3.4 从自注意力角度思考softmax 269 16.3.5 1-pass FlashAttention优化 270 16.3.6 FlashAttention (分块)优化 271 16.4 FlashAttention 算法实现 271 16.4.1 总体思路 271 16.4.2 算法有效性证明 272 16.4.3 分块策略 274 16.4.4 前向传播算法 275 16.5 计算量与显存占用 278 16.5.1 I/O 复杂度 278 16.5.2 计算复杂度 279 第17 章 FlashAttention-2 280 17.1 FlashAttention-2 的基本介绍 280 17.1.1 FlashAttention-2 方案总体思路 280 17.1.2 FlashAttention-2 的算法细节 281 17.1.3 小结 288 17.2 算法实现 289 17.2.1 算法实现的总体思路 290 17.2.2 线程模型 290 17.2.3 _attention 类 290 17.2.4 _attn_fwd() 函数 292 17.2.5 _attn_fwd_inner() 函数 295 第18 章 KV Cache 297 18.1 未引入KV Cache 时期 297 18.1.1 LLM 的推理阶段 297 18.1.2 推理的简化流程 298 18.1.3 冗余计算分析 299 18.1.4 改进冗余计算方案 301 18.2 引入KV Cache 301 18.2.1 基于KV Cache 的网络架构 302 18.2.2 加入KV Cache 后的执行流程 303 18.2.3 重定义推理过程 304 18.2.4 KV Cache 的特性 305 18.3 KV Cache 的实现 306 18.3.1 总体思路 306 18.3.2 单层的KV Cache 307 18.4 KV Cache 的资源占用 310 18.4.1 KV Cache 的存储量 310 18.4.2 KV Cache 的计算量 310 第19 章 MoE 311 19.1 前置知识 311 19.1.1 MoE 出现的核心动因 311 19.1.2 MoE 的核心理念 312 19.2 MoE 的发展历史 312 19.2.1 奠基之作 313 19.2.2 Sparse MoE 方案 313 19.2.3 GShard 方案 313 19.2.4 Switch Transformer 方案 313 19.3 MoE 的模型架构 314 19.3.1 门控函数 315 19.3.2 专家 319 19.3.3 注意力机制和MoE 的对比 322 19.4 MoE 的计算流程 322 19.5 MoE 的计算量 324 19.6 MoE 的实现 324 19.7 并行计算 326 19.7.1 MoE 计算中的通信需求 327 19.7.2 专家并行 328 19.7.3 All-to-All 通信 332 第20 章 LoRA 334 20.1 LoRA 的基本介绍 334 20.1.1 LoRA 的概念 334 20.1.2 LoRA 的应用 335 20.1.3 LoRA 的特性 336 20.2 LoRA 的复杂度与资源占用 339 20.2.1 LoRA 的计算量分析 339 20.2.2 LoRA 的内存占用 340 20.3 LoRA 的支撑机理 341 20.3.1 本征维度 341 20.3.2 子空间微调 343 20.3.3 复杂系统视角 344 20.3.4 NTK 视角 344 20.3.5 模型改变视角 344 20.4 LoRA 的实现 345 20.4.1 LoRA 的创建 345 20.4.2 模块示例 345 第21 章 长度外推 347 21.1 长度外推的背景知识 347 21.1.1 面临的问题 347 21.1.2 影响长度泛化的因素 347 21.1.3 微调的挑战 348 21.1.4 长度外推的必要性 349 21.2 长度外推的基础知识 349 21.2.1 长度外推的概念 349 21.2.2 外推技术分类 349 21.3 位置编码与长度外推 350 21.3.1 绝对位置编码及其外推 350 21.3.2 相对位置编码及其外推 350 21.3.3 LLM 时代的长度外推 351 21.3.4 随机化位置编码 351 21.4 RoPE 外推 352 21.4.1 问题及原因 352 21.4.2 RoPE 的特性 354 21.5 RoPE 外推基本方案 355 21.5.1 直接外推 355 21.5.2 位置插值 356 21.6 RoPE 外推进阶方案 359 21.6.1 位置编码的通用公式 360 21.6.2 NTK-aware Interpolation 361 21.6.3 NTK-by-partsInterpolation 363 21.6.4 Dynamic NTKInterpolation 365 21.6.5 YaRN 366 第22 章 大模型量化 368 22.1 离群值 369 22.1.1 离群值定义 369 22.1.2 离群值特点 369 22.1.3 离群特征 370 22.1.4 离群特征分布规律 370 22.1.5 离群值出现的原因 370 22.1.6 离群值的作用 374 22.1.7 大模型量化难点 374 22.2 超级离群值 375 22.2.1 超级权重 375 22.2.2 大规模激活 376 22.3 Transformer 量化 379 22.3.1 Transformer 量化的总体思路 379 22.3.2 应用量化的Transformer模块 380 22.3.3 量化的分类 381 22.3.4 常见量化方案 381 22.3.5 SGLang 的量化方法支持 386 第4 篇 高阶篇 第23 章 KV Cache 优化 388 23.1 背景知识 388 23.1.1 模型响应的度量指标 388 23.1.2 LLM 推理服务的内存危机 388 23.1.3 KV Cache 存在的问题 389 23.2 优化KV Cache 总体思路 390 23.3 从公式视角优化KV Cache 391 23.3.1 从注意力头数量视角进行优化 392 23.3.2 从注意力头维度视角进行优化 393 23.3.3 从占用字节数视角进行优化 393 23.3.4 从Transformer 层数视角进行优化 396 23.4 从特性视角优化KV Cache 398 23.4.1 从预填充视角进行优化 399 23.4.2 从内存管理视角进行优化 400 23.4.3 从调度策略视角进行优化 403 第24 章 缩减序列长度 404 24.1 KV Cache 稀疏化 404 24.1.1 优化的依据 404 24.1.2 稀疏化方案的分类 405 24.1.3 静态稀疏化 406 24.1.4 动态稀疏化 410 24.1.5 针对预填充的稀疏化 413 24.1.6 针对层特点的稀疏化 414 24.1.7 其他稀疏化方案 416 24.2 KV Cache 复用 416 24.2.1 KV Cache 合并 416 24.2.2 前缀复用 418 第25 章 分离抑或合并 426 25.1 自回归与迭代 426 25.2 静态批处理 427 25.2.1 静态批处理调度策略 427 25.2.2 静态批处理问题及原因 428 25.2.3 静态批处理面临的挑战 431 25.3 解决方案的流派 431 25.3.1 融合派 432 25.3.2 分离派 446 25.3.3 业界实现 453 第26 章 MQA 和GQA 458 26.1 MQA 459 26.1.1 MQA 的概念 459 26.1.2 MQA 的实现 460 26.1.3 MQA 的效能与局限 461 26.2 GQA 462 26.2.1 GQA 的概念 462 26.2.2 架构比对 462 26.2.3 GQA 的实现 463 26.2.4 GQA 的效能与局限 466 26.3 转换MHA 模型 466 第27 章 DeepSeek MLA 468 27.1 原理 468 27.2 MLA 的核心要点 472 27.2.1 低秩键/ 值联合压缩 473 27.2.2 权重吸收 475 27.2.3 解耦RoPE 476 27.2.4 MLA 的资源占用 479 27.3 MLA 的实现 481 27.3.1 MLA 的配置 481 27.3.2 DeepseekV2Attention 类 481 27.3.3 操作查询向量 483 27.3.4 操作键/ 值 484 27.3.5 注意力操作 487 27.3.6 MLA 的前向传播 487 27.4 MLA 的优化 489 27.4.1 压缩优化 489 27.4.2 权重吸收 489 27.4.3 DeepSeek-V3 代码 492 27.5 将其他模型转换为MLA 496 27.5.1 将GQA 转换为MLA 496 27.5.2 将MHA 转换为MLA 497 第28 章 MoE 进阶 498 28.1 MoE 的优化逻辑 498 28.1.1 负载均衡 499 28.1.2 辅助损失函数 499 28.1.3 专家选择策略 503 28.2 DeepSeek-V1 505 28.2.1 背景知识 505 28.2.2 解决方案 506 28.2.3 负载均衡 507 28.2.4 MoE 的实现 508 28.3 DeepSeek-V2 509 28.3.1 负载均衡 509 28.3.2 MoE 的实现 510 28.4 DeepSeek-V3 516 28.4.1 DeepSeek-MoE 的架构演进 516 28.4.2 负载均衡损失函数 518 28.4.3 比对分析 520 28.4.4 MoE 的实现 521 第29 章 投机解码 525 29.1 背景知识 525 29.1.1 自回归采样的局限性 525 29.1.2 优化方案 526 29.2 投机解码基本概念 526 29.3 BPD 528 29.3.1 BPD 设计动机 528 29.3.2 BPD 设计思路 529 29.3.3 BPD 的网络架构 529 29.3.4 BPD 的流程 530 29.4 投机解码原理 530 29.4.1 投机解码的设计动机 531 29.4.2 投机解码的设计思路 531 29.4.3 投机解码技术的分类 532 29.5 投机解码算法 535 29.5.1 投机解码的算法流程 535 29.5.2 投机解码的关键步骤 536 29.5.3 重点分析 538 29.6 投机解码的实现 542 29.6.1 外层逻辑 542 29.6.2 实施算法 544 29.7 树验证 545 29.7.1 面临的问题 546 29.7.2 设计思路 546 第30 章 Medusa 548 30.1 Medusa 的原理 548 30.1.1 设计动机 548 30.1.2 设计思路 549 30.2 Medusa 的设计核心点 551 30.2.1 流程 551 30.2.2 网络架构 551 30.2.3 多头的功能 552 30.2.4 Medusa 的局限性 553 30.3 树验证 554 30.3.1 解码路径 554 30.3.2 最佳构造方式 555 30.4 实现 556 30.4.1 关键变量 556 30.4.2 整体逻辑 559 30.4.3 初始化与前向传播 561 30.4.4 生成候选序列 563 30.4.5 验证候选序列 564 30.4.6 计算最优路径 565 30.5 典型接受 566 第31 章 前瞻解码 568 31.1 Jacobi 解码 568 31.1.1 设计思路 568 31.1.2 Jacobi 解码的算法 569 31.2 前瞻解码的原理 569 31.2.1 设计思路 570 31.2.2 并行分支执行 570 31.2.3 数据结构和超参数 571 31.3 前瞻解码的实现 573 31.3.1 掩码的作用 574 31.3.2 解码的输入和输出 574 31.3.3 前瞻解码流程 578 31.3.4 初始化的逻辑 579 31.3.5 前瞻分支的逻辑 579 31.3.6 验证分支的逻辑 579 31.3.7 准备下次迭代 580 第32 章 DeepSeek MTP 582 32.1 EAGLE 582 32.1.1 背景知识 583 32.1.2 设计思路 583 32.1.3 EAGLE 的网络架构 584 32.1.4 EAGLE 的执行流程 585 32.1.5 EAGLE 的实现 585 32.1.6 EAGLE 的训练 587 32.1.7 EAGLE 的升级方案 588 32.2 Meta MTP 589 32.2.1 设计思路 589 32.2.2 Meta MTP 的网络结构 589 32.2.3 Meta MTP 的执行流程 590 32.2.4 Meta MTP 的有效性 591 32.3 DeepSeek MTP 592 32.3.1 DeepSeek MTP 的网络 架构 592 32.3.2 DeepSeek MTP 的流程 593 32.3.3 DeepSeek MTP 的公式 596 32.3.4 DeepSeek MTP 的实现 597 32.3.5 DeepSeek MTP 的训练 608 32.3.6 DeepSeek MTP 的推理 609 第33 章 SGLang :从推理引擎到LLM运行时生态的演进之路 610 33.1 团队简介:学术与工业界的协同创新力量 610 33.2 SGLang :破解语言模型程序困境的系统级方案 611 33.2.1 LM Programs 的崛起: 从“单轮交互” 到“程序式调度” 611 33.2.2 LM Programs 的两大困境:开发难与执行慢 612 33.2.3 SGLang 的系统级破局: 从“适配” 到“重构” 613 33.2.4 SGLang 架构概览 614 33.2.5 运行时系统: 以创新优化加速推理执行 616 33.3 发展历程:从技术原型到生态平台的五阶段演进 619 33.3.1 五阶段发展历程: 从原型到生态的递进 619 33.3.2 演进历程对 MLSys 领域研究者的启示 621 33.4 未来方向:从推理引擎到 LLM运行时生态 622
你还可能感兴趣
|

书单推荐 





