diffusers や transformers で書かれたモデルの公式手順や例は、CUDA(NVIDIA の GPU)前提で書かれていることが多くあります。そうしたモデルを AMD の GPU(ROCm)で試す技術検証では、手順をそのまま踏むと CUDA 版の torch が入って ROCm の環境が壊れる所や、生成が終わった後の保存で落ちる所が多くありました。私たちが避けた物と、代わりに使った物をまとめます。
結論
- 公式手順の
--extra-index-url …/cu128、公式の torch-runtime、CUDA 版の torch を pin した requirements.txt は踏みません。ACE-Step 1.5 はrequirements-rocm-linux.txtを使います。 - flash-attn と xformers は入れません。注意(attention)は
attn_implementation="sdpa"で足りました。 - torchcodec は ROCm には無いので、音は soundfile で wav に書き、librosa で読みます。
- gfx1100 では
HSA_OVERRIDE_GFX_VERSIONは通常要りません。torch.cuda.is_available()が False なら、利用者が render と video のグループにいるかを見ます。
試した環境
- GPU: AMD Radeon RX 7900 XT(gfx1100、VRAM 20 GiB)
- OS と ROCm: Ubuntu、ROCm 7.2.4
- ライブラリ: torch 2.13.0+rocm7.2、diffusers 0.40.0.dev0、transformers 5.15.0
- モデル: FLUX.2-klein-4B、Qwen-Image-Edit-2511、MOSS-SoundEffect v2.0、MOSS-Audio、ACE-Step 1.5、Qwen3-VL-8B
踏まない物と代わりの物
次の表は、踏まなかった物と、代わりに使った物です。
| 踏まない物 | 代わりに使う物 | 理由 |
|---|---|---|
--extra-index-url …/cu128・公式の torch-runtime | ROCm 版の torch(版を固定して入れる) | CUDA 版の torch が入り、ROCm の環境が壊れる |
ACE-Step 1.5 の requirements.txt(torch==2.10.0+cu128 を pin) | requirements-rocm-linux.txt | 同上 |
| flash-attn・xformers | attn_implementation="sdpa" | flash-attn は RDNA3 でハングするという報告がある(未検証)。xformers の ROCm 公式イメージは MI 系向け |
| torchcodec | soundfile(書く)・librosa(読む) | ROCm には無く、保存や読み込みで落ちる |
どれも、公式の手順や例の通りに打つと入ってくる物です。以下で1つずつ見ます。

CUDA 版の torch が入る道
公式手順には、--extra-index-url …/cu128 を付けて入れるように書かれていたり、公式の torch-runtime を使うように書かれていたりします。ACE-Step 1.5 の requirements.txt は torch==2.10.0+cu128 を pin しています。これらを踏むと CUDA 版の torch が入り、ROCm の環境が壊れます。
ACE-Step 1.5 には ROCm 向けの requirements-rocm-linux.txt があるので、そちらを使います。torch そのものは ROCm 版の版を固定して入れ、ほかのパッケージの依存で入れ替わらないようにしました。
flash-attn と xformers は入れない
flash-attention には、RDNA3 でハングするという報告があります。xformers の ROCm の公式イメージは MI 系向けです。どちらも私たちの環境では入れておらず、試してもいません。
注意の計算は、attn_implementation="sdpa" で足りました。
生成が終わったのに保存で落ちる
torchcodec は ROCm には無いので、torchcodec を使う所で落ちます。私たちが踏んだのは次の3つです。
save_audio()での保存- mp3 での出力
- MOSS-Audio の音の読み込み(
src.audio_io)
生成そのものは進むので、最後まで待ってから落ちることになります。音は soundfile で wav に書き、読むときは librosa を使います。
import soundfile as sf
import librosa
sf.write("out.wav", audio, sample_rate) # 書くのは wav に
y, sr = librosa.load("in.wav", sr=None) # 読むのは librosa で
GPU が見えないとき
torch.cuda.is_available() が False になるときは、生成を走らせる利用者が render と video のグループに入っているかを見ます。入れたら、再ログインして効かせます。サービス用の利用者や別の利用者を新しく作ったときも同じです。
sudo usermod -aG render,video <利用者>
# 再ログインしてから
python -c 'import torch; print(torch.cuda.is_available())'
HSA_OVERRIDE_GFX_VERSION は、gfx1100 は公式に対応しているので通常は要りません。GPU を検出できないときだけ 11.0.0 を試します。ただし私たちの環境では、音楽の生成(ACE-Step 1.5)を起こすときだけは、GPU を検出できるかにかかわらず毎回 HSA_OVERRIDE_GFX_VERSION=11.0.0 を付けて起こしました。
確かめていないこと
- flash-attention が RDNA3 でハングするという報告(入れておらず、試していません)。
- ACE-Step 1.5 は ROCm では dtype が既定で float32 になります(ログに
set ACESTEP_ROCM_DTYPE=bfloat16 or float16 to overrideと出ます)。ACESTEP_ROCM_DTYPE=float16が効かないという他の人の報告(Windows 11 + ROCm 7.2)もありますが、私たちの環境では試していません。
おわりに
公式手順を ROCm の環境で踏むときは、CUDA の index や CUDA 版の pin が混ざっていないかを先に見てください。注意の計算と音の入出力は、sdpa と soundfile・librosa で置き換えれば足りました。
※ 各モデルの公式手順と、PyTorch・torchcodec の ROCm への対応は執筆時点の物で、いまは変わっている可能性があります。


