# 共享

Hugging Face [Hub](https://hf.co/models) 是一个用于分享、发现和获取各种类型和规模模型的平台。我们强烈建议您在 Hub 上分享您的模型，以推动开源机器学习的发展，造福所有人！

本指南将向您展示如何从 Transformers 将模型共享到 Hub。

## 设置

要将模型共享到 Hub，您需要一个 Hugging Face [账户](https://hf.co/join)。请创建一个 [User Access Token](https://hf.co/docs/hub/security-tokens#user-access-tokens)（默认存储在 [cache](./installation#cache-directory) 中），并通过命令行或 notebook 登录您的账户。

```bash
hf auth login
```

```py
from huggingface_hub import notebook_login

notebook_login()
```

## 仓库功能

每个模型仓库都支持版本控制、提交历史记录和差异可视化。

    

版本管理基于 [Git](https://git-scm.com/) 和 [Git Large File Storage (LFS)](https://git-lfs.github.com/)，支持修订版本，即通过提交哈希、标签或分支来指定模型版本。

例如，在 [from_pretrained()](/docs/transformers/v5.23.0/zh/main_classes/model#transformers.PreTrainedModel.from_pretrained) 中使用 `revision` 参数，可以从提交哈希值加载特定版本的模型。

```py
model = AutoModel.from_pretrained(
    "julien-c/EsperBERTo-small", revision="4c77982"
)
```

从分支或标签加载时，该调用中的所有文件都会固定到同一个提交，然后从该提交获取所有文件。

该固定仅在当前调用期间有效。若需在不同运行之间保持可复现性，请传入一个显式的 commit hash 或一个您视为固定的 tag。不要依赖 `main` 或其他会移动的分支在不同运行之间保持不变。

模型仓库还支持[门控](https://hf.co/docs/hub/models-gated)，用于控制谁可以访问某个模型。门控常用于允许特定用户群体在研究模型公开之前进行预览。

    

模型仓库还包含一个推理[小部件](https://hf.co/docs/hub/models-widgets)，供用户直接在 Hub 上与模型进行交互。

有关更多信息，请参阅 Hub [模型](https://hf.co/docs/hub/models)文档。

## 上传模型

根据工作流偏好，有多种方式可以将模型上传到 Hub。您可以使用 [Trainer](/docs/transformers/v5.23.0/zh/main_classes/trainer#transformers.Trainer) 推送模型，直接在模型上调用 [push_to_hub()](/docs/transformers/v5.23.0/zh/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub)，或使用 Hub 的 Web 界面。

### Trainer

[Trainer](/docs/transformers/v5.23.0/zh/main_classes/trainer#transformers.Trainer) 可以在训练完成后直接将模型推送到 Hub。在 [TrainingArguments](/docs/transformers/v5.23.0/zh/main_classes/trainer#transformers.TrainingArguments) 中设置 `push_to_hub=True`，并将其传递给 [Trainer](/docs/transformers/v5.23.0/zh/main_classes/trainer#transformers.Trainer)。训练完成后，调用 [push_to_hub()](/docs/transformers/v5.23.0/zh/main_classes/trainer#transformers.Trainer.push_to_hub) 即可上传模型。

[push_to_hub()](/docs/transformers/v5.23.0/zh/main_classes/trainer#transformers.Trainer.push_to_hub) 会自动向模型卡片中添加训练超参数和结果等有用信息。

```py
from transformers import TrainingArguments, Trainer

training_args = TrainingArguments(output_dir="my-awesome-model", push_to_hub=True)
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=small_train_dataset,
    eval_dataset=small_eval_dataset,
    compute_metrics=compute_metrics,
)
trainer.push_to_hub()
```

要将模型上传到私有仓库，请在 [TrainingArguments](/docs/transformers/v5.23.0/zh/main_classes/trainer#transformers.TrainingArguments) 中设置 `hub_private_repo=True`。如果仓库尚未创建（例如，当 [TrainingArguments](/docs/transformers/v5.23.0/zh/main_classes/trainer#transformers.TrainingArguments) 中的 `push_to_hub=False` 时），您也可以改为向 [push_to_hub()](/docs/transformers/v5.23.0/zh/main_classes/trainer#transformers.Trainer.push_to_hub) 传递 `private=True`。`private` 参数仅在创建仓库时生效，因此不会更改现有仓库的可见性。

```py
trainer.push_to_hub(private=True)
```

### PushToHubMixin

[PushToHubMixin](/docs/transformers/v5.23.0/zh/main_classes/model#transformers.utils.PushToHubMixin) 提供了将模型或分词器推送到 Hub 的功能。

Call [push_to_hub()](/docs/transformers/v5.23.0/zh/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub) directly on a model to upload it to the Hub. It creates a repository under your namespace with the model name specified in [push_to_hub()](/docs/transformers/v5.23.0/zh/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub).

```py
model.push_to_hub("my-awesome-model")
```

其他对象（例如 tokenizer）也会以相同的方式推送到 Hub。

```py
tokenizer.push_to_hub("my-awesome-model")
```

您的 Hugging Face 个人资料现在应该会显示新创建的模型仓库。前往 **Files** 标签页即可查看所有已上传的文件。

有关将文件推送到 Hub 的更多信息，请参阅 [将文件上传到 Hub](https://hf.co/docs/hub/how-to-upstream) 指南。

### Hub 网页界面

Hub 网页界面是一种无需编写代码即可上传模型的方式。

1. 通过选择 [**New Model**](https://huggingface.co/new) 创建一个新的仓库。

    

添加一些有关您模型的信息：

- 选择仓库的 **所有者**。这可以是您本人，也可以是您所属的任何组织。
- 为你的模型选择一个名称，该名称也将用作仓库名称。
- 选择您的模型是公开还是私有。
- 设置许可证的使用方式。

2. 点击 **创建模型** 以创建模型仓库。

3. 选择 **Files** 选项卡，然后单击 **Add file** 按钮，将文件拖放到您的仓库中。添加提交信息，然后单击 **Commit changes to main** 以提交该文件。

    

## 模型卡片

[模型卡片](https://hf.co/docs/hub/model-cards#model-cards)向用户介绍模型的性能、局限性、潜在偏差以及伦理考量。强烈建议为您的仓库添加模型卡片！

模型卡是仓库中的一个 `README.md` 文件。通过以下方式添加此文件：

- 手动创建并上传 `README.md` 文件
- 点击仓库中的 **编辑模型卡片** 按钮

请查看 Llama 3.1 的 [模型卡片](https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct)，了解模型卡片中应包含的内容示例。

有关 [Model Cards](https://hf.co/docs/hub/model-cards#model-cards) 指南中提供的其他模型卡片元数据（碳排放、许可证、论文链接等），请进一步了解。

