Git LFS 选择性拉取文件
很惊讶这样简单的问题,谷歌里都在各种配置git仓库选项。
省流:
直接在git lfs pull
中使用--include/-I
和--exclude/-X
选择或者排除需要拉取LFS文件。
快速下载
在Huggingface等平台上,各种模型数据库文件都会被存储为Git LFS对象。
如果不想使用Huggingface等平台提供的专用工具,如何方便地下载呢?
最简单的,无脑的方法,只需要遵照Huggingface模型页面提供的代码,克隆仓库即可
1 | git clone https://huggingface.co/my/model |
但是!这种方法会一次性拉取并检出所有文件,包括所有LFS文件对象。
有时,我们并不需要仓库中的所有LFS文件。比方说,一部分仓库同时提供.pth
和.safetensors
格式的模型权重,但我们只需要其中一种就够了。
那么,有没有更自定义一点的法子?
我们可以在克隆时忽略克隆完整的LFS对象,只保留LFS对象的指针。与此同时,正常拉取仓库中其他普通文件。
1 | GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/my/model |
这样一来,仓库中所有非LFS对象就获取完毕了,接下来只需要按需获取LFS文件。怎么做呢?非常简单,git lfs pull
提供了一个--include/-I
参数:
1 | git lfs pull --include "*.safetensors" |
与之相对应地,还有一个--exclude/-X
参数,可以指定排除的文件列表。
这样,就可以非常简单地选择性拉取一部分LFS文件,也不需要将命令拆分为多条命令,或是配置git仓库之类的。