Huggingface_hub源码解析 - 简介篇

首先把huggingface_hub的中文文档过一遍。

之前以为huggingface_hub还管模型加载啥的,看了一遍文档之后才知道,它是完完全全只管文件在本地和远端的交互,不做其他事情。

然后发现英文文档还有额外的一些Tips,这个以后再看。

文章目录

仅拉取仓库

如果只是要拉别人的仓库,那么基本只要掌握HfApi的用法就足够了。

py 复制代码
>>> from huggingface_hub import HfApi
>>> api = HfApi()

api.list_models 列出模型
api.list_datasets 列出数据集
api.list_spaces 列出space,space指的是GUI界面,可以直接上手操作的那种

它们都可以添加各种filter参数,比如任务类型、用的什么库跑的、训练用的数据集等等,还可以按某个属性(比如下载量)排序,取前几条。

仓库开发

如果自己要做模型开发,要上传到远端,那么还要看一下这个小节。

huggingface_hub.create_repo 创建仓库,可以设置仓库名称、仓库类型、可见性等
huggingface_hub.delete_repo 删除仓库
huggingface_hub.duplicate_space 复制别人的仓库

标签和分支操作、重命名仓库、修改可见性等接口在此忽略,详见原始文档。

集合操作

集合(collection)是 Hub 上将一组相关项目(模型、数据集、Spaces、论文)组织在同一页面上的一种方式。一个集合包含了多个元素,每一个元素是"模型、数据集、Spaces、论文"中的一种,可以理解为是Tuple[Any]的数据结构。

huggingface_hub.get_collection 列出特定的集合

huggingface_hub.get_collections 搜索集合

其他集合操作,比如创建新集合、向集合中添加条目、添加备注、重排序等接口在此忽略,详见原始文档。

下载接口

终于来到huggingface_hub.hf_hub_download接口了。这个接口负责从远端下载单个的文件,缓存在本地磁盘(不同版本会自动区分开),并返回它的本地路径。huggingface缓存目录的文件不要乱动,接口给的是软链的地址,手动改到某个地方可能会导致路径失效。

缓存的文件都在.cache/huggingface/下。
hf_hub_download接口至少需要传入repo_id跟文件名称,还有repo_type,默认是模型,也可以是dataset等。还有很多可以指定的参数,比如版本revision,填的话要用完整hash不能用前n位。接口内部有一个hf_hub_url参数,代表下载url,如果有需求也可以拿这个url出去到其他接口里头再下载。

然后是huggingface_hub.snapshot_download接口,这个接口可以下载一整个仓库,内部实际是并行调用了hf_hub_download。这个接口也是需要传入repo_id,但是不需要传文件名了因为要下载整个仓库。其他的比如repo_type和revision都是跟hf_hub_download一样的。然后有一些新的参数,比如allow_patternsignore_patterns可以指定只下载哪些文件,不要哪些文件,local_dir可以不下载到.cache目录,转而下载到用户自己选择的位置。

命令行工具

huggingface还有一个命令行工具hf,可以独立安装,看文档的意思应该是装了huggingface_hub之后就有hf了。
hf auth登录
hf download下载,各种下载,下载单个文件、多个文件、整个目录、一个数据集、dry-run,还有其他一些次要参数就忽略了。
hf upload上传
hf repo仓库操作,创建、修改等
hf cache对已经下载下来的缓存进行操作,比如清空缓存

这里的hf download应该就是用的snapshot_download接口

社区功能

拉取评论之类的接口,略过。

文件系统

通过文件系统 API 与 Hub 交互,这个看起来还挺复杂,目前应该也用不上,我们平时查资料都是直接在网页检索的,所以忽略。

感觉少了点什么,平时用的接口还没记录到,还得看看英文的文档。

相关推荐
yaoxin5211231 小时前
406. Java 文件操作基础 - 字符与二进制流
java·开发语言·python
一勺菠萝丶1 小时前
macOS 安装 Python 包报错:`externally-managed-environment` 怎么解决?
python
醒李2 小时前
盲人出行辅助系统原型
人工智能·python·目标检测
PILIPALAPENG2 小时前
第4周 Day 3:多 Agent 协作——让 Agent 们"组队干活"
前端·人工智能·python
Omics Pro2 小时前
填补蛋白质组深度学习预处理教学空白
人工智能·python·深度学习·plotly·numpy·pandas·scikit-learn
万邦科技Lafite3 小时前
实战演练:利用京东API一键抓取商品详情
数据库·redis·python·缓存·开放api·淘宝开放平台
TheRouter3 小时前
OpenClaw 上下文瘦身:3 个实验
开发语言·python·ai
日光明媚4 小时前
TensorRT-LLM 中对 wan 加速流程与方法
人工智能·python·计算机视觉·stable diffusion·aigc
Promising_GEO4 小时前
全球综合评估模型-GCAM模型的安装与参数解读
开发语言·python·遥感·空间分析
TechWayfarer5 小时前
IP归属地API实战指南:用IP数据云解析日志挖掘用户地域分布
大数据·开发语言·网络·python·tcp/ip