linux
machine_learning
HuggingFaceは言語処理や画像認識のためのTransofrmerモデルが多く入っているライブラリだ。 モデルの重みファイルも実行時に自動的にインターネット上のHuggingFace用のファイルサーバ (モデルハブなどと呼ばれる)から落としてきてくれるため、 使いやすい。
ところがこのモデルダウンロード機能が却って問題となるユースケースもある。 学習・推論環境にインターネットがない場合だ。 セキュリティのためにインターネットに繋がらない環境で学習を行わなければいけない場合・ または組み込みデバイスなどインターネットから切り離された機器にモデルをデプロイするとき などがこれに該当する。
このようなときは
- 事前にモデルファイルをネットのある環境で落として配置しておく
- 使うコードでモデルダウンロードをoffにする
- 事前に落としたファイルを参照先として設定する
モデルのダウンロードのためにはダウンロードツールhuggingface_hubを
pip install huggingface-hub
でインストールしておいてから、
Pythonで次のようなコードを実行する。
import huggingface_hub model_id = "CompVis/stable-diffusion-v1-4" # 落とすモデル名 local_dir = "./sd_local" # 保存先フォルダ名 huggingface_hub.snapshot_download(model_id, local_dir=local_dir, loca_dir_use_symlinks=False)
これでディレクトリ
sd_local
内にREADMEやmodel_index.json、そのほか
モデルの事態が配置されるはずだ。
重要なポイントは
loca_dir_use_symlinks=False
でシンボリックリンク
無効を設定することだ。
HuggingFaceのファイルは実はgit lfsでバージョン管理されている。このため
各スナップショットはデフォルトだとgitオブジェクトへのシンボリックリンク
となっている。シンボリックリンクを残したまま使うこともできるが、コピーして移動したりtgzに固めたりしたときに リンクがおかしくなることがあるので、シンボリックリンクでなく実体を つくるようにしておけば安心である。(ただしスナップショットごとに同じファイルをコピーしてしまったりも するので、ディスク容量的にはこの方が無駄が増えてしまうことにも留意する。)
おすすめ記事
PIL, NumPy, PyTorchのデータ相互変換早見表NumPyのarray.sizeに相当するのはPytorchのTensor.numel()
PyTorch Tensorを確実にNumpy Arrayに変換する