Transformers documentation

分享模型

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.47.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

分享模型

最后两个教程展示了如何使用PyTorch、Keras和 🤗 Accelerate进行分布式设置来微调模型。下一步是将您的模型与社区分享!在Hugging Face,我们相信公开分享知识和资源,能实现人工智能的普及化,让每个人都能受益。我们鼓励您将您的模型与社区分享,以帮助他人节省时间和精力。

在本教程中,您将学习两种在Model Hub上共享训练好的或微调的模型的方法:

  • 通过编程将文件推送到Hub。
  • 使用Web界面将文件拖放到Hub。

要与社区共享模型,您需要在huggingface.co上拥有一个帐户。您还可以加入现有的组织或创建一个新的组织。

仓库功能

Model Hub上的每个仓库都像是一个典型的GitHub仓库。我们的仓库提供版本控制、提交历史记录以及可视化差异的能力。

Model Hub的内置版本控制基于git和git-lfs。换句话说,您可以将一个模型视为一个仓库,从而实现更好的访问控制和可扩展性。版本控制允许使用修订方法来固定特定版本的模型,可以使用提交哈希值、标签或分支来标记。

因此,您可以通过revision参数加载特定的模型版本:

>>> model = AutoModel.from_pretrained(
...     "julien-c/EsperBERTo-small", revision="4c77982"  # tag name, or branch name, or commit hash
... )

文件也可以轻松地在仓库中编辑,您可以查看提交历史记录以及差异: vis_diff

设置

在将模型共享到Hub之前,您需要拥有Hugging Face的凭证。如果您有访问终端的权限,请在安装🤗 Transformers的虚拟环境中运行以下命令。这将在您的Hugging Face缓存文件夹(默认为~/.cache/)中存储您的access token

huggingface-cli login

如果您正在使用像Jupyter或Colaboratory这样的notebook,请确保您已安装了huggingface_hub库。该库允许您以编程方式与Hub进行交互。

pip install huggingface_hub

然后使用notebook_login登录到Hub,并按照这里的链接生成一个token进行登录:

>>> from huggingface_hub import notebook_login

>>> notebook_login()

转换模型适用于所有框架

为确保您的模型可以被使用不同框架的人使用,我们建议您将PyTorch和TensorFlow checkpoints都转换并上传。如果您跳过此步骤,用户仍然可以从其他框架加载您的模型,但速度会变慢,因为🤗 Transformers需要实时转换checkpoints

为另一个框架转换checkpoints很容易。确保您已安装PyTorch和TensorFlow(请参阅此处的安装说明),然后在其他框架中找到适合您任务的特定模型。

Pytorch
Hide Pytorch content

指定from_tf=True将checkpoint从TensorFlow转换为PyTorch。

>>> pt_model = DistilBertForSequenceClassification.from_pretrained("path/to/awesome-name-you-picked", from_tf=True)
>>> pt_model.save_pretrained("path/to/awesome-name-you-picked")
TensorFlow
Hide TensorFlow content

指定from_pt=True将checkpoint从PyTorch转换为TensorFlow。

>>> tf_model = TFDistilBertForSequenceClassification.from_pretrained("path/to/awesome-name-you-picked", from_pt=True)

然后,您可以使用新的checkpoint保存您的新TensorFlow模型:

>>> tf_model.save_pretrained("path/to/awesome-name-you-picked")
JAX
Hide JAX content

如果模型在Flax中可用,您还可以将PyTorch checkpoint转换为Flax:

>>> flax_model = FlaxDistilBertForSequenceClassification.from_pretrained(
...     "path/to/awesome-name-you-picked", from_pt=True
... )

在训练过程中推送模型

Pytorch
Hide Pytorch content

将模型分享到Hub就像添加一个额外的参数或回调函数一样简单。请记住,在微调教程中,TrainingArguments类是您指定超参数和附加训练选项的地方。其中一项训练选项包括直接将模型推送到Hub的能力。在您的TrainingArguments中设置push_to_hub=True

>>> training_args = TrainingArguments(output_dir="my-awesome-model", push_to_hub=True)

像往常一样将您的训练参数传递给Trainer

>>> 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()将训练好的模型推送到Hub。🤗 Transformers甚至会自动将训练超参数、训练结果和框架版本添加到你的模型卡片中!

>>> trainer.push_to_hub()
TensorFlow
Hide TensorFlow content

使用PushToHubCallback将模型分享到Hub。在PushToHubCallback函数中,添加以下内容:

  • 一个用于存储模型的输出目录。
  • 一个tokenizer。
  • hub_model_id,即您的Hub用户名和模型名称。
>>> from transformers import PushToHubCallback

>>> push_to_hub_callback = PushToHubCallback(
...     output_dir="./your_model_save_path", tokenizer=tokenizer, hub_model_id="your-username/my-awesome-model"
... )

将回调函数添加到 fit中,然后🤗 Transformers 会将训练好的模型推送到 Hub:

>>> model.fit(tf_train_dataset, validation_data=tf_validation_dataset, epochs=3, callbacks=push_to_hub_callback)

使用 push_to_hub 功能

您可以直接在您的模型上调用push_to_hub来将其上传到Hub。

push_to_hub中指定你的模型名称:

>>> pt_model.push_to_hub("my-awesome-model")

这会在您的用户名下创建一个名为my-awesome-model的仓库。用户现在可以使用from_pretrained函数加载您的模型:

>>> from transformers import AutoModel

>>> model = AutoModel.from_pretrained("your_username/my-awesome-model")

如果您属于一个组织,并希望将您的模型推送到组织名称下,只需将其添加到repo_id中:

>>> pt_model.push_to_hub("my-awesome-org/my-awesome-model")

push_to_hub函数还可以用于向模型仓库添加其他文件。例如,向模型仓库中添加一个tokenizer

>>> tokenizer.push_to_hub("my-awesome-model")

或者,您可能希望将您的微调后的PyTorch模型的TensorFlow版本添加进去:

>>> tf_model.push_to_hub("my-awesome-model")

现在,当您导航到您的Hugging Face个人资料时,您应该看到您新创建的模型仓库。点击文件选项卡将显示您已上传到仓库的所有文件。

有关如何创建和上传文件到仓库的更多详细信息,请参考Hub文档这里

使用Web界面上传

喜欢无代码方法的用户可以通过Hugging Face的Web界面上传模型。访问huggingface.co/new创建一个新的仓库:

new_model_repo

从这里开始,添加一些关于您的模型的信息:

  • 选择仓库的所有者。这可以是您本人或者您所属的任何组织。
  • 为您的项目选择一个名称,该名称也将成为仓库的名称。
  • 选择您的模型是公开还是私有。
  • 指定您的模型的许可证使用情况。

现在点击文件选项卡,然后点击添加文件按钮将一个新文件上传到你的仓库。接着拖放一个文件进行上传,并添加提交信息。

upload_file

添加模型卡片

为了确保用户了解您的模型的能力、限制、潜在偏差和伦理考虑,请在仓库中添加一个模型卡片。模型卡片在README.md文件中定义。你可以通过以下方式添加模型卡片:

  • 手动创建并上传一个README.md文件。
  • 在你的模型仓库中点击编辑模型卡片按钮。

可以参考DistilBert的模型卡片来了解模型卡片应该包含的信息类型。有关您可以在README.md文件中控制的更多选项的细节,例如模型的碳足迹或小部件示例,请参考文档这里

< > Update on GitHub