chatGLM-6B 变更缓存目录
缓存目录
C:\Users\[用户名]\.cache
C:\Users\[用户名]\.cache\huggingface\hub
C:\Users\[用户名]\.cache\huggingface\modules
chatGLM-6B 启动后,会创建上面的目录,并在其中添加添加一些文件:
1. 如果模型是本地则会复制一些模型文件夹中的py文件到 C:\Users\[用户名]\.cache\huggingface\modules 中,但占不了几M。
2. 如果是模型不是本地的,则可能会从huggingface下载模型到这里,这个没试过,网上看到有人这么说。
不管怎么说,它往系统盘放东西就忍不了,毕竟存储空间有限。

修改缓存目录
1. 参数指定
可以在调用from_pretrained函数时使用cache_dir入参,指定缓存文件夹名。
但没有作用,可能不是给本地模型用的,而是他说的下载模型的缓存位置?
2. 环境变量 TRANSFORMERS_CACHE
添加环境变量 TRANSFORMERS_CACHE ,设置一个位置,但固定一个位置不太好,可以在启动时临时设置环境变量。
但不好使,只是改了 C:\Users\[用户名]\.cache\huggingface\hub 的位置。
3. 环境变量 XDG_CACHE_HOME
前面的 TRANSFORMERS_CACHE 并不是缓存目录的根本路径,这很不好。
环境变量 XDG_CACHE_HOME 可以把 C:\Users\[用户名]\.cache 整个改变到指定位置。

网上找不到更多信息,要不就不认识。。。最后来回看代码
[略]\site-packages\transformers\dynamic_module_utils.py 的 get_cached_module_file 函数中找到了把本地模型的py文件复制到 C:\Users\[用户名]\.cache\huggingface\modules 的内容。
然后找到了 [略]\site-packages\transformers\utils\hub.py,在这里看到了前面的 TRANSFORMERS_CACHE ,它的默认值是由其他变量拼接的,源头就是 XDG_CACHE_HOME

期间看到dynamic_module_utils.py的一个奇怪函数 get_class_in_module ,内容大概是:
把 .cache\huggingface\modules\[模型] 的一些文件复制到 系统temp 目录中。
把 原文件删除。
把 系统temp 中的文件复制到 原位置。