Transformer架构-学习记录

计划与目标

学习目标

来源:大模型方向刚进组,大佬们有没有大模型的学习路线? - 笙囧同学的回答 - 知乎

  1. 能从零用PyTorch手写一个完整的Transformer(不看任何参考代码)
  2. 能解释清楚每一个设计选择的动机:为什么用scaled dot-product?为什么要multi-head?为什么要positional encoding?LayerNorm为什么放在这个位置?
  3. 理解KV Cache的工作原理——不只是”缓存key和value”,而是知道它为什么能避免重复计算、它的显存占用怎么算、不同的attention变体对KV Cache有什么影响
  4. 知道Transformer跟RNN/LSTM相比,本质上做了什么取舍——它获得了什么(并行性、长距离依赖),放弃了什么(归纳偏置、计算效率随序列长度的变化)

学习方式

  1. 先看原论文”Attention Is All You Need”;
  2. 看Jay Alammar的图解博客建立直觉,然后自己写一遍代码;
  3. 读nanoGPT或minGPT的实现,跟你自己写的对比。
  4. Andrej Karpathy的”Let’s build GPT from scratch”那个视频也很好,大概两个小时,看完你对GPT的训练流程会有非常具体的理解。

学习安排

  1. 计划花2-3周时间把上面的内容学习一遍,历史已经看过《Attention Is All You Need》,PyTorch也会,但始终是感觉知道Transformer是什么,由哪些组成,然后就没了,这种感觉非常不好。
  2. 因此写了该文档来记录自己学习的过程,对于自己需要回答以上几个问题,对于成果,需要写一篇Transformer的博客,实现一个完整的Transformer,以及跑起来,实验效果什么的需要展示出来。