ML Storage Infrastructure
ML 訓練・推論を支えるストレージ基盤を 10 セクション (階層 / Object / Parallel FS / Block-NVMe / キャッシュ / ML フォーマット / Checkpoint / コールド / ベクター / フロンティア) で俯瞰。
article technology ja ML 訓練・推論を支えるストレージ基盤を 10 セクション (階層 / Object / Parallel FS / Block-NVMe / キャッシュ / ML フォーマット / Checkpoint / コールド / ベクター / フロンティア) で俯瞰。ML Storage Infrastructure
ML 訓練・推論を支える「ストレージ基盤」とは HBM、DRAM、ローカル NVMe、ブロック、並列 FS、object、コールドを束ねた多階層永続化レイヤ。物理層 (tech-71) は GPU と NIC の帯域を提供するが、データローダ・checkpoint・KV キャッシュ・シャッフルの実バンド幅はストレージ階層が決める。分散学習 (tech-48)、FW (tech-73)、推論 (tech-69)、アプリ (tech-72)、クラウド (tech-74) はこれに依存。本稿は storage substrate を 10 節 + 8 ピットフォールで俯瞰。
ストレージ階層全体像
階層は HBM (~3 TB/s, 80–192 GB) → DRAM (~400 GB/s, 1–2 TB) → ローカル NVMe (~7–14 GB/s, 数 TB) → ブロック (~1–4 GB/s, ~10 TB) → 並列 FS / object (~数十 GB/s 集約, PB 級) → コールド (秒〜時間、EB 級) の 6 段。LLM 訓練の支配的ボトルネックは (a) データローダ帯域 (CC 由来 10 TB+ のシャッフル読み)、(b) checkpoint 書き込み (Llama 3 70B BF16 ~140 GB / 405B ~810 GB 未確認)、(c) KV キャッシュ流出、(d) 分散シャッフル。tech-71 は物理層 (冷却 + 電力) で軽く触れるのみで、本稿はその下位の SW + プロトコル + フォーマット層を担当。設計は「ホットを上、コールドを下、その間にキャッシュ」が原則。
オブジェクトストレージ
クラウドのアーカイブ層。AWS S3 は 2020 年から strong consistency、5500 PUT + 5500 GET / s / prefix、multipart (5 MB〜5 GB part)、range read。GCP Cloud Storage は parallel composite uploads + strong consistency。Azure Blob (Hot / Cool / Cold / Archive) はブロック blob 最大 4.75 TiB 未確認、Premium で低レイテンシ。Cloudflare R2 は S3 互換 + egress ゼロ。MinIO / Ceph RGW は S3 互換のセルフホスト、HCI / オンプレ GPU で多い。Backblaze B2 / Wasabi はコスト特化 ($5/TB/月 帯) の独立系。ML 用途では WebDataset / MDS / Parquet / Arrow tar を直置きし range GET + 並列接続で読む。
並列ファイルシステム
object は random read latency が秒オーダの長尾で訓練シャッフル / 同時 checkpoint で詰まる。Lustre は標準解: MDT + OST 分離の POSIX 並列 FS、ノード当たり数 GB/s〜10 GB/s+。マネージドは AWS FSx for Lustre (S3 lazy load)、Azure Managed Lustre (2023 GA 未確認)、GCP Parallelstore (2024 GA 未確認 DAOS ベース)、ベアメタルは DDN EXAScaler。IBM Storage Scale (GPFS) は HPC 老舗、BeeGFS は OSS 軽量、WekaIO はソフト定義全フラッシュ NAS で数十 GB/s/client 未確認、VAST Data は DASE + QLC + SCM で PB 級、Pure FlashBlade // S は object + NFS 統合、DAOS は Intel 由来 object I/O 中心。Lustre vs object の random read latency は桁違い (μs vs ms〜) なため訓練シャッフル + 同時 checkpoint は parallel FS が標準。
ブロックストレージとローカル NVMe
attached NVMe は最速の永続スクラッチで、AWS p5.48xlarge 30 TB 級 未確認、Azure Standard_ND96isr_H100_v5 同等帯。EBS io2 Block Express 256k IOPS / 4 GiB/s 未確認、GCP Hyperdisk Extreme 350k IOPS 未確認、Azure Premium SSD v2 は IOPS / throughput / 容量を独立スケール可。ローカル NVMe は揮発のため checkpoint 受け流し、data shard キャッシュ、vLLM prefix cache spill、KV キャッシュ二次階層に使う。ブロックは永続が必要な作業ボリュームに充てる。HBM ~3 TB/s vs NVMe ~14 GB/s で 200 倍差なのでローカル NVMe はネットワーク FS への前段キャッシュと位置づける。
オブジェクト → コンピュート キャッシュ
object の長尾レイテンシを GPU 近傍で吸収する層。AWS S3 Mountpoint (2023 GA) は FUSE で S3 を疑似 POSIX マウントするが書き込み制約 (sequential のみ、append 不可) があり読み込み中心用途。S3 Express One Zone (2023、directory bucket) は単一 AZ + 専用 HW で一桁 ms 未確認、価格は標準の数倍だがホット訓練データで導入が進む。GCP Anywhere Cache (2023 GA 未確認) は GCS リージョン横断キャッシュ。OSS は Alluxio が分散 in-memory キャッシュの古参、JuiceFS は object backend + Redis/PostgreSQL metadata の POSIX FS、Fluid (CNCF) は K8s ネイティブ dataset orchestration。Iceberg / Delta / Hudi は object 上に Parquet + メタデータを載せ time travel / pruning / ACID を提供。
ML 特化データセットフォーマット
個別ファイルで扱うと object / FS のメタデータ操作で詰まる (P2)。実用解はシャード化バイナリコンテナ。WebDataset は tar アーカイブをシャード単位で配り URL リスト + IterableDataset で stream 読み、LAION / CommonPool 等の配布標準。Mosaic StreamingDataset (MDS) は MosaicML 由来で shard manifest + deterministic shuffle + epoch resume + S3/GCS/Azure 直読、LLM 事前学習で広く採用。HuggingFace Datasets は Arrow + streaming + Hub。レガシーは TFRecord (protobuf) と RecordIO (MXNet)。汎用カラムナは Parquet (Zstd 圧縮、predicate pushdown) と Arrow IPC。CV は FFCV (5–10× 高速 未確認)、NVIDIA DALI は GPU デコード + 前処理。選定軸は shuffle 粒度 / resume / コスト / フレームワーク統合。
チェックポイント書き込み
LLM の checkpoint は数十 GB〜TB 級。PyTorch DCP (torch.distributed.checkpoint) は sharded state dict を並列書き込み、async save (2.x で安定 未確認) で訓練と書き込みをオーバーラップ。safetensors は memory-mapped + 整数オフセットで pickle RCE を排除、推論ロードの標準。Megatron-LM dist-ckpt と NVIDIA NeMo Resilient Training (2024 未確認) は書き込み中障害復旧を組込み。FSDP sharded state dict はパラメータをランクごと分割保存し全体集約を避ける。要求帯域は数千 GPU で >5 GB/s/node 未確認 に達し、Lustre / WekaIO 並列書き込みか object multipart 同時送信。実運用は epoch + N ステップ + 障害検知時の 3 段保存、保持世代 3〜5。
コールド階層とライフサイクル
raw コーパス (CC WARC 数百 TB、FineWeb 派生) と古い checkpoint はコールドへ。S3 Glacier Instant Retrieval (秒オーダ、Standard より 68% 安 未確認)、Flexible (1–5 分〜12h)、Deep Archive (12h、最安)。GCS Coldline / Archive、Azure Blob Cool / Cold / Archive、独立系 Wasabi / Backblaze B2 (~$6/TB/月 未確認) はコスト特化。ライフサイクル: 「90 日 → Glacier IR、365 日 → Deep Archive、失敗 multipart → 7 日後 abort」が必須 (P7)。規制: EU AI Act Art.53 で訓練データ provenance 義務が議論段階 未確認、GDPR 削除要請、著作権訴訟対応で URL + dump 日 + ライセンス判定の lineage 保持が実務化。
ベクター / 特徴量ストレージ層
tech-72 はアプリ層なので本節は storage characteristics に絞る。Qdrant (Rust + mmap + RocksDB) は HNSW + scalar quantization、ディスク常駐が安価。pgvector は PostgreSQL extension の HNSW / IVFFlat、既存 RDBMS 統合容易だが超大規模で限界 (~数千万 未確認)。Milvus はセグメントベースで MinIO/S3 永続化、PB 級。Weaviate は LSM + GraphQL。Pinecone は managed 内部非公開 未確認。LanceDB は columnar Lance でベクトル + メタデータ + ブロブ統一。インデックスは in-memory HNSW (RAM 高速だが高価)、DiskANN (Microsoft、SSD 上 Vamana、~10x 安いがレイテンシ犠牲)、Lucene HNSW (Elastic / OpenSearch) の三系統。特徴量ストア は Feast (Redis + Parquet/BigQuery)、Tecton、クラウド純正 (SM / Vertex / Azure ML) は別系統 (tech-74)。
2026 フロンティア
(a) NVIDIA GPUDirect Storage (GDS) は NVMe-oF + RDMA で CPU/PCIe を bypass しストレージ → GPU HBM 直接 DMA、Magnum IO の cuFile API で PyTorch / DALI から呼べる。(b) CXL memory pooling: CXL 3.0 fabric attached メモリで GPU ノード間 DRAM 共有プール、HBM 不足時の二次階層に研究段階 未確認。(c) AWS S3 Vectors (2024 発表 未確認) は S3 内部ネイティブベクトル検索の次世代 API。(d) Lakehouse 三国志: Iceberg vs Delta vs Hudi の収斂と Iceberg REST Catalog 標準化 (2024〜) で訓練データ管理が SQL + ACID + time travel に統一。(e) lineage / provenance: OpenLineage、Marquez、COSMIC 未確認 で URL × epoch × モデルを再現可能化。(f) FineWeb 2.0 / DCLM のシャードレイアウト最適化。(g) Apple Foundation Models on-device: 量子化モデルを M シリーズ NPU 近傍 SSD に常駐 (時期未確認)。
ピットフォール
P1: object prefix shaping — S3 5500 req/s/prefix 超で 503 SlowDown → ハッシュプレフィックスで partition 分散。P2: Lustre MDT bottleneck — 1M ファイル / shuffle で MDT 詰まり → WebDataset / MDS / Parquet で tar / カラムナ化、ファイル数 10^3 に圧縮。P3: checkpoint write IOPS overload — 1024 GPU の同時 torch.save() で FS 詰まり → DCP async + sharded state dict + 並列 FS の stripe 分散。P4: data loader CPU pin contention — GPU 利用率 30–60% 停滞 → num_workers ≥ CPU/GPU + pin_memory + prefetch_factor=2、CV は DALI / FFCV、テキストは MDS shard prefetch。P5: cross-region egress — S3 (us-east-1) → 訓練 (eu-west-1) で月数千ドル → IaC で同一リージョン強制、R2 活用。P6: S3 Express + Mountpoint POSIX 差 — directory bucket API が標準と微妙に異なり Mountpoint も append 不可 → 抽象層 (Alluxio / JuiceFS / fsspec) を挟む。P7: object versioning cost explosion — 失敗 crawl versions / 古い checkpoint で容量爆発 → lifecycle の noncurrent_version_expiration + multipart abort 必須。P8: GPU starvation due to single-NIC ingest — 200 GbE 単発で H100 8 枚にデータ届かず利用率低下 → bonded 2x200 GbE 以上 + multi-shard prefetch + GDS。
選定
(a) 10B+ 事前訓練 → Lustre / WekaIO + DCP async + GDS、シャッフルは MDS / WebDataset。(b) 大規模 SFT / LoRA FT → object + Mountpoint or S3 Express + safetensors。(c) 低コスト single-node FT → ローカル NVMe + HF Datasets streaming。(d) 推論 + RAG → pgvector or Qdrant disk + 同一リージョン S3 + Mountpoint lazy load。(e) コールド保管 → Glacier Deep Archive / B2、lifecycle で 365 日強制。(f) 来歴重視 → Iceberg + OpenLineage、Parquet partitioned by (source, crawl_date)。
スコープは “storage substrate” に限定、物理層 (tech-71)、コンテナ (tech-66)、推論 (tech-69)、FW (tech-73)、アプリ (tech-72)、クラウド (tech-74)、分散学習 (tech-48) と境界を保つ。数値・GA・SKU は訓練データ依存 (cutoff 2025-08) で (未確認) を明示分離、confidence: medium。