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

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

相关推荐
好家伙VCC1 天前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
前端玖耀里1 天前
如何使用python的boto库和SES发送电子邮件?
python
serve the people1 天前
python环境搭建 (十二) pydantic和pydantic-settings类型验证与解析
java·网络·python
小天源1 天前
Error 1053 Error 1067 服务“启动后立即停止” Java / Python 程序无法后台运行 windows nssm注册器下载与报错处理
开发语言·windows·python·nssm·error 1053·error 1067
喵手1 天前
Python爬虫实战:HTTP缓存系统深度实战 — ETag、Last-Modified与requests-cache完全指南(附SQLite持久化存储)!
爬虫·python·爬虫实战·http缓存·etag·零基础python爬虫教学·requests-cache
喵手1 天前
Python爬虫实战:容器化与定时调度实战 - Docker + Cron + 日志轮转 + 失败重试完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·容器化·零基础python爬虫教学·csv导出·定时调度
2601_949146531 天前
Python语音通知接口接入教程:开发者快速集成AI语音API的脚本实现
人工智能·python·语音识别
寻梦csdn1 天前
pycharm+miniconda兼容问题
ide·python·pycharm·conda
Java面试题总结1 天前
基于 Java 的 PDF 文本水印实现方案(iText7 示例)
java·python·pdf
不懒不懒1 天前
【决策树算法实战指南:从原理到Python实现】
python·决策树·id3·c4.5·catr