Hub documentation

后续步骤

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

后续步骤

接下来的部分将介绍一些功能和附加信息,帮助您充分利用 Hugging Face Hub 上的 Git 仓库。

如何以编程方式管理仓库

Hugging Face 支持通过 huggingface_hub 库 使用 Python 访问仓库。我们之前探讨的操作,例如下载仓库和上传文件,都可以通过该库实现,此外还提供了其他实用功能!

如果您更喜欢直接使用 git,请阅读以下章节。

深入了解 Git

如果你想继续学习 Git,可以访问这个 Git 教程。如需了解更多 Git 背景知识,可以查看GitHub 的 Git 指南。

如何使用分支

要有效地协作使用 Git 仓库,并在发布代码之前开发新功能,你可以使用分支。分支允许你将“进行中”的代码与“可投产”的代码分离开来,其额外好处是让多人可以在一个项目上工作,而不会频繁地相互冲突。你可以使用分支将实验隔离在各自的分支中,甚至可以采用团队级的分支管理实践。

要了解 Git 分支,您可以尝试 Learn Git Branching 交互式教程。

使用标签

Git 允许你为提交添加标签,以便轻松记录项目中的里程碑。因此,你可以使用标签来标记 Hub 仓库中的提交!要了解如何使用标签,请访问这篇 DevConnected 文章。

除了便于在仓库历史中识别重要提交外,使用 Git 标签还可以进行 A/B 测试、在特定标签处克隆仓库等!huggingface_hub 库也支持对标签进行操作,例如 从特定标签的提交中下载文件。

如何复制一个仓库

根据是否需要保留 Git 历史记录,有几种方法可以复制仓库。

从 Hub 复制

点击任意仓库页面右上角的三个点,然后选择 复制此模型、复制此数据集 或 复制此 Space。得益于 Xet 去重技术,此操作几乎可以瞬间完成。您可以选择:

  • 所有者:您的账户或您拥有写入权限的任何组织。
  • 仓库名称:重复仓库的名称。默认情况下,它会保留与源仓库相同的名称,并位于您的命名空间下(例如,重复 bigscience/bloom-560m 会创建 your-username/bloom-560m)。
  • 可见性:您可以选择将复制的仓库设为公开或私有。有关私有仓库的更多信息,请参见此处。

对于模型和数据集,Git 历史记录会被压缩为单个提交。对于 Spaces,完整的 Git 历史记录会被保留。Spaces 的公开变量会被复制过来,但密钥必须手动重新输入。

限制

某些仓库无法被复制:

  • 受控仓库(启用了访问请求的模型或数据集)。
  • 作者已禁用重复的仓库。
  • 跨区域复制不受支持(例如,存储在美国区域的仓库无法复制到欧盟组织)。

以编程方式复制

您也可以通过 huggingface_hub 库或 CLI 来复制仓库。这些工具使用与上述 Hub 按钮相同的服务器端 API(模型和数据集的 Git 历史会被压缩,而 Spaces 的 Git 历史会被保留)。

使用 Python:

from huggingface_hub import duplicate_repo

duplicate_repo("bigscience/bloom-560m", private=False)
duplicate_repo("openai/gdpval", repo_type="dataset")
duplicate_repo("multimodalart/dreambooth-training", repo_type="space", private=False)

或使用 CLI:

hf repos duplicate bigscience/bloom-560m
hf repos duplicate openai/gdpval --type dataset

对于 Spaces,您仍然需要自行配置相关设置(硬件、休眠时间、存储、变量和密钥)。有关更多详细信息,请参阅 管理您的 Space 指南。

或者,如果您想保留仓库的本地副本,可以先使用 hf download,然后使用 hf upload 将其上传到另一个命名空间。这样同样不会保留 Git 历史记录。

使用 Git 手动创建 Fork

如果需要为模型/数据集保留 Git 历史记录,或者希望更精细地控制流程(例如,将更改变基到你自己的修改之上),你可以使用 Git 手动 fork 一个仓库。

您需要安装 git-xet。由于您需要获取并重新上传所有 LFS 文件,Fork 操作可能需要一些时间,具体取决于您的带宽(不过得益于 Xet,重新上传会很快)。

  1. 在 https://huggingface.co 上创建一个目标仓库(例如 me/myfork)

  2. 将其克隆并将源仓库添加为远程仓库:

git clone git@hf.co:me/myfork
cd myfork
git xet install
git remote add upstream git@hf.co:friend/upstream
git fetch upstream
git lfs fetch --all upstream
  1. 将 fork 的内容替换为上游历史记录:
git reset --hard upstream/main
  1. 推送:
git push --force origin main
Update on GitHub