如何更改huggingface transformers默认缓存目录



默认缓存目录缺少磁盘容量,我需要更改默认缓存目录的配置。

每次加载带有.from_pretrained的模型时,都可以通过设置参数cache_dir来指定缓存目录。您可以通过每次在使用库之前导出环境变量TRANSFORMERS_CACHE(即导入它之前!(来定义默认位置。

python示例:

import os
os.environ['TRANSFORMERS_CACHE'] = '/blabla/cache/'

bash示例:

export TRANSFORMERS_CACHE=/blabla/cache/

如@cronoik所述,除了在终端中修改缓存路径外,您还可以直接在代码中修改缓存目录。如果你在HuggingFace:上查找它有任何困难,我只会向你提供实际的代码

tokenizer = AutoTokenizer.from_pretrained("roberta-base", cache_dir="new_cache_dir/")
model = AutoModelForMaskedLM.from_pretrained("roberta-base", cache_dir="new_cache_dir/")

您可能需要设置HF_HOME环境变量:

export HF_HOME=/path/to/cache/directory

这是因为除了HF Transformers本身的模型缓存之外,其他Hugging Face库的缓存目录也占用了主目录中的空间。以前的答复和评论没有说明这一点。

此外,设置一个符号链接来捕捉未设置环境变量的情况可能是有意义的(如果之前存在目录~/.cache/huggingface,则可能需要将其移走(:

ln -s /path/to/cache/directory ~/.cache/huggingface

特别是,Hugging Face数据集库也尊重HF_HOME环境变量,尽管文档中没有明确说明这一点。

Transformers文档描述了如何确定默认缓存目录:

缓存设置

预训练模型被下载并本地缓存在:~/.cache/huggingface/hub。这是shell环境变量TRANSFORMERS_cache给出的默认目录。在Windows上,默认目录由C:\Users\username.cache\huggingface\hub提供。您可以按优先级更改下面显示的shell环境变量,以指定不同的缓存目录:

  1. Shell环境变量(默认值(:HUGGINGFACE_HUB_CACHE或TRANSFORMERS_CACHE
  2. Shell环境变量:HF_HOME
  3. Shell环境变量:XDG_CACHE_HOME+/huggingface

这篇文档没有明确提到的是,HF_HOME默认为$XDG_CACHE_HOME/huggingface,并用于其他huggingface缓存,例如数据集缓存,它与transformer缓存分离。XDG_CACHE_HOME的值取决于机器,但通常是~/.CACHE(如果未设置XDG_CACHE_HOME,HF默认为该值(-因此通常默认为~/.CACHE/hugingface

通常,您希望将数据集和模型缓存保留更长的时间,但其他事情则不然。此外,这些东西很大,您可能不想放在主文件夹中。

因此,假设您创建目录my_drivehf,希望HuggingFace在其中缓存所有内容。您可以创建以下环境变量:

export HF_HOME=my_drivehfmisc
export HF_DATASETS_CACHE=my_drivehfdatasets
export TRANSFORMERS_CACHE=my_drivehfmodels

现在你可以更容易地清理非必需品了。

请注意,HF_HOME基本上是Hub上所有东西的缓存位置,但在上面您将数据集和模型缓存分开。如果设置了HF_HOME,则不使用XDG_CACHE_HOME。如果没有如上设置,则HF_HOME默认为$XDG_CACHE_HOME/huggingface

更多信息:https://huggingface.co/docs/huggingface_hub/package_reference/environment_variables

最新更新