最近查了一下C盘爆满的原因,发现了huggingface的缓存文件这个罪魁祸首。
每次远程导入模型、数据集时,都会启用huggingface的缓存机制,将整个大文件下载至缓存目录中,从而保证下一次加载时非常快速。
我们可以发现,默认的缓存目录就是设置在C盘。
# datasets缓存目录的查看
from datasets import config
print(config.HF_DATASETS_CACHE)
# D:\cache\huggingface\datasets
# transformers缓存目录的查看(不建议,非常麻烦,知道默认是哪就行)
from transformers import AutoModel
model = AutoModel.from_pretrained('bert-base-chinese')
cache_path = model.config.get_from_cache('bert-base-chinese')
print(cache_path)
# D:\cache\huggingface\transformers
下面是更改存放路径的方法,分为临时的和永久的:
注:本人此时的
datasets库版本是2.14.5;transformers库版本是4.29.1。不同版本的库可能会有差异,huggingface的库更新太快了qwq。
代码更改(仅对当前python会话,下一次在新的环境中执行时就失效了)
# datasets缓存目录的修改
from datasets import config
config.HF_DATASETS_CACHE = 'D:\cache\huggingface\datasets'
# transformers缓存目录得在导入具体的模型时指定
from transformers import AutoModel
AutoModel.from_pretrained('bert-base-chinese', cache_dir='D:\cache\huggingface\transformers')
修改系统环境变量(永久方法,对于Windows系统)
XDG_CACHE_HOME 和变量值为新缓存路径的根路径 (例如 D:\cache)。这样,以后的缓存结构将会是:
D:\cache\huggingface\transformers或D:\cache\huggingface\hub(一般是这里)D:\cache\huggingface\datasetsmetrics和modules也分别是在D:\cache\huggingface\metrics和D:\cache\huggingface\modules之下。如果库版本不一样,其实可以从库的源代码中去了解。比如我现在的datasets库config.py文件,如下图所示:

从这里就可以看出datasets的缓存路径的确定逻辑了。
我现在的transformers库utils/hub.py文件,如下图所示:

