ArtificialGuyBR

Home / Blog / Fixing things

ROCm para Stable Diffusion na AMD: Limites, Falhas, VRAM

Guia de instalação do ROCm para Stable Diffusion na AMD: GPUs suportadas, lacunas no Windows e técnicas de redução de VRAM.

9 sources cited Fixing things

Stable Diffusion na AMD: Limites da ROCm, Lacunas da CUDA e Redução de VRAM

TL;DR

  • ROCm no Linux funciona para Stable Diffusion em um conjunto restrito de GPUs Radeon oficiais (RX 7600/7700/7800/7900, RX 9060/9070, PRO W6800/W7700/W7800/W7900). Placas de consumo RX 6000 não são oficialmente suportadas.
  • Windows ROCm não tem frameworks de IA, bibliotecas de IA e bibliotecas de comunicação — não pode executar PyTorch ou TensorFlow.
  • HiRes Fix e ADetailer são extensões agnósticas de GPU que melhoram a qualidade da saída independentemente de CUDA ou ROCm.
  • Valores decimais HSA_OVERRIDE_GFX_VERSION (10.3.0, 11.0.0) de guias comunitários não estão nos documentos oficiais da ROCm, que usam notação gfx1030/gfx1100.
  • xformers flash-attention na AMD é limitado a aceleradores Instinct MI2xx/MI3xx; suporte para Radeon de consumo permanece experimental.
  • Arch Linux não está na matriz de suporte oficial da ROCm, apesar de guias comunitários afirmarem o contrário.

Quais GPUs da AMD a ROCm Suporta Realmente?

A ROCm 7.14 oficial suporta estas GPUs Radeon no Linux e no Windows (matriz de compatibilidade): Família GPU | Alvo GFX | Cartões de Exemplo | Fonte

Placas ausentes desta lista incluem RX 6600, RX 6650 XT, RX 6700 XT, RX 6800 XT, RX 6800 GRE, RX 6900 XT, RX 6950 XT — toda a linha de jogos RX 6000 RDNA2. O projeto TheRock oferece builds noturnas comunitárias para estas GPUs ausentes (SUPPORTED_GPUS.md), mas são explicitamente não verificadas: instalações via pip funcionam, mas enumeração de dispositivos, lançamento de kernel ou carregamento de bibliotecas podem falhar em tempo de execução.

As distribuições Linux suportadas não incluem Arch Linux, Manjaro ou qualquer variante Arch — apenas Ubuntu, Debian, RHEL, SLES, Rocky Linux e Oracle Linux.

ROCm vs CUDA: O Que Falta no Windows

O SDK HIP da AMD para Windows é um subconjunto do ROCm completo: Componente | Linux | Windows | Fonte

|---|---|---|---

Runtime (HIP) | Código aberto | Código fechado | Suporte do Windows Bibliotecas de IA (MIOpen, MIGraphX) | Suportado | Não disponível | Suporte do Windows Bibliotecas de Comunicação (RCCL) | Suportado | Não disponível | Suporte do Windows Frameworks de IA (PyTorch, TensorFlow) | Suportado | Não disponível | Suporte do Windows Ferramentas de Portagem (HIPIFY) | Suportado | Suportado | Suporte do Windows

Você não pode executar Stable Diffusion via PyTorch no Windows ROCm. Se sua intenção é geração de imagens por IA em uma GPU AMD, o Linux é o único caminho viável.

No Linux, as rodas PyTorch da ROCm estão disponíveis para PyTorch 2.10.0–2.12.0, direcionadas ao Python 3.11–3.14, com extras específicos de GFX como [device-gfx1100] para placas da série RX 7900.

HiRes Fix: Como Funciona

HiRes Fix gera uma imagem na resolução base (tipicamente 512×768), depois a faz upscale e a envia para uma segunda passagem img2img. O ComfyUI documenta isso como: "Hires fix é criar uma imagem em uma resolução menor, fazer upscale e então enviá-la através do img2img."

Uma configuração típica usa força de desruído em torno de 0.35, um fator de upscale de 2× e um upscaler de espaço de pixels como 8x_NMKD-Superscale_150000_G. Para upscale latente (o padrão do WebUI), a imagem permanece no espaço latente durante o upscale. Para upscale baseado em ESRGAN, a imagem deve converter do espaço latente para o espaço de pixels e vice-versa.

ADetailer: Correção Automática de Rostos e Mãos

