【Python】Hugging Face からスペース全体をダウンロードする方法

 Hugging Faceは、機械学習について様々なことができるコミュニティサイトです。ここではモデル、データセットの他に学習結果を使ったデモも提供しており Hugging Face 内においてはこれらのデモはスペースと呼ばれています。この記事では、特定のスペースに含まれるファイル全体をダウンロードする方法を紹介します。

Hugging Face – The AI community building the future.

 huggingface_hubというライブラリを使用することで、Hugging Faceにモデル、データセット、デモなどを簡単にアップロード・ダウンロードできます。次リンクは huggingface_hub のリポジトリとドキュメントです。

huggingface/huggingface_hub: All the open source things related to the Hugging Face Hub.
🤗 Hub client library

 よくある Python のライブラリ同様に次コマンドでインストールできます。

pip install huggingface_hub

 次リンクはスペースからファイルをダウンロードするための機能についてのドキュメントです。

Download files from the Hub#download-an-entire-repository
Downloading files#huggingface_hub.snapshot_download

 これらのドキュメントに記載されている機能を使用して、特定のスペースに含まれるファイル全体をダウンロードするPythonコードを作ると次の様になります。

from huggingface_hub import snapshot_download

if __name__ == '__main__':
    # リポジトリのある時点における全体をダウンロードする関数である snapshot_download を使います。
    snapshot_download(
       # ダウンロードするリポジトリの名前です。
        repo_id="stabilityai/stable-diffusion",
        # リビジョン。通常は main でOKです。過去のバージョンや開発中のバージョンを取得したい場合は適宜変更する必要があります。
        revision="main",
        # リポジトリの種類。spaceを指定することでスペース全体をダウンロードできます。
        # モデルをダウンロードする場合は"model"、データセットをダウンロードする場合は"dataset"を指定します。
        repo_type="space",
        # ファイル群を保存するディレクトリを指定します。
        local_dir="./spaces/stabilityai/stable-diffusion",
        # ファイルを保存する方法を指定します。Trueにするとシンボリックリンクを使用します。
        # 意の場所にファイル実体を保存する目的ならば False にしておきます。
        local_dir_use_symlinks=False,
    )

 引数が気持ち面倒ですが、コードとしてはものすごくシンプルです。この Python コードを実行するだけでダウンロードが完了します。

 ダウンロードした後にデモをローカルで実行する方法ですが、それはデモの内容次第で変わります。依存が複雑でなく丁寧ものならば次の様に依存先ライブラリをインストールして実行することで起動できます。ダメな場合はエラーとにらめっこしながら必要なライブラリ、外部の依存、 Python のバージョン等々を解決して進みます。

# ダウンロードしたデモに移動
cd デモディレクトリ
# venv で新しく Python を用意。既存の環境と関わらないようにする
python -m venv ./
# 依存するライブラリをダウンロード
venv/Scripts/python -m pip install -r requirements.txt
# 起動
venv/Scripts/python app.py

 これでローカルで Hugging Hub にあるデモを概ね動かせます。動かせないものとしてはソースコードにすべてが書かれていないもの、認証が必要な外部に依存しているもの、などが挙げられます。とはいえ多くのデモは動きます。同じデモを違うモデルで動かしたかったり、ちょっとした機能を追加したりする場合はこんな感じでスペースをダウンロードして、ダウンロードしたコードを元になんやかんやするのが楽です。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG