2575 words
13 minutes
MEGABYTE: Predicting Million-byte Sequences with Multiscale Transformers

一、前言#

論文中文-百萬字節:基於多尺度 Transformer 的百萬字節序列建模方法,論文原文,搭配原文食用,側重於「預測百萬字節序列」和「循環 MoE (Recurrent MoE)」,但它在處理 MoE 初始化和訓練方面展示了一種重要的策略,與 “Sparse Upcycling” 論文有異曲同工之妙,即 如何有效地將知識從一個模型轉移到 MoE 的專家中

二、研究背景與動機 (Background and Motivation)#

在MEGABYTE提出之前,標準的自回歸Transformer模型雖然在短序列上取得了巨大成功,但在處理長序列(如高解析度圖片、原始音頻、長篇代碼或書籍)時,面臨著兩個根本性的、且日益嚴峻的瓶頸:

  1. 二次方複雜度的自注意力 (O(N2)O(N^2)): 這是最廣為人知的問題。隨著序列長度N的增加,自注意力的計算量和內存佔用會呈二次方爆炸式增長。
  2. 被忽視的「FFN成本」: 一個更隱蔽但更致命的問題是,在大型模型(如GPT-3)中,超過98%的計算量(FLOPS)都消耗在了**逐個位置(per-token)的前饋神經網路(FFN)**上。即使自注意力是線性的,這個 O(N)O(N) 的FFN成本也會因為巨大的隱藏層維度而變得極其高昂。

為了解決序列長度問題,當時的主流方法是分詞(Tokenization),即將字節序列(bytes)聚合成更大的詞元(subword tokens)。但這種方法存在諸多弊端:

  • 信息損失: 對於圖片、音頻等多媒體數據,分詞過程通常是有損的。
  • 領域局限: 針對特定語言訓練的分詞器,在新語言或特殊領域(如代碼)上表現不佳。
  • 處理複雜: 需要額外的預處理步驟,使得模型並非真正的端到端。

因此,MEGABYTE的動機非常清晰:設計一種全新的架構,能夠直接對原始字節序列(raw bytes)進行端到端建模,徹底擺脫分詞的束縛,並同時解決自注意力和FFN的雙重成本問題,最終實現對**百萬字節級別(Megabyte-scale)**序列的高效預測。

三、核心問題 (The Core Problem)#

論文旨在解決的核心問題是:

  1. 如何設計一個自回歸模型,使其能夠在計算成本可控的前提下,處理超過一百萬個字節的超長序列?
  2. 如何從根本上降低大型Transformer中佔主導地位的FFN計算成本?
  3. 能否構建一個強大的、無需分詞的通用序列模型,使其在文本、圖像、音頻等多種模態上都具有具有競爭力的性能?

四、提出的方法與核心設計#

4.1 設計理念#

MEGABYTE的核心思想是多尺度(Multiscale)分層架構。它將一個長序列的預測任務分解為兩個不同尺度、相互協作的子任務。

Figure1.png

圖表解讀 (Figure 1): 這張圖是MEGABYTE架構的精髓所在。

  • 分塊 (Patching): 首先,將原始的字節序列(如m e g a b y t e ...)切分成固定大小的塊(Patches)。圖中塊大小P=4。
  • 全局模型 (Global Model): 一個大型、強大的Transformer,它不直接處理字節,而是處理塊級別的表示。它的任務是理解塊與塊之間的長程依賴關係(例如,理解段落與段落之間的語義聯繫)。
  • 局部模型 (Local Model): 一個小型、輕量的Transformer。它的任務是在單個塊內部,根據全局模型提供的上下文信息,逐個字節地進行預測。
  • 信息流:
    1. 原始字節序列被嵌入並打包成塊,輸入給全局模型 (h^embed -> h^global-in)。
    2. 全局模型處理塊序列,輸出帶有長程上下文信息的塊表示 (h^global-out)。
    3. 對於要預測的下一個塊,其全局上下文表示 h^global-out 與該塊的字節級嵌入 h^embed 相加,形成局部模型的輸入 h^local-in
    4. 局部模型利用這個融合了全局上下文的輸入,在塊內自回歸地預測每一個字節。

4.2 數學公式深度解析#

Figure2.png

論文在Figure 2中給出了詳細的數學定義,其中最核心的公式是局部模型的輸入:

hk,plocal-in=wGLhk,(pDG):((p+1)DG)global-out+Ex(kP+p1)local-embedh_{k,p}^{\text{local-in}} = w^{GL}h_{k,(p \cdot D_G):((p+1) \cdot D_G)}^{\text{global-out}} + E_{x_{(k \cdot P+p-1)}}^{\text{local-embed}}

這個公式揭示了多尺度信息融合的奧秘:

  • hk,plocal-inh_{k,p}^{\text{local-in}} 是第k個塊內第p個位置的局部模型輸入。
  • hk,...global-outh_{k,...}^{\text{global-out}} 是全局模型為整個第k個塊輸出的上下文向量。wGLw^{GL} 將其投影到局部模型的維度。
  • Ex...local-embedE_{x...}^{\text{local-embed}} 是塊內前一個字節的嵌入。

