Hub Python Library documentation

Git 与 HTTP 范式

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Git 与 HTTP 范式

huggingface_hub 库是一个用于与 Hugging Face Hub 交互的库,Hub 是一组基于 git 的仓库(模型、数据集或 Spaces)。使用 huggingface_hub 访问 Hub 主要有两种方式。

第一种方法,即所谓的“基于 git”的方法,依赖于直接在终端中使用标准的 git 命令。该方法允许你克隆仓库、创建提交并手动推送更改。第二种选项称为“基于 HTTP”的方法,涉及使用 HfApi 客户端发起 HTTP 请求。让我们来看看每种方法的优缺点。

Git:基于历史 CLI 的方法

最初,大多数用户使用普通的 git 命令与 Hugging Face Hub 进行交互,例如 git clone、git add、git commit、git push、git tag 或 git checkout。

这种方法允许您在本地机器上操作仓库的完整本地副本,与传统软件开发中的做法相同。当您需要进行离线访问或希望处理仓库的完整历史记录时,这可能是一个优势。然而,它也存在一些缺点:您需要负责在本地保持仓库的最新状态、处理身份验证凭据以及管理大文件(通过 git-lfs),在处理大型机器学习模型或数据集时,这些操作可能会变得繁琐。

在许多机器学习工作流中,您可能只需要下载少量文件用于推理,或者在不克隆整个仓库的情况下转换权重。在这种情况下,使用 git 可能过于繁琐,并会引入不必要的复杂性。

HfApi:一个灵活且便捷的 HTTP 客户端

HfApi 类的开发旨在提供一种替代方案,以取代使用本地 git 仓库。维护本地 git 仓库往往较为繁琐,尤其是在处理大型模型或数据集时。HfApi 类提供了与基于 git 的工作流相同的功能——例如下载和推送文件、创建分支和标签——但无需维护一个需要保持同步的本地文件夹。

除了 git 已提供的功能外,HfApi 类还提供了更多功能,例如管理仓库、使用缓存下载文件以实现高效复用、在 Hub 中搜索仓库和元数据、访问社区功能(如讨论、PR 和评论),以及配置 Spaces 的硬件和密钥。

我该使用什么?何时使用?

总体而言,基于 HTTP 的方式是推荐在所有情况下使用 huggingface_hub 的方法。HfApi 允许你拉取和推送更改、处理 PR、标签和分支、与讨论进行交互等等。

然而,并非所有 git 命令都可以通过 HfApi 使用。有些命令可能永远不会被实现,但我们一直在努力改进并缩小差距。如果您发现自己的使用场景未被覆盖,请在 GitHub 上提交 issue!我们欢迎反馈,以帮助我们与用户一起构建 HF 生态系统。

相较于直接使用 git 命令,更倾向于使用基于 HTTP 的 HfApi,并不意味着 git 版本控制功能会很快从 Hugging Face Hub 中消失。在适用场景中,始终可以在本地使用 git。

Update on GitHub