# アクティベーションオフロード ## 定義 アクティベーションオフロード(activation offloading, CPU offloading)は、逆伝播で必要になる中間活性化テンソルを GPU メモリではなく CPU メモリへ一時的に転送し、必要なタイミングで GPU へ再ロード(オンロード)することで GPU メモリ消費を削減する手法である。[[選択的活性化再計算]](activation recomputation)が「破棄して再計算する」のに対し、オフロードは「計算せず退避する」というアプローチを取り、GPU 計算そのものを伴わない点が特徴である。 ## 横断的知見 - **粒度ミスマッチが性能劣化の根本原因**([[@2026__ICS__SPPO - Making Million-Token LLM Training Practical on Modest GPU Clusters]]): 既存のオフロード手法(TransformerEngine 系)は入力系列全体または層全体を単位として GPU-CPU 転送を行う。系列長が線形に増大すると転送時間も線形に増大し、CPU-GPU 帯域を早期に飽和させるため、GPU 計算との重なりが崩れて訓練効率が劣化する。SPPO はこの粒度を「部分系列(subsequence)」まで細分化することで、転送単位を小さくし GPU 実行パイプラインとより細かく重ね合わせられるようにする。 - **固定オフロード比率では不十分**(SPPO): 長さベース分割(subsequence を均等長に分割)はアテンション計算の後方トークンほど計算コストが高いという不均衡を無視する。FLOPs ベース分割(計算量を均等化)は逆に活性化サイズが不均衡になり(8分割で活性化サイズが 10.59GB〜2.87GB まで変動)、早い部分系列では転送時間が計算時間を上回りオフロードがボトルネックになる。SPPO は部分系列ごとに独立したオフロード比率 $\alpha_i$ を割り当てる sequence-aware offloading でこれを解消する。 - **活性化テンソルのアクセス頻度に応じた階層化が有効**(SPPO の2レベル活性化管理): Transformer 層内の活性化を「骨格活性化」として分解し、後続計算で高頻度にアクセスされる部分(例: 因果マスク下で後続 $Q_N$ 計算に必要な $K_i$・$V_i$)は GPU に残し、それ以外の低頻度アクセス活性化のみを CPU へオフロードする。全活性化を一律オフロードするより CPU-GPU 帯域を有効活用できる。 - **オフロード単独の効果はモデル規模・系列長に依存して逆転しうる**(SPPO のアブレーション): GPT-13B・S=512K ではフルオフロード追加が性能を悪化させた(0.91倍)が、GPT-65B・S=640K では性能向上した(2.1倍)。「通信効率は高いがメモリ効率が低い並列化戦略」の場合にフルオフロードが有効に働く一方、そうでない設定ではオフロードオーバーヘッド自体がボトルネックになる。 - **CPU メモリ帯域の排他アクセス仮定は先行研究([[ZeROオプティマイザ]]系)と共通**: SPPO の sequence-aware offloading の最適化は「各 GPU が CPU メモリ帯域へ排他的にアクセスできる」前提に立ち、複数 GPU が同一 CPU ソケットを共有する場合の PCIe 輻輳は明示的にモデル化していない。この仮定は ZeRO-Offload 系の先行研究(Ren et al. 2021)でも同様に置かれている。 - **オフロード単位の粒度は、パイプラインステージ単位からサブシーケンス単位へと文献間で細分化が進んでいる**: [[@2026__Vicinagearth__Efficient Training of Large Language Models on Distributed Infrastructures - A Survey - Chapter 6 Memory Optimizations]] §6.4.1 が挙げる Yuan ら [301] は、アクティベーションボトルネックをパイプラインステージ単位でオフロード・リロードすることで計算とアクティベーション転送のオーバーラップを最大化する(粒度=ステージ)。これに対し SPPO はさらに一段細かいサブシーケンス単位でオフロード比率 $\alpha_i$ を個別に割り当てる(既出の横断的知見)。両者を並べると、「粒度ミスマッチが性能劣化の根本原因」(SPPO の既出知見)という問題意識が、Yuan ら(ステージ単位への分割で対処)から SPPO(サブシーケンス単位へさらに分割)へと、独立した研究間で段階的に細分化されてきたことが分かる。ただし第6章はこの細分化を系統的なトレンドとしては明示しておらず、両手法を直接比較した評価も存在しない。(Source: [[@2026__Vicinagearth__Efficient Training of Large Language Models on Distributed Infrastructures - A Survey - Chapter 6 Memory Optimizations]], [[@2026__ICS__SPPO - Making Million-Token LLM Training Practical on Modest GPU Clusters]]) - **オフロードの副作用として、CPU-GPU 帯域競合(SPPO)とメモリ断片化(サーベイ第6章)という異なる 2 種類のコストが独立に指摘されている**: [[@2026__Vicinagearth__Efficient Training of Large Language Models on Distributed Infrastructures - A Survey - Chapter 6 Memory Optimizations]] §6.3 は「再計算・オフロードなどのメモリ最適化技術自体が、より頻繁かつ不規則なメモリ確保・解放要求を発生させ、断片化問題を悪化させる」と明記する。これは SPPO が既出の横断的知見で指摘する CPU メモリ帯域の排他アクセス仮定(PCIe 輻輳の不考慮)とは異なる副作用の系統であり、オフロードの適用コストが「帯域(転送時間)」と「メモリレイアウト(断片化)」という 2 つの独立した軸で生じることを示す。両コストを同時に最小化するオフロード設計は、SPPO・第6章のいずれの範囲でも扱われていない。(Source: [[@2026__Vicinagearth__Efficient Training of Large Language Models on Distributed Infrastructures - A Survey - Chapter 6 Memory Optimizations]], [[@2026__ICS__SPPO - Making Million-Token LLM Training Practical on Modest GPU Clusters]]) ## 未解決の問い - PCIe 輻輳(複数 GPU が同一 CPU ソケットの帯域を共有する場合)を明示的にモデル化したオフロード比率最適化はどのように設計できるか。 - 動的長・混合長バッチ処理(SPPO のスコープ外)において、部分系列単位のオフロード比率をどう決定すべきか。 - オプティマイザ状態・パラメータのオフロード([[ZeROオプティマイザ]])と活性化オフロード(本概念)を同時に適用した場合の CPU-GPU 帯域競合はどう調整すべきか。 - パイプラインステージ単位(Yuan ら)とサブシーケンス単位(SPPO)のオフロード粒度は、モデル規模・系列長のどの組み合わせで優劣が入れ替わるか。両者を統一的に扱う「粒度を可変にするオフロードフレームワーク」は設計できるか。(Source: [[@2026__Vicinagearth__Efficient Training of Large Language Models on Distributed Infrastructures - A Survey - Chapter 6 Memory Optimizations]]) - オフロードが誘発するメモリ断片化(サーベイ第6章 §6.3)は、SPPO の 2 レベル活性化管理(骨格活性化を GPU に残す)によってどの程度緩和されるか、あるいは逆に不規則な確保・解放パターンを増やして悪化させるか。 ## 関連 - 概念: [[並列化戦略]] / [[LLM分散学習]] / [[パイプライン並列化]] / [[シーケンス並列化]] / [[選択的活性化再計算]] / [[ZeROオプティマイザ]] - ソース: [[@2026__ICS__SPPO - Making Million-Token LLM Training Practical on Modest GPU Clusters]] / [[@2026__Vicinagearth__Efficient Training of Large Language Models on Distributed Infrastructures - A Survey - Chapter 6 Memory Optimizations]] ## 出典 - [[@2026__ICS__SPPO - Making Million-Token LLM Training Practical on Modest GPU Clusters]](sequence-aware offloading・2レベル活性化管理・GPT-13B/65B でのオフロードのアブレーション) - [[@2026__Vicinagearth__Efficient Training of Large Language Models on Distributed Infrastructures - A Survey - Chapter 6 Memory Optimizations]](§6.4.1 CPU Offloading の Static/Dynamic 分類、Yuan ら [301] のパイプラインステージ単位オフロード、§6.3 断片化解消とオフロードの相互作用)