Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

上传模型

要将模型上传到 Hub,您需要创建一个 Hugging Face 账户。Hub 上的模型是基于 Git 的仓库,它们提供版本控制、分支、可发现性和共享功能,与数十个库的集成等等!您可以控制要上传到仓库的内容,其中可以包括检查点、配置和任何其他文件。

您可以将仓库链接到个人用户,例如 osanseviero/fashion_brands_patterns,或链接到组织,例如 facebook/bart-large-xsum。组织可以收集与公司、社区或库相关的模型!如果您选择一个组织,该模型将显示在组织的页面上,并且组织的每个成员都将能够为该仓库做出贡献。您可以在此处创建一个新组织。

注意: 模型不一定需要与 Transformers/Diffusers 库兼容才能获取下载指标。支持任何自定义模型。请阅读下文了解更多信息!

有几种方法可以上传模型,使其能够很好地集成到 Hub 中并获取下载指标,具体如下所述。

  • 如果您的模型是为具有内置支持的库设计的,您可以使用该库提供的方法。使用 trust_remote_code=True 的自定义模型也可以利用这些方法。
  • 如果您的模型是自定义 PyTorch 模型,可以使用 PyTorchModelHubMixin,因为它允许将 from_pretrainedpush_to_hub 添加到任何 nn.Module 类,就像 Transformers、Diffusers 和 Timm 库中的模型一样。
  • 除了程序化上传,您始终可以使用网页界面Git 命令行

模型上传后,我们建议您为您的仓库添加一张模型卡片,以记录您的模型并使其更易于发现。

drawing 利用 [PyTorchModelHubMixin](#upload-a-pytorch-model-using-huggingfacehub) 的示例 [仓库](https://huggingface.co/LiheYoung/depth_anything_vitl14)。下载量显示在右侧。

使用网页界面

要创建一个全新的模型仓库,请访问 huggingface.co/new。然后按照以下步骤操作

  1. 在“文件和版本”选项卡中,选择“添加文件”并指定“上传文件”
  1. 从此处选择要从计算机上传的文件,并留下一个有用的提交消息,以便了解您正在上传的内容
  1. 之后,点击提交更改将您的模型上传到 Hub!

  2. 检查文件和历史记录

您可以查看您的仓库以及所有最近添加的文件!

用户界面允许您浏览模型文件和提交,并查看每个提交引入的差异

  1. 添加元数据

您可以为模型卡片添加元数据。您可以指定

  • 此模型适用的任务类型,启用小部件和推理 API。
  • 使用的库(transformersspaCy 等)
  • 语言
  • 数据集
  • 指标
  • 许可证
  • 更多!

在此处了解有关模型标签的更多信息:此处

  1. 添加 TensorBoard 跟踪

任何包含 TensorBoard 跟踪(文件名包含 tfevents)的仓库都将带有 TensorBoard 标签。作为惯例,我们建议您将跟踪保存到 runs/ 子文件夹下。“训练指标”选项卡可以轻松查看记录变量(如损失或准确率)的图表。

如果安装了 tensorboard,使用 🤗 Transformers 训练的模型将默认生成 TensorBoard 跟踪

从内置支持库上传

首先检查您的模型是否来自支持将模型推送到/从 Hub 加载的库,例如 Transformers、Diffusers、Timm、Asteroid 等:https://huggingface.co/docs/hub/models-libraries。下面我们将展示对于像 Transformers 这样的库来说,这有多么容易。

from transformers import BertConfig, BertModel

config = BertConfig()
model = BertModel(config)

model.push_to_hub("nielsr/my-awesome-bert-model")

# reload
model = BertModel.from_pretrained("nielsr/my-awesome-bert-model")

有些库,例如 Transformers,支持从 Hub 加载代码。这是一种使您的模型与 Transformers 配合使用 trust_remote_code=True 标志的方法。您可以考虑此选项,而不是完整的库集成。

使用 huggingface_hub 上传 PyTorch 模型

如果您的模型是(自定义)PyTorch 模型,您可以使用 huggingface_hub Python 库中提供的 PyTorchModelHubMixin 。它是一个极简类,可为任何 nn.Module 类添加 from_pretrainedpush_to_hub 功能,同时还提供下载指标。

以下是使用方法(假设您已运行 pip install huggingface_hub):

import torch
import torch.nn as nn
from huggingface_hub import PyTorchModelHubMixin


class MyModel(
    nn.Module,
    PyTorchModelHubMixin, 
    # optionally, you can add metadata which gets pushed to the model card
    repo_url="your-repo-url",
    pipeline_tag="text-to-image",
    license="mit",
):
    def __init__(self, num_channels: int, hidden_size: int, num_classes: int):
        super().__init__()
        self.param = nn.Parameter(torch.rand(num_channels, hidden_size))
        self.linear = nn.Linear(hidden_size, num_classes)

    def forward(self, x):
        return self.linear(x + self.param)

# create model
config = {"num_channels": 3, "hidden_size": 32, "num_classes": 10}
model = MyModel(**config)

# save locally
model.save_pretrained("my-awesome-model")

# push to the hub
model.push_to_hub("your-hf-username/my-awesome-model")

# reload
model = MyModel.from_pretrained("your-hf-username/my-awesome-model")

如您所见,唯一的要求是您的模型继承自 PyTorchModelHubMixin。所有实例属性将自动序列化为 config.json 文件。请注意,init 方法只能接受 JSON 可序列化的参数。支持 Python 数据类。

这还附带自动下载指标,这意味着您将能够像在 Transformers、Diffusers 或 Timm 库中原生集成的模型一样,查看模型下载的次数。通过此 mixin 类,每个单独的检查点都以一个包含 2 个文件的仓库存储在 Hub 上:

  • 一个包含权重的 pytorch_model.binmodel.safetensors 文件
  • 一个 config.json 文件,它是模型配置的序列化版本。此类别用于计算下载指标:每当用户调用 from_pretrained 加载 config.json 时,计数会加一。请参阅本指南,了解自动下载指标。

建议为每个检查点添加一个模型卡片,以便人们可以阅读模型的相关信息,获取论文链接等。

访问huggingface_hub 的文档以了解更多信息。

此外,也可以直接通过编程方式将文件或文件夹上传到 Hub:https://huggingface.co/docs/huggingface_hub/guides/upload

使用 Git

最后,由于模型仓库只是 Git 仓库,您也可以使用 Git 将模型文件推送到 Hub。请按照仓库入门指南,了解如何使用 git CLI 提交和推送模型。

< > 在 GitHub 上更新