1.使用半精度训练时,bf16和fp16格式有什么异同?
二者都是占用16bit空间。
fp16由1个符号位、5个指数位和10个尾数位组成。fp16在表达小数时具有较高的精度,但表示的最大范围相对bf16比较小。相比bf16,在表达较大的数时更容易出现上溢的情况。
bf16由1个符号位、8个指数位和7个尾数位组成。相比于fp16,bf16牺牲了一些尾数位以增加指数位,扩大了表达的范围,但是精度降低了,因此对于对精度需求比较高的模型,模型可能效果不如fp16。
模型训练时使用bf16和fp16都可以降低内存使用和传输量,提高训练效率。
2.支持模型长上下文的方案「NTK-aware interpolation」的思路是什么?
1.在NTK插值之前,线性插值通过在原模型训练的两个位置编码中间,插入新的位置编码,使得同样的取值范围可以容纳更多位置。
2.而NTK插值则是一种非线性插值的方法。它通过仅改变RoPE