Geração de imagens por IA local em AMD (ROCm): ComfyUI + Z-Image Turbo

Publicado em
11 julho 2026
Atualizado em
16 setembro 2026
Por
Jacob Lloyd — escrito com ajuda de IA, depois do projeto
Tempo de leitura
10 min de leitura

Em termos simples: Como configurei meu pequeno computador AMD para criar imagens geradas por IA em casa — cerca de 27 segundos por imagem, sem assinatura e sem taxa por imagem. O guia explica passo a passo como fazer a configuração, de modo que tudo inicie automaticamente e simplesmente funcione. Isso prova que não é preciso contratar um serviço em nuvem caro ou ter uma marca específica de placa de vídeo para criar arte por IA.

Atualização em 16/09/2026: Eu não uso mais essa configuração do ComfyUI no meu próprio computador — agora, toda a geração de imagens que faço vem de um servidor remoto com GPU. As instruções abaixo permanecem inalteradas e ainda funcionam caso você queira executar tudo em sua própria máquina AMD.

Minha máquina AMD transforma um prompt de texto em uma imagem final de 1024×1024 em cerca de 27 segundos: sem necessidade de conta na nuvem, sem cobrança por imagem e sem filas com milhares de outros prompts aguardando processamento. E tudo isso é feito por um chip AMD que a maioria das pessoas acha que não tem capacidade para tal.

Resumo rápido

  • O que é: ComfyUI + Z-Image Turbo, gerando imagens inteiramente no hardware local — a OpenAI e o Midjourney não têm qualquer participação nesse processo.
  • Quanto custa: $0 por imagem, não importa quantas você gere. Não há nem mesmo necessidade de criar uma conta.
  • O que é preciso: um APU ou GPU AMD com VRAM suficiente (o meu tem 64 GB), um computador rodando Linux e um único processo de configuração do ROCm. Só uma vez.
  • O resultado final: cerca de 27 segundos para gerar cada imagem de 1024×1024, um serviço do systemd sempre ativo e um comando de uma única linha para gerar várias imagens de forma automática.

O que você acaba obtendo

As explicações de configuração podem esperar. No dia a dia, abro uma aba no navegador ou executo o comando pelo terminal. De qualquer forma:

MétricaValor
Resolução1024×1024
Passos / CFG8 passos, CFG 1.0
Tempo de geração (aquecido)~27s (faixa medida: 26,5–30,4s)
Inicialização fria (primeira imagem após reinicialização)~43,5s, enquanto ~20GB de pesos são carregados

O caso de uso real nesta máquina não é a criação de arte por si só. Trata-se de um script que gera, em lote, variações de avatares para um aplicativo de chat auto-hospedado: são 222 arquivos PNG na pasta de saída, e esse número continua aumentando. É uma infraestrutura simples e confiável – exatamente o que se espera de algo que você criou por diversão, mas acabou passando a depender.

O hardware

Este é um computador com 128 GB de memória unificada: um AMD Ryzen AI Max+ 395 (“Strix Halo”), equipado com uma iGPU Radeon 8060S no mesmo pacote do processador. Trata-se do ASUS ROG Flow Z13, mencionado no meu post sobre o laboratório doméstico; infelizmente, uma falha de energia fez com que ele parasse de funcionar. Não há nenhuma GPU dedicada presente.

Agora, o ponto importante: o firmware reserva 64 GiB desses 128 GB para serem usados como “VRAM” pela iGPU. O próprio log de inicialização do ComfyUI indica: Total VRAM 65536 MB, total RAM 63920 MB. Isso representa mais VRAM do que qualquer placa de vídeo da NVIDIA voltada para consumidores oferece, pois não se trata de memória GDDR cara soldada numa placa gráfica. Na verdade, é apenas memória do sistema alocada pelo firmware para a GPU; além disso, há aproximadamente 31 GB adicionais de memória GTT acessível à GPU, caso seja necessário.

ComponenteEspecificações
CPUAMD Ryzen AI Max+ 395, 16 núcleos / 32 threads
iGPURadeon 8060S, arquitetura ROCm gfx1151
Memória128 GB de memória LPDDR5X unificada — 64 GiB reservados como VRAM; cerca de 62 GiB disponíveis para o Linux
Sistema operacionalBazzite (imutável, baseado no Fedora Silverblue)
GPU dedicadaNenhuma

O tamanho total dos pesos dos modelos necessários para este setup é de aproximadamente 20,7 GB. Esse valor cabe tranquilamente nos 64 GB de VRAM disponíveis; porém, em placas gráficas comuns de consumo que possuem apenas 8–16 GB de VRAM, isso seria impossível, a menos que se transfiram camadas do modelo para a memória do sistema, o que acarretaria uma perda significativa de desempenho.

