DGX Spark/Guides/Model storage
Guide · November 2026

DGX Spark storage, 1 TB vs 4 TB: how many models fit, one shared cache, and where to put the overflow

By Samuel Seidel · Published November 7, 2026 · Sources checked November 7, 2026

A 4 TB DGX Spark holds about four and a half times as many models as a 1 TB one, and current open models are large enough for that to matter: on Hugging Face on 7 November 2026, gpt-oss-120b's weights are 65.3 GB, Nemotron 3.5 Super VL NVFP4 is 75.1 GB and DeepSeek-V4-Flash is 159.6 GB. By my calculation, after reserving 150 GB for the OS, containers and Python environments, a 1 TB drive has room for about 850 GB of weights (13 models the size of gpt-oss-120b) and a 4 TB drive about 3,850 GB (58). Keep one Hugging Face cache that vLLM, SGLang and llama.cpp all read, download only the files you need, and put the overflow on a USB-C NVMe enclosure (about 2 GB/s at best, as owners measured) or an NFS share. On a rented GPUwerk Spark the 1 TB NVMe is shared with the host, so keep models in /workspace.

Model and formatHugging Face repoSize (GB)Weights under 128 GB?How many fit in 850 GB (1 TB)How many fit in 3,850 GB (4 TB)
gpt-oss-20b, MXFP4openai/gpt-oss-20b (root files)13.8Yes61278
Qwen3.8-27B, NVFP4nvidia/Qwen3.8-27B-NVFP421.9Yes38175
Qwen3.6-35B-A3B, GGUF UD-Q4_K_Munsloth/Qwen3.6-35B-A3B-GGUF22.1Yes38174
Qwen3.8-27B, FP8Qwen/Qwen3.8-27B-FP830.9Yes27124
Qwen3.6-35B-A3B, FP8Qwen/Qwen3.6-35B-A3B-FP837.5Yes22102
Llama 3.3 70B, FP4nvidia/Llama-3.3-70B-Instruct-FP442.7Yes1990
Gemma 4 26B-A4B, BF16google/gemma-4-26B-A4B51.6Yes1674
gpt-oss-120b, MXFP4openai/gpt-oss-120b (root files)65.3Yes1358
Nemotron 3.5 Super VL 120B, NVFP4nvidia/NVIDIA-Nemotron-3.5-Super-VL-120B-A12B-NVFP475.1Yes1151
Nemotron 3 Super 120B, NVFP4nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP480.4Yes1047
Llama 3.3 70B, BF16meta-llama/Llama-3.3-70B-Instruct (safetensors)141.1No627
DeepSeek-V4-Flashdeepseek-ai/DeepSeek-V4-Flash159.6No524
GLM-5.3-Flash, NVFP4RedHatAI/GLM-5.3-Flash-NVFP4197.9No419
Qwen3-235B-A22B-Instruct-2507, BF16Qwen/Qwen3-235B-A22B-Instruct-2507470.2No18

Sizes are the sum of file sizes in each repo's main branch from the Hugging Face API, read 7 November 2026, in decimal GB (109 bytes, the same unit drive makers use). "Root files" excludes the duplicate original/ and metal/ folders. Counts = floor(850 / size) and floor(3,850 / size), where 850 and 3,850 GB are my assumption of what is left after 150 GB for DGX OS, three or four container images and virtual environments. "Under 128 GB" is weights only; models marked No need two or more Sparks or a smaller quant, and the memory calculator adds the KV cache.

How many models fit on a 1 TB or a 4 TB Spark?

A working set fits on 1 TB; a habit of trying every new quant does not. Take a plausible library from the table: gpt-oss-120b, Nemotron 3.5 Super NVFP4, Qwen3.6-35B-A3B in FP8 and GGUF, Qwen3.8-27B NVFP4, gpt-oss-20b and DeepSeek-V4-Flash for a two-Spark cluster. By my calculation that is 395.3 GB, leaving 454.7 GB of the 850 GB budget on 1 TB and 3,454.7 GB on 4 TB. Owners report the opposite end: one had about 750 GB in his Hugging Face cache alone (thread 370981), close to everything a 1 TB drive leaves free.

Containers count too. The arm64 image for nvcr.io/nvidia/vllm:26.10-py3 is 11.23 GB compressed, nvcr.io/nvidia/pytorch:26.10-py3 12.66 GB and the community eugr/spark-vllm:nightly-20261002 image that NVIDIA Sync's Model Launcher pulls is 11.25 GB, from the NGC and Docker Hub registries on 7 November. They unpack larger on disk, which is why I reserve 150 GB rather than 50.

