Transformer
伟大无需多言。
info
《Attention Is All You Need》截止2025年,谷歌学术总引用次数排名第2。
关于大模型,我很早就了解了它的工作原理,但是和类与对象一样,很难在短时间内向他人讲述清楚。我认为抽象的内容最需要的是可视化的展示。
Transformer可视化这个项目很好的展示了Transformer的工作原理。
以下是我配套的一些补充说明,目的是 根据公式与原理逐步手写一个Transformer模型。
以下是我的基础模型配置:
dtype = 'bfloat16' # 数据类型:即每个数字占用16位(2字节),适当降低精度可以减少显存占用并轻度降智,精度低于int4时模型会断崖式降智。
batch_size = 64 # 批次大小:越大训练速度越快,但占用显存越多。对模型智力影响偏小。
block_size = 1024 # 上下文长度:越大,模型理解的上下文越多,智力越强,但占用显存越多。
n_embd = 768 # 词嵌入维度:越大,模型学习能力越强,但占用显存指数级增加。对模型智力有较大影响。
n_layer = 6 # Transformer层数:层数越多,模型表达能力越强,但训练和推理时间线性增加,显存占用也增加
n_head = 6 # 注意力头数:多头注意力机制 的头数,通常设为词嵌入维度的约数,用于并行学习不同的注意力模式
# 以下和显存占用无关,和收敛速度有关
dropout = 0.0 # Dropout比率:初期设为 0 加速训练,后期如果过拟合调成 0.1,用于防止过拟合
learning_rate = 6e-4 # 学习率:控制模型参数更新的步长,过大可能导致训练不稳定,过小训练速度慢
max_iters = 5000 # 最大训练迭代次数:训练的总轮数,需要根据数据集大小和训练效果调整
lr_decay_iters = 5000 # 学习率衰减迭代次数:学习率开始衰减的迭代次数,通常与max_iters相同
min_lr = 6e-5 # 最小学习率:学习率衰减的下限,防止学习率过小导致训练停滞
# 基础配置
device = 'cuda' # 计算设备:'cuda'表示使用GPU加速,'cpu'表示使用CPU(速度较慢)
compile = True # 是否编译模型:True会使用PyTorch的torch.compile优化,可以提升训练和推理速度
代码
开源仓库地址:
https://github.com/jingyaogong/minimind-v
https://github.com/jingyaogong/minimind
李沐的动手学深度学习