精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

通俗理解RoPE、2D-RoPE、M-RoPE 原創

發布于 2025-8-18 08:29
瀏覽
0收藏

本文通過將這些方法可視化呈現為旋轉操作和維度拆分,能讓旋轉位置編碼(RoPE)、二維旋轉位置編碼(2D-RoPE)以及多模態旋轉位置編碼(M-RoPE)的核心概念更直觀、更易于理解。

為什么需要位置嵌入?

假設有兩個語言模型:一個一次只能處理一個詞,另一個則可以并行處理所有詞。

現在,有一個詞序列,比如“Dog eats food”。

  • 對于第一個模型,輸入的順序很重要,因為它必須先處理“Dog”,再處理“eats”,最后處理“food”。但顯然,這樣既緩慢又低效!
  • 對于第二個模型,輸入的順序不重要,因此可以一次性輸入所有詞,甚至是亂序的,比如“food”、“Dog”、“eats”。由于這個模型可以并行處理所有詞,所以速度快得多。

第二個模型的問題在于它不知道詞的順序。因此,需要向輸入嵌入中添加一些位置信息。

現在,想象一下,用N個嵌入向量代替詞,每個向量的維度為??n_dim???。舉個例子:4個嵌入向量,每個的維度??n_dim=8??,且初始化為1:

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

現在將位置嵌入0、1、2、3分別應用到每個嵌入向量上。還使用了一種假想的方法,即簡單地將位置索引加到每個嵌入向量上。因此,第一個嵌入向量就會是1+0,第二個是1+1,以此類推。

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

當然,這只是一個用于說明該概念的簡單例子。實際上,這種方法是行不通的。那么,該怎么做呢?

RoPE

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

RoPE是旋轉位置嵌入(Rotary Position Embedding)的縮寫。目前廣泛運用在LLM中,其是一種在Transformer模型的輸入嵌入中編碼位置信息的方法。

RoPE的工作原理很簡單,就是在二維空間中旋轉輸入嵌入向量。這里不深入數學細節,但舉一個簡單的例子:

輸入向量為??[x=0, y=1]??,每個位置會將該嵌入向量逆時針旋轉20度()。

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

在現實世界中,并非只有2個維度,而是有n_dim個維度。例如,n_dim = 4:

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

那么,如何在n維空間中旋轉一個向量呢?答案很簡單:將這個向量拆分成多個二維對。

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

為了簡化說明,會用箭頭來替代每一對(二維對):

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

現在有趣的部分來了:不會用相同的角度旋轉每個向量,因為這樣很快就會耗盡所有可能的角度

理解這一點的最佳方式就像看待一個時鐘??:秒針每轉一整圈,分針只轉動一小部分。

在RoPE中,旋轉的量被稱為頻率(記為f),其定義為:

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

為簡單起見,假設第一對的頻率f仍為20°,第二對的頻率f為10°:

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

如所見,第一對的旋轉速度比第二對快,就像時鐘的秒針比分針轉得快一樣。

就像時鐘的三根指針可以用來表示一天中的86400秒那樣,可以用同樣的思路在RoPE中表示所有的n維維度。

gemma的RoPE實現如下:

def _compute_default_rope_parameters(
    config: Optional[PretrainedConfig] = None,
    device: Optional["torch.device"] = None,
    seq_len: Optional[int] = None,
    **rope_kwargs,
) -> tuple["torch.Tensor", float]:
    """
    Computes the inverse frequencies according to the original RoPE implementation
    Args:
        config ([`~transformers.PretrainedConfig`]):
            The model configuration.
        device (`torch.device`):
            The device to use for initialization of the inverse frequencies.
        seq_len (`int`, *optional*):
            The current sequence length. Unused for this type of RoPE.
        rope_kwargs (`Dict`, *optional*):
            BC compatibility with the previous RoPE class instantiation, will be removed in v4.45.
    Returns:
        Tuple of (`torch.Tensor`, `float`), containing the inverse frequencies for the RoPE embeddings and the
        post-processing scaling factor applied to the computed cos/sin (unused in this type of RoPE).
    """
    base = rope_kwargs["base"]
    dim = rope_kwargs["dim"]
    attention_factor = 1.0  # Unused in this type of RoPE

    # Compute the inverse frequencies
    # 計算RoPE公式40中的theta,每2個維度共用一個inv_freq
    inv_freq = 1.0 / (base ** (torch.arange(0, dim, 2, dtype=torch.int64).to(device=device, dtype=torch.float) / dim))
    return inv_freq, attention_factor