NVIDIA's hardware page lists "1 TB or 4 TB NVMe M.2 with self-encryption"; partners also sell 2 TB, and the Founders Edition comes in 4 TB only. Upgrading later is awkward: owners describe the slot as M.2 2242, a form factor that got scarce in 2026, with one quoting a 4 TB Sabrent Rocket 2242 at $775 in October (thread 384912), and swapping the drive means a reinstall from recovery media, as in the recovery guide. For comparison, the GPUwerk store prices its Lenovo ThinkStation PGX at €5,330 with 1 TB and €6,280 with 4 TB, excluding VAT: €950 for 3 TB more, about €317 per TB. If you will keep the machine for years, I would buy the 4 TB at the start.

Why is a model download bigger than the model?

Because many repos ship the same weights more than once, and hf download without filters takes everything. Summing the Hugging Face file trees: openai/gpt-oss-120b is 195.8 GB in total but 65.3 GB in its root folder, since original/ and metal/ each hold another 65.2 GB copy. meta-llama/Llama-3.3-70B-Instruct is 282.3 GB, half of it a 141.1 GB original/ checkpoint vLLM does not need. GGUF repos hold every quant: unsloth/gpt-oss-120b-GGUF totals 1,010.1 GB, a full 1 TB drive, for one model. The hf CLI guide documents --include, --exclude and --dry-run, and its reference shows each pattern given with its own flag; check before you pull:

hf download openai/gpt-oss-120b --exclude "original/*" --exclude "metal/*" --dry-run
hf download unsloth/Qwen3.6-35B-A3B-GGUF --include "*UD-Q4_K_M*"

How do vLLM, SGLang and llama.cpp share one cache?

They already default to the same place, ~/.cache/huggingface/hub, so point them all at one path and do not pass per-engine download directories. The cache guide describes the layout: one models--org--name folder per repo with blobs/ holding the files and snapshots/ holding symlinks per revision, so a second revision downloads only what changed. HF_HOME or HF_HUB_CACHE moves it. vLLM's --download-dir defaults to "the default cache directory of Hugging Face", per its engine arguments, and SGLang's option of the same name is a "model download directory for huggingface" (server arguments). llama.cpp changed: its -hf downloads now resolve, in order, LLAMA_CACHE, HF_HUB_CACHE, HF_HOME/hub and ~/.cache/huggingface/hub, per common/hf-cache.cpp on master (read 7 November 2026).

Two newer cache features help on a full disk. Since huggingface_hub moved to Xet storage, identical files are stored once across repos in a shared blob store, and the guide's tools clean up: hf cache ls to see sizes, hf cache rm to delete a repo or revision, hf cache prune to drop unreferenced revisions and half-finished downloads.

hf cache ls --revisions --filter "size>1GB" --filter "accessed>30d"
hf cache rm model/bert-base-cased
hf cache prune

Engine setup itself is in the vLLM and llama.cpp docs. If you run engines in Docker on an owned Spark, mount the host cache into each container at the same path rather than letting every image keep its own; the Docker and NGC guide covers the container side.

How fast does hf_xet download to a Spark?

As fast as your link, in most cases; the arithmetic matters more than the client. hf_xet 1.8.0 (30 October 2026) is the transfer engine in huggingface_hub 2.4.0 (29 October), and hf_transfer is deprecated. Its docs say adaptive concurrency starts at 4 download streams and can rise to 64; HF_XET_HIGH_PERFORMANCE=1 raises that to 16 and 124 and, from hf_xet 1.7.0, sizes its buffers from available memory, so it no longer needs 64 GB of RAM. By my calculation at line rate:

Linkgpt-oss-120b, 65.3 GBNemotron 3.5 Super NVFP4, 75.1 GBDeepSeek-V4-Flash, 159.6 GB
1 Gb/s8.7 min10.0 min21.3 min
2.5 Gb/s3.5 min4.0 min8.5 min
10 Gb/s0.9 min1.0 min2.1 min

Minutes = GB x 8 / Gb/s / 60, with no protocol overhead. One owner on a 10 Gb/s link through a QSFP-to-SFP+ adapter saw downloads stop at about 2.5 Gb/s while uploads reached 5 Gb/s (thread 358892); the RJ-45 port is a separate 10 GbE NIC.

Can I keep models on an external USB-C drive?

Yes, as storage you copy from or load from occasionally. NVIDIA lists four USB Type-C ports without a speed. On the forum, an owner's lsusb -tvv shows each root hub at 20000M/x2, that is USB 3.2 Gen 2x2 at 20 Gb/s, not USB4, and the best he got from an ASM2464PD NVMe enclosure was about 2 GB/s; a JHL7440 Thunderbolt 3 enclosure topped out near 950 MB/s, and his drive dropped to 40 MB/s when it got hot until he replugged it (thread 349121). At 2 GB/s a 65.3 GB model reads in about 33 seconds by my calculation, in the same range as the load times owners measure from internal NVMe, so the enclosure is not the bottleneck.

