Hub documentation

モデルのアップロード

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

モデルのアップロード

Hubにモデルをアップロードするには、Hugging Faceでアカウントを作成する必要があります。Hub上のモデルはGitベースのリポジトリであり、バージョン管理、ブランチ、検索可能性、共有機能、数十のライブラリとの統合など、多くの機能を提供します。リポジトリにアップロードする内容は自由に制御でき、チェックポイント、設定ファイル、その他のファイルを含めることができます。

リポジトリは、osanseviero/fashion_brands_patterns のような個人ユーザーや、facebook/bart-large-xsum のような組織にリンクできます。組織は、企業、コミュニティ、またはライブラリに関連するモデルをまとめることができます。組織を選択した場合、そのモデルは組織のページに紹介され、組織のすべてのメンバーがリポジトリに貢献できるようになります。新しい組織はこちらで作成できます。

注: ダウンロード指標を取得するには、モデルがTransformers/Diffusersライブラリと互換性がある必要はありません。カスタムモデルもサポートされています。詳細は以下を参照してください!

モデルをハブに適切に統合し、ダウンロード指標を取得するには、いくつかの方法があります。以下に説明します。

  • モデルが組み込みサポートを提供するライブラリ向けに設計されている場合、そのライブラリが提供するメソッドを使用できます。trust_remote_code=True を使用するカスタムモデルも、これらのメソッドを利用できます。
  • モデルがカスタムのPyTorchモデルである場合、Transformers、Diffusers、Timmライブラリのモデルと同様に、nn.Moduleクラスにfrom_pretrainedやpush_to_hubを追加できるため、PyTorchModelHubMixinクラスを活用できます。
  • プログラマティックなアップロードに加えて、Webインターフェースまたはgitコマンドラインをいつでも使用できます。

モデルがアップロードされたら、リポジトリにModel Cardを追加して、モデルをドキュメント化し、発見しやすくすることを推奨します。

