HuggingFace 模型git clone下载避坑指南

引言

刚开始接从HuggingFace下载模型时,发现直接用git clone会遇到一个头疼的问题:明明只想下载几个小配置文件,结果却一直卡着不动,原因就在于它在下载模型文件,且没有进度条,不知道何时结束。

技术背景小贴士:HuggingFace 使用 Git LFS(Large File Storage)管理大文件。这个系统会在本地仓库中保留 LFS 文件指针,实际下载时再进行替换。这就导致了双倍空间占用——指针占一份,真实文件又占一份。

为什么需要跳过模型文件?

  1. 空间浪费:结合上面的小贴士,15G 的模型文件下载时实际需要 30G 存储空间
  2. 网络脆弱:没有进度条和断点续传,断网就要重头再来
  3. 灵活管理:用下载工具单独处理大文件更可靠

核心解决方案:GIT_LFS_SKIP_SMUDGE

配置一个环境变量来跳过模型文件的下载。一开始我只是考虑使用git clone来指定跳过文件,发现没有这种方法。后来搜索大文件,给了这样一个解决方案。

永久设置方案(适合长期开发者)

# Windows CMD
setx GIT_LFS_SKIP_SMUDGE 1
# Windows PowerShell
[System.Environment]::SetEnvironmentVariable('GIT_LFS_SKIP_SMUDGE','1','User')

临时设置方案(推荐单次使用)

# CMD 一次性方案
set GIT_LFS_SKIP_SMUDGE=1 && git clone --single-branch --branch 6_5 https://huggingface.co/bartowski/starcoder2-3b-exl2

# PowerShell 临时方案
$env:GIT_LFS_SKIP_SMUDGE=1; git clone --single-branch --branch 6_5 https://huggingface.co/bartowski/starcoder2-3b-exl2

注意:这里有个常见坑点——PowerShell 需要用分号分隔命令,而 CMD 用双&&符号。之前就因为这个差异,我的脚本在凌晨三点报错了十几次。

git clone后的补救措施

git clone完小文件后,模型文件的位置会被同名文本文件占用,这时候可以:

  1. 用 IDM/XDown 等工具下载大文件
  2. 把下载好的模型文件放到仓库的对应位置

比如目标模型文件地址是:

wget https://huggingface.co/bartowski/starcoder2-3b-exl2/resolve/6_5/output.safetensors

为什么推荐这个方案?

  • 省空间:之前部署 Stable Diffusion 模型时,使用git clone提示磁盘空间不足,害我删除了好多文件。后来下载完成后发现没有占用那么大空间。
  • 省流量:断网之后你要重新下载,因为不支持断点续传,所以之前下载的作费。

进一步阅读

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