还记得刚接触NLP的时候就是做NLG(RNN时代了),后续感觉生成式的东西太不靠谱,因此做了几年的信息抽取,随着LLM能力的“涌现”,是时候快速follow一下相关知识了。全都自己写显然不现实,效率也不高,因此这篇博客会以“收集优秀的技术博客“为主,方便和我一样想要快速catch up的同学“查漏补缺”。
LLM认知
- LLM-Finder:大模型所颠覆的认知(一)
- LLM-Finder:大模型所颠覆的认知(二)
- LLM-Finder:大模型认知之旅(三)
- LLM-Finder:大模型认知之旅(四)
GPT发展史
了解GPT1,2,3的发展过程,in-context learning和meta learning的关系。
大模型的一些Nums
- 严昕:每个LLM开发者都应该知道的数字
- 回旋托马斯x:分析transformer模型的参数量、计算量、中间激活、KV cache (2.1 优化器参数计算有误,应该是4*3=12倍)
- 白强伟:【自然语言处理】【大模型】Chinchilla:训练计算利用率最优的大语言模型
如果您也对AI大模型感兴趣想学习却苦于没有方向👀
小编给自己收藏整理好的学习资料分享出来给大家💖
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码关注免费领取【保证100%免费
】🆓
Transformers架构
Code
现在开源的LLM基本都是在Llama上魔改的了,因此Llama的modeling_llama.py很重要,建议看huggingface的,全文背诵就完事了。(Tensor Parallelism (pretraining_tp>1)那段看着吓人,不用看,跳过就行了)
位置编码
重点学习苏神的《Transformer升级之路》系列。
(了解一下Transformer几个基础的位置编码方式)
RoPE现在是大多数LLM的默认编码方式,用绝对位置编码方式实现相对位置编码的效果。(苏神tql)
重点阅读:
值得注意的是, decoder的位置编码和encoder略有不同,因为 解码器端的masked self-attention 不是置换等变的,自回归LM本身就包含了一定的位置信息,位置编码可能显得就不那么重要了。事实上,仅利用 Transformer 解码器的模型有可能在不包含显式位置表示的情况下感知位置信息。语言建模任务的一些经验结果证实了这一点 ,作者发现删除位置编码甚至可以提高性能。
RoPE的一些数学知识回顾:
长度外推问题
长度外推的核心是训练、推理的长度不一致问题,体现在两个点:
问题1解决方案:ALIBI、KERPLE、Sandwich、XPOS、PI、NTK-RoPE(目前看起来这个最强,不用finetune);
问题2解决方案:softmax的时候加一个 log512n 系数;
重点阅读(建议全文背诵):
参考阅读:
Parallel Context Window
空门:[PoC] Parallel Context Windows
Attention
Attention的改进目的:
Attention的Taxonomy:
默认会用上的两个Attention技术:Multi-Query Attention、Flash Attention
1. Multi-Query Attention
Multi-Query Attention核心是kv不搞多头,省了不少参数量。现在用的很多,PaLM、ChatGLM2、Falcon等就是用的这个。
2. Grouped-Query Attention
llama2用了
致Great:【LLM系列之LLaMA2】LLaMA 2技术细节详细介绍!
Andy Yang:为什么现在大家都在用 MQA 和 GQA? (这篇系统的讲了MHA MQA GQA的关系和作用)
3. FlashAttention
FlashAttention也很火,Meta推出的开源大模型LLaMA,阿联酋推出的开源大模型Falcon都使用了Flash Attention来加速计算和节省显存。核心是用分块softmax等价替代传统softmax,节约HBM,高效利用SRAM,省显存,提速度。
关键词:HBM、SRAM、分块Softmax、重计算、Kernel融合。
4. 线性Attention
RWKV、RetNet
FFN激活函数
其主要任务是处理来自Attention层的信息。
Attention机制能够处理词语之间的相互关系,但是它无法进行更为复杂的、非线性的数据处理。
而FFN层可以在每个Transformer模块中增加非线性处理能力,增强模型的整体表达能力。
在原始的Transformer模型中,FFN层通常由两个线性变换和一个非线性激活函数(如ReLU或GELU)组成。
以下是一些FFN层的变种:
ReLU、GELU、GLU、GeGLU、Swish、SwiGLU (套娃即视感)
- 绝对位置、相对位置
- 绝对位置:正余弦、训练式
- 相对位置:RPR、XLNET、T5、DeBERTa、RoPE
- 让研究人员绞尽脑汁的Transformer位置编码 - 科学空间|Scientific Spaces
- Transformer升级之路:2、博采众长的旋转式位置编码 - 科学空间|Scientific Spaces
- 【OpenLLM 009】大模型基础组件之位置编码-万字长文全面解读LLM中的位置编码与长度外推性(上)
- Jarvix:证明:两个vector内积<q,k>=Re[qk*] (复数内积的几何意义是投影模长*被投影模长,复数乘积的几何意义是旋转)
- https://mengqi92.github.io/2015/10/06/complex/
- https://www.ruanyifeng.com/blog/2012/09/imaginary_number.html
- 位置编码不一致(推理的时候有训练没见过的位置编码);
- attention span大小不一致(推理的时候attention span更大,导致墒增);
- Transformer升级之路:7、长度外推性与局部注意力 - 科学空间|Scientific Spaces
- Transformer升级之路:8、长度外推性与位置鲁棒性 - 科学空间|Scientific Spaces
- Transformer升级之路:9、一种全局长度外推的新思路 - 科学空间|Scientific Spaces
- Bias项的神奇作用:RoPE + Bias = 更好的长度外推性
- 田渊栋团队新作:通过位置插值来扩展大语言模型的上下文窗口 (Meta的PI,在RoPE的基础上做的)
- Extending Context is Hard (SuperHot,跟Meta的PI工作同时搞的,一样的idea,就是这么巧)
- NTK-Aware Scaled RoPE (在PI的基础上更进一步,不需要finetune)
- Transformer升级之路:10、RoPE是一种β进制编码 - 科学空间|Scientific Spaces (里面提到NTK-RoPE的解释,苏神tql)
- Transformer升级之路:11、将β进制位置进行到底 - 科学空间|Scientific Spaces
- Transformer升级之路:12、无限外推的ReRoPE? - 科学空间|Scientific Spaces
- 从熵不变性看Attention的Scale操作 - 科学空间|Scientific Spaces
- 为什么gpt模型输入的token最大数量被限制在几万,是有技术问题吗?
- 机器之心:真·量子速读:突破GPT-4一次只能理解50页文本限制,新研究扩展到百万token
- 黑客 George Hotz 爆料 GPT-4 由 8 个 MoE 模型组成,真的吗?
- 提升上下文长度
- 加速、减少内存占用
- DengBoCong:Transformer的9种变体概览
- Transformer模型有多少种变体?复旦邱锡鹏教授团队做了全面综述
- fantastic:FlashAttention与Multi Query Attention
- 何枝:【LLM 加速技巧】Muti Query Attention 和 Attention with Linear Bias(附源码)
- Safe Softmax:忆臻:softmax函数计算时候为什么要减去一个最大值?
- fantastic:FlashAttention与Multi Query Attention (可以快速了解一下分块softmax)
- 回旋托马斯x:FlashAttention:加速计算,节省显存, IO感知的精确注意力 (这篇写的很完整)
- 斯坦福博士一己之力让Attention提速9倍!FlashAttention燃爆显存,Transformer上下文长度史诗级提升 (更新到2.0版本了,比1.0快2倍,原始self-attn的5-9倍)
- 如何评价最新的RWKV论文 (arXiv 2305.13048)? - Civ的回答 - 知乎
- 线性Attention的探索:Attention必须有个Softmax吗? - 科学空间|Scientific Spaces
- ReLU:Rectified Linear Unit。 ReLU(x)=max(0,x)
- GELU: Gaussian Error Linear Unit。GELU(x)=xP(X<=x)=xΦ(x) ,P为伯努利分布,X为标准正态分布
- GLU:Gated Linear Units。 GLU(x)=σ(xW+b)⊗(xV+c)
- GEGLU: GEGLU(x)=GELU(xW+b)⊗(xV+c)
- Swish: Swishβ(x)=x⊗σ(βx)
- SwiGLU: SwiGLU(x)=Swishβ(xW+b)⊗(xV+c)
可以看到SwiGLU最强,所以现在大部分都用这个了。
Normalization
【图片】
微软提出了Group Norm(RetNet)
Nguyen和Salazar(2019)发现相对于Post-LN,Pre-LN能够提升Transformer的稳定性。然而,Pre-LN在底层的梯度往往大于顶层,导致其性能不及Post-LN。
- 苏剑林:为什么Pre Norm的效果不如Post Norm?
- 王辉:【重新了解Transformer模型系列_1】PostNorm/PreNorm的差别
- 叮当猫:【DL&NLP】再谈Layer-Norm:Pre-LN、Post-LN、DeepNorm
- 冯良骏:昇腾大模型|结构组件-1——Layer Norm、RMS Norm、Deep Norm
Transformer替代品
1. RetNet
2. rwkv
训练
整体流程
分布式计算
DeepSpeed
- Data Parallel(DP、DDP)、Model Sharding
- DDP Ring-AllReduct基本概念:All-reduce = Scatter Reduct + All Gather
- Fully Sharded Data Parallel (FSDP):代表ZeRO,核心就是在DDP的基础上,用RingAllReduce把优化器状态(zero1)、梯度(zero2)、模型参数(zero3)全都shard掉。
- OneFlow:手把手推导Ring All-reduce的数学性质
- YuxiangJohn:数据并行Deep-dive: 从DP 到 Fully Sharded Data Parallel (FSDP)完全分片数据并行
- basicv8vc:DeepSpeed之ZeRO系列:将显存优化进行到底
- 全释AI:高性能计算:RoCE v2 vs. IB网络该怎么选?
- https://blog.csdn.net/weixin_43301333/article/details/127237122 (deepspeed config 配置)
- JOYWIN:deepspeed入门教程 (Huggingface+deepspeed)
- DeepSpeed
- Fully Sharded Data Parallel: faster AI training with fewer GPUs
Megatron
- Maxliu:大模型训练:分布式训练之并行技术
- Felix Hao:手把手教你训练千亿级LLM模型(一):准备工作(作者对比了deepspeed、megatron等框架的区别,但是有些错误,我写在评论区了)
- 3-D并行 (tensor、pipeline、sequence)
Activation Recomputation
也叫gradient checkpointing,通过牺牲额外的计算成本来减少内存成本。其工作原理是反传算梯度的时候重新计算某些层的activations,而不是将它们存储在显存中。显存减少的程度取决于选择哪些层做checkpointing。
推理
采样、temperature、Top-K
KV Cache
Transformer推理性能优化技术很重要的一个就是K V cache,能否通俗分析,可以结合代码?
评测
Isaac 张雯轩:LLM Evaluation 如何评估一个大模型?
优化器
AdamW、Adafactor
数据清洗
分词
BPE、wordpiece、sentencepiece
sentencepiece最大的优势:用unicode替代字符作为最小单元,不仅统一语言,还能实现可逆转换(tokenize后可以detokenize回原文)。
吃果冻不吐果冻皮:大模型词表扩充必备工具SentencePiece
预训练
Scaling Laws
- 2020 OpenAI:knight:Scaling Laws for Neural Language Models
- DeepMind Training Compute-Optimal Large Language Models (Chinchilla)(纠正了Scaling laws文章的一些错误):王辉:【预训练模型】推翻OpenAI结论, DeepMind重新定义预训练的训练参数和训练规模的关系!
- 成诚:大模型时代,是 Infra 的春天还是冬天? (光年之外的大佬,高屋建瓴,写得很好)
SFT
深度强化学习
PG算法入门
核心需要理解: τ 、 R(τ) 、loss计算、蒙特卡洛、PPO。
RLHF
- 程路:ChatGPT 背后的“功臣”——RLHF 技术详解
- 战士金:详解大模型RLHF过程(配代码解读)
- mathfinder:都2023年了我不允许你还不懂RLHF!【理论篇】 (这篇我觉得写的非常好!建议全文背诵)
多模态LLM
垂直领域大模型
- 领域大模型-训练Trick&落地思考
- 刘聪NLP:垂直领域大模型的一些思考及开源模型汇总
- 垂直领域大模型落地思考
- Speciality vs Generality: An Empirical Study on Catastrophic Forgetting in Fine-tuning Foundation Models
👉如何学习AI大模型?👈
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】