Hub Python Library documentation

GitとHTTPのパラダイム

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v2.4.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

GitとHTTPのパラダイム

huggingface_hub ライブラリは、git ベースのリポジトリ(モデル、データセット、Spaces)のコレクションである Hugging Face Hub とのやり取りを行うためのライブラリです。huggingface_hub を使用して Hub にアクセスするには、主に2つの方法があります。

最初の手法であるいわゆる「git ベース」の手法は、ターミナルで標準的な git コマンドを直接使用することに基づいています。この方法では、リポジトリのクローン作成、コミットの作成、変更のプッシュを手動で行うことができます。2 つ目の選択肢である「HTTP ベース」の手法は、HfApi クライアントを使用して HTTP リクエストを行うことを指します。それぞれの手法の長所と短所を検討してみましょう。

Git: 従来のCLIベースのアプローチ

当初、ほとんどのユーザーは、git コマンド(git clone、git add、git commit、git push、git tag、git checkout など)を直接使用して Hugging Face Hub とやり取りしていました。

このアプローチにより、従来のソフトウェア開発と同様に、リポジトリの完全なローカルコピーをマシン上で扱うことができます。オフラインでのアクセスが必要な場合や、リポジトリの完全な履歴を扱う必要がある場合には、これが利点となります。ただし、デメリットもあります。リポジトリをローカルで最新の状態に保つこと、認証情報の管理、そして大規模なファイルの管理(git-lfs を通じて)があなた自身の責任となり、大規模な機械学習モデルやデータセットを扱う際には煩雑になる可能性があります。

多くの機械学習ワークフローでは、推論のために数ファイルのみをダウンロードしたり、リポジトリ全体をクローンせずに重みをコンバートしたりするだけで済む場合があります。そのような場合、git を使用することは大げさであり、不要な複雑さを生み出す可能性があります。

HfApi: 柔軟で便利なHTTPクライアント

HfApi クラスは、ローカル git リポジトリの使用という代替手段として開発されました。ローカル git リポジトリは、特に大規模なモデルやデータセットを扱う場合に、メンテナンスが煩雑になりがちです。HfApi クラスは、git ベースのワークフローと同様の機能(ファイルのダウンロードとプッシュ、ブランチとタグの作成など)を提供しますが、同期を維持する必要があるローカルフォルダは不要です。

gitがすでに提供する機能に加えて、HfApiクラスは、リポジトリの管理、キャッシュを活用したファイルのダウンロードによる効率的な再利用、Hub上でのリポジトリおよびメタデータの検索、ディスカッションやPR、コメントなどのコミュニティ機能へのアクセス、Spacesのハードウェアやシークレットの設定といった追加の機能を提供します。

何を、いつ使うべきですか?

全体として、huggingface_hub を利用する推奨方法は、すべてのケースにおいてHTTP ベースのアプローチです。HfApi を使用すると、変更の取得とプッシュ、PR・タグ・ブランチの管理、ディスカッションへの参加など、多くの操作を行うことができます。

ただし、すべての git コマンドが HfApi 経由で利用可能というわけではありません。一部のコマンドは実装されない可能性もありますが、私たちは常に改善し、このギャップを縮めるよう努めています。ご自身のユースケースがカバーされていない場合は、GitHub で issue を作成してください。ユーザーの皆様とともに、またユーザーの皆様のために HF エコシステムを構築するため、フィードバックを歓迎します。

HTTPベースのHfApiを、直接のgitコマンドよりも優先する傾向は、Hugging Face Hubからgitによるバージョン管理がすぐには消えることを意味しません。gitが有効なワークフローでは、引き続きローカルでgitを使用することが可能になります。

Update on GitHub