Hub Python 库文档
Git 与 HTTP 范式
并获得增强的文档体验
开始使用
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 的方法都是推荐的使用方式**。HfApi 允许拉取和推送更改,处理 PR、标签和分支,与讨论交互等等。自 0.16
版本发布以来,基于 HTTP 的方法也可以在后台运行,这是 Repository 类的最后一个主要优势。
然而,并非所有 Git 命令都可以通过 HfApi 获得。有些可能永远不会实现,但我们一直在努力改进并缩小差距。如果您发现您的用例未被涵盖,请在 Github 上提出问题!我们欢迎您的反馈,以帮助与我们的用户一起构建 🤗 生态系统。
这种对基于 HTTP 的 HfApi 优于基于 Git 的 Repository 的偏好并不意味着 Git 版本控制将很快从 Hugging Face Hub 中消失。在有意义的工作流中,始终可以使用 git
命令进行本地操作。