所有節目›AI Engineer Europe 2026| World's Fair 2026完整場次線上軌AI in HealthcareSoftware Factories
Road to 5 Million Tokens: Breaking Barriers in Long Context Training在 YouTube 看這一場

AI Engineer Europe 2026 · 演講 · 2026-06-08 · 16 分

把訓練長度推到 500 萬 token

Road to 5 Million Tokens: Breaking Barriers in Long Context Training · Max Ryabinin,Together AI

Together AI 的研發副總 Max Ryabinin 說明長 context 訓練的記憶體都花在哪,並疊加多種既有技巧,再加上自家的 UPipe,把序列長度從 300 萬推到 500 萬 token。

其他:產品與研究介紹看原片 ↗

概要

  • 長 context 訓練為什麼受關注Max 說原因有兩個,一是 agent 愈來愈普遍,應用會想塞很多 token 進 context;二是影片生成要追蹤很多畫面,還要有時間上的一致性。
  • 兩個瓶頸標準 transformer 的計算量是二次方,因為序列裡每個元素之間都要兩兩互動;記憶體則隨 context 線性成長,沒那麼糟,但不用特殊技巧還是很難處理。
  • 一層一層疊技巧Max 以 300 萬 token 的訓練為例,依序用 fully sharded data parallelism、DeepSpeed Ulysses 的 context parallelism、activation checkpointing、把部分輸入搬到 CPU,以及沿序列長度切塊處理 element-wise 的運算,最後才做到 300 萬。
  • UPipe 再往前推他們發現一次只算一組 attention heads 就足以吃滿 GPU 的算力,所以把 heads 分批依序算,後一批重複使用前一批配置的緩衝區,省下 activation 記憶體。
  • 結果與取捨在 8 billion 與 32 billion 規模上,記憶體用量貼近最省記憶體的實作,而且能擴到 500 萬 token;chunk 愈大,記憶體用量愈高,但整個模型跑得愈快。
  • 瓶頸常在意想不到的地方Max 建議用 PyTorch profiler 這類工具找,論文裡對此著墨很多。

原話

  • “it's still quite important to understand where the memory goes”

    即使沒到百萬 token 的規模,搞清楚記憶體花到哪裡去仍然很重要

    ▶ 03:27
  • “pairwise interactions across all the elements in your sequence”

    序列裡所有元素之間的兩兩互動,這是計算量二次方的來源

    ▶ 04:03
  • “your memory keeps growing linearly”

    context 愈長,記憶體就線性成長

    ▶ 04:18
  • “the bottlenecks might appear where you least expect”

    瓶頸可能出現在你最意想不到的地方

    ▶ 13:05

延伸

  • Max 提到除了論文,之後還會有一串貼文把方法講得更深入。
  • Max 說把輸入搬到 CPU 對效能影響不大,因為只有反向傳播到對應那一層時才需要用到。

章節

點時碼直接跳到原片的那一段。

  1. 開場與題目Max 自我介紹是 Together AI 的研發副總,要講的研究專案是把 context parallelism 的記憶體障礙打破,推到 500 萬序列長度。
  2. Together AI 簡介Max 說公司是 AI 原生雲,涵蓋 GPU 叢集、微調與強化學習等模型客製化,以及開源模型的推論服務,組合裡有 200 多個模型。
  3. 為什麼要訓練長 context社群對長 context 訓練的興趣來自 agent 與影片生成;即使沒到百萬 token,搞清楚記憶體去哪了也值得,省下來的可以轉投資在別處。
  4. 二次方計算與線性記憶體延伸 context 會碰到兩個瓶頸:兩兩互動帶來的二次方計算,以及隨長度線性成長的記憶體。
  5. 實驗設定目標是看現有技巧加上額外優化能走多遠;Max 拿 300 萬訓練 token 放進單一 H100 節點當例子,光放模型參數就已經塞不下。
  6. 先用 FSDP 切參數參數分散到 8 張 GPU 後,模型的記憶體用量明顯下降,但 attention 的 activation 仍然讓記憶體爆掉。
  7. DeepSpeed Ulysses每張 GPU 只負責一個 attention head,但仍對整條序列算 attention,還能沿用 flash attention 等最佳化的實作;用量降了不少,離單節點目標還很遠。
  8. Activation checkpointing到 backward 時才重算 activation,可再把 activation 用量降到約八分之一,但還不夠。
  9. 把輸入搬到 CPU每個 transformer block 的部分輸入暫存到 CPU,用不到時就不佔 GPU;據 Max 所知這項優化最早是另一個專案實作的,能大幅擴張 context window。
  10. 沿序列長度切塊loss 與 MLP 這類 element-wise 的計算可以分塊,避免產生一個某個維度有 300 萬那麼大的緩衝區,這樣才終於做到 300 萬。
  11. 主要貢獻 UPipe他們的核心優化,是對 context parallelism 的進一步改法;發現一次算一組 heads 就能吃滿 GPU 算力。
  12. 分批算 heads排在同一張 GPU 的多組 heads 依序分批處理,存下部分結果,下一批重用上一批配置的緩衝區,不必一次配置整塊大緩衝區。
  13. 量測結果8 billion 與 32 billion 規模上,與最省記憶體的實作相當接近,並能擴到 500 萬 token。
  14. chunk 大小的取捨chunk 大則記憶體用量高、整體跑得較快;省下的記憶體可以轉投資到別處,或是用來訓練更長的 context。
  15. 結語與提問瓶頸可能出現在最意想不到的地方,PyTorch profiler 等工具能幫上忙;論文已公開,之後還會有一串貼文講得更深入。
  16. 問答回答聽眾提問時,Max 說指的只是 transformer 層的 query、key、value 矩陣;序列有 300 萬長時,一般做法會配置一個某軸達 300 萬的大張量,所以得用 UPipe 加上其他方法才不爆記憶體。

名詞

Together AI
Max 任職的 AI 原生雲,提供 GPU 叢集、模型客製化與開源模型推論
UPipe
這場介紹的主要優化,把 attention heads 分批依序算並重用緩衝區
DeepSpeed Ulysses
Microsoft 最先提出的 context parallelism 技術,每張 GPU 負責一個 attention head,但仍對整條序列算 attention
FSDP
fully sharded data parallelism,把模型參數切分到多張 GPU
Activation checkpointing
不存 activation,到 backward 時才重算,用算力換記憶體
PyTorch profiler
Max 建議用來找出訓練瓶頸的工具,論文裡有詳細討論

相關影片 同在「其他:產品與研究介紹」