Fairseqを利用したRVCアプリのGradio v5アップグレードに伴う依存関係エラーとその対策
要旨
- 目的:Hugging Face Spaces 上の RVC アプリで Gradio を v3 から v5 へ更新。
- 事象:pip install 時に omegaconf==2.0.6 の依存関係エラーでビルド失敗。
- 結論:根本原因は開発停止した fairseq の古い依存関係。回避策として pip のバージョンを固定して対応。
問題
まずローカルでアプリの Gradio を v3 から v5 に更新、動作確認を行った。
そして次のコマンドを実行し、Hugging Face Spaces 用に requirements.txt を生成した。
uv pip compile pyproject.toml -o requirements.txt
これらの変更を Hugging Face にプッシュしたところ、ビルド時に次のエラーが発生した。
WARNING: Ignoring version 2.0.6 of omegaconf since it has invalid metadata:...Please use pip<24.1 if you need to use this version....ERROR: No matching distribution found for omegaconf==2.0.6
原因
直接的な原因は、Hugging Face 環境のデフォルト pip(24.1 以上)が、omegaconf 2.0.6 の古いパッケージメタデータ(.* suffix
)を不正として処理、同バージョンを無視するためインストール失敗することであるとエラーから推測できる。
一方、requiments.txt を見ると fairseq 0.12.2 が hydra-core 1.0.7 に依存し、hydra-core 1.0.7 が omegaconf 2.0.6 が依存していることが分かる。つまり根本的な原因は Hugging Face 環境の pip の更新により fairseq 0.12.2 が抱えていた古い依存関係の問題が顕在化したことだと考えられる。
回避策:pip のバージョン固定
Huggin Face Spaces ではpre-requirements.txt
を作成し、次のように pip などのバージョンを指定できる。
pip<24.1
この変更を実際に試すと、アプリのビルドが成功することが確認できた。
根本的な解決の探求
omegaconf
のメタデータ問題はバージョン 2.3.0 以降で解消されている。
そこで、omegaconf
のバージョンを 2.3.0 以降に指定することで解消できないか試みた。しかし、fairseq
及びhydra-core
は 2.1 未満のomegaconf
に依存しているため、次のように依存関係のコンフリクトが発生する。
fairseq 0.12.2 depends on omegaconf<2.1 hydra-core 1.0.7 depends on omegaconf<2.1 and >=2.0.
さらに、fairseq
ライブラリ自体の開発が長らく停止しているため、新しい omegaconf に対応した fairseq の公式リリースは今後も期待できない。
結論
fairseq
が開発停止しているため、依存関係の根本解決はfairseq
を利用し続ける限り不可能。現実的な解として、回避策である pip のバージョン固定が最適と判断した。
余裕があればfairseq
の代替として、 公式の後継であるfairseq2
や Hugging Face のtransformers
などがあるため、これらへの移行を検討したい。