class GemmaRotaryEmbedding(nn.Module):
    def __init__(self, config: GemmaConfig, device=None):
        super().__init__()
        self.rope_type = "default"
        self.max_seq_len_cached = config.max_position_embeddings
        self.original_max_seq_len = config.max_position_embeddings
        self.config = config
        # 計算前面一半維度旋轉角度theta,用于和position_ids相乘
        inv_freq, self.attention_scaling = _compute_default_rope_parameters(self.config, device)
        self.register_buffer("inv_freq", inv_freq, persistent=False)
        self.original_inv_freq = self.inv_freq
    def forward(self, x, position_ids):
        inv_freq_expanded = self.inv_freq[None, :, None].float().expand(position_ids.shape[0], -1, 1).to(x.device)
        position_ids_expanded = position_ids[:, None, :].float()
        device_type = x.device.type if isinstance(x.device.type, str) and x.device.type != "mps"else"cpu"
        with torch.autocast(device_type=device_type, enabled=False):  # Force float32
            #這里的freqs只是前面一半維度的
            freqs = (inv_freq_expanded.float() @ position_ids_expanded.float()).transpose(1, 2)
            # 在hidde_dim維度拼接起來之后freqs最后一維的維度才等于hidden_size
            emb = torch.cat((freqs, freqs), dim=-1)
            # 計算 cos(m*theta)和sin(m*theta)
            cos = emb.cos()
            sin = emb.sin()

        return cos.to(dtype=x.dtype), sin.to(dtype=x.dtype)

