Linux + Radeon RX 7800 XT での生成AIに関するメモその3
2025/10/29 時点のメモです。
Fedora 43 にアップグレードしたので環境を作り直しました。手元の Linux + 7800 XT での結果なので他の環境では異なる可能性があります。
この記事の更新版です。
調べた内容に基づいて随時更新しています。
-
comfy/sd.pyでの VAE 関連の修正を追加(2026/1/10)
動作環境
| 環境 | |
|---|---|
| CPU | Ryzen 5600G |
| メモリ | DDR4 3200 32GB |
| マザーボード | Asrock B450M-HDV |
| グラフィックボード | SAAPPHIRE PULSE AMD Radeon RX 7800 XT |
| OS | Fedora 43(ネイティブ実行) |
| GPU実行環境 | ROCm 6.4.3 (OS標準) |
準備
Python 3.13 と Python 3.10 を入れます(Fedora 43 の標準は Python 3.14 です)。
dnf install python3.13 python3.13-devel python3.10 python3.10-devel
ComfyUI
インストール
git でインストールして仮想環境を有効にします。
git clone https://github.com/comfyanonymous/ComfyUI
cd ComfyUI
python3.13 -m venv venv
. venv/bin/activate
2025/10/29時点では ROCm 用安定版の PyTorch 2.9 で問題ないので入れます。
pip install torch torchvision torchaudio pytorch-triton-rocm --index-url https://download.pytorch.org/whl/rocm6.4
必要なモジュールを入れます。
pip install -r requirements.txt
ComfyUI の修正
を参考に comfy/model_management.py について、ROCm と CUDA で異なる動作になっている箇所を同じ動作になるよう修正します。
311行目あたり
MIN_WEIGHT_MEMORY_RATIO = 0.4
if is_nvidia():
MIN_WEIGHT_MEMORY_RATIO = 0.0
を
MIN_WEIGHT_MEMORY_RATIO = 0.4
if is_nvidia() or is_amd():
MIN_WEIGHT_MEMORY_RATIO = 0.0
にします。
動作にほとんど影響はないようですが、VRAM の消費量について改善する可能性があります。意味がないようなので撤回(2025/11/9追加)。
1114行目あたり
def pytorch_attention_enabled_vae():
if is_amd():
return False # enabling pytorch attention on AMD currently causes crash when doing high res
return pytorch_attention_enabled()
を
def pytorch_attention_enabled_vae():
# if is_amd():
# return False # enabling pytorch attention on AMD currently causes crash when doing high res
return pytorch_attention_enabled()
にします。
高解像度で VAE を pytorch cross attention で動かすとクラッシュすると書いてありますが、pytorch 2.9.0+rocm6.4 では特に問題は起きていないので、VAE を split cross attention ではなく pytorch cross attention で動かすようにします。VAE の動作速度が大幅に改善するはずです。
comfy/sd.py の修正 (2026/1/10)
312行目あたりのclass VAEについて、
class VAE:
def __init__(self, sd=None, device=None, config=None, dtype=None, metadata=None):
if 'decoder.up_blocks.0.resnets.0.norm1.weight' in sd.keys(): #diffusers format
sd = diffusers_convert.convert_vae_state_dict(sd)
if model_management.is_amd():
VAE_KL_MEM_RATIO = 2.73
else:
VAE_KL_MEM_RATIO = 1.0
self.memory_used_encode = lambda shape, dtype: (1767 * shape[2] * shape[3]) * model_management.dtype_size(dtype) * VAE_KL_MEM_RATIO #These are for AutoencoderKL and need tweaking (should be lower)
self.memory_used_decode = lambda shape, dtype: (2178 * shape[2] * shape[3] * 64) * model_management.dtype_size(dtype) * VAE_KL_MEM_RATIO
VAE のエンコードやデコード時に AMD のみ 2.73 倍メモリを確保するようになっています。7800 XT では増やさなくても問題ないようなので次のように修正してください。
if model_management.is_amd():
VAE_KL_MEM_RATIO = 1.0
else:
VAE_KL_MEM_RATIO = 1.0
VAE エンコードやデコード時の VRAM の使用が減り、VRAM が足らなくなってタイル処理を行わなければならないことが減るので、高速化するはずです。
Flash Attention
ComfyUI 標準の pytorch cross attention より Unet や Text Encoder のVRAM の消費が減るはずですが、動作速度はあまり変わらないようです。pytorch cross attention で問題ないです(2025/11/9修正)。
こちらを参考にインストールします。
ROCm の方ではなく Flash Attention 公式からインストールします。
git clone https://github.com/Dao-AILab/flash-attention
cd flash-attention
pip install triton
FLASH_ATTENTION_TRITON_AMD_ENABLE="TRUE" python setup.py install
ComfyUI の起動時に環境変数の設定 FLASH_ATTENTION_TRITON_AMD_ENABLE="TRUE" が必要で、起動オプションに --use-flash-attention を指定する必要があります。
export FLASH_ATTENTION_TRITON_AMD_ENABLE="TRUE"
python main.py --use-flash-attention
Sage Attention
を参考に Sage Attention 1.0.6 を入れます。
インストールは
pip install sageattention==1.0.6
でできます。
そのままでは動かないので記事を参考にComfyUI-Zludaから
をダウンロードして、venv/lib/python3.13/site-packages/sageattention 以下のファイルと入れ替えます。
ComfyUI 起動時に--use-sage-attentionをつけてください。今のところ Sage Attention が一番速いようです(2025/11/10追記)。
アップスケーラーコードの修正
これを参考に comfy_extras/nodes_upscale_model.py を修正すると 4x-UltraShape.safetensors 等のアップスケーラーモデルでの拡大時に GPU で処理ができるので、速度が改善します。 改善しないどころか遅くなる場合もあるので撤回(2025/11/9追加)。
ROCm Ninodes
ROCm 特に Strix Halo 向けに最適化したカスタムノードのようです。7800 XT の場合、このノードを利用してもあまり変わらないように思います。
custom_nodes/ に移動して
git clone https://github.com/iGavroche/rocm-ninodes
でインストールできます(2025/11/10追加)。
キャッシュ管理
ComfyUI にはノードキャッシュとモデルキャッシュについて 4 つのオプションがあります。
- --cache-classic
Use the old style (aggressive) caching. - --cache-lru CACHE_LRU
Use LRU caching with a maximum of N node results cached. May use more RAM/VRAM. - --cache-none
Reduced RAM/VRAM usage at the expense of executing every node for each run. - --cache-ram
Use RAM pressure caching with the specified headroom threshold. If available RAM drops below the threhold the cache remove large items to free RAM. Default 4GB (2025/11/9追加)
7800 XT で Wan 2.2 I2V を動かそうとすると、モデルまたはキャッシュの管理に問題があるようで、途中で固まったり、1 回目は生成できても 2 回目の生成が失敗したりします。
どうもメインメモリが 32GB しかないのが原因のようで、ComfyUI の側の問題ではないような気がします(2025/10/29追記)。ROCm側の問題でメモリリーク?している感じがします(2025/11/9追記)。
とりあえず ComfyUI の起動オプションに。--cache-noneを付けると問題を回避できました。実行結果がキャッシュされないので、プロンプトの処理や VAE エンコード等を毎回実行することになりますが
--cache-ram 8.0で 8GB 程度余裕を持たせると問題ないようです(2025/11/10)
その他の ComyUI 起動オプション
- --fast fp16_accumulation
fp16_accumulation を有効にします。問題なく動くようですが動作は変わりません。 - --fast autotune
autotune を有効にします。問題なく動くようですが動作は変わりません。 - --fast
問題なく動くようですが動作が変化しているかよくわかりません。 - 環境変数
TORCH_ROCM_AOTRITON_ENABLE_EXPERIMENTAL=1
問題なく動きます。
現在使用している ComfyUI 起動オプション
次のオプションにしています(2025/11/10修正)。
export TORCH_ROCM_AOTRITON_ENABLE_EXPERIMENTAL=1
export FLASH_ATTENTION_TRITON_AMD_ENABLE="TRUE"
python main.py --auto-launch --cache-ram 8.0 --fast --disable-xformers --bf16-vae --use-sage-attention
LoRA作成(sd-scripts)
インストール
git で取得し sd3 ブランチに切り替え、pip 等で必要なモジュールをインストールします。
git clone https://github.com/kohya-ss/sd-scripts
cd sd-scripts
git switch sd3
pip install torch torchvision torchaudio pytorch-triton-rocm --index-url https://download.pytorch.org/whl/rocm6.4
pip install -r requirements.txt
pip install lycoris_lora
bitsandbyteが必要なので、
を参考に次のようにビルド&インストールします。
git clone https://github.com/ROCm/bitsandbytes/
cd bitsandbytes
cmake -DCOMPUTE_BACKEND=hip -DBNB_ROCM_ARCH="gfx1101"
cmake --build .
python setup.py install
cd ..
7800 XT は gfx1101 なのでこれを指定します。グラフィックボードとの対応関係は
次のページを参照してください。
実行
以前の記事を参考にしてください。
音声合成
Anime-Llasa-3B-Captions-Demoのローカル版フォークを入れます。
インストール
git clone https://github.com/asfdrwe/Anime-Llasa-3B-Captions-Demo
cd Anime-Llasa-3B-Captions-Demo
python3.13 -m venv venv
. venv/bin/activate
pip install torch torchaudio pytorch-triton-rocm --index-url https://download.pytorch.org/whl/rocm6.4
pip install -r requirements.txt
実行
VRAM 16GB なのでそのまま動きます。
python app.py
音楽生成
ACE-Stepのスタンドアロン版を入れます。Python 3.10 で動かします。
インストール
git で入れて必要なモジュールを入れます。
git clone https://github.com/ace-step/ACE-Step
cd ACE-Step
python3.10 -m venv venv
. venv/bin/activate
pip install torch torchvision torchaudio pytorch-triton-rocm --index-url https://download.pytorch.org/whl/rocm6.4
pip install -e .
pip install torchcodec triton
実行
TORCH_ROCM_AOTRITON_ENABLE_EXPERIMENTALを有効にし、torch compile と overlapped_decode を有効にして起動します。
export TORCH_ROCM_AOTRITON_ENABLE_EXPERIMENTAL=1
acestep --torch_compile true --overlapped_decode true
...
* Running on local URL: http://127.0.0.1:7865
* To create a public link, set `share=True` in `launch()`.
と表示されたら、ブラウザで http://127.0.0.1:7865 を開きます。
MIOpen が警告を出しますが問題なく生成されます。
...
MIOpen(HIP): Warning [IsEnoughWorkspace] [GetSolutionsFallback WTI] Solver <GemmFwdRest>, workspace required: 54525952, provided ptr: 0 size: 0
MIOpen(HIP): Warning [IsEnoughWorkspace] [EvaluateInvokers] Solver <GemmFwdRest>, workspace required: 54525952, provided ptr: 0 size: 0
...
triton のキャッシュ
~/.triton にキャッシュされるので、Attention の設定を変えた場合は削除しないと反映されない場合があります。
rm -rf ~/.tritron