Hub Python 库文档

创建和管理仓库

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

创建和管理仓库

Hugging Face Hub 是一个由 Git 仓库组成的集合。 Git 是软件开发中广泛使用的工具,用于在协作时轻松地对项目进行版本控制。本指南将向您展示如何与 Hub 上的仓库进行交互,尤其是

  • 创建和删除仓库。
  • 管理分支和标签。
  • 重命名您的仓库。
  • 更新您的仓库可见性。
  • 管理您仓库的本地副本。

如果您习惯使用 GitLab/GitHub/Bitbucket 等平台,您可能会首先想到使用 git CLI 来克隆您的仓库(git clone)、提交更改(git add, git commit)并推送它们(git push)。在使用 Hugging Face Hub 时,这都是可行的。但是,软件工程和机器学习对存储大型模型文件的要求和工作流程不同。模型仓库可能维护着针对不同框架和工具的大型模型权重文件,因此克隆仓库可能会导致您维护着大量本地文件夹。因此,使用我们的自定义 HTTP 方法可能会更有效率。您可以阅读我们的 Git vs HTTP 范例 解释页面以获取更多详细信息。

如果您想在 Hub 上创建和管理仓库,您的机器必须已登录。如果您尚未登录,请参阅 此部分。在本指南的其余部分,我们将假定您的机器已登录。

仓库创建和删除

第一步是了解如何创建和删除仓库。您只能管理您拥有的仓库(在您的用户名命名空间下)或您拥有写入权限的组织中的仓库。

创建仓库

使用 create_repo() 创建一个空仓库,并通过 repo_id 参数为其命名。repo_id 是您的命名空间加上仓库名称:username_or_org/repo_name

>>> from huggingface_hub import create_repo
>>> create_repo("lysandre/test-model")
'https://huggingface.co/lysandre/test-model'

或通过 CLI

>>> hf repo create lysandre/test-model
Successfully created lysandre/test-model on the Hub.
Your repo is now available at https://huggingface.co/lysandre/test-model

默认情况下,create_repo() 创建的是一个模型仓库。但您可以使用 repo_type 参数指定其他仓库类型。例如,如果您想创建一个数据集仓库

>>> from huggingface_hub import create_repo
>>> create_repo("lysandre/test-dataset", repo_type="dataset")
'https://huggingface.co/datasets/lysandre/test-dataset'

或通过 CLI

>>> hf repo create lysandre/test-dataset --repo-type dataset

创建仓库时,您可以使用 private 参数设置仓库的可见性。

>>> from huggingface_hub import create_repo
>>> create_repo("lysandre/test-private", private=True)

或通过 CLI

>>> hf repo create lysandre/test-private --private

如果您想稍后更改仓库的可见性,可以使用 update_repo_settings() 函数。

如果您是一个拥有企业版计划的组织的成员,您可以将 resource_group_id 作为参数传递给 create_repo() 来在一个特定的资源组中创建仓库。资源组是一种安全功能,用于控制组织内的哪些成员可以访问给定资源。您可以通过从 Hub 上的组织设置页面的 URL 中复制资源组 ID 来获取它(例如,"https://huggingface.co/organizations/huggingface/settings/resource-groups/66670e5163145ca562cb1988" => "66670e5163145ca562cb1988")。有关资源组的更多详细信息,请参阅此 指南

删除仓库

使用 delete_repo() 删除仓库。请确保您要删除仓库,因为这是一个不可逆的过程!

指定您要删除的仓库的 repo_id

>>> delete_repo(repo_id="lysandre/my-corrupted-dataset", repo_type="dataset")

或通过 CLI

>>> hf repo delete lysandre/my-corrupted-dataset --repo-type dataset

复制仓库(仅限 Spaces)

在某些情况下,您想复制他人的仓库以适应您的用例。对于 Spaces,可以使用 duplicate_space() 方法来实现。它会复制整个仓库。您仍然需要配置自己的设置(硬件、睡眠时间、存储、变量和密钥)。有关更多详细信息,请参阅我们的 管理你的 Space 指南。

