Hub Python Library documentation

Git 与 HTTP 范式

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v2.4.0).
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