重要提示

您正在查看 NeMo 2.0 文档。此版本对 API 和新的库 NeMo Run 进行了重大更改。我们目前正在将 NeMo 1.0 中的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档

位置嵌入#

位置嵌入用于为模型提供序列中每个元素位置的信息。Megatron LLM 支持以下位置嵌入类型

GPT#

GPT 模型中支持的位置嵌入#

参数值

如何使用

描述

learned_absolute

model.position_embedding_type='learned_absolute'

绝对位置编码 [pos-emb8] 是 Transformer 模型中使用的位置嵌入,添加到编码器和解码器部分中的输入嵌入中。这些编码与嵌入的维度匹配,并使用各种频率的正弦和余弦函数创建。编码中的每个维度都对应于一个正弦曲线,其波长形成几何级数。

rope

model.position_embedding_type='rope'
model.rotary_percentage=1.0

旋转位置嵌入 (RoPE) [pos-emb6] 通过利用旋转矩阵来编码 token 的绝对位置,同时通过利用向量和复数的几何特性,在自注意力公式中保持相对位置关系,应用基于预设非零常数和 token 相对位置的旋转到词嵌入中,从而结合了位置信息。

alibi

model.position_embedding_type='alibi'

带有线性偏差的注意力 (ALiBi) [pos-emb4] 修改了网络注意力子层中注意力分数的计算方式。ALiBi 在查询-键点积之后,在注意力分数的计算过程中引入了静态的、非学习的偏差。此偏差以头特定的斜率形式添加,该斜率在训练之前确定,为模型中不同的头创建斜率的几何序列。该方法对近因性具有归纳偏差,惩罚距离较远的查询-键对之间的注意力分数,惩罚随着距离的增加而增加,并且它利用不同头之间基于斜率大小的不同惩罚增加率。

kerple

model.position_embedding_type='kerple'

用于长度外推的核化相对位置嵌入 (KERPLE) [pos-emb2] 通过使用以泛化距离度量而闻名的条件正定 (CPD) 核来核化位置差异,从而泛化相对位置嵌入 (RPE)。它们通过添加常数偏移将 CPD 核转换为正定 (PD) 核,该偏移在 transformer 的自注意力机制中的 softmax 归一化期间被吸收。这种方法允许各种 RPE 以原则性的方式促进长度外推。

xpos

model.position_embedding_type='xpos'

可外推位置嵌入 (xPos) [pos-emb7]

sandwich

model.position_embedding_type='sandwich'

Sandwich [pos-emb3]

T5#

T5 模型中支持的位置嵌入#

参数值

如何使用

描述

learned_absolute

model.encoder.position_embedding_type='learned_absolute'
model.decoder.position_embedding_type='learned_absolute'

绝对位置编码 [pos-emb8] 是 Transformer 模型中使用的位置嵌入,添加到编码器和解码器部分中的输入嵌入中。这些编码与嵌入的维度匹配,并使用各种频率的正弦和余弦函数创建。编码中的每个维度都对应于一个正弦曲线,其波长形成几何级数。

relative

model.encoder.position_embedding_type='relative'
model.decoder.position_embedding_type='relative'

相对位置表示 [pos-emb5]

alibi

model.encoder.position_embedding_type='alibi'
model.decoder.position_embedding_type='alibi'

带有线性偏差的注意力 (ALiBi) [pos-emb4] 修改了网络注意力子层中注意力分数的计算方式。ALiBi 在查询-键点积之后,在注意力分数的计算过程中引入了静态的、非学习的偏差。此偏差以头特定的斜率形式添加,该斜率在训练之前确定,为模型中不同的头创建斜率的几何序列。该方法对近因性具有归纳偏差,惩罚距离较远的查询-键对之间的注意力分数,惩罚随着距离的增加而增加,并且它利用不同头之间基于斜率大小的不同惩罚增加率。

kerple

model.encoder.position_embedding_type='kerple'
model.decoder.position_embedding_type='kerple'

用于长度外推的核化相对位置嵌入 (KERPLE) [pos-emb2] 通过使用以泛化距离度量而闻名的条件正定 (CPD) 核来核化位置差异,从而泛化相对位置嵌入 (RPE)。它们通过添加常数偏移将 CPD 核转换为正定 (PD) 核,该偏移在 transformer 的自注意力机制中的 softmax 归一化期间被吸收。这种方法允许各种 RPE 以原则性的方式促进长度外推。

位置插值#

位置插值 (PI) [pos-emb1] 是一种用于扩展基于旋转位置嵌入 (RoPE) 的预训练大型语言模型 (LLM) 的上下文窗口大小的方法。PI 的中心原则是减小位置索引,使其通过插值与初始上下文窗口大小对齐。

Megatron GPT SFT 模型支持位置插值。设置序列长度 RoPE 插值因子 seq_len_interpolation_factor 以启用它。

model.position_embedding_type='rope'
model.rotary_percentage=1.0
model.seq_len_interpolation_factor: 2

参考#

[pos-emb1]

Shouyuan Chen、Sherman Wong、Liangjian Chen 和 Yuandong Tian。《通过位置插值扩展大型语言模型的上下文窗口》。2023 年。arXiv:2306.15595

[pos-emb2] (1,2)

Ta-Chung Chi、Ting-Han Fan、Peter J. Ramadge 和 Alexander I. Rudnicky。《Kerple:用于长度外推的核化相对位置嵌入》。2022 年。arXiv:2205.09921

[pos-emb3]

Ta-Chung Chi、Ting-Han Fan、Alexander I. Rudnicky 和 Peter J. Ramadge。《通过感受野分析的视角剖析 transformer 长度外推》。2023 年。arXiv:2212.10356

[pos-emb4] (1,2)

Ofir Press、Noah A. Smith 和 Mike Lewis。《训练短,测试长:带有线性偏差的注意力实现输入长度外推》。2022 年。arXiv:2108.12409

[pos-emb5]

Peter Shaw、Jakob Uszkoreit 和 Ashish Vaswani。《具有相对位置表示的自注意力》。2018 年。arXiv:1803.02155

[pos-emb6]

Jianlin Su、Yu Lu、Shengfeng Pan、Ahmed Murtadha、Bo Wen 和 Yunfeng Liu。《Roformer:具有旋转位置嵌入的增强型 transformer》。2022 年。arXiv:2104.09864

[pos-emb7]

Yutao Sun、Li Dong、Barun Patra、Shuming Ma、Shaohan Huang、Alon Benhaim、Vishrav Chaudhary、Xia Song 和 Furu Wei。《一种长度可外推的 transformer》。2022 年。arXiv:2212.10554

[pos-emb8] (1,2)

Ashish Vaswani、Noam Shazeer、Niki Parmar、Jakob Uszkoreit、Llion Jones、Aidan N. Gomez、Lukasz Kaiser 和 Illia Polosukhin。《Attention is all you need》。2023 年。arXiv:1706.03762