drawing Example [repository](https://huggingface.co/LiheYoung/depth_anything_vitl14) that leverages [PyTorchModelHubMixin](#upload-a-pytorch-model-using-huggingfacehub). Downloads are shown on the right.

Webインターフェースの使用

新しいモデルリポジトリを作成するには、huggingface.co/newにアクセスしてください。その後、以下の手順に従ってください。

  1. 「Files and versions」タブで、「Add File」を選択し、「Upload File」を指定します:
  1. そこから、アップロードするファイルをコンピュータから選択し、アップロードする内容が分かるよう、役立つコミットメッセージを残します:
  1. その後、Commit changes をクリックして、モデルを Hub にアップロードしてください!

  2. ファイルと履歴を確認する

最近追加されたすべてのファイルを含むリポジトリを確認できます!

UIでは、モデルファイルとコミットを探索し、各コミットによって導入された差分を確認できます:

  1. メタデータを追加

モデルカードにメタデータを追加できます。指定できる項目は以下の通りです:

  • このモデルが対象とするタスクの種類を指定し、ウィジェットとInference Providersを有効にします。
  • 使用されるライブラリ(transformers、spaCyなど)
  • 言語
  • データセット
  • メトリクス
  • ライセンス
  • さらにたくさん!

モデルタグの詳細については、こちらをご覧ください。

  1. TensorBoardのトレースを追加する

tfevents を含むファイル名を持つ TensorBoard のトレースを含むリポジトリは、TensorBoard タグ で分類されます。慣例として、トレースは runs/ サブフォルダー以下に保存することをお勧めします。これにより、「Training metrics」タブで、loss や accuracy などの記録された変数のチャートを簡単に確認できます。

🤗 Transformersで学習されたモデルは、tensorboardがインストールされている場合、デフォルトでTensorBoardトレースを生成します。

ビルトインサポート付きライブラリからアップロード

まず、Transformers、Diffusers、Timm、Asteroid など、Hub へのプッシュ/ロードをネイティブでサポートしているライブラリ由来のモデルかどうかを確認してください: https://huggingface.co/docs/hub/models-libraries。以下では、Transformers のようなライブラリでこれがどれだけ簡単かを示します:

from transformers import BertConfig, BertModel

config = BertConfig()
model = BertModel(config)

model.push_to_hub("nielsr/my-awesome-bert-model")

# reload
model = BertModel.from_pretrained("nielsr/my-awesome-bert-model")

Transformers などの一部のライブラリは、Hub からのコードの読み込みをサポートしています。これは、trust_remote_code=True フラグを使用して、モデルを Transformers で動作させるための方法です。完全なライブラリ統合の代わりに、このオプションを検討することをお勧めします。

huggingface_hubを使用してPyTorchモデルをアップロードする

モデルが(カスタムの)PyTorch モデルである場合、huggingface_hub Python ライブラリで利用可能なPyTorchModelHubMixin クラスを活用できます。これは最小限のクラスであり、ダウンロードメトリクスとともに、任意のnn.Moduleにfrom_pretrainedおよびpush_to_hubの機能を追加します。

pip install huggingface_hubを実行したと仮定して、使用方法は以下の通りです。

import torch
import torch.nn as nn
from huggingface_hub import PyTorchModelHubMixin


class MyModel(
    nn.Module,
    PyTorchModelHubMixin, 
    # optionally, you can add metadata which gets pushed to the model card
    repo_url="your-repo-url",
    pipeline_tag="text-to-image",
    license="mit",
):
    def __init__(self, num_channels: int, hidden_size: int, num_classes: int):
        super().__init__()
        self.param = nn.Parameter(torch.rand(num_channels, hidden_size))
        self.linear = nn.Linear(hidden_size, num_classes)

    def forward(self, x):
        return self.linear(x + self.param)

# create model
config = {"num_channels": 3, "hidden_size": 32, "num_classes": 10}
model = MyModel(**config)

# save locally
model.save_pretrained("my-awesome-model")

# push to the hub
model.push_to_hub("your-hf-username/my-awesome-model")

# reload
model = MyModel.from_pretrained("your-hf-username/my-awesome-model")

ご覧のとおり、唯一の要件は、モデルがPyTorchModelHubMixinを継承していることです。すべてのインスタンス属性は、自動的にconfig.jsonファイルにシリアライズされます。なお、initメソッドは、JSONでシリアライズ可能な引数のみを引数として受け取れます。Pythonのdataclassesはサポートされています。

これには自動的なダウンロード指標が備わっており、Transformers、Diffusers、Timm ライブラリにネイティブで統合されたモデルと同様に、モデルが何回ダウンロードされたかを確認できます。このミックスインクラスを使用すると、各チェックポイントは2つのファイルからなる単一のリポジトリとして Hub に保存されます。

  • 重みを格納したpytorch_model.binまたはmodel.safetensorsファイル
  • config.jsonファイルは、モデル設定のシリアライズされたバージョンです。このクラスはダウンロード指標の集計に使用されます。ユーザーがfrom_pretrainedを呼び出してconfig.jsonを読み込むたびに、カウントが1増加します。自動ダウンロード指標については、このガイドを参照してください。

各チェックポイントにモデルカードを追加することをお勧めします。これにより、モデルの内容について知ることができ、論文へのリンクなども確認できます。

詳細については、huggingface_hub のドキュメントをご覧ください。

代わりに、ファイルやフォルダをハブにプログラムでアップロードすることもできます: https://huggingface.co/docs/huggingface_hub/guides/upload。

Gitの使用

最後に、モデルのリポジトリは単なる Git リポジトリであるため、Git を使用してモデルファイルを Hub にプッシュすることもできます。リポジトリの入門のガイドに従い、git CLI を使用してモデルをコミットおよびプッシュする方法を学習してください。

Update on GitHub