抱抱脸(hugging face)教程-中文翻译-分享一个模型

分享一个模型

最后两个教程展示了如何使用 PyTorch、 Keras 和 Accelerate 优化分布式设置的模型。下一步就是把你的模型公之于众!我们相信公开分享知识和资源,使人工智能大众化。我们鼓励你考虑与社区分享你的模式,以帮助其他人节省时间和资源。

在本教程中,您将学习在 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="v2.0.1"  # tag name, or branch name, or commit hash
)

文件在存储库中也很容易编辑,你可以查看提交历史以及它们之间的区别:

在这里插入图片描述

设置

在向中心共享模型之前,您需要Hugging Face凭证。如果可以访问终端,请在安装Transformers的虚拟环境中运行以下命令。他会将您的访问令牌存储在您的Hugging Face缓存文件夹(~/.cache/默认情况):

huggingface-cli login

如果你正在使用像 Jupyter 或 Colaboratory 这样的笔记本,确保你已经安装了 huggingface hub 库。此库允许您以编程方式与Hub交互。

pip install huggingface_hub

然后使用 notebook_login 登录到 Hub,并按照这里的链接生成一个令牌来登录:

from huggingface_hub import notebook_login

notebook_login()

转换所有框架的模型

为了确保您的模型可以被使用不同框架的人使用,我们建议您使用 PyTorch 和 TensorFlow 检查点转换和上传您的模型。如果跳过这个步骤,用户仍然可以从不同的框架加载模型,但是Transformers需要在运行时转换检查点,所以速度会变慢。

将检查点转换为另一个框架很容易。确保您已经安装了 PyTorch 和 TensorFlow (请参阅这里的安装说明) ,然后在其他框架中找到任务的特定模型。

Pytorch

指定 from_tf = True 将检查点从 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

指定从_pt = True 将检查点从 PyTorch 转换为 TensorFlow:

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

然后你可以用新的检查点保存你的新的 TensorFlow 模型:

tf_model.save_pretrained("path/to/awesome-name-you-picked")

JAX

如果 Flax 中有一个模型,你也可以将一个检查点从 PyTorch 转换成 Flax:

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

训练过程中推送模型

Pytorch

将模型共享到 Hub 非常简单,只需添加一个额外的参数或回调。记住,在微调教程中,TrainingArguments 类是指定超参数和其他训练选项的地方。其中一个训练选项包括将模型直接推送到 Hub 的能力。在你的训练中设置 push_to_hub=True 参数:

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

trainer.push_to_hub()

TensorFlow

用 PushToHubCallback 共享一个模型到 Hub,在 PushToHubCallback 函数中添加:

  • 模型的输出目录。
  • 一个标记器
  • hub_model_id Hub 用户名和模型名。
from transformers.keras.callbacks import PushToHubCallback

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

添加适合的回调,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")

如果您属于某个组织,并希望将您的模型放在组织名称下,请添加组织参数:

pt_model.push_to_hub("my-awesome-model", organization="my-awesome-org")

Push_to_hub 函数还可以用于向模型存储库添加其他文件。例如,在模型库中添加一个 tokenizer:

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

或者你也可以添加微调 PyTorch 模型的 TensorFlow 版本:

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

现在,当你导航到Hugging Face配置文件时,你应该看到你新创建的模型库。单击“文件”选项卡将显示已上传到存储库的所有文件。

有关如何创建和上传文件到存储库的更多详细信息,请参阅此处的 Hub 文档。

v通过网页界面上传

喜欢无代码方法的用户可以通过 Hub 的 web 界面上传模型。访问 google huggingface.co/new 创建一个新的知识库:

在这里插入图片描述

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

  • 选择存储库的所有者。这可以是您自己或您所属的任何组织。
  • 为您的模型选择一个名称,它也将是存储库名称。
  • 选择您的模型是公共的还是私有的。
  • 指定模型的许可证用法。

现在单击“文件”选项卡,然后单击“添加文件”按钮,将新文件上传到存储库。然后拖放一个文件来上传和添加提交消息。

在这里插入图片描述

添加一个模型卡片

为了确保用户了解您的模型的能力、局限性、潜在的偏见和道德考虑,请在存储库中添加一个示范卡片。模型卡片在 README.md 文件中定义。你可以通过以下方式添加一个模型卡片:

  • 手动创建并上传 README.md 文件。
  • 单击模型库中的 Edit model card 按钮。

看一下 DistilBert 模型卡片,它是一个模型卡片应该包含的信息类型的好例子。有关其他选项的详细信息,可以在 README.md 文件中进行控制,比如模型的碳足印或小部件示例,请参阅这里的文档。

本文是抱抱脸(Hugging Face)教程中文翻译,仅学习使用

[原文链接]https://huggingface.co/docs/transformers/main/en/model_sharing)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值