def rotate_half(x):
    """
    Rotates half the hidden dims of the input.
    將輸入x后hidden_dim的半部分取反并拼接到原來前半部分的前面
    """
    x1 = x[..., : x.shape[-1] // 2]
    x2 = x[..., x.shape[-1] // 2 :]
    return torch.cat((-x2, x1), dim=-1)

def apply_rotary_pos_emb(q, k, cos, sin, position_ids=None, unsqueeze_dim=1):
    """
    Applies Rotary Position Embedding to the query and key tensors.
    將q,k乘以得到的旋轉矩陣cos,sin
    """
    cos = cos.unsqueeze(unsqueeze_dim)
    sin = sin.unsqueeze(unsqueeze_dim)
    q_embed = (q * cos) + (rotate_half(q) * sin)
    k_embed = (k * cos) + (rotate_half(k) * sin)
    return q_embed, k_embed

2D-RoPE

到目前為止,只討論了RoPE,它是一種一維位置嵌入方法。這對于一維序列很有用,比如文本。

但如果想將RoPE用于二維序列(例如圖像),該怎么辦呢?

二維RoPE(2D-RoPE)是RoPE的一種簡單擴展,在這種方法中,每個輸入向量都有一個二維位置:

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

回到時鐘的類比,一個簡單的思路是使用兩個時鐘,一個對應y軸,另一個對應x軸。

為了說明這一點,將初始示例的維度n_dim加倍,這樣就有n_dim = 8:

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

現在它被表示為4對二維向量:

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

其思路是將該向量進一步拆分為兩部分,一部分對應y軸,另一部分對應x軸。

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

假設這4個向量的位置列表如下:

  • [0, 0]
  • [0, 1]
  • [1, 2]
  • [1, 3]

使用一組40°和20°的角度值,可以像這樣獨立旋轉每個部分的向量:

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

據所知,這種二維旋轉位置編碼(2D-RoPE)方法被用于Llama 4模型的視覺編碼器中。

2D-RoPE with interleaved frequency

在之前的示例中,對兩個軸使用了相同的角度值(40°和20°)。但如果想為每個軸使用不同的頻率呢?

以Mistral的Pixtral模型為例:

  • 首先為所有二維向量對創建一個頻率列表,例如:40°、30°、20°、10°
  • 然后將這些頻率按軸交錯分配,這樣y軸得到40°、20°,x軸得到30°、10°。

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

巧妙之處在于,無需先構建一個頻率列表(例如40°、30°、20°、10°),再從中挑選奇數位或偶數位的頻率值,只需調整n_dim參數值和頻率的縮放比例,就能得到相同的結果。可以查看這個PR(拉取請求)了解的具體實現方式。

M-RoPE

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

Qwen2VL的M-RoPE

M-RoPE是Multimodal-RoPE(多模態旋轉位置編碼)的縮寫,最初由Qwen2VL模型提出。

M-RoPE擴展了二維旋轉位置編碼(2D-RoPE)的理念,不過現在每個位置包含的維度不止2個。例如,可以有三維[時間、y軸、x軸],甚至更多維度。

其核心思想是,不再將嵌入向量拆分為2部分,而是拆分為……沒錯,拆分為n部分,其中n是每個位置的維度數量。

如果仔細查看Qwen2VL的config.json文件,會看到一個名為mrope_section的配置,其中包含3個數值。每個數值代表每個部分的二維對數量。

"rope_scaling": {
    "type": "mrope",
    "mrope_section": [
      16,
      24,
      24
    ]
  },

為了便于理解,舉一個簡單的例子:當嵌入向量的維度??n_dim=8??時,最終會得到4對二維向量:

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

假設的mrope_section配置為[1,1,2],可以將嵌入向量拆分為3個部分:

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

然后,使用與二維旋轉位置編碼(2D-RoPE)中所解釋的相同方法,對每個部分獨立應用旋轉位置編碼(RoPE)。

通俗理解RoPE、2D-RoPE、M-RoPE-AI.x社區

參考文獻

  • RoFormer: Enhanced Transformer with Rotary Position Embedding,https://arxiv.org/abs/2104.09864
  • Qwen2-VL: Enhancing Vision-Language Model’s Perception of the World at Any Resolution,https://arxiv.org/pdf/2409.12191


本文轉載自????大模型自然語言處理????   作者:llmnlp

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2025-8-18 08:30:32修改
收藏
回復
舉報
回復
相關推薦
www.com亚洲| 精品久久久久久无码人妻| 国产在线视频网址| 视频在线观看91| 色系列之999| 污污视频在线免费| 国产高潮在线| 国产精品丝袜久久久久久app| 国产欧美亚洲视频| 国产91av视频| 久久国产成人精品| 亚洲成人av在线| 天天爱天天操天天干| 18加网站在线| 国产网红主播福利一区二区| 91亚洲va在线va天堂va国| 日韩精品在线免费看| 日韩精品影视| 亚洲激情在线视频| 亚洲天堂av线| 丁香花高清在线观看完整版| 中文字幕欧美日本乱码一线二线| 粉嫩av一区二区三区免费观看| www.com亚洲| 亚洲小说欧美另类婷婷| 国产精品美女在线| 任我爽在线视频| 成人av影音| 欧美精品亚洲一区二区在线播放| 999在线观看视频| 最新av网站在线观看| 成人黄色国产精品网站大全在线免费观看 | 亚洲一区二区人妻| 亚洲免费一区二区| 欧美黑人xxx| 一级免费黄色录像| 国产欧美日韩精品高清二区综合区| 欧美一区二区三区啪啪| 爱情岛论坛亚洲首页入口章节| 91色在线看| 尤物在线观看一区| 中文字幕99| 91在线不卡| 国产亚洲精久久久久久| 国内精品视频免费| 性中国古装videossex| 久久机这里只有精品| 国产精品久久久久久久久久尿| 午夜精品三级久久久有码| 精品福利av| 久久久久久久网站| 久久无码精品丰满人妻| 欧美91大片| 欧美乱大交xxxxx| 特一级黄色录像| 7777久久香蕉成人影院| 久久精品国产欧美亚洲人人爽| 国产激情av在线| 精品72久久久久中文字幕| 亚洲精品视频播放| 亚洲一级中文字幕| 九一精品国产| 亚洲偷熟乱区亚洲香蕉av| 日韩一级av毛片| 第一会所sis001亚洲| 在线日韩精品视频| 91香蕉视频污在线观看| 欧美freesextv| 久久亚洲成人精品| 久草免费在线观看视频| 亚洲精品1区2区| 91av视频在线播放| 中文字幕 国产精品| 免费在线观看不卡| 成人av资源在线播放| 国产a级免费视频| 懂色av中文字幕一区二区三区| 国模精品娜娜一二三区| 少妇又色又爽又黄的视频| 99re在线精品| 日韩欧美在线观看强乱免费| 3p视频在线观看| 亚洲精选视频免费看| 国产精品成人久久电影| 欧美日韩视频免费观看| 欧美高清视频不卡网| 久久精品久久99| 日韩av资源网| 中文字幕精品一区二区精品| 久久久精品国产sm调教网站| 国产麻豆综合| 成人免费视频97| 日韩中文字幕观看| 国产精品视频免费看| 国产女人18毛片| 亚洲精品**中文毛片| 欧美人伦禁忌dvd放荡欲情| 一级片免费在线观看视频| 久久亚洲道色| 久久九九有精品国产23| 天天爽夜夜爽夜夜爽精品| 美女视频黄 久久| 国产主播一区二区三区四区| 在线观看免费高清完整| 亚洲国产裸拍裸体视频在线观看乱了| 性生交免费视频| 99久久免费精品国产72精品九九| 国产亚洲一区二区在线| 久久免费精彩视频| 久久成人久久鬼色| 麻豆久久久9性大片| 超碰在线网址| 在线观看区一区二| 中文字幕一区二区人妻电影丶| 日韩啪啪电影网| 欧美一级片在线播放| 国产成人精品a视频| 91香蕉视频污| 免费高清一区二区三区| 成人精品三级| 亚洲精品网站在线播放gif| 久久久久久久久久网站| 美腿丝袜亚洲综合| 欧美日韩亚洲在线| 黄色在线观看视频网站| 91麻豆精品久久久久蜜臀| 久久精品国产亚洲av久| 亚洲第一黄网| 国产精品免费看一区二区三区 | 久久久www成人免费精品| 五月天婷婷导航| av在线播放一区二区三区| 精品国产欧美日韩| 亚洲国产另类久久精品| 男人的天堂av网| 国产精品国码视频| 成人性教育视频在线观看| 黄色美女网站在线观看| 午夜电影网一区| 美女网站视频在线观看| 午夜国产欧美理论在线播放| 国产剧情日韩欧美| 岛国在线大片| 欧洲亚洲精品在线| 一区二区三区伦理片| 久久久久久久波多野高潮日日| 国产三级精品在线不卡| 黄色在线观看www| 亚洲第一精品夜夜躁人人躁| 久久精品欧美一区二区| 国产成都精品91一区二区三| 高清无码视频直接看| 欧美不卡在线观看| 欧美床上激情在线观看| 亚洲精品18在线观看| 一区二区三区日韩| 精品久久久久久无码人妻| 在线欧美一区| 麻豆精品传媒视频| 日日夜夜天天综合| 最近中文字幕日韩精品| 91久久久久久久久久久久| 亚洲手机成人高清视频| 亚洲免费观看在线| 999亚洲国产精| 久久综合福利| 99久久久国产精品免费调教网站 | 91免费在线视频| 蜜桃视频在线观看免费视频网站www| 欧美人伦禁忌dvd放荡欲情| 国产a免费视频| av综合在线播放| 日韩在线xxx| 久久亚洲专区| 99中文字幕| 日本不卡网站| 宅男66日本亚洲欧美视频| 国产情侣一区二区| 亚洲国产精品久久一线不卡| wwwwxxxx国产| 免费在线成人网| 大伊香蕉精品视频在线| 精品在线观看入口| 成人黄色免费片| 99爱在线视频| 中文综合在线观看| 亚洲成人中文字幕在线| 色综合久久66| 日韩va亚洲va欧美va清高| 99精品黄色片免费大全| www.日本一区| 亚洲另类自拍| 一区二区三区在线观看www| 成人春色在线观看免费网站| 国产精品高精视频免费| 综合久久2019| 伊人伊人伊人久久| 高潮毛片7777777毛片| 91福利视频在线| 精品97人妻无码中文永久在线| 91免费国产视频网站| 手机精品视频在线| 久久婷婷一区| 9色porny| 99久久www免费| 欧美极品色图| 澳门精品久久国产| 国产一区二区在线免费| 欧美gv在线| 欧美成人激情在线| 成人综合影院| 精品小视频在线| 亚洲成a人片77777精品| 欧美丝袜自拍制服另类| 中日韩黄色大片| 亚洲综合偷拍欧美一区色| 国产农村妇女精品一区| 99久久国产综合精品色伊| 欧美xxxxxbbbbb| 麻豆精品视频在线| 韩国日本在线视频| 一本久道久久综合狠狠爱| 99视频精品全部免费看| 日韩久久精品| 日本不卡一区二区三区视频| 久久影院资源站| 91精品网站| 精品中文字幕一区二区三区四区 | 深夜福利亚洲导航| 午夜视频www| 亚洲精品一区二区三区精华液| 国产精品伦一区二区三区| 欧美三级电影网| 日韩在线视频不卡| 欧美三级免费观看| 国偷自拍第113页| 亚洲第一福利一区| 久久久国产成人| 亚洲午夜免费福利视频| 国产一区二区播放| 亚洲欧美日韩一区二区| 91香蕉一区二区三区在线观看| 欧美激情综合五月色丁香 | 日韩理论在线观看| 无码人中文字幕| 日本一区二区三区国色天香| 成人午夜福利一区二区| 91视频观看免费| 欧美 日本 国产| www成人在线观看| 欧美多人猛交狂配| 国产日韩欧美a| 奇米网一区二区| 国产精品久久综合| 蜜桃av.com| 亚洲素人一区二区| 久久久久亚洲AV| 亚洲.国产.中文慕字在线| 日韩免费不卡视频| 黑丝美女久久久| 日本中文字幕在线观看视频| 欧美视频日韩视频在线观看| 中文字幕av无码一区二区三区| 欧美日韩国产综合久久| 国产又大又长又粗| 91精品婷婷国产综合久久| www.成人免费视频| 精品成人在线观看| 青梅竹马是消防员在线| 国产香蕉一区二区三区在线视频| 91看片在线观看| 美女国内精品自产拍在线播放| 青青草原av在线| 青青草国产精品一区二区| 91精品店在线| 91视频网页| 伊人春色之综合网| 亚洲一区二区三区欧美| 亚洲女同另类| 国产av麻豆mag剧集| 美女久久一区| 亚洲一区二区中文字幕在线观看| 成人教育av在线| 久久久久久亚洲中文字幕无码| 国产精品入口麻豆九色| 欧美精品一区二区蜜桃| 欧美日韩亚洲精品一区二区三区| 中文字幕在线观看免费| 欧美变态凌虐bdsm| 国产精品一级伦理| 欧美成人精品一区二区| 竹内纱里奈兽皇系列在线观看| 国产欧美精品日韩| 国产精品99久久免费观看| 日韩激情视频| 精品999成人| 老司机午夜性大片| 99re热这里只有精品免费视频| 亚洲女同二女同志奶水| 污片在线观看一区二区| 91精品人妻一区二区三区果冻| 亚洲精品97久久| 老司机精品影院| 日本精品视频在线| 香蕉成人app| 天天久久人人| 亚洲深爱激情| 国产精品欧美性爱| 国产精品区一区二区三区| 日本三级视频在线| 91精品国产高清一区二区三区蜜臀 | 97在线观看视频免费| 欧美午夜丰满在线18影院| 99riav国产| 色av中文字幕一区| 多野结衣av一区| av电影成人| 爽成人777777婷婷| 成人在线激情网| av在线这里只有精品| 91精品国产高清一区二区三蜜臀| 日本韩国精品在线| 天堂√在线中文官网在线| 欧美成人久久久| 9999在线精品视频| 日韩在线导航| 美女国产一区| 人人妻人人澡人人爽人人精品 | 成人毛片18女人毛片| 精品成人一区二区三区| 污污视频在线看| 亚洲专区在线视频| 亚洲女同一区| 91精品国产三级| 亚洲欧美激情小说另类| 在线播放成人av| 色综合伊人色综合网| 美女色狠狠久久| 日韩偷拍一区二区| 天堂精品中文字幕在线| 久久丫精品国产亚洲av不卡| 黄色91在线观看| 五月激情婷婷网| 97超级碰碰人国产在线观看| 伦理一区二区| 777777av| 久久夜色精品一区| 国产乱国产乱老熟| 亚洲另类图片色| 黄瓜视频成人app免费| 欧洲亚洲一区二区三区四区五区| 免费视频久久| 黄色aaa视频| 欧美在线观看视频一区二区三区| 国产视频福利在线| 国产精品普通话| 视频在线不卡免费观看| 欧美体内she精高潮| 一区二区在线观看av| 亚洲欧美激情在线观看| 久久久久久九九九| 欧美亚洲大陆| 免费看a级黄色片| 国产欧美精品国产国产专区| 亚洲资源在线播放| 欧美大成色www永久网站婷| 国产精品成人自拍| 久久久久人妻精品一区三寸| 欧美激情在线一区二区三区| 一区二区日韩在线观看| 欧美巨大黑人极品精男| 成人动漫视频| 激情五月婷婷久久| 最新不卡av在线| 天堂中文在线资源| 国产91在线视频| 亚洲午夜精品一区 二区 三区| 免费黄视频在线观看| 欧美日韩亚洲国产一区| 亚洲成人三级| 国产日韩一区二区| 麻豆一区二区在线| 精品午夜福利视频| 国产午夜精品美女视频明星a级| 日本免费一区二区三区等视频| 草草草视频在线观看| 久久青草欧美一区二区三区| 97国产成人无码精品久久久| 久久久久久久999精品视频| 欧美人妖在线| 性一交一黄一片| 在线观看国产日韩| 欧美一卡二卡| 亚洲精品久久区二区三区蜜桃臀| 国产成人精品1024| 中文字幕在线天堂| 午夜精品久久久久久99热| 欧美电影免费| 久久精品国产亚洲av麻豆| 日韩一区二区在线观看视频|