関係マップ:GPU チェックポイント

この地図は、GPU の状態を保存・復元する技術(GPU チェックポイント)の全体像を描く。 用途ごとに3つの領域に分かれ、それぞれ別の地図で詳細を扱う。 情報源は各論文のアブストラクト、公式ブログ、公開リポジトリに基づく。

GPU チェックポイントとは、GPU 上の状態(デバイスメモリ、CUDA コンテキスト、計算キューなど)をある時点で保存し、あとから復元する技術の総称である。 CPU プロセスのチェックポイント(CRIU など)と異なり、GPU の状態は通常のプロセスアドレス空間の外にあるため、ベンダ固有のプラグインやユーティリティが必要になる。

用途による3つの領域

GPU チェックポイントの用途は大きく3つに分かれる。

領域 目的 詳細
汎用 CUDA プロセスの C/R 任意の GPU プロセスを透過的に保存・復元・ライブマイグレーションする この地図の§1
深層学習の学習チェックポイント 学習途中のモデル状態を保存し、障害復旧や学習再開に使う dl-checkpoint.md
ノートブックの状態管理 ノートブックセッションの変数・カーネル状態を保存・移行する checkpoint.md

3つはレイヤーが異なる。 汎用 C/R は OS・ランタイム層で GPU プロセスを丸ごと扱う。 深層学習チェックポイントはアプリケーション層でモデル重みやオプティマイザ状態を扱う。 ノートブックの状態管理はさらに上の言語ランタイム層で Python 変数やセル依存グラフを扱う。

下のレイヤー(汎用 C/R)を上のレイヤー(深層学習やノートブック)で使うことも原理的には可能だが、粒度が粗く無駄が多い。 そのため各レイヤーごとに独自の最適化が発展してきた。

1. 汎用 CUDA プロセスの C/R

汎用 C/R は、アプリケーションのコードを変更せずに GPU プロセスを透過的に保存・復元する。 用途は耐障害性、ライブマイグレーション、プリエンプション対応、プロセスの高速起動など幅広い。

NVIDIA cuda-checkpoint(2024)

2024年4月、NVIDIA が CUDA のチェックポイント・リストアをネイティブにサポートするユーティリティ cuda-checkpoint を公開した1。 これにより、GPU メモリ、CUDA コンテキスト、キューの状態をプロセス外部から保存・復元できるようになった。 以下の CRIUgpu と PhoenixOS は、いずれもこのネイティブサポートを前提または補完する位置にある。

CRIUgpu(2025)

CRIUgpu は、NVIDIA の cuda-checkpoint を CRIU に統合し、GPU コンテナの透過的チェックポイントを実現するシステムである2。 API インターセプトに依存せず、CUDA ランタイムレベルで GPU メモリとコンテキスト状態を捕捉するため、定常状態での性能オーバーヘッドがない。 GPT-2(1.5B)や LLaMA 3.1(8B)の学習ワークロード、HPC マイクロベンチマークで評価されている。 データ並列ワークロードでは GPU 数に対してチェックポイント時間が線形にスケールする。 NVIDIA H100、A100、AMD MI210 など異なるデバイス間での復元も確認されている。

PhoenixOS(SOSP 2025)

PhoenixOS(PhOS)は、GPU プロセスのチェックポイントとリストアをOS レベルで並行実行する初のシステムである3。 GPU カーネル起動時の引数からメモリアクセスを投機的に推定し、バイナリ計装で実行時に検証する二段階方式を採る。 これにより、チェックポイント処理と GPU 計算を同時に進められる。 上海交通大学の IPADS グループが開発し、オープンソースで公開されている。

2. 既存の関連地図

  1. https://github.com/NVIDIA/cuda-checkpoint 

  2. Ariel Szekely et al., “CRIUgpu: Transparent Checkpointing of GPU-Accelerated Workloads,” arXiv:2502.16631, 2025. 

  3. Xingda Wei et al., “PhoenixOS: Concurrent OS-level GPU Checkpoint and Restore with Validated Speculation,” SOSP 2025.