ADetailer automatiza inpainting manual em três etapas: (1) gerar a imagem, (2) executar um modelo de detecção YOLO para localizar rostos/mãos/pessoas e criar uma máscara, (3) inpintar a região mascarada em resolução total da imagem.

A ideia-chave: inpainting "apenas máscara" em 512×768 regenera o rosto em uma densidade de pixels muito maior, depois o redimensiona de volta. É por isso que rostos pequenos distorcidos ficam nítidos após o ADetailer processá-los. O limite de confiança padrão é 0.3; para melhores resultados em rostos, ative "Inpaint apenas máscara".

Reduzindo VRAM em Placas com Recursos Limitados

Estas técnicas reduzem o consumo de VRAM independentemente do fornecedor da GPU:

  • HiRes Fix divide a geração em duas passagens em resolução menor — base em 512×768, passagem de upscale na resolução alvo.
  • ADetailer com área de inpintura limitada restringe o cálculo apenas à região mascarada.
  • Escala CFG menor (5 em vez de 7–8) não reduz computações por etapa — o CFG sempre executa duas passagens de modelo independentemente da escala — mas pode reduzir o VRAM de pico ao produzir valores de ativação menos extremos. O efeito é modesto.
  • Menos etapas (20–30 em vez de 40+) reduz o tempo total de VRAM durante a geração, ajudando com limitação térmica, mas não reduz o VRAM de pico por etapa.

As flags --medvram e --lowvram do Automatic1111 se aplicam a todos os backends de GPU e não são específicas da AMD.

Erros comuns e correções

Erro: qt.qpa.plugin: Não foi possível carregar o plugin da plataforma Qt "xcb" no KDE

O OpenCV vem com um plugin xcb no venv do WebUI que entra em conflito com o Qt do sistema no KDE Plasma. Correção: exclua o arquivo do plugin xcb em <venv>/lib/python3.11/site-packages/cv2/qt/plugins/platforms/libxcbqxcb.so, depois reinicie.

Erro: xFormers foi construído para: PyTorch 2.2.0+cu121 com CUDA 1201 (você tem 2.2.0+rocm5.7)

A roda pip tem como alvo CUDA, não ROCm. O PR #978 adicionou flash-attention para aceleradores AMD Instinct MI2xx/MI3xx, mas testes em Radeon de consumo estão incompletos. Correção: clone o repositório, faça checkout da branch ROCm e construa a partir da fonte com pip install -e ..

FAQ

Como executo Stable Diffusion em uma AMD RX 6650 XT no Linux?

A RX 6650 XT (gfx1032) não está na matriz de suporte oficial da ROCm 7.14 (matriz de compatibilidade). É suportada pelos builds noturnos do TheRock (SUPPORTED_GPUS.md), que são comunitários e não verificados. Espere que a enumeração de dispositivos ou lançamentos de kernel possam falhar.

Qual é o valor correto do HSA_OVERRIDE_GFX_VERSION para minha GPU AMD?

A documentação oficial usa notação de alvo GFX (gfx1030, gfx1100, gfx1201) em vez de decimais como 10.3.0 ou 11.0.0. Use o formato gfxNNNN que corresponde ao alvo LLVM da sua GPU a partir da matriz de compatibilidade da ROCm.

O xformers funciona em GPUs AMD de consumo?

O PR #978 adicionou flash-attention para ROCm, mas os testes foram limitados a MI250x/MI300x (aceleradores Instinct). Um relatório de usuário mostra xformers falhando em uma RX 6650 XT com erros de biblioteca CUDA. O sucesso em placas Radeon de consumo não foi confirmado pelos mantenedores do xformers.

Posso usar ROCm no Arch Linux?

O Arch Linux não está listado entre as distribuições suportadas. Guias comunitários usam pacotes AUR (rocm-hip-sdk, rocm-opencl-sdk) que não são oficialmente suportados pela AMD.

HiRes Fix vs upsampling manual do img2img — qual é a diferença?

O HiRes Fix integra o upscale + passagem img2img automaticamente após a geração base. O img2img manual requer gerar na resolução base, salvar, carregar no img2img e executar uma segunda geração. Os resultados são semelhantes quando configurados de forma equivalente, mas o HiRes Fix mantém tudo em um único fluxo de trabalho.

O ROCm é mais rápido ou mais lento que a CUDA?

Não foram encontrados benchmarks quantitativos. O desempenho depende do modelo da GPU, capacidade de VRAM e arquitetura do modelo. A documentação oficial da AMD não publica benchmarks comparativos de inferência contra a CUDA.