Hub documentation

次のステップ

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

次のステップ

次のセクションでは、Hugging Face Hub上のGitリポジトリを最大限に活用するために役立つ機能や追加情報を紹介します。

リポジトリをプログラムで管理する方法

Hugging Face は、huggingface_hub ライブラリ を通じた Python でのリポジトリへのアクセスをサポートしています。リポジトリのダウンロードやファイルのアップロードなど、これまで見てきた操作は、このライブラリを通じて利用可能であり、他にも便利な機能が用意されています。

gitを直接使用する場合は、以下のセクションをお読みください。

Gitについてさらに詳しく

Gitの学習を続けたい場合、このGitチュートリアルがおすすめです。Gitに関するより詳しい背景知識を得たい場合は、GitHubのGitガイドをご覧ください。

ブランチの使用方法

Git リポジトリを効果的に共同利用し、未完成のコードを公開せずに機能の開発を進めるには、ブランチを使用できます。ブランチを使用すると、「作業中」のコードと「本番環境で利用可能」なコードを分離でき、さらに複数の人がプロジェクトに貢献しても、頻繁に競合が発生しにくいという利点もあります。ブランチを使用して実験を独自のブランチに分離したり、ブランチ管理のためのチーム全体の慣行を採用したりすることもできます。

Gitのブランチについて学ぶには、Learn Git Branching インタラクティブチュートリアルを試すことができます。

タグの使用

Gitでは、コミットにタグを付けることで、プロジェクトのマイルストーンを簡単に記録できます。同様に、Hubのリポジトリ内のコミットにタグを付けることもできます。タグの使い方については、このDevConnectedの投稿をご覧ください。

リポジトリの履歴から重要なコミットを特定しやすくなるだけでなく、Git タグを使用することで A/B テストの実行や、特定のタグでリポジトリをクローンすることも可能になります。huggingface_hub ライブラリもタグでの操作をサポートしており、特定のタグ付きコミットからファイルをダウンロードすることもできます。

リポジトリの複製方法

Gitの履歴を保持する必要があるかどうかによって、リポジトリを複製する方法はいくつかあります。

Hubからの複製

リポジトリページの右上にある3点リーダーをクリックし、このモデルを複製、このデータセットを複製、またはこのSpaceを複製を選択します。Xetの重複排除技術を使用しているため、この操作はほぼ瞬時に完了します。以下の項目を選択できます:

  • オーナー: 書き込みアクセス権限を持つあなたのアカウントまたは組織。
  • リポジトリ名: 複製されるリポジトリの名前です。デフォルトでは、ソースと同じ名前が、あなたのネームスペースの下に保持されます(例: bigscience/bloom-560m を複製すると、your-username/bloom-560m が作成されます)。
  • 公開範囲: 複製したリポジトリを公開または非公開に設定できます。プライベートリポジトリの詳細については、こちらをご覧ください。

モデルとデータセットの場合、Git の履歴は単一のコミットにまとめられます。Spaces の場合、Git の履歴全体が保持されます。Spaces については、公開変数がコピーされますが、シークレットは手動で再入力する必要があります。

制限事項

一部のリポジトリは複製できません:

  • ゲート付きリポジトリ(アクセスリクエストが有効化されているモデルまたはデータセット)。
  • 作成者が重複の無効化を設定したリポジトリ。
  • リージョン間での複製はサポートされていません(例:USリージョンに保存されているリポジトリをEUの組織に複製することはできません)。

プログラムによる複製

huggingface_hub ライブラリまたは CLI を使用してリポジトリを複製することもできます。これらは、上記の Hub ボタンと同じサーバーサイド API を使用します(モデルとデータセットでは Git の履歴がフラット化され、Spaces では保持されます)。

Python を使用する場合:

from huggingface_hub import duplicate_repo

duplicate_repo("bigscience/bloom-560m", private=False)
duplicate_repo("openai/gdpval", repo_type="dataset")
duplicate_repo("multimodalart/dreambooth-training", repo_type="space", private=False)

または、CLIを使用します:

hf repos duplicate bigscience/bloom-560m
hf repos duplicate openai/gdpval --type dataset

Spaces については、ご自身で設定(ハードウェア、スリープ時間、ストレージ、変数とシークレット)を行う必要があります。詳細については、Space の管理ガイドを参照してください。

代わりに、リポジトリのローカルコピーを保持したい場合は、hf download を使用してダウンロードし、その後 hf upload を使用して別のネームスペースにアップロードできます。この方法でも Git の履歴は保持されません。

Git を使用して手動でフォークする

モデル/データセットのGit履歴を保持する必要がある場合、またはプロセスをより詳細に制御したい場合(例: 独自の変更の上にrebaseする)には、Gitを使用してリポジトリを手動でフォークできます。

git-xet のインストールが必要です。LFS ファイルをすべて取得して再アップロードする必要があるため、帯域幅によってはフォークに時間がかかる場合があります(ただし、Xet により再アップロードは高速に行われます)。

  1. https://huggingface.co にデスティネーションリポジトリ(例: me/myfork)を作成します

  2. クローンし、ソースのリポジトリをリモートとして追加します:

git clone git@hf.co:me/myfork
cd myfork
git xet install
git remote add upstream git@hf.co:friend/upstream
git fetch upstream
git lfs fetch --all upstream
  1. フォークの内容をアップストリームの履歴に置き換えます:
git reset --hard upstream/main
  1. プッシュ:
git push --force origin main
Update on GitHub