RotaryPositionalEmbeddings¶
- class torchtune.modules.RotaryPositionalEmbeddings(dim: int, max_seq_len: int = 4096, base: int = 10000)[源代码]¶
此类实现了 https://arxiv.org/abs/2104.09864 中提出的 Rotary Positional Embeddings (RoPE)。
参考实现(用于正确性验证)可以在这里找到: https://github.com/meta-llama/llama/blob/main/llama/model.py#L80
在此实现中,我们缓存每个位置的嵌入,最多
max_seq_len
,方法是在初始化期间计算它。- 参数:
- forward(x: Tensor, *, input_pos: Optional[Tensor] = None) Tensor [源代码]¶
- 参数:
x (torch.Tensor) – 形状为
[b, s, n_h, h_d]
的输入张量input_pos (Optional[torch.Tensor]) – 可选张量,其中包含每个 token 的位置 ID。在训练期间,这用于指示每个 token 相对于其打包样本的位置,形状为 [b, s]。在推理期间,这指示当前 token 的位置。如果为 None,则假定 token 的索引是其位置 ID。默认为 None。
- 返回:
形状为
[b, s, n_h, h_d]
的输出张量- 返回类型:
- 用于张量形状的符号
b: 批大小
s: 序列长度
n_h: 头数
h_d: 头维度