チェックポイント・リスタート(HPCシミュレーション)
数日〜数週間かかるシミュレーションが障害で全損しなくなる。最適なチェックポイント間隔をMTBFから逆算する式まで押さえます。
- 1.チェックポイント間隔はMTBFとチェックポイント書き込み時間からYoungの式で最適値を導出でき、闇雲に頻度を上げると逆に総実行時間が伸びる。
- 2.並列ファイルシステムへの書き込みはN個のプロセスが個別ファイルを出すN-to-N方式より、集約I/O(N-to-1)が帯域を有効活用できる場合が多い。
- 3.大規模系ではMTBFがノード数に反比例して縮むため、チェックポイントは個別最適化ではなくシステム全体の可用性設計として扱う必要がある。
なぜチェックポイントが必要なのか ── 長時間ジョブと故障確率
大規模シミュレーション(気候モデル、CFD、分子動力学など)は数千〜数万ノードを何時間、時には何週間も占有します。問題は、システム全体の故障確率がノード数に応じて増えることです。個々のノードの平均故障間隔(MTBF, Mean Time Between Failures)が仮に数年オーダーでも、ノードを束ねるとシステム全体のMTBFは反比例して縮みます。
システム全体のMTBF(独立故障を仮定した近似)
M_system ≈ M_node / N
M_node: ノード1台あたりのMTBF
N : ノード数
例えばノード単体のMTBFが10年でも、N=10万ノードのシステムでは全体のMTBFは概算で1時間弱まで縮みます。つまり計算時間がシステムMTBFを超えるジョブは、リスタート機構なしでは正常終了する見込みがほぼゼロになります。これがチェックポイント・リスタートが例外処理ではなく必須設計である理由です。
チェックポイントとは、計算状態(変数の値、時刻ステップ番号、乱数シードなど再現に必要な情報一式)を安定ストレージに書き出す操作です。障害発生後は直近のチェックポイントから状態を読み込み、そこから計算を再開(リスタート)します。ゼロからの再計算を避け、失う仕事量を「直近のチェックポイント以降の分」に限定します。
間隔を最適化する理論 ── Youngの式
チェックポイント間隔を短くすれば故障時の損失は減りますが、書き込み自体がI/Oオーバーヘッドとして総実行時間を圧迫します。逆に間隔を長くすると、故障時に失う計算量が増えます。この二つのトレードオフを最小化する問題として、John W. Youngが1974年に導いた近似式が広く使われます。
Youngの最適チェックポイント間隔(1次近似)
T_opt ≈ sqrt(2 × C × M)
T_opt: 最適なチェックポイント間隔
C : チェックポイント1回の書き込みに要する時間(オーバーヘッド)
M : システムのMTBF
直感的には、Cが大きい(書き込みが重い)ほど間隔を伸ばして回数を減らし、Mが大きい(壊れにくい)ほど間隔を伸ばして良い、という平方根依存になります。この式は「総実行時間に対するオーバーヘッド比率」を最小化する条件から導かれ、Cに対してMが二次で効くのがポイントです。
総実行時間に占めるオーバーヘッド比率の直感
オーバーヘッド比率 ∝ C / T + T / (2M)
第1項: 間隔Tを短くするほど増える(書き込み回数が増える)
第2項: 間隔Tを長くするほど増える(故障時の損失計算量が増える)
→ 両項の和を最小化するTがT_opt
間隔を必要以上に短くすると、書き込みオーバーヘッドの累積が支配的になり、故障が一度も起きなくても総実行時間はチェックポイントなしより悪化します。逆に間隔を伸ばしすぎると、故障時に失う計算量(無駄になった時間ステップ)が線形に増えます。最適点は両者のバランスであり、「できるだけ頻繁に」は誤りです。
I/Oオーバーヘッドの正体 ── 並列ファイルシステムへの書き込みパターン
チェックポイントのコストCを支配するのは、多数のプロセスが同時に大容量データを永続化する際のI/O競合です。書き込みパターンは大きく2方式に分かれます。
| 方式 | 挙動 | 課題 |
|---|---|---|
| N-to-N | 各プロセスが自分専用のファイルへ書く | ファイル数が数万〜数十万に達し、メタデータサーバーへの問い合わせが殺到しリスタート時のファイルオープンも遅い |
| N-to-1(集約I/O) | 全プロセスの出力を少数の共有ファイルへ集約して書く | 書き込み順序の調整が要り実装が複雑だが、ストレージ帯域を連続アクセスとして使い切れる |
N-to-1方式を実現する代表的な仕組みが集約I/O(two-phase I/O)です。各プロセスがまず担当データをネットワーク経由で「集約役」のプロセスに集め、集約役がディスク上で連続したオフセットになるようまとめて書き出します。これにより、並列ファイルシステム(Lustre、GPFSなど)が得意とする大きく連続したストライプ単位のアクセスに変換され、小さなランダム書き込みの集中を避けられます。
さらに、チェックポイントの書き込み中も計算を止めない手法として次の2つが実務で使われます。
- 非同期チェックポイント: 状態をまずローカルメモリやノードローカルのNVMeにコピーし、実際のストレージへの転送はバックグラウンドで進めながら計算を再開する。計算とI/Oを重ねてオーバーヘッドの実効値Cを下げる。
- 多階層チェックポイント: 高頻度・低コストのローカルストレージへのチェックポイントと、低頻度・高コストの共有並列ファイルシステムへのチェックポイントを併用し、ノード単体障害はローカル層で、システム規模の障害は共有層で復旧する。
Youngの式はCを所与として最適Tを求めるものですが、実務ではC自体を非同期化・多階層化・集約I/Oで小さくすることのほうが効果が大きいことが多いです。Cが小さくなればT_optも短くでき、結果として損失計算量の期待値も同時に減らせます。
チェックポイントに何を含めるか ── 一貫性の確保
分散並列計算では、全プロセスが同一の論理時刻の状態を書き出す必要があります。これを保証しないと、リスタート後の状態がどの時刻ステップにも対応しない不整合な組み合わせになりえます。標準的な手法は次の通りです。
- グローバル同期チェックポイント: 全プロセスにバリア同期をかけ、同一の時刻ステップ境界で一斉に状態を書き出す。実装が単純だが、同期待ちがボトルネックになりやすい。
- 協調的だが非同期的なチェックポイント: 各プロセスは独立にタイミングを決めつつ、メッセージログや依存関係の記録によって復元時の整合性を再構成する。同期コストは下がるが実装は複雑。
多くの数値シミュレーション(陽解法の時間発展など)では、時刻ステップの区切りが自然なチェックポイント境界になるため、グローバル同期方式が広く採用されています。
まとめ
- ノード数が増えるほどシステム全体のMTBFはノード単体のMTBFに反比例して縮み、長時間ジョブではチェックポイント・リスタートが必須設計になる。
- 最適なチェックポイント間隔はYoungの式
T_opt ≈ sqrt(2 × C × M)で近似でき、書き込みオーバーヘッドCとMTBFのMのバランスで決まる。間隔を短くしすぎても長くしすぎても総実行時間は悪化する。 - チェックポイントの実コストは並列ファイルシステムへのI/Oパターンに支配される。N-to-Nの個別ファイル方式はメタデータ負荷が高く、集約I/O(N-to-1)でストライプ単位の連続アクセスに変換するのが定石。
- 非同期チェックポイントや多階層ストレージ(ローカルNVMe+共有並列ファイルシステム)で実効オーバーヘッドCそのものを下げることが、間隔の数理最適化と並んで実務上の主戦場になる。
HPC・科学技術計算 Article
チェックポイント・リスタート(HPCシミュレーション)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
HPC
比較で見る軸
難易度: advanced / カテゴリ: HPC・科学技術計算 / タグ数: 5
導入後に効く点
並列ファイルシステムへの書き込みはN個のプロセスが個別ファイルを出すN-to-N方式より、集約I/O(N-to-1)が帯域を有効活用できる場合が多い。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- HPC・科学技術計算
- タグ数
- 5
判断チェックリスト
- 自社の用途が「HPC / チェックポイント」に近いか確認する。
- 強みである「チェックポイント間隔はMTBFとチェックポイント書き込み時間からYoungの式で最適値を導出でき、闇雲に頻度を上げると逆に総実行時間が伸びる。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。