「Hugging Faceで公開されているデモ環境のソースが欲しい」
「Hugging FaceへPythonからアクセスしたい」
このような場合には、huggingface_hubがオススメです。
この記事では、huggingface_hubについて解説しています。
本記事の内容
- huggingface_hubとは?
- huggingface_hubのシステム要件
- huggingface_hubのインストール
- huggingface_hubの動作確認
それでは、上記に沿って解説していきます。
huggingface_hubとは?
huggingface_hubとは、Hugging Face Hub用クライアントです。
Pythonライブラリであり、PythonからHugging Face Hubにアクセス可能となります。
もちろん、Hugging Faceの運営元が開発しています。
GitHubとGitの関係みたいなモノですね。
huggingface_hubを使えば、以下を簡単にダウンロード・アップロードできます。
- Models(モデル)
- Datasets(データセット)
- Spaces(アプリ)
huggingface_hubには、ドキュメントが用意されています。
Hub client library
https://huggingface.co/docs/huggingface_hub/index
ただ、普通はダウンロードで使うことが多いでしょう。
そのため、この記事ではダウンロードでの利用を前提に説明を行います。
以上、huggingface_hubについて説明しました。
次は、huggingface_hubのシステム要件を説明します。
huggingface_hubのシステム要件
現時点(2022年10月)でのhuggingface_hubの最新バージョンは、0.10.0となります。
この最新バージョンは、2022年9月28日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
huggingface_hubは、Pure PythonであるためにOSは問いません。
サポート対象となるPythonのバージョンは、Python 3.7以降と記載されています。
現状では、Python 3.7以降が適切なバージョンとなります。
それは、以下のPython公式開発サイクルをもとに判断できます。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
Python 3.6は、2021年末でサポート期限が切れています。
huggingface_hubのシステム要件は、Python 3.7以降だけ意識すればOKです。
以上、huggingface_hubのシステム要件を説明しました。
次は、huggingface_hubのインストールを説明します。
huggingface_hubのインストール
検証は、次のバージョンのPythonで行います。
> python -V Python 3.10.4
まずは、現状のインストール済みパッケージを確認しておきます。
> pip list Package Version ---------- ------- pip 22.2.2 setuptools 65.4.1 wheel 0.37.1
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、huggingface_hubのインストールです。
huggingface_hubのインストールは、以下のコマンドとなります。
pip install huggingface-hub
huggingface_hubのインストールは、すぐに終わります。
終了したら、どんなパッケージがインストールされたのかを確認します。
> pip list Package Version ------------------ --------- certifi 2022.9.24 charset-normalizer 2.1.1 colorama 0.4.5 filelock 3.8.0 huggingface-hub 0.10.0 idna 3.4 packaging 21.3 pip 22.2.2 pyparsing 3.0.9 PyYAML 6.0 requests 2.28.1 setuptools 65.4.1 tqdm 4.64.1 typing_extensions 4.3.0 urllib3 1.26.12 wheel 0.37.1
それなりに多くのパッケージがインストールされました。
huggingface_hubは、ダウンロードツールです。
そのため、それ専用にPython仮想環境にインストールした方が無難でしょうね。
Python仮想環境については、次の記事で説明しています。
以上、huggingface_hubのインストールを説明しました。
次は、huggingface_hubの動作確認を説明します。
huggingface_hubの動作確認
huggingface_hubの動作確認を行います。
主に、以下の機能を利用することになるでしょう。
- 指定したファイルのダウンロード
- リポジトリの全ファイルのダウンロード
それぞれを以下で説明します。
その際には、以下のページを対象にしてファイルを取得していきます。
https://huggingface.co/lysandre/arxiv-nlp/tree/main
指定したファイルのダウンロード
hf_hub_download関数は、ピンポイントでファイルを取得したい場合に利用します。
例えば、「config.json」を取得する必要があるとします。
その場合には、次のコードを利用します。
from huggingface_hub import hf_hub_download hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json", revision="main")
上記を実行すると、コンソールには以下のように表示されます。
Downloading: 100%|██████████| 554/554 [00:00<00:00, 283kB/s]
ファイルの保存先は、デフォルトではキャッシュの保存先となります。
実際には、以下の場所に保存されています。
C:\Users\username\.cache\huggingface\hub\models--lysandre--arxiv-nlp\snapshots\c7a2e68263d13db10671379c23cf2a8ea0e12789\config.json
「c7a2e68263d13db10671379c23cf2a8ea0e12789」は、revisionを示しています。
通常は、「main」を指定して安定版となる最新を指定することになるでしょう。
リポジトリの全ファイルのダウンロード
snapshot_download関数は、全ファイルを取得したい場合に利用します。
基本的には、hf_hub_download関数と同じです。
from huggingface_hub import snapshot_download snapshot_download(repo_id="lysandre/arxiv-nlp", revision="main")
上記コードを実行すると、そこそこ時間がかかります。
1GB以上は容量があるわけですからね。
では、保存先(hf_hub_downloadと同じ)を確認してみましょう。
確かに全ファイルを取得できています。
ただ、全ファイルとも0KBです。
「失敗だ!」と焦らずに、「.symlink」という表示に注目してみましょう。
これらはシンボリック・リンクに過ぎず、実体は以下の場所にあります。
C:\Users\username\.cache\huggingface\hub\models--lysandre--arxiv-nlp\blobs
なお、「.symlink」のファイルはコピーすると実体を伴うようになります。
以上、huggingface_hubの動作確認を説明しました。