公式的含義: 局部模型在預測塊內某個字節時,它的決策依據不僅僅是塊內的前幾個字節(通過 Elocal-embedE^{\text{local-embed}}),更重要的是有來自全局模型「高瞻遠矚」的指導(通過 hglobal-outh^{\text{global-out}})。這就像寫文章時,你寫某個詞不僅要考慮前一個詞,還要考慮整個段落(全局模型)的主旨。

五、關鍵概念解析#

  • 多尺度/層級架構 (Multiscale/Hierarchical Architecture): 這是MEGABYTE與傳統「扁平」Transformer最根本的區別。它將預測問題分解為「全局-局部」或「粗粒度-細粒度」兩個層級,實現了計算的有效分工。
  • 塊 (Patch): 將長序列切分成的基本處理單元。對於全局模型來說,一個塊就是一個「token」。這種分塊操作是降低計算複雜度的第一步。
  • 無分詞 (Tokenization-Free): 模型直接操作最底層的字節(0-255的整數),使其天然具備處理任何類型數據流(文本、代碼、圖像像素、音頻樣本)的能力,無需針對不同模態設計不同的預處理流程。

六、實驗設計與結果分析#

MEGABYTE通過在多種模態上的嚴格實驗,證明了其架構的優越性。

6.1 計算效率分析#

Figure3.png

圖表解讀 (Figure 3): 這張圖從理論上比較了不同架構的計算成本。橫軸是序列長度,縱軸是每個token的計算量(FLOPS)。

  • 結論: MEGABYTE(虛線)的計算成本增長遠比標準Transformer(實線)和線性Transformer(點劃線)要平緩得多。這意味著在處理超長序列時,MEGABYTE的效率優勢極為顯著。

6.2 跨模態性能表現#

  • 長文本建模 (Table 2): 在與Transformer和PerceiverAR的同等算力對比下,MEGABYTE在PG-19、Books、Code等多個長文本數據集上,取得了全面最好的性能(更低的bpd,即每個字節的比特數,越低越好)。

    Table2.png

  • 圖像生成 (Table 5): 在高達640x640解析度的ImageNet圖像生成任務上(等效於超過120萬字節的序列),MEGABYTE的性能同樣超越了所有基線模型,展示了其處理百萬級長序列的強大能力。

    Table5.png

  • 原始音頻建模 (Section 7): 它可以直接對原始音頻文件的字節流進行建模,並取得了比基線模型更低的bpd,證明了其作為通用序列模型的潛力。

    Our model obtains bpb of 3.477, much lower than the results with perceiverAR (3.543) and vanilla transformer model (3.567). More ablation results are presented in Table 7.

6.3 推理生成速度#

Table6.png

表格解讀 (Table 6): 這是MEGABYTE最驚人的成果之一。一個1.5B參數的MEGABYTE模型,在生成8192字節序列時,速度比一個小得多的350M參數的標準Transformer快了40%,同時性能還更好。這是因為其大部分參數在全局模型中,全局模型每預測一個塊(例如8個字節)才運行一次,而局部模型小而快,極大地提升了並行度。

6.4 消融實驗#

Table7.png

表格解讀 (Table 7): 消融實驗證明了MEGABYTE架構的合理性。如果去掉局部模型去掉全局模型,模型的性能都會急劇下降。這證明了「全局」的長程引導和「局部」的精細預測,兩者缺一不可,共同構成了MEGABYTE的性能基礎。

七、論文的核心貢獻與意義#

  1. 提出了一種全新的長序列建模架構: MEGABYTE的多尺度設計,為解決長序列問題提供了一條與稀疏注意力、MoE等並行且同樣有效的路徑。
  2. 解決了FFN成本瓶頸: 通過將大的FFN應用於塊級別而非字節級別,極大地降低了大型模型的主要計算開銷,使得在同等算力下可以訓練參數多得多的模型。
  3. 實現了高效的並行解碼: 其「全局預測塊,局部預測塊內字節」的機制,打破了傳統自回歸模型逐個token生成的串行瓶頸,顯著提升了推理速度。
  4. 推動了無分詞模型的發展: 在多個模態上的成功,有力地證明了基於字節的、無需分詞的通用序列模型是完全可行的,並且性能極具競爭力。

八、總結與觀點#

MEGABYTE是一篇極具巧思和洞察力的論文。當大部分研究者致力於優化Transformer內部單一的自注意力或FFN層時,MEGABYTE的作者們則跳出了這個框架,從更高層次的結構設計入手,提出了「分而治之」的解決方案。

「全局模型把握宏觀,局部模型處理微觀」的哲學思想非常優雅。這種類似於人類認知的方式——我們先理解段落大意,再遣詞造句——使得模型在處理長程依賴和局部細節之間取得了絕佳的平衡。

與MoE模型相比,MEGABYTE的優勢在於其結構的確定性解碼時的並行潛力。MoE的路由是動態的,而MEGABYTE的全局-局部結構是固定的,這可能使其在訓練和優化上更為穩定。其推理速度的提升更是解決了大型自回歸模型落地的一大痛點。這項工作為未來設計能夠處理更複雜、更長序列(如高清視頻、整本書籍)的下一代基礎模型,提供了堅實的架構基礎。

MEGABYTE: Predicting Million-byte Sequences with Multiscale Transformers
https://huangno1.github.io/posts/megabyte/
Author
HuangNO1
Published at
2025-07-07
License
CC BY-NC-SA 4.0