How you load matters more than where. In November 2025 an owner measured llama.cpp loading gpt-oss-120b in 1 minute 44 seconds with mmap and 56 seconds with --no-mmap on kernel 6.11, and 22 seconds with --no-mmap on 6.17; vLLM took 9 minutes 19 seconds for Qwen3-Next-80B FP8 with mmap and 2 minutes 11 seconds with eager loading (thread 349886). NVIDIA staff in that thread advised no-mmap when the model fits in free memory and suggested a larger NVMe read-ahead:

sudo bash -c "echo 8192 > /sys/block/nvme0n1/queue/read_ahead_kb"

The September 2026 move to kernel 7.0 may have changed these numbers; I found no newer measurement.

Should I use NFS from a NAS over 10 GbE or the QSFP ports?

For a 1 TB unit or several Sparks, yes, as a cold store with your daily models on local NVMe. The 10 GbE port's line rate is 1.25 GB/s. Owners' numbers are lower: one loads a 200 GB model from a QNAP with 2 x 10 GbE in about 10 minutes, roughly 0.33 GB/s (thread 372529), and one who exports the head node's cache to his other Sparks over ConnectX-7 reports loading at around 7 Gb/s (thread 377551). The same thread 372529 has an owner using NVMe-oF over a switch for 12 TB of shared models. Two settings to know:

For two cabled Sparks, sharing the head node's cache over the QSFP link is the cheapest way to avoid two copies; the two-node cluster guide covers the link itself.

What about the 1 TB volume on a rented Spark?

It is one shared 1 TB NVMe, and only /workspace survives a rebuild. Per the tenant environment page, the host, the provider's images, staged model weights, your container and /workspace share the drive, df shows node-wide numbers, and what it reports as free is what you can use. The default cache at /root/.cache/huggingface is outside /workspace, so set HF_HOME=/workspace/hf before your first download, or a rebuild deletes it. There are no backups; the storage and persistence guide lists what survives stop, rebuild and terminate.

My recommendation for an owned Spark: 4 TB if you will try more than three or four large models, 1 TB plus a 2 to 4 TB USB-C enclosure if the budget is fixed, and one Hugging Face cache path for every engine either way. Filter downloads, prune monthly, and leave what you can download again out of your backups.

FAQ

Is 1 TB enough storage for a DGX Spark?

For a handful of models, yes. By my calculation, leaving 150 GB for the OS, containers and environments, a 1 TB drive holds about 850 GB of weights: 13 models the size of gpt-oss-120b (65.3 GB), or 11 the size of Nemotron 3.5 Super NVFP4 (75.1 GB). Experimenting with several quants of 100-plus GB models fills it within weeks.

Where does vLLM store downloaded models on a DGX Spark?

In the Hugging Face cache, ~/.cache/huggingface/hub by default, unless you pass --download-dir; vLLM's engine arguments say the default is the Hugging Face cache directory. SGLang has the same --download-dir option, and llama.cpp's -hf downloads now resolve to the same hub cache, so one cache can serve all three.

Can I run models from an external SSD on a DGX Spark?

Yes, over the USB-C ports. NVIDIA does not state their speed; lsusb on a Spark reports 20 Gb/s per port, and an owner measured about 2 GB/s best case with an ASM2464-based NVMe enclosure, falling to 40 MB/s when it overheated. That is fine for storage; load the model into memory and the drive no longer matters.

How long does it take to download a model to a DGX Spark?

By line rate, 65.3 GB of gpt-oss-120b weights takes 8.7 minutes at 1 Gb/s and about 53 seconds at 10 Gb/s. hf_xet, the default transfer client in huggingface_hub 2.4.0, adapts its parallel streams to the link; set HF_XET_HIGH_PERFORMANCE=1 on a fast connection.

Should I put my model cache on a NAS?

If you have several Sparks or a 1 TB unit, it is a reasonable cold store. Over 10 GbE the line rate is 1.25 GB/s; one owner reported loading a 200 GB model from a QNAP in about 10 minutes, another about 7 Gb/s from a Spark-to-Spark NFS share over ConnectX-7. Keep the models you load daily on local NVMe.

Sources

Every figure above is attributed to its source in the sentence or table where it appears. Pages were read on 7 November 2026 unless a date says otherwise.

Pick the storage tier once.

The Lenovo ThinkStation PGX in the GPUwerk store comes with 1, 2 or 4 TB; the internal drive is the hardest part of a GB10 machine to change later.

GB10 machines shipped by DHL Express from Czechia, or hosted in GPUwerk's EU datacenter and rented out for you.

Browse machines Storage on a rented Spark