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

相关推荐
ZOMI酱3 分钟前
【AI系统】GPU 架构与 CUDA 关系
人工智能·架构
deephub10 分钟前
使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程
人工智能·pytorch·深度学习·图嵌入
deephub42 分钟前
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
人工智能·深度学习·transformer·大语言模型·注意力机制
搏博1 小时前
神经网络问题之二:梯度爆炸(Gradient Explosion)
人工智能·深度学习·神经网络
KGback1 小时前
【论文解析】HAQ: Hardware-Aware Automated Quantization With Mixed Precision
人工智能
电子手信1 小时前
知识中台在多语言客户中的应用
大数据·人工智能·自然语言处理·数据挖掘·知识图谱
不高明的骗子1 小时前
【深度学习之一】2024最新pytorch+cuda+cudnn下载安装搭建开发环境
人工智能·pytorch·深度学习·cuda
Chef_Chen1 小时前
从0开始学习机器学习--Day33--机器学习阶段总结
人工智能·学习·机器学习
搏博1 小时前
神经网络问题之:梯度不稳定
人工智能·深度学习·神经网络
GL_Rain2 小时前
【OpenCV】Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR)
人工智能·opencv·计算机视觉