【便利】huggingface_hubによるファイルのダウンロード

【便利】huggingface_hubによるファイルのダウンロード プログラミング

「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.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年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の動作確認を説明しました。

タイトルとURLをコピーしました