画像・音・文章の公開モデルを同じ venv に入れていくと、あるモデルのパッケージを入れた途端に、版の組み合わせが崩れて別のモデルが動かなくなることがあります。ROCm の環境で画像・効果音・音楽のモデルをいくつも動かす技術検証をしたとき、効果音と音楽のモデルのパッケージが、素直に入れるとそうなる物でした。そこで入れ方を分けて、組み合わせを守ることにしました。
結論
- 依存を細かく pin したパッケージは
--no-depsで入れます。MOSS-SoundEffect v2.0 のパッケージは numpy・transformers・diffusers など十数本を pin していて、素直に入れると画像用の diffusers と transformers 5.x が壊れます。 - transformers の版が噛み合わないモデルは venv を分けます。音楽の ACE-Step 1.5 は transformers
<4.58が要り、5.x と同居できません。 - torch 一式は版を固定し、ハッシュ付きで
--require-hashes --no-depsで入れます。固定しないと、執筆時点では torch 2.14.1 + torchvision 0.29.1 が入り、別の組み合わせになります。 - 素の
pip3は叩かず、<venv>/bin/pipを使います。pip は先に 26.2.1 に上げます。
試した環境
- GPU: AMD Radeon RX 7900 XT(gfx1100、VRAM 20 GiB)
- OS と ROCm: Ubuntu、ROCm 7.2.4
- torch 一式: torch 2.13.0+rocm7.2、torchvision 0.28.0+rocm7.2、torchaudio 2.11.0+rocm7.2、triton-rocm 3.7.1
- 画像側: diffusers 0.40.0.dev0(git の版)、transformers 5.15.0
- Python 3.12 の venv
何が壊れるか
moss_soundeffect_v2(MOSS-SoundEffect v2.0 のパッケージ)は、numpy==1.26.4・transformers==4.57.1・diffusers==0.37.1・gradio==6.11.0 ほか十数本を pin しています。画像用の venv には diffusers の git の版(0.40.0.dev0)と transformers 5.15.0 が入っているので、素直に入れると、これらが pin の版に入れ替わって画像のモデルが動かなくなります。

pin の多いパッケージは --no-deps で
moss_soundeffect_v2 は、依存を解かずに入れます。依存は、venv に既にある版を使わせます。
<venv>/bin/pip install --no-deps -e <MOSS-TTS のソース>/moss_soundeffect_v2
噛み合わない物は venv を分ける
--no-deps で済まないのが、transformers の版そのものが噛み合わない場合です。ACE-Step 1.5 は transformers <4.58 が要り、画像側の 5.x とは同居できません。そこで venv を2本に分けました。
| venv | 用途 | 分けている理由 |
|---|---|---|
| 画像用 | 画像生成・効果音・画像を見る VL・音のタグ付け・3D と文章 | diffusers の git の版と transformers 5.x が要る |
| 音楽用 | 音楽生成(ACE-Step 1.5) | transformers <4.58 が要り、5.x と同居できない |
torch 一式は、2本とも同じ wheel です。どちらの venv で起こすかは、生成を起こすスクリプトがコマンドで振り分けるようにしました。
torch の版と pip
torch は版を固定しないと、そのとき新しい物が入ります(執筆時点では torch 2.14.1 が入ります)。私たちは torch 一式4本をハッシュ付きの要件ファイルにし、<venv>/bin/pip install -r <要件ファイル> --require-hashes --no-deps で入れました(--require-hashes は依存にもハッシュを求めるので --no-deps を付けます)。
pip は素の pip3 を叩かず、必ず <venv>/bin/pip を使います。私たちの環境では、素の pip3 だと ~/.local に入り、別の利用者からは見えなくなります。venv の既定の pip 24.0 は切れたダウンロードを再開できないので、先に 26.2.1 に上げてから torch を入れます。
おわりに
モデルのパッケージを足すときは、まず何を pin しているかを見てください。pin が多ければ --no-deps、transformers のような柱の版が噛み合わなければ venv を分ける、と決めておくと、組み合わせが崩れにくくなります。
※ 各パッケージの pin と、pip・PyTorch の index の振る舞いは執筆時点の物で、いまは変わっている可能性があります。


