linux系统利用国内地址批量下载大模型权重等文件
库,不仅可以下载模型、数据,还可以可以登录huggingface、上传模型、数据等。,无论你是否指定了模型的存储路径 ,缓存目录下都会链接过去,这样可以避免自己忘了自己曾经下过某个模型,此外调用的时候就很方便。所以用了官方工具,既可以方便的用模型名引用模型,又可以自己把模型集中存在一个自定义的路径,方便管理。一是其**存储逻辑不太直观,**如上所属的缓存与链接逻辑,使得新手经常询问,模型究竟下载到
①直接连外网
不可行了。即使挂了梯子,huggingface也可能连接不上
②用镜像网站(强烈推荐hf-mirror网站:国内的huggingface)
参考:
https://zhuanlan.zhihu.com/p/663712983
其中的教程参考:
https://hf-mirror.com/
记得其中是conda install huggingface_hub,装到当前所处虚拟环境中
bashrc写入环境变量后记得source更新
举个例子:
huggingface-cli download --resume-download THUDM/chatglm3-6b --local-dir chatglm36b
报错
①参考https://blog.csdn.net/yuan2019035055/article/details/129902141?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171569993716800182115164%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=171569993716800182115164&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-2-129902141-null-null.142v100pc_search_result_base8&utm_term=ImportError%3A%20cannot%20import%20name%20COMMON_SAFE_ASCII_CHARACTERS%20from%20charset_normalizer.constant%20%28%2Fhome%2Fshunlp%2Fminiconda3%2Fenvs%2FMychatglm3%2Flib%2Fpython3.10%2Fsite-packages%2Fcharset_normalizer%2Fconstant.py%29
②pip install chardet
基本就行了
sudo chmod -R 777 /home/lgw
③用其他命令
huggingface-cli
huggingface-cli 隶属于 huggingface_hub 库,不仅可以下载模型、数据,还可以可以登录huggingface、上传模型、数据等。huggingface-cli 属于官方工具,其长期支持肯定是最好的。优先推荐!
安装依赖
pip install -U huggingface_hub
注意:huggingface_hub 依赖于 Python>=3.8,此外需要安装 0.17.0 及以上的版本,推荐0.19.0+。
基本用法
huggingface-cli download --resume-download THUDM/chatglm3-6b --local-dir bloom-560m
下载数据集
huggingface-cli download --resume-download --repo-type dataset lavita/medical-qa-shared-task-v1-toy
值得注意的是,有个--local-dir-use-symlinks False 参数可选,因为huggingface的工具链默认会使用符号链接来存储下载的文件,导致--local-dir指定的目录中都是一些“链接文件”,真实模型则存储在~/.cache/huggingface下,如果不喜欢这个可以用 --local-dir-use-symlinks False取消这个逻辑。
但我不太喜欢取消这个参数,其最大方便点在于,调用时可以用模型名直接引用模型,而非指定模型路径。
什么意思呢?我们知道,from_pretrain 函数可以接收一个模型的id,也可以接收模型的存储路径。
假如我们用浏览器下载了一个模型,存储到服务器的 /data/gpt2 下了,调用的时候你得写模型的绝对路径
AutoModelForCausalLM.from_pretrained("/data/gpt2")
然而如果你用的 huggingface-cli download THUDM/chatglm3-6b --local-dir /home/lgw/MyAllModel 下载,即使你把模型存储到了自己指定的目录,但是你仍然可以简单的用模型的名字来引用他。即:
AutoModelForCausalLM.from_pretrained("gpt2")
原理是因为huggingface工具链会在 .cache/huggingface/ 下维护一份模型的符号链接,无论你是否指定了模型的存储路径 ,缓存目录下都会链接过去,这样可以避免自己忘了自己曾经下过某个模型,此外调用的时候就很方便。
所以用了官方工具,既可以方便的用模型名引用模型,又可以自己把模型集中存在一个自定义的路径,方便管理。
当然,该工具目前还是有一些缺点的:
一是其**存储逻辑不太直观,**如上所属的缓存与链接逻辑,使得新手经常询问,模型究竟下载到哪里去了?
二是不支持单文件多线程。目前的行为是多文件并行,一次性会同时下载多个文件。
三是遇到网络中断会报错退出,不会自动重试,需要重新手动执行。【更新,v0.19.0已支持自动重试】
更多推荐
所有评论(0)