Hub Python 库文档

Git 与 HTTP 范式

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Git 与 HTTP 范式

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

第一种方法,所谓的“基于 git”的方法,由 Repository 类主导。此方法使用 git 命令的包装器,并带有专门为与 Hub 交互而设计的附加功能。 第二种选择,称为“基于 HTTP”的方法,涉及使用 HfApi 客户端发出 HTTP 请求。 让我们检查每种方法的优缺点。

Repository:历史悠久的基于 git 的方法

最初,huggingface_hub 主要围绕 Repository 类构建。 它为常见的 git 命令(例如 "git add""git commit""git push""git tag""git checkout" 等)提供了 Python 包装器。

该库还有助于设置凭据和跟踪大型文件,这些文件通常在机器学习仓库中使用。 此外,该库允许您在后台执行其方法,使其可用于在训练期间上传数据。

使用 Repository 的主要优点是它允许您在机器上维护整个仓库的本地副本。 这也可能是一个缺点,因为它要求您不断更新和维护此本地副本。 这类似于传统的软件开发,每个开发人员维护自己的本地副本,并在处理某个功能时推送更改。 但是,在机器学习的背景下,这可能并不总是必要的,因为用户可能只需要下载权重用于推理或将权重从一种格式转换为另一种格式,而无需克隆整个仓库。

Repository 现在已被弃用,转而支持基于 http 的替代方案。 鉴于其在遗留代码中的广泛采用,Repository 的完全移除只会在 v1.0 版本中发生。

HfApi:灵活便捷的 HTTP 客户端

开发 HfApi 类是为了提供本地 git 仓库的替代方案,本地 git 仓库可能难以维护,尤其是在处理大型模型或数据集时。 HfApi 类提供与基于 git 的方法相同的功能,例如下载和推送文件以及创建分支和标签,但无需保持同步的本地文件夹。

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

我应该使用什么?以及何时使用?

总的来说,在所有情况下,都建议使用基于 HTTP 的方法来使用 huggingface_hubHfApi 允许拉取和推送更改、处理 PR、标签和分支、与讨论互动等等。 自 0.16 版本以来,基于 http 的方法也可以在后台运行,这是 Repository 类的最后一个主要优势。

但是,并非所有 git 命令都可通过 HfApi 使用。 有些可能永远不会实现,但我们一直在努力改进并缩小差距。 如果您没有看到您的用例被覆盖,请在 Github 上提出 issue! 我们欢迎反馈,以帮助与我们的用户一起构建 🤗 生态系统。

这种基于 http 的 HfApi 优于基于 git 的 Repository 的偏好并不意味着 git 版本控制会很快从 Hugging Face Hub 中消失。 在有意义的工作流程中,始终可以在本地使用 git 命令。

< > 在 GitHub 上更新