返回介绍

数学基础

统计学习

深度学习

工具

Scala

七、分享预训练的模型

发布于 2023-07-17 23:38:23 字数 9847 浏览 0 评论 0 收藏 0

  1. 创建新的 model repository 的方法有以下三种:使用 push_to_hub API 、使用 huggingface_hubPython 库、使用 web 界面。

    创建 repository 后,你可以通过 gitgit-lfs 将文件上传到其中。

7.1 使用 push_to_hub API

  1. 首先登录 Hugging Face

    如果在notebook 中,可以使用以下函数登录:

    
    
    xxxxxxxxxx
    from huggingface_hub import notebook_login notebook_login()

    如果你在终端中,可以运行命令:

    
    
    xxxxxxxxxx
    huggingface-cli login

    在这两种情况下,系统都会提示你输入用户名和密码。

  2. 如果你使用 Trainer API 来训练一个模型,将其上传到 Hub 的最简单方法是:当定义 TrainingArguments 时设置 push_to_hub=True

    
    
    xxxxxxxxxx
    from transformers import TrainingArguments training_args = TrainingArguments( "bert-finetuned-mrpc", save_strategy="epoch", push_to_hub=True )

    当你调用 trainer.train() 时,Trainer 将在每次保存模型时,同时将模型上传到 Hub 中你的命名空间中的 repository。该repository 将命名为你选择的输出目录(此处 bert-finetuned-mrpc ) ,但是你也可以选择不同的名称,通过设置 hub_model_id = "a_different_name" 参数。

    要将模型上传到你所属的组织,只需将其传递给 hub_model_id = my_organization/my_repo_name

    训练结束后,你应该做最后的 trainer.push_to_hub() 上传模型的最新版本。它还将生成包含所有相关元数据的模型卡,报告使用的超参数和评估结果!以下是你可能会在此类模型卡中找到的内容示例:

  3. lower level ,可以通过模型、tokenizer 和配置对象的 push_to_hub() 方法直接访问 Model Hub 。此方法负责创建 repository 并将模型和 tokenizer 文件直接推送到 repository 。如:

    
    
    xxxxxxxxxx
    from transformers import AutoModelForMaskedLM, AutoTokenizer checkpoint = "camembert-base" model = AutoModelForMaskedLM.from_pretrained(checkpoint) tokenizer = AutoTokenizer.from_pretrained(checkpoint) ... model.push_to_hub("dummy-model") tokenizer.push_to_hub("dummy-model") # tokenizer.push_to_hub("dummy-model", organization="huggingface")

    如果你属于一个组织,只需指定 organization 参数 。

    如果你希望使用特定的 Hugging Face token ,你可以自由地将其指定给 push_to_hub() 方法 :

    
    
    xxxxxxxxxx
    tokenizer.push_to_hub("dummy-model", organization="huggingface", use_auth_token="<TOKEN>")

7.2 使用 huggingface_hub 的 Python 库

  1. 类似于使用push_to_hub API,首先要求你将API token 保存在缓存中。为此,需要在终端中运行命令 huggingface-cli login

  2. huggingface_hub package 提供了几种对我们有用的方法和类。首先,有几种方法可以管理存储库的创建、删除等:

    
    
    xxxxxxxxxx
    from huggingface_hub import ( # User management login, logout, whoami, # Repository creation and management create_repo, delete_repo, update_repo_visibility, # And some methods to retrieve/change information about the content list_models, list_datasets, list_metrics, list_repo_files, upload_file, delete_file, )

    此外,它还提供了非常强大的 Repository 类用于管理本地 repository

    create_repo 用于创建位于 hub 上的新 repository

    
    
    xxxxxxxxxx
    from huggingface_hub import create_repo create_repo("dummy-model") # create_repo("dummy-model", organization="huggingface")

    创建 repository 后,我们应该向其中添加文件。

7.3 使用 Web 界面

  1. Web 界面提供了直接在 Hub 中管理 repo 的工具。使用该界面,你可以轻松创建 repo 、添加文件(甚至是大文件)、探索模型、可视化差异等等。

    要创建新的 repo ,请访问https://huggingface.co/new

7.4 其它

  1. 上传模型文件:Hugging Face Hub 上的文件管理系统基于用于常规文件的 git 和 git-lfs 。可以通过 huggingface_hub 、以及通过 git命令来上传文件到 Hub

    • 通过 huggingface_hub :使用 upload_file 不需要系统上安装 gitgit-lfs。它使用 HTTP POST 请求将文件直接推送到 Hub。这种方法的一个限制是它不能处理大于 5GB 的文件。

      
      
      xxxxxxxxxx
      from huggingface_hub import upload_file upload_file( "<path_to_file>/config.json", path_in_repo="config.json", repo_id="<namespace>/dummy-model", )

      这将位于 <path_to_file> 下的 config.json 上传到 repository (由 <namespace>/dummy-model 指定)根目录下的 config.json

      其他可能有用的参数是:

      • token ,如果您想用给定的token 覆盖存储在缓存中的token
      • repo_type , 如果你想要上传一个 dataset 或一个 space 而不是模型。 接受的值为 "dataset""space"
    • Repository 类:以类似 git 的方式管理本地 repository 。它抽象了 git 可能遇到的大部分痛点,以提供我们需要的所有功能。使用这个类需要安装 gitgit-lfs,所以确保你已经安装了 git-lfs

      我们可以通过克隆远程 repo 将其初始化到本地文件夹开始:

      
      
      xxxxxxxxxx
      from huggingface_hub import Repository repo = Repository("<path_to_dummy_folder>", clone_from="<namespace>/dummy-model")

      这将在当前目录创建文件夹 <path_to_dummy_folder> 。接下来我们可以运行一些传统的 git 方法:

      
      
      xxxxxxxxxx
      repo.git_pull() repo.git_add() repo.git_commit() repo.git_push() repo.git_tag()
    • git-based 方法:这是上传文件的非常简单的方法:我们将直接使用 gitgit-lfs 来完成。

      首先从初始化 git-lfs 开始:

      
      
      xxxxxxxxxx
      git lfs install

      完成后,第一步是克隆您的模型 repository

      
      
      xxxxxxxxxx
      git clone https://huggingface.co/<namespace>/<your-model-id>

      接下来运行 Python 代码并保存模型或 tokenizer,然后执行 git add, git commit, git push 从而上传模型文件。

  2. Model Card:模型卡片是一个配置文件,可以说与模型和tokenizer 文件一样重要。它包含了模型的核心定义,确保了社区成员可以复现模型的结果,并提供一个其他成员可以在这个模型基础上构建他们的组件的平台。

    记录训练和评估过程有助于其他人了解模型的预期效果,并且提供有关所使用的数据以及预处理/后处理的足够信息,可确保能够识别和了解模型的局限性、 bias 以及 context

    创建模型卡片是通过 README.md 来实现的。模型卡片通常以非常简短的概述开始,说明模型的用途,然后是模型卡片需要的其他信息:模型描述、预期用途和限制、如何使用、局限性和 bias 、训练数据、训练程序、评价结果。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文