LSTM

LSTM 在 RNN 的基础上很好的解决了长距离详细传递的问题,它引入了 Cell State 和三个门 Forget Gate, Input Gate 和 Output Gate 来传输记忆和决定哪些记忆是需要的,哪些不需要。

CS336 Lecture 3: Architectures & Hyperparameters

  • Normorlization
    • Pre - Post
    • Layer Norm - RMS Norm
  • Activations
    • ReLU, GeLU, GLU
  • HyperParameters
    • $d_{ff}$,$d_{model}$
    • num_heads
    • vocabulary
    • dropout & regularization
  • Stability Tricks
  • Other MHA

现代的 Transformer 架构中,Transformer Block 都采用 PreNorm 而不是 PostNorm,具体来说就是把 Norm 放在注意力机制和 FFN 前馈网络层前面,而不是进行残差连接之后再 Norm。优点在于==训练更稳定,可以采用更大的学习率==。

CS336 Lecture 2: Computing

!!! abstract 本节主要讲解内存计算问题,首先介绍了float32, float 16 等数据类型。随后介绍 PyTorch 中的 tensor 这一重要的数据类型。最后举例介绍了在模型训练中各个部分所需要的计算量,并介绍了浮点运算利用率这一指标以衡量硬件计算效率。重点如下: 1. 在PyTorch 中 tensor 是对已分配内存的指针,很多操作无需新占用内存 2. 大型矩阵乘法在深度学习所需计算量最大 3. 浮点运算利用率 $MFU=\frac{actualFLOP/s}{promised FLOP/s}$
4. 前向传播所需计算量:2×(#tokens)×(#parameters) 5. 反向传播所需计算量:4×(#tokens)×(#parameters)

CS336 Lecture 1: Tokenization

!!! abstract 本节主要讲解常见的几种 Tokenizer 以及它们的优劣,最后介绍了 BPE 的实现思路。

  • 优点:不会出现 Out of vocabulary 的情况
  • 缺点:词表大小爆炸,需要涵盖每一种语言的每一个字符

将字符串转码为 UTF-8 bytes,例如:‘你’ → ‘E4 BD A0’,每个 byte 能表示 0-255 就是一个 token。

KVCache

KVCache 的应用场景
KV Cache 的主要目的是 “加速自回归生成”,在生成下一个 token 时,只需要计算当前 token 的 query、key、value。之前的 key/value 被缓存,直接拼接使用,避免重复计算整个历史序列的 attention,这在推理阶段能显著提升速度。但是在预训练阶段,例如 LLaMa 或者 GPT 采用的都是 Teacher-Forcing 这种并行训练,我们把 logits 和 labels 错位。这种计算是并行的,不需要“增量”生成,所以使用 KV Cache 反而会增加代码复杂度和内存开销,收益很小甚至为负。

Teacher-Forcing vs 自回归生成

CS224N Lecture 12: Neural Network

介绍混合精度训练之前先回顾计算机组成原理的两个知识点:

浮点数在计算机上面是以 “sign + exp + digits” 的格式存储的,exp 的大小决定了浮点数范围,digits 的大小决定了浮点数的精度。

CS224N Lecture 10: Post-Training

Post-training

Post-training 位于预训练之后,目的是为了让模型 更懂任务、更听指令、更符合人类意图

Post-training 包含3个步骤:

  1. Finetune
  2. RLHF
  3. DPO

其中 Finetune 又包含 Instruction Finetuning、LoRA、Task Finetuning 等。

Optimizer

深度学习一般的过程为:前向传播 → 计算 loss → 反向传播 → 计算梯度 → 更新参数,optimizer 的作用就是利用梯度来更新参数。梯度下降是一种流行的优化算法,算法计算出损失函数相对于神经网络中每个参数的梯度,然后在负梯度方向上更新参数,这样就能减少损失函数。

CS224N Assignment 2

  1. 数据预处理:会得到三个数据集以及一个 Parser,在依存分析实验中 Parser 统筹管理转移系统中的全部资源,包括 Stack, Buffer, Arcs 还有一个深度学习的 model。
  2. 训练过程:train 函数会进行 n 个 batch 的训练,保存 UAS 最大的一个模型。
  3. 使用刚刚保存的最好模型对 test 数据集进行处理