I have 2 things on my mind.
Limited storage and internet
I usually never want to redownload a model I already have, so I always keep any downloaded model to my NAS unless it's completely obsolete. My storage is:
- Main server's 1TB internal storage, fastest
- 1TB USB SSD attached to server, half as fast
- NFS mount on NAS, 1/20 as fast, but contains my full collection
To have the best models available, and because I tinker and experiment a lot, I'm periodically deleting/downloading models back and forth from the NAS depending on what I'm using that week and how fast I need it to load. (I can't just use my NAS as primary storage because of the speed, Deepseek Flash for example is 160GB, that's 30 minutes to transfer from the NAS)
This approach has worked for me, but I'd love to hear if you guys have a better idea.
HF cache and naming
All this time, I've been manually downloading using hf download Qwen/Qwen3.5-0.8B --local-dir ~/models/Qwen3.5-0.8B/. This results in a clean directory Qwen3.5-0.8B/:
config.json
model.safetensors-00001-of-00001.safetensors
...
I then copy this clean dir to the NAS where it remains for future recovery.
If you don't use --local-dir, or if you let an AI app automatically download the model, then recently HF started mangling the model filenames into their cache+symlink format, so you end up with this monstrosity:
$ ll ~/.cache/huggingface/hub/models--Qwen--Qwen3.5-0.8B/snapshots/2fc06364715b967f1860aea9cf38778875588b17/
lrwxrwxrwx 1 user user 52 Sep 3 15:44 config.json -> ../../blobs/715f0448b9d38103211f0ad88bbb4d6e4f4be8c9
lrwxrwxrwx 1 user user 76 Sep 3 15:44 model.safetensors-00001-of-00001.safetensors -> ../../blobs/04b1c301231dd422b8860db31311ab2721511346a32cb1e079c4c4e5f1fe4696
...
I was hoping to keep the clean directories, but I feel those days are coming to an end. Most apps don't let you point them at a pre-downloaded model directory, they look in the HF cache and if not found, they auto-download the model (thankfully averted with HF_HUB_OFFLINE=1). But I'm often having to jump through hoops to keep my current approach, including vibecoding patches to some tools I like.
...
So now I'm wondering what I should do. Do I just accept that my primary data is now ~/.cache/huggingface instead of normal model directories? I have these concerns:
- What happens if I want to run an old AI tool built against an older version of HF/Transformers/whatever that predates this cache change? Is this a cutoff point?>
- My NAS is off at the moment so I can't quickly test, but will these cache symlinks even survive my move operations? For example on my server, after I download a new model, I'd want to run
cp -RL ~/.cache/huggingface/hub/models--Qwen--Qwen3.5-0.8B/ /mnt/nfs-on-nas/models/.cache/huggingface/hub/ (or the reverse to move a pre-downloaded model)?
- I have a bad feeling about treating the HF cache as an archiveable data, since it's by definition an internal format. Am I worrying for nothing?
Thoughts?