llama-cli -hf 下载 Hugging Face 模型默认保存在哪里

整理 llama-cli -hf 下载 GGUF 模型后的 Hugging Face Hub 缓存位置、环境变量优先级、路径检查与安全迁移方法。

如果你使用的是 llama-cli 直接从 Hugging Face 下载并运行模型,例如:

1
llama-cli -hf unsloth/gemma-4-E4B-it-GGUF

这是 llama.cpp 自带的 Hugging Face 下载能力。新版 llama.cpp 会把 -hf 下载的模型放进标准 Hugging Face Hub 缓存目录。

默认缓存位置

新版 llama.cpp-hf 使用标准 Hugging Face Hub 缓存。对这条下载路径,先看 HF_HUB_CACHE;没有设置时使用 $HF_HOME/hub,再没有时按 XDG_CACHE_HOME 推导,最后才落到用户目录下的默认缓存。旧教程常见的 LLAMA_CACHE 属于 llama.cpp 自身或旧版缓存口径,不应继续写成当前 -hf 标准 Hub 缓存的最高优先级。

如果这些变量都没有设置,常见默认路径如下:

系统 默认缓存目录
Linux ~/.cache/huggingface/hub
macOS ~/.cache/huggingface/hub
Windows %USERPROFILE%\.cache\huggingface\hub

在 Windows 上,%USERPROFILE% 通常对应:

1
C:\Users\用户名

所以默认缓存目录大致是:

1
C:\Users\用户名\.cache\huggingface\hub

先检查进程实际会用哪个目录

Linux / macOS 可以先看环境,再计算标准 Hub 路径:

1
2
3
4
env | grep -E '^(HF_HOME|HF_HUB_CACHE|XDG_CACHE_HOME|LLAMA_CACHE)='
HUB_CACHE="${HF_HUB_CACHE:-${HF_HOME:-${XDG_CACHE_HOME:-$HOME/.cache}/huggingface}/hub}"
printf '%s\n' "$HUB_CACHE"
find "$HUB_CACHE" -type f -name '*.gguf' -printf '%p\t%s bytes\n'

Windows PowerShell 可以使用:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Get-ChildItem Env:HF_HOME,Env:HF_HUB_CACHE,Env:XDG_CACHE_HOME,Env:LLAMA_CACHE -ErrorAction SilentlyContinue

$hub = if ($env:HF_HUB_CACHE) {
    $env:HF_HUB_CACHE
} elseif ($env:HF_HOME) {
    Join-Path $env:HF_HOME 'hub'
} elseif ($env:XDG_CACHE_HOME) {
    Join-Path $env:XDG_CACHE_HOME 'huggingface\hub'
} else {
    Join-Path $env:USERPROFILE '.cache\huggingface\hub'
}

$hub
Get-ChildItem -LiteralPath $hub -Recurse -Filter *.gguf -ErrorAction SilentlyContinue

如果环境变量来自 systemd、容器或 IDE,当前终端里看不到并不代表服务进程没有设置。还要检查对应 service、Compose 文件或启动脚本,并以 llama-cli 实际下载日志和落盘文件为准。

想修改 llama-cli 的缓存目录怎么办

只想移动 Hub 模型缓存时,优先设置 HF_HUB_CACHE;想把 Hugging Face 的 token、资产和 Hub 缓存一起迁移,则设置 HF_HOME,实际 Hub 目录是 $HF_HOME/hub

Windows 临时设置示例:

1
2
set HF_HUB_CACHE=D:\models\huggingface-hub
llama-cli -hf unsloth/gemma-4-E4B-it-GGUF

PowerShell 临时设置示例:

1
2
$env:HF_HUB_CACHE="D:\models\huggingface-hub"
llama-cli -hf unsloth/gemma-4-E4B-it-GGUF

Linux / macOS 临时设置示例:

1
2
export HF_HUB_CACHE=/data/models/huggingface-hub
llama-cli -hf unsloth/gemma-4-E4B-it-GGUF

安全迁移缓存,不要直接剪切

先停止所有正在使用缓存的 llama-cli、服务和下载进程,然后复制、核对、切换,最后才处理旧目录。Linux 示例:

1
2
3
4
5
6
old="$HOME/.cache/huggingface/hub"
new="/data/models/huggingface-hub"
mkdir -p "$new"
rsync -aH --info=progress2 "$old/" "$new/"
du -sb "$old" "$new"
HF_HUB_CACHE="$new" llama-cli -hf unsloth/gemma-4-E4B-it-GGUF -n 1

du 字节数接近、目标模型能在新路径下完成一次最短推理后,再把 HF_HUB_CACHE 写入 shell、服务或容器配置并重启。旧目录至少保留到下一次正常启动;不要在复制完成后立即删除,否则软链接、未完成下载或仍在运行的进程可能让缓存损坏。

跨磁盘迁移还要确认目标文件系统支持模型所需的大文件,并为 .incomplete 下载和后续模型预留空间。团队共用缓存时,不要把可写目录开放给所有用户,避免其他进程替换模型文件。

小结

  • llama-cli -hf ... 使用的是 llama.cpp 下载逻辑,但新版默认落到 Hugging Face Hub 缓存。
  • Linux / macOS 默认:~/.cache/huggingface/hub
  • Windows 默认:%USERPROFILE%\.cache\huggingface\hub
  • 想只换 Hub 模型目录:优先设置 HF_HUB_CACHE
  • 想整体迁移 Hugging Face 数据:设置 HF_HOME
  • 迁移顺序:停止进程、复制、核对、切换变量、试运行,最后再归档旧目录

参考资料: