先占坑24号早上起来补
大模型的架构
大模型的训练
模型训练=目标函数+优化算法
可用任何模型将token序列映射到上下文嵌入中
一、目标函数
1.Decoder-only模型
①映射到上下文嵌入
②用嵌入矩阵获得每个token得分
③指数化、归一化得预测分布
用负对数最大似然作为目标函数
2.Encoder-only模型
①单向(上下文嵌入)一→双向(上下文嵌入)
②BERT目标函数=掩码语言模型+下一句预测
掩码语言模型:模型分布建模、生成随机噪声掩码、减少分布偏移
下一句预测:目标是第二句是否跟随第一句
③RoBERTa
3.Encoder--decoder模型
①BART变换了掩码文档中30%token,打乱子句
②T5、GPT2、GPT3将分类→自然语言生成
二、优化算法
1.小批量随机梯度下降
关键点:
①参数可快速收敛
②优化数值稳定
③内存高效
优化考虑的角度:
①经典优化:二阶方法和约束优化
②机器学习:随机方法、隐式正则化
③深度学习:初始化、归一化
④大语言模型:直觉
2.Adam(adaptive moment estimation)
①创新:a.动量b.自适应步长
②存储占用:模型参数2→4
3.AdaFactor:减少存储占用的优化算法
特点:
①不存储0(m×n)矩阵,存并重构矩阵(和矩阵)
O(m+n)
②除去动量
③用于训川练T5
④可能使训练变困难
4.混合精度训练:减少存储
主权重存储在(浮点)FP32中,在FP16中执行其他操作,使存储减少一半
5.Learning rate:随时间推移而衰减
Transform用warmup提高LR
原因:防止归一化梯度消失
6.initialization
标准初始化,GPT2、3还缩放权重,T5还给注意力矩阵加了一个常数
我的感想是,首先文章里提到的目标函数和优化算法都是我比较熟悉,也在吴恩达的课程作业里做过的,理解起来确实没什么难度。另一方面这次学到的不一样的应该是内存优化的算法了吧,之前学的时候对算法没有什么了解,也不懂内存优化空间优化,而现在对这件事的概念有了,知道了前人从参数方面优化内存的一些尝试和结果,这就是科研。这些参数的调整一定消耗了不少的训练资源和电量,除了有方向的尝试外,提高训练效率也是一个很重要的方向。