位置编码技术是中招置编一种可能让神经收集建模句子中 Token 位信托息的技术。在 Transformer 大行其道的混合时期,由于 Attention 妄想无奈建模每一个 token 的精度位信托息,位置编码(Position embedding) 成为 Transformer 颇为紧张的下位想一个组件 。钻研职员也提出了林林总总的码竟位置编码妄想来让收集建模位信托息,Rope 以及 Alibi 是坑百当初最被普遍接管的两种位置编码妄想 。
可是川智出修最近来自百川智能的钻研发现,Rope 以及 alibi 位置编码的复妄主流实如今低精度(特意是 bfloat16) 下存在位置编码碰撞的 bug, 这可能会影响模子的磨炼以及推理。而且当初大部份主流开源模子的中招置编实现都存在该下场 ,连 llama 民间代码也中招了 。混合
还患上从位置编码算法提及
为了弄清晰这个下场,精度患上先从位置编码的下位想算法道理提及,在 Transformer 妄想中,码竟所有 Attention Block 的坑百输入都市先经由位置编码,再输入收集妨碍后续处置 。川智出修隧道的 Attention 妄想是无奈精确感知到每一个 token 的位信托息的,而对于语言的良多使命来说 ,语句的挨次对于语义信息的影响黑白常大的,为了建模 token 之间的位置关连 ,Transfomer 原始论文中引入地位编码来建模位信托息。
为了让模子更好地建模句子的位信托息,钻研职员提出了多种位置编码妄想 ,meta 开源的 llama [4] 模子接管了 Rope [5] 妄想,使患上 Rope 成为在开源社区被普遍接管的一种位置编码妄想 。而 Alibi 编码因其精采的外推性也被普遍运用。
清晰低精度下的位置编码碰撞以前,先往返忆一下相关算法道理 。
Sinusoidal 位置编码
这是 Transformer 原始论文中提出的位置编码措施。它经由运用差距频率的正弦以及余弦函数来为每一个位置发生一个配合的编码 。抉择三角函数来天生位置编码有两个精采的性子 :
1)编码相对于位信托息,数学上可能证实 PE (pos+k) 可能被 PE (pos) 线性展现 , 这象征着位置编码中搜罗了相对于位信托息 。
2)短途衰减 :差距位置的 position encoding 点乘服从会随着相对于位置的削减而递减 [1] 。
Rope
Rope 是当初开源社区运用最普遍的一种位置编码妄想 , 经由相对于位置编码的方式实现相对于位置编码,在引入相对于位信托息的同时坚持了相对于位置编码的优势(不需要像相对于位置编码同样去操作 attention matrix) 。令 f_q, f_k 为 位置编码的函数 ,m 展现位置,x_m 展现该位置 token 对于应的 embedding,咱们愿望经由位置编码后的 embedding 点积仅以及相对于位置无关 ,则可能有公式:
下面公式中 g 是某个函数 ,展现内积的服从只以及 x_m 以及 x_n 的值 ,以及两者位置的相对于关连 (m-n) 无关在 2 维的情景下可能推导出(详细推导历程可参考原论文):
由于矩阵乘法线性累加的性子 ,可能拓展到多维的情景可患上:
为了引入短途衰减的特色