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进行交互的库,Hugging Face Hub是一组基于Git的存储库(模型、数据集或Spaces)。使用 huggingface_hub有两种主要方式来访问Hub。

第一种方法,即所谓的“基于git”的方法,由Repository类驱动。这种方法使用了一个包装器,它在 git命令的基础上增加了专门与Hub交互的额外函数。第二种选择,称为“基于HTTP”的方法,涉及使用HfApi客户端进行HTTP请求。让我们来看一看每种方法的优缺点。

存储库:基于历史的 Git 方法

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

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

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

HfApi: 一个功能强大且方便的HTTP客户端

HfApi 被开发为本地 git 存储库的替代方案,因为本地 git 存储库在处理大型模型或数据集时可能会很麻烦。HfApi 提供与基于 git 的方法相同的功能,例如下载和推送文件以及创建分支和标签,但无需本地文件夹来保持同步。

HfApi除了提供 git 已经提供的功能外,还提供其他功能,例如:

  • 管理存储库
  • 使用缓存下载文件以进行有效的重复使用
  • 在 Hub 中搜索存储库和元数据
  • 访问社区功能,如讨论、PR和评论
  • 配置Spaces

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

总的来说,在大多数情况下,HTTP 方法是使用 huggingface_hub 的推荐方法。但是,在以下几种情况下,维护本地 git 克隆(使用 Repository)可能更有益:

如果您在本地机器上训练模型,使用传统的 git 工作流程并定期推送更新可能更有效。Repository 被优化为此类情况,因为它能够在后台运行。 如果您需要手动编辑大型文件,git 是最佳选择,因为它只会将文件的差异发送到服务器。使用 HfAPI 客户端,每次编辑都会上传整个文件。请记住,大多数大型文件是二进制文件,因此无法从 git 差异中受益。

并非所有 git 命令都通过 HfApi 提供。有些可能永远不会被实现,但我们一直在努力改进并缩小差距。如果您没有看到您的用例被覆盖。

请在Github打开一个 issue!我们欢迎反馈,以帮助我们与我们的用户一起构建 🤗 生态系统。

< > Update on GitHub