通过Huggingface下载文件

参考链接:https://hugging-face.cn/docs/huggingface_hub/index

目录

一、HuggingFace安装

二、下载

1. 快速入门

2. 下载函数:hf_hub_download()

(1)repo_type参数:下载不同类型库中文件

(2)revision参数:下载不同版本文件

3. 查看文件URL:hf_hub_url()

4. 下载仓库:snapshot_download

(1)下载仓库

(2)allow_patterns参数

(3)ignore_patterns参数

三、下载超时

1. 从镜像站下载

2. 手动下载

(1)HF下载文件的目录结构

(2)手动下载文件的放置路径

3. 在代码中手动指定模型路径


一、HuggingFace安装

新建环境。

yes | conda create -n hf310 python=3.10

conda activate hf310

安装HF库。

pip install huggingface_hub    # 只安装核心功能

检查是否成功安装

python

from huggingface_hub import model_info

model_info("gpt2")

应该会打印出模型gpt2相关信息。


二、下载

1. 快速入门

图 1 google/pegasus-xsum仓库

通过HF库API下载google/pegasus-xsum库中的config.json文件。

repo_id="google/pegasus-xsum"    # 要下载的仓库

filename="config.json"    # 要下载的仓库中的文件名

from huggingface_hub import hf_hub_download

hf_hub_download(repo_id=repo_id, filename=filename)

通过API下载后会自动在~/.cache/huggingface/hub/目录下建立相关目录结构。

图 2 通过HF库API下载文件后自动建立目录结构

2. 下载函数:hf_hub_download()

“hf_hub_download() 函数是用于从 Hub 下载文件的核心函数。它会下载远程文件,并以版本感知的方式将其缓存到磁盘,最后返回本地文件路径。”

“返回的文件路径是指向 HF 本地缓存的指针。因此,为了避免缓存损坏,请勿修改该文件。”

(1)repo_type参数:下载不同类型库中文件

下载非模型类型仓库中的文件时需添加repo_type参数,否则报错。

hf_hub_download(repo_id="google/fleurs", filename="fleurs.py", repo_type="dataset")

下载位置与模型位置相同,~/.cache/huggingface/hub/。

图 3 从数据集仓库中下载的文件

(2)revision参数:下载不同版本文件

默认下载仓库main分支的最新版本。如需从特定版本中下载文件,使用revision参数。

hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json", revision="877b84a8f93f2d619faa2a6e514a32beef88ab0a")    # 通过hash下载指定版本。hash可在历史版本中查看。

下载完后会在snapshots目录下生成对应版本的索引,文件存放在blobs目录下。refs中存放的是最新版本的索引。

3. 查看文件URL:hf_hub_url()

会返回文件路径。

from huggingface_hub import hf_hub_url

hf_hub_url(repo_id="lysandre/arxiv-nlp", filename="config.json")

4. 下载仓库:snapshot_download

(1)下载仓库

下载速度较慢。

from huggingface_hub import snapshot_download

snapshot_download(repo_id="lysandre/arxiv-nlp")

(2)allow_patterns参数

只下载某些格式的文件。

snapshot_download(repo_id="lysandre/arxiv-nlp", allow_patterns="*.json")    # 只下载json配置文件。参数可以是字符串或者列表格式

(3)ignore_patterns参数

排除下载某些文件。

snapshot_download(repo_id="lysandre/arxiv-nlp", ignore_patterns=["*.msgpack", "*.h5"])    # 不下载msgpack和h5文件。参数可以是字符串或列表格式

两个参数结合实现精确过滤。

snapshot_download(repo_id="gpt2", allow_patterns=["*.md", "*.json"], ignore_patterns="vocab.json")


三、下载超时

1. 从镜像站下载

hf-mirror.com

Ubuntu22.04 添加环境变量

vim ~/.bashrc

末尾添加

export HF_POINT=https://hf-mirror.com

图 4 为HF镜像站添加环境变量

速度每秒几百KB,稳定。挂VPN会更快(但是好像没有用VPN的流量?)。

2. 手动下载

(1)HF下载文件的目录结构

通过hf_hub_download()函数下载文件后不管是否成功都会在~/.cache/huggingface/hub/目录下生成包括blobs、refs、snapshots三个子目录的模型目录。

图 5 调用API下载生成的目录结构

refs目录下的main文件内容(文本)是最新版文件的标识符。

snapshots目录下的每个子目录对应一个版本,名称是该版本标识符(通过API下载文件时不指定revision参数默认下载的都是最新版)。子目录中的"model.safetensors"等文件是索引,指向实际下载的文件。

实际下载的文件存放在blobs中,以哈希值命名。

(2)手动下载文件的放置路径

手动下载的文件要按照上面的格式组织放到对应位置。

但是获取文件哈希值、建立索引等操作比较麻烦。可以直接把下载的"model.safetensors"文件本身放到snapshots对应版本目录中,代码运行时也能检索到。

3. 在代码中手动指定模型路径

上述下载都是按照HF默认的文件存放与读取路径进行下载的。也可以自定义文件存放路径,读取时从该路径读取。

在timm.create_model()中使用pretrained_cfg_overlay参数。参数是一个字典,假定模型路径是fp。

pretrained_cfg_overlay = {"file": fp}

图 6 在代码中手动指定路径

### 从Hugging Face下载所有文件的方法 #### 使用Hugging Face Hub界面下载 可以直接访问目标模型页面,例如ProstT5的页面(URL = https://huggingface.co/Rostlab/prot_t5_xl_half_uniref50-enc/tree/main),点击界面上提供的图标来逐个下载所需文件[^1]。 #### 利用Git克隆仓库 对于希望一次性获取整个项目结构的情况,可以采用`git lfs clone`命令。这允许用户通过版本控制系统拉取完整的资源副本到本地环境中。 ```bash git lfs clone https://huggingface.co/Rostlab/prot_t5_xl_half_uniref50-enc ``` #### 借助Hugging Face客户端库批量处理 如果倾向于编程方式操作,则可以通过安装Transformers库并调用相应API实现自动化下载流程。下面给出一段简单的Python脚本用于加载特定模型及其配置至指定目录下: ```python from transformers import AutoModelForMaskedLM, AutoTokenizer model_name_or_path = "Rostlab/prot_t5_xl_half_uniref50-enc" save_directory = "./local_model" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForMaskedLM.from_pretrained(model_name_or_path) tokenizer.save_pretrained(save_directory) model.save_pretrained(save_directory) ``` 这段代码会将选定模型保存于名为`./local_model`的新建文件夹内[^2]。 #### 设置镜像加速下载速度 针对网络条件不佳或地理位置较远导致下载缓慢的情形,在Linux环境下可通过设定环境变量指向更快捷的服务端口来进行优化。具体做法是在终端执行如下指令: ```bash export HF_ENDPOINT="https://hf-mirror.com" echo $HF_ENDPOINT ``` 此方法仅适用于当前shell session期间;若需长久生效则应考虑修改`.bashrc`或其他启动脚本文件[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值