当作面试一样回答一下这些问题:
1. 子序列两层for循环,if s[i] == s[j]:
dp[i][j] = dp[i - 1][j - 1] + 1
else :
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])
2. xx
3.xx
4. lora, p tuning v1 v2, adapter tuning, prefix tuning.
5. 绝对,相对位置编码, Rope旋转位置编码
6. 从输入开始,一个是绝对位置编码一个是Rope编码。经过embedding层后,transformer decoder直接输入注意力层,而llama则是先经过norm,一个是Post norm一个是Pre norm,同时norm这里的区别前者为layer norm后者为Root mean square norm,对于注意力层,llama是GQA而transformer decoder是MHA,再经过FFN层,FFN层的激活函数transformer deocder是Relu,而llama没记错的话是SwiGelu,(就想到这些,不知道还有没有不同)
7. 不知怎么答
8. SGD , w = w - lr * gradient, Adam引入了一阶动量与二阶动量(方差)
9. 交叉熵损失
10. 假设dB参数的大模型,模型与梯度半精度fp16保存,一个参数两个字节,则占用2d G + 2d G = 4d G显存,优化器如果用adam,fp32保存模型权重备份,动量与方差,则占用3 * 4 * d G = 12d G显存,对一个dB参数的大模型做full training显存占用估计在16dG。(deepspedd, 模型并行,张量并行之类的可能会继续问了)
欢迎补充点评