Xet is on the Hub
Hugging Face
Hugging Face moved its first repos off LFS onto its new Xet storage system, shifting about 6% of Hub download traffic. Big deal because it means much faster uploads/downloads for huge model and dataset files.
Based on reporting by Hugging Face — read the original for the full story.
Summary, retelling and take written by AI under human oversight; images are AI-generated illustrations. How we work · Report an error
Hugging Face just proved out something it's been building for months: a replacement for Git LFS called Xet, designed specifically for the multi-gigabyte models and datasets that clog up the Hub. Rather than treating a file as one giant blob that must be re-uploaded whenever anything changes, Xet chops files into roughly 64KB chunks and only pushes the bytes that actually changed. The team's own example is a good gut-check: a 5GB internal SQLite database that gets a 1MB update. Under LFS, that meant re-uploading all 5GB. Under Xet, it takes a tenth of a second instead of 13 minutes.
On February 20th, the team migrated 4.5TB of repositories from LFS to Xet in a single day, moving roughly 6% of the Hub's total download traffic onto the new infrastructure. That's not a toy test — with nearly two million developers touching over two million public repos, the Hub is a genuinely brutal proving ground, and no staging environment could have surfaced what production traffic did within hours.
And surface it did. CAS, the content-addressed store sitting between clients and S3, was pulling down four times more data than it actually delivered to users. The culprit was hf_transfer users requesting 10MB ranges that didn't line up with block boundaries, forcing CAS to stream from the start of a ~60MB block just to find the requested chunk. Fixing it meant rewriting the block format to store chunk-length metadata across CAS's APIs, its metadata format, and over 65,000 existing blocks on S3 — all without downtime. That single fix cut GET latency by about 35% across the board.
A second, gnarlier problem hit during uploads: one CAS pod would suddenly handle hundreds of concurrent uploads while its neighbors sat nearly idle. Swapping load-balancing algorithms didn't help. The real cause was subtler — temp files being written without fsync, so unflushed data piled up in the OS page cache until disk throttling kicked in and created a feedback loop of backlogged uploads. The fix was blunt but effective: cap concurrent uploads per pod and spill overflow to the rest of the cluster, with autoscaling as a backstop.
What's notable here isn't that Hugging Face hit bugs — everyone does — it's how deliberately they staged the rollout to hit them early, on a fraction of traffic, before betting the whole Hub on it. Xet is now open via waitlist, with a coming hf_xet package meant to slot into existing huggingface_hub workflows without forcing anyone to change how they work. Legacy LFS clients keep working too, through a bridge, so nobody's forced to jump before they're ready.
My take — AI-written commentary, not fact-checked reporting
This is exactly the kind of unglamorous infrastructure work that actually matters more than another benchmark chart, and I like that Hugging Face published the messy parts — the 4x download overhead, the mystery memory leak — instead of just announcing a shiny feature. Content-defined chunking for model weights is genuinely overdue given how bloated checkpoint files have gotten, and rolling it out gradually rather than flipping a switch on the whole Hub was the right call. My only gripe: waitlists for core storage infrastructure feel like a growth-hacking move dressed up as caution.
Read more about this at: Hugging Face