最近查了一下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。

  1. 代码更改(仅对当前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')
    
  2. 修改系统环境变量(永久方法,对于Windows系统)

    1. 打开环境变量的设置界面。设置系统变量。
    2. 输入变量名XDG_CACHE_HOME 和变量值为新缓存路径的根路径 (例如 D:\cache)。
    3. 点击"确定"保存,电脑重启后生效。

    这样,以后的缓存结构将会是:

    • 模型缓存:D:\cache\huggingface\transformersD:\cache\huggingface\hub(一般是这里)
    • 数据集缓存:D:\cache\huggingface\datasets
    • 此外metricsmodules也分别是在D:\cache\huggingface\metricsD:\cache\huggingface\modules之下。

    如果库版本不一样,其实可以从库的源代码中去了解。比如我现在的datasetsconfig.py文件,如下图所示:

    在这里插入图片描述

    从这里就可以看出datasets的缓存路径的确定逻辑了。

    我现在的transformersutils/hub.py文件,如下图所示:

    在这里插入图片描述在这里插入图片描述

Logo

鸿蒙生态一站式服务平台。

更多推荐