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、论文"中的一种,可以理解为是TupleAny的数据结构。

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 交互,这个看起来还挺复杂,目前应该也用不上,我们平时查资料都是直接在网页检索的,所以忽略。

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

相关推荐
五月底_1 分钟前
LIS算法
python·算法·最长子序列
wuyk5554 分钟前
Python零基础入门第五章:元组Tuple(不可变容器详解、列表与元组区别)
开发语言·python
zhanghaha13149 分钟前
Python进阶教程:13_math 模块 —— 新手完全指南
数据库·python·机器学习
aiqianji29 分钟前
教AI短篇小说写作的软件操作简单,该怎么挑选呢?
人工智能·python
circuitsosk1 小时前
Python 模块与包管理:import 机制、虚拟环境与 pip 完全指南
开发语言·python·pip·依赖管理·模块与包
weixin_440730501 小时前
python+request实现接口-小结
开发语言·python
zlinear数据采集卡2 小时前
数据采集卡从入门到精通(38):上位机开发实战——Python/QT/LabVIEW的技术选型与分层架构
python·单片机·嵌入式硬件·qt·fpga开发·开源·labview
for_ever_love__2 小时前
PySpark学习: 数据输出
开发语言·python·学习·spark
张人玉2 小时前
基于 Python 的桌面端智能识别与可视化系统——生活垃圾分类可视化大屏
python·分类·sqlite·echarts·生活