上传模型
要将模型上传到 Hub,您需要在 Hugging Face 创建一个帐户。Hub 上的模型是 基于 Git 的存储库,它为您提供版本控制、分支、可发现性和共享功能,与数十个库的集成等等!您可以控制要上传到存储库的内容,其中可能包括检查点、配置以及任何其他文件。
您可以将存储库链接到单个用户,例如 osanseviero/fashion_brands_patterns,或链接到组织,例如 facebook/bart-large-xsum。组织可以收集与公司、社区或库相关的模型!如果您选择一个组织,该模型将显示在该组织的页面上,并且该组织的每个成员都将能够为该存储库做出贡献。您可以在 此处 创建一个新的组织。
注意:模型无需与 Transformers/Diffusers 库兼容即可获得下载指标。任何自定义模型都受支持。请在下面阅读更多内容!
有几种方法可以上传模型,以便将其很好地集成到 Hub 中并获取 下载指标,如下所述。
- 如果您的模型是为具有 内置支持 的库设计的,则可以使用该库提供的方法。使用
trust_remote_code=True
的自定义模型也可以利用这些方法。 - 如果您的模型是自定义 PyTorch 模型,则可以使用
PyTorchModelHubMixin
类,因为它允许像 Transformers、Diffusers 和 Timm 库中的模型一样,将from_pretrained
和push_to_hub
添加到任何nn.Module
类中。 - 除了编程上传之外,您还可以始终使用 Web 界面 或 Git 命令行。
上传模型后,我们建议您向您的存储库添加 模型卡片,以记录您的模型并使其更易于发现。
利用 [PyTorchModelHubMixin](#upload-a-pytorch-model-using-huggingfacehub) 的示例 [存储库](https://huggingface.co/LiheYoung/depth_anything_vitl14)。下载显示在右侧。使用 Web 界面
要创建全新的模型存储库,请访问 huggingface.co/new。然后按照以下步骤操作
- 在“文件和版本”选项卡中,选择“添加文件”并指定“上传文件”
- 从那里,选择要上传的计算机上的文件,并留下有帮助的提交消息以了解您要上传的内容
之后,点击**提交更改**将您的模型上传到 Hub!
检查文件和历史记录
您可以检查包含所有最近添加文件的存储库!
UI 允许您浏览模型文件和提交,并查看每次提交引入的差异
- 添加元数据
您可以向模型卡片添加元数据。您可以指定
- 此模型适用的任务类型,启用小部件和推理 API。
- 使用的库(
transformers
、spaCy
等) - 语言
- 数据集
- 指标
- 许可证
- 还有更多!
在此处阅读有关模型标签的更多信息 此处。
- 添加 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 加载 代码。这是一种使用 trust_remote_code=True
标志使您的模型与 Transformers 一起使用的方法。您可能希望考虑此选项,而不是完整的库集成。
使用 huggingface_hub 上传 PyTorch 模型
如果您的模型是(自定义)PyTorch 模型,则可以使用 PyTorchModelHubMixin
类(在 huggingface_hub Python 库中可用)。这是一个最小类,它向任何 nn.Module
添加 from_pretrained
和 push_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 库中本地集成的模型可用一样。使用此混合类,每个单独的检查点都存储在 Hub 上的单个存储库中,该存储库包含 2 个文件
- 一个包含权重的
pytorch_model.bin
或model.safetensors
文件 - 一个
config.json
文件,它是模型配置的序列化版本。此类用于计算下载指标:每次用户调用from_pretrained
加载config.json
时,计数都会增加 1。有关自动下载指标,请参阅 本指南。
建议为每个检查点添加模型卡片,以便人们可以阅读模型的相关信息,提供指向论文的链接等。
访问 huggingface_hub 的文档 以了解更多信息。
或者,您还可以简单地以编程方式将文件或文件夹上传到 Hub:https://huggingface.co/docs/huggingface_hub/guides/upload。
使用 Git
最后,由于模型存储库只是 Git 存储库,您也可以使用 Git 将模型文件推送到 Hub。请遵循 存储库入门 中的指南,了解有关使用 git
CLI 提交和推送模型的信息。