框架与工具链1801 字

HuggingFace 模型发布与格式转换

·全库 315 / 611

《HuggingFace 模型发布与格式转换》共 0.2 万字,通篇围绕 微调、缓存、权限 展开,归在「框架与工具链」这一层。

覆盖微调缓存权限

适合要选技术栈、不想把别人踩过的坑重踩一遍的人

目录骨架(7 节)
  1. 模型发布
  2. 仓库功能
  3. 转换模型适用于所有框架
  4. 在训练过程中推送模型
  5. 使用`push_to_hub`功能
  6. 使用Web界面上传
  7. 添加模型卡片
目录 · 4 节

示例代码

注:将ppt后缀名改为zip后解压

模型发布

将您的模型发布到社区,在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
... )

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

(原文配图已失效)

设置

在将模型共享到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(请参阅此处的安装说明),然后在其他框架中找到适合您任务的特定模型。

指定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")

指定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")

资料里没有你的场景?

把你手上的数据和想解决的那个环节发上来,我们按具体情况回,不复述方法论。

发布需求