>>> from huggingface_hub import duplicate_space
>>> duplicate_space("multimodalart/dreambooth-training", private=False)
RepoUrl('https://huggingface.co/spaces/nateraw/dreambooth-training',...)

上传和下载文件

现在您已经创建了仓库,您可能想将更改推送到它或从中下载文件。

这两个主题值得拥有自己的指南。请参阅 上传下载 指南,了解如何使用您的仓库。

分支和标签

Git 仓库通常使用分支来存储同一仓库的不同版本。标签也可以用来标记仓库的特定状态,例如,在发布版本时。更一般地说,分支和标签被称为 Git 引用

创建分支和标签

您可以使用 create_branch()create_tag() 创建新的分支和标签。

>>> from huggingface_hub import create_branch, create_tag

# Create a branch on a Space repo from `main` branch
>>> create_branch("Matthijs/speecht5-tts-demo", repo_type="space", branch="handle-dog-speaker")

# Create a tag on a Dataset repo from `v0.1-release` branch
>>> create_tag("bigcode/the-stack", repo_type="dataset", revision="v0.1-release", tag="v0.1.1", tag_message="Bump release version.")

或通过 CLI

>>> hf repo branch create Matthijs/speecht5-tts-demo handle-dog-speaker --repo-type space
>>> hf repo tag create bigcode/the-stack v0.1.1 --repo-type dataset --revision v0.1-release -m "Bump release version."

您可以使用 delete_branch()delete_tag() 函数以同样的方式删除分支或标签,或者在 CLI 中分别使用 hf repo branch deletehf repo tag delete

列出所有分支和标签

您也可以使用 list_repo_refs() 列出仓库中现有的 Git 引用。

>>> from huggingface_hub import list_repo_refs
>>> list_repo_refs("bigcode/the-stack", repo_type="dataset")
GitRefs(
   branches=[
         GitRefInfo(name='main', ref='refs/heads/main', target_commit='18edc1591d9ce72aa82f56c4431b3c969b210ae3'),
         GitRefInfo(name='v1.1.a1', ref='refs/heads/v1.1.a1', target_commit='f9826b862d1567f3822d3d25649b0d6d22ace714')
   ],
   converts=[],
   tags=[
         GitRefInfo(name='v1.0', ref='refs/tags/v1.0', target_commit='c37a8cd1e382064d8aced5e05543c5f7753834da')
   ]
)

更改仓库设置

仓库带有一些您可以配置的设置。大多数情况下,您会想在浏览器中的仓库设置页面手动进行配置。您必须拥有仓库的写入权限才能配置它(要么拥有它,要么是组织的一部分)。在本节中,我们将介绍您也可以通过 huggingface_hub 以编程方式配置的设置。

某些设置特定于 Spaces(硬件、环境变量等)。要配置这些设置,请参阅我们的 管理你的 Spaces 指南。

更新可见性

仓库可以是公开或私有的。私有仓库仅对您或仓库所在组织的成员可见。像下面这样将仓库更改为私有

>>> from huggingface_hub import update_repo_settings
>>> update_repo_settings(repo_id=repo_id, private=True)

或通过 CLI

>>> hf repo settings lysandre/test-private --private true

设置受限访问

为了更好地控制仓库的使用方式,Hub 允许仓库作者为其仓库启用访问请求。启用后,用户必须同意与仓库作者共享其联系信息(用户名和电子邮件地址)才能访问文件。启用访问请求的仓库称为受限仓库

您可以使用 update_repo_settings() 将仓库设置为受限状态。

>>> from huggingface_hub import HfApi

>>> api = HfApi()
>>> api.update_repo_settings(repo_id=repo_id, gated="auto")  # Set automatic gating for a model

或通过 CLI

>>> hf repo settings lysandre/test-private --gated auto

重命名您的仓库

您可以使用 move_repo() 在 Hub 上重命名您的仓库。使用此方法,您还可以将仓库从用户移动到组织。这样做时,有一些 局限性 需要注意。例如,您不能将仓库转移给其他用户。

>>> from huggingface_hub import move_repo
>>> move_repo(from_id="Wauplin/cool-model", to_id="huggingface/cool-model")

或通过 CLI

>>> hf repo move Wauplin/cool-model huggingface/cool-model
在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.