[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)

相关推荐
咖啡星人k22 分钟前
2026 AI 自动化测试:让 AI 帮你写用例、跑测试、修 Bug(MonkeyCode 云端实战)
人工智能·功能测试·单元测试·测试用例·bug·集成测试
Elastic 中国社区官方博客6 小时前
搜索倍增器:推动收入、生产力和 AI 实现规模化
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
wjkjpcba7 小时前
机器人控制板PCBA怎么加工?从SMT贴片到BGA焊接解析机器人电子制造工艺
大数据·人工智能
青 春 记 忆7 小时前
Dify Docker Compose 通用无损升级指南:从备份、双版本预演到切换与回滚
运维·人工智能·python·docker·容器
小猪妈咪爱学法7 小时前
欧盟最新发布《AI数字综合法案(Digital Omnibus‑on‑AI,AI综合修订法案)
人工智能·网络安全
ZGIAI7 小时前
ZGI Workflow 变量池:接住节点输出
人工智能·架构
梵构广告7 小时前
提升品牌识别度有哪些方法?
人工智能
ZGIAI7 小时前
ZGI 记忆隔离:多人共用不串号
人工智能·架构
星栈独行8 小时前
决定 Agent 交付下限的「操作系统」:Harness 六层架构拆解
人工智能·架构
AKAMAI8 小时前
实时可观测性:Akamai Cloud Pulse 警报功能正式发布
人工智能·云计算