Hub Python Library documentation
GitとHTTPのパラダイム
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を使用することが可能になります。