Pilha de software

As versões que permitem o funcionamento do sistema, conforme instaladas atualmente:

ComponenteVersão
ComfyUIv0.27.0 (git checkout)
Python3.12.13, num ambiente virtual criado com uv
PyTorch2.12.1+rocm7.2
torchvision0.27.1+rocm7.2
torchaudio2.11.0+rocm7.2
pytorch-triton-rocm3.5.1
ROCm7.2, com suporte nativo ao gfx1151

O detalhe interessante: a versão do PyTorch compilada para ROCm se apresenta como CUDA. O log de inicialização diz literalmente Device: cuda:0 AMD Radeon 8060S : native. Código Python escrito para placas NVIDIA simplesmente funciona, pois o programa acha que está se comunicando com uma placa NVIDIA. O ComfyUI também desativa automaticamente o cuDNN nesse hardware e recorre ao mecanismo de atenção padrão do PyTorch (sem xformers nem flash-attn); mesmo assim, tudo funciona perfeitamente.

Fazendo o ROCm funcionar corretamente

Os problemas de configuração estão relacionados a algumas variáveis de ambiente no script de inicialização:

HSA_OVERRIDE_GFX_VERSION=11.5.1
PYTORCH_HIP_ALLOC_CONF=expandable_segments:True
HIP_VISIBLE_DEVICES=0
  • HSA_OVERRIDE_GFX_VERSION informa ao ROCm que a GPU é do tipo gfx1151. No ROCm 7.2, essa configuração é redundante (o log já indica “nativo”), mas eu a mantenho como medida de segurança; em versões mais antigas do ROCm, essa definição era obrigatória para que iGPUs como este funcionassem.
  • PYTORCH_HIP_ALLOC_CONF=expandable_segments:True impede que o alocador fragmente a VRAM na memória unificada. Sem essa configuração, erros de falta de memória podem ocorrer mesmo quando ainda há memória disponível.
  • HIP_VISIBLE_DEVICES=0 limita o uso à única GPU disponível. Não é nada empolgante, mas está lá caso você venha a adicionar mais hardware no futuro.

Mais uma coisa: o endereço de escuta do servidor está fixado em 127.0.0.1 no script de inicialização — não se trata de uma opção configurável, mas sim de um valor hardcoded. O comentário no código chama isso de “todo o modelo de segurança”, o que é correto. Quer que o servidor seja acessível de outro dispositivo? Para isso, você precisará usar um proxy reverso ou uma VPN; não existe uma opção simples para ativar esse recurso.

Como um prompt se transforma em uma imagem

As pessoas imaginam esse processo como algo misterioso, mas não é. Trata-se de um pipeline curto e fixo que o ComfyUI configura a partir do seu modelo oficial:

Configurações do Z-Image Turbo

O Z-Image Turbo é a versão otimizada e mais rápida do modelo Z-Image da Alibaba (pelo que entendi, ele vem do Tongyi Lab; possui aproximadamente 6 bilhões de parâmetros e usa a licença Apache-2.0). “Otimizado” significa algo concreto aqui: 8 passos e um valor de CFG de 1.0 são suficientes para gerar uma imagem pronta, ao invés dos 20–30+ passos exigidos por modelos mais antigos. Estas são as configurações do meu fluxo de trabalho salvo; na verdade, são apenas os valores padrão oficiais. Não há nenhuma combinação mágica para se procurar.

ConfiguraçãoValor
Passos8
CFG1.0
Samplerres_multistep
Schedulersimple
ModelSamplingAuraFlow shift3
Resolução1024×1024
Tipo do CLIPLoaderlumina2
Prompt negativozerado (ConditioningZeroOut)

Essa última configuração merece explicação: com um valor de CFG de 1.0, não há nada contra o que o prompt negativo possa atuar; por isso, o fluxo de trabalho o “zera” usando um nó ConditioningZeroOut, em vez de codificar um texto que não faria diferença alguma. Você pode digitar um prompt negativo se isso lhe der mais sensação de controle… mas isso não alterará a imagem gerada.

Os três arquivos responsáveis pelo processo de geração:

ArquivoTamanhoFunção
z_image_turbo_bf16.safetensors12,3 GBtransformador de difusão (bf16)
qwen_3_4b.safetensors8,0 GBcodificador de texto
ae.safetensors0,34 GBVAE

Desempenho medido

