参考链接:https://hugging-face.cn/docs/huggingface_hub/index
目录
一、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 在代码中手动指定路径
933

被折叠的 条评论
为什么被折叠?



