What problem are you facing?
Serving Qwen3-Coder-480B (894 GiB on disk, BF16) as a two-node Leader+Worker gang on EKS, vLLM spent ~43 minutes just reading the safetensors weights from the ModelCache RWX volume at startup — before CUDA graph capture and KV cache init even began. The cache itself hydrated fine (HuggingFace → EFS, ~960 GB in ~31 min, ~31 GiB/min); the bottleneck is the per-pod read of weights when the engine loads.
The per-shard load rate sawtooths: bursts of 1–2.5 it/s when a shard is already in the OS page cache (vLLM prefetches ahead with 8 threads), collapsing to 15–30 s/it when the loader catches the prefetch frontier and reads cold from EFS. Net sustained ~2–4 %/min across 241 shards. This read cost is paid on every pod start, so it dominates startup and can make the cache a net latency regression versus a direct pull for a single deployment.
Infra (us-east-2):
- 2×
p5en.48xlarge (16× H200), AZ us-east-2b, EKS 1.36, AL2023 NVIDIA AMI.
- ModelCache RWX backing: Amazon EFS, throughputMode
elastic, performanceMode generalPurpose, encrypted, ~960 GB. EFS CSI StorageClass modelplane-rwx-efs (provisioningMode=efs-ap). Same-AZ mount target (no cross-AZ).
- 16 vLLM workers (8 TP ranks/node × 2 PP nodes) read shards concurrently from the one filesystem.
EFS elastic throughput doesn't sustain the multi-GB/s a 16-GPU cold load wants; the page cache (8 prefetch threads into ~1.9 TiB RAM) hides latency but not the cold reads. EFS write during hydration was fine — it's the concurrent read fan-out that bogs down.
How could Modelplane help solve your problem?
The ModelCache's EFS-backed storage tier looks like the practical floor for cold-loading a ~1 TB model. Worth exploring faster options, but no specific proposal yet.
Related to #186 / #115 (cache footprint / hydration image).
What problem are you facing?
Serving Qwen3-Coder-480B (894 GiB on disk, BF16) as a two-node Leader+Worker gang on EKS, vLLM spent ~43 minutes just reading the safetensors weights from the
ModelCacheRWX volume at startup — before CUDA graph capture and KV cache init even began. The cache itself hydrated fine (HuggingFace → EFS, ~960 GB in ~31 min, ~31 GiB/min); the bottleneck is the per-pod read of weights when the engine loads.The per-shard load rate sawtooths: bursts of 1–2.5 it/s when a shard is already in the OS page cache (vLLM prefetches ahead with 8 threads), collapsing to 15–30 s/it when the loader catches the prefetch frontier and reads cold from EFS. Net sustained ~2–4 %/min across 241 shards. This read cost is paid on every pod start, so it dominates startup and can make the cache a net latency regression versus a direct pull for a single deployment.
Infra (us-east-2):
p5en.48xlarge(16× H200), AZ us-east-2b, EKS 1.36, AL2023 NVIDIA AMI.elastic, performanceModegeneralPurpose, encrypted, ~960 GB. EFS CSI StorageClassmodelplane-rwx-efs(provisioningMode=efs-ap). Same-AZ mount target (no cross-AZ).EFS elastic throughput doesn't sustain the multi-GB/s a 16-GPU cold load wants; the page cache (8 prefetch threads into ~1.9 TiB RAM) hides latency but not the cold reads. EFS write during hydration was fine — it's the concurrent read fan-out that bogs down.
How could Modelplane help solve your problem?
The
ModelCache's EFS-backed storage tier looks like the practical floor for cold-loading a ~1 TB model. Worth exploring faster options, but no specific proposal yet.Related to #186 / #115 (cache footprint / hydration image).