Estes não são números extraídos de um post no blog de lançamento; são dados registrados no diário desta máquina. Uma execução com 20 prompts consecutivos resultou em tempos entre 26,62 segundos e 30,41 segundos; portanto, “cerca de 27 segundos” é uma média previsível e repetível, e não um valor excepcional obtido por acaso. Isso equivale a aproximadamente 2,5–3 segundos por etapa de amostragem, considerando também a codificação do texto e a decodificação pelo VAE.

A primeira imagem gerada após um reinício do serviço levou 43,54 segundos, pois foi nessa execução que cerca de 20 GB de pesos foram carregados do disco. Todas as imagens subsequentes são geradas mais rapidamente. Se a primeira imagem do dia parecer demorar bastante para ser gerada, é por esse motivo; não é sinal de que algo esteja errado.

Executando como um serviço

Eu não quero ficar cuidando de um processo Python em um terminal toda vez que preciso gerar uma imagem; por isso, ele é executado como uma unidade user do systemd, iniciada junto com a sessão de login:

ExecStart=%h/comfy/start-comfyui.sh
WorkingDirectory=%h/comfy/ComfyUI
EnvironmentFile=-%h/comfy/comfy.env
Restart=on-failure
RestartSec=5
TimeoutStartSec=120

O arquivo de configuração (.env) mantém a porta e os argumentos adicionais de inicialização em um único local editável. Por cima disso, existe um pequeno wrapper chamado comfyctl; assim, o uso diário é bem simples:

comfyctl start      # starts the service, waits for it to answer, opens the workflow
comfyctl status     # server health + unit state + newest output file
comfyctl generate "a foggy harbor at dawn, cinematic"
comfyctl stop
comfyctl logs

Se o processo encerrar inesperadamente, a configuração Restart=on-failure o reinicia após 5 segundos, até 5 vezes por minuto; depois disso, o systemd desiste (evitando assim um loop infinito de falhas). Um timer semanal faz o download das atualizações usando git pull --ff-only, reinicia o serviço e verifica se o arquivo /system_stats foi criado, considerando a operação um sucesso. O ícone na área de trabalho foi gerado pelo próprio modelo; gosto dele mais do que provavelmente deveria.

Fazendo isso de forma headless

A interface web é adequada para uso ocasional, mas no dia a dia o processo é automatizado por scripts. Um script Python que utiliza apenas módulos padrão do Python gera o grafo em formato JSON, envia-o ao sistema, aguarda o resultado e exibe o caminho para o arquivo PNG gerado:

python3 ~/comfy/comfy-generate.py "a foggy harbor at dawn, cinematic" \
  --steps 8 --width 1024 --height 1024 --out ~/Pictures/harbor.png

A API HTTP, o script de controle e o acesso remoto seguro a partir de outros dispositivos terão um artigo completo só para eles: ComfyUI headless: Execute-o como um serviço e use-o de qualquer lugar.

Armadilhas comuns

  • “cuda:0” nos logs é normal. O PyTorch com ROCm identifica a GPU AMD como um dispositivo CUDA. Não se trata de uma configuração errada, nem de uso secreto de uma placa NVIDIA.
  • A primeira imagem gerada após um reinício demora para aparecer. São cerca de 43 segundos até que os pesos do modelo sejam carregados; depois disso, o tempo cai para aproximadamente 27 segundos. Não reinicie a sessão e entre em pânico achando que algo deu errado.
  • Os prompts negativos não têm efeito aqui. O valor CFG 1.0 anula-os por design. Se você estiver tentando corrigir uma imagem ruim, o problema provavelmente não está no prompt negativo.
  • Não é possível acessar isso diretamente do seu celular. O endereço de escuta é definido como 127.0.0.1 intencionalmente. Para acesso remoto, você precisa configurar seu próprio proxy reverso ou VPN; não basta editar um arquivo de configuração.
  • O sistema se atualiza semanalmente. Isso é útil… até a semana em que não for mais. O mecanismo de atualização impede mesclagens silenciosas, mas uma mudança significativa no código upstream ainda pode aparecer sem aviso.
  • 64 GB parece muito até você começar a carregar modelos. Este fluxo de trabalho utiliza cerca de 20,7 GB de pesos do modelo. Ao carregar vários modelos grandes ao mesmo tempo, ou executar outra aplicação que exija bastante uso da GPU, essa margem de memória some rapidamente.

Relacionado: ComfyUI sem interface gráfica: execute como serviço e use de qualquer lugar · ASUS ROG Flow Z13: meu laboratório doméstico portátil que se recusou a permanecer portátil · DisPatch: um aplicativo de chat auto-hospedado para agentes de IA locais · StudioForge: um servidor LLM que utiliza exclusivamente a GPU, substituindo o LM Studio


← Mais de IA e LLM Local