[NLP]Huggingface模型/数据文件下载方法

问题描述

作为一名自然语言处理算法人员,hugging face开源的transformers包在日常的使用十分频繁。在使用过程中,每次使用新模型的时候都需要进行下载。如果训练用的服务器有网,那么可以通过调用from_pretrained方法直接下载模型。但是就本人的体验来看,这种方式尽管方便,但还是会有两方面的问题:

  • 如果网络很不好,模型下载时间会很久,一个小模型下载几个小时也很常见
  • 如果换了训练服务器,又要重新下载。

一 迅雷下载

实测发现迅雷比命令行速度快许多,而且在库中文件非常多的时候也比较方便断点重下,非常推荐

首先 运行以下代码得到所有文件下载URL:

把URL全部复制到迅雷中批量下载:

python 复制代码
from huggingface_hub import hf_hub_url
from huggingface_hub.utils import filter_repo_objects
from huggingface_hub.hf_api import HfApi

repo_id = "decapoda-research/llama-7b-hf"
repo_type = "model" # 如果是数据 dataset

repo_info = HfApi().repo_info(repo_id=repo_id, repo_type=repo_type) # 有时候会连接Error,多试几次
files = list(filter_repo_objects(items=[f.rfilename for f in repo_info.siblings]))
urls = [hf_hub_url(repo_id, filename=file, repo_type=repo_type) for file in files]
print("\n".join(urls))

二 Git LFS 模型下载方案(优雅,但不够灵活)

准备工作

mac: brew install git-lfs

Git LFS的方案相较于前面自行实现的方案要简洁的多得多。我们需要在安装git的基础上,再安装git lfs。以Windows为例,命令如下

复制代码
git lfs install

这种方案也存在着一定的问题,即会下载仓库中的所有文件,会大大延长模型下载的时间。我们可以看到在目录中包含着flax_model.msgpack、tf_model.h5和pytorch_model.bin三个不同框架模型文件,在bert-base-uncased的版本中,还存在着rust版本的rust_model.ot模型,如果我们只想要一个版本的模型文件,这种方案就无法实现了。

三 Hugging Face Hub 模型下载方案(优雅,强烈推荐)

复制代码
from huggingface_hub import snapshot_download

snapshot_download(repo_id="bert-base-chinese")

如何下载指定版本的内容呢?在snaphot_download方法中,提供了allow_regex和ignore_regex两个参数,简单来说前者是对指定的匹配项进行下载,后者是忽略指定的匹配项,下载其余部分。我们只需要使用其中一种就可以了,这里以ignore_regex为例演示下如何只下载Pytorch版本的模型,代码如下。

复制代码
snapshot_download(repo_id="bert-base-chinese", ignore_regex=["*.h5", "*.ot", "*.msgpack"])

可以看到,此时下载项相较于前面完整的下载少了几项,我们再打开文件目录查看一下,可以看到此时就没有了TensorFlow和Flax的模型了!

如何优雅的下载huggingface-transformers模型 - 知乎 (zhihu.com)

相关推荐
鬼手点金15 分钟前
提示注入:上下文安全的核心威胁
人工智能·安全·microsoft·机器学习·缓存·prompt
山川绿水16 分钟前
DeepSeek-DSH安装报错[deploy] 命令失败:npx -y pnpm install --prefer-offline
人工智能·网络安全
ZhengEnCi18 分钟前
脉冲神经网络是什么:从LIF神经元到第三代神经网络的能耗优势
人工智能·神经网络·机器学习
小虎AI生活20 分钟前
腾讯 Buddy One 上手:跨应用 AI 协同的配置步骤与安全红线(附派活验收清单)
人工智能·超级个体·一人公司·青玥ai
Solange__23 分钟前
AI世界模型、3D场景生成和游戏引擎怎么选?按5类任务比较交互、物理与导出
开发语言·人工智能·游戏·平面·3d·自然语言处理·游戏引擎
loulanyue_27 分钟前
物理AI的五次跃迁与部署态终局:从Worken度量衡到灵渠OS开源——读智元机器人联合创始人兼CTO彭志辉(稚晖君)演讲
人工智能·具身智能·智元机器人·稚晖君
Solange__29 分钟前
物流园区怎么用AI生成3D调度预演?从道路底图、车辆转弯到网页评审
图像处理·人工智能·游戏·3d·ai·自然语言处理·关卡设计
编程见习者30 分钟前
Deep Agents介绍
人工智能·python·langchain
椒颜皮皮虾྅30 分钟前
模型部署不再卡在环境上:DeploySharp 四大推理引擎与 Windows/Linux 离线交付实战
linux·运维·开发语言·人工智能·windows·计算机视觉·cuda
Kobebryant-Manba33 分钟前
IEKT向量矩阵流程&评估
人工智能·算法·矩阵