Geração Local de Imagens com IA num Mini PC AMD: ComfyUI + Z-Image Turbo

Publicado em
11 julho 2026
Por
Jacob Lloyd — escrito com ajuda de IA, depois do projeto
Tempo de leitura
8 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 mensalidade e sem cobrança por imagem. O guia percorre a configuração para que tudo inicie automaticamente e simplesmente funcione. Prova que você não precisa de um serviço de nuvem caro nem de uma marca específica de placa de vídeo para fazer arte com IA.

Meu mini PC transforma um prompt de texto numa imagem pronta de 1024×1024 em cerca de 27 segundos: sem conta na nuvem, sem cobrança por imagem, sem fila atrás de mil prompts de outras pessoas. E é um chip AMD que a maioria das pessoas presume que nem consegue fazer isso.

Resumo

  • O que é: ComfyUI + Z-Image Turbo, gerando imagens inteiramente em hardware local — OpenAI e Midjourney não entram nessa história.
  • Quanto custa: $0 por imagem, não importa quantas você faça. Não existe nem conta para criar.
  • O que você precisa: uma APU ou GPU AMD com VRAM de verdade (a minha tem 64GB), uma máquina Linux, e uma sessão de sofrimento configurando o ROCm. Só uma vez.
  • O que você ganha: ~27 segundos por imagem de 1024×1024, um serviço systemd sempre ativo, e um comando de uma linha para gerar imagens em lote sem interface.

O que você ganha

A conversa sobre a configuração pode esperar. No dia a dia, eu abro uma aba do navegador ou disparo pelo terminal. De qualquer jeito:

MétricaValor
Resolução1024×1024
Steps / CFG8 steps, CFG 1.0
Tempo de geração "aquecido"~27s (faixa medida: 26,5–30,4s)
Cold start (primeira imagem após o boot)~43,5s enquanto ~20GB de pesos são carregados

O uso real dessa máquina não é arte pela arte. É um script que gera em lote variações de avatares para um projeto de chatbot: 222 PNGs na pasta de saída e contando. Infraestrutura entediante e confiável, que é exatamente o que você quer de algo que construiu por diversão e depois passou a depender.

O hardware

Esta é uma máquina com 128GB de memória unificada: um AMD Ryzen AI Max+ 395 (apelidado de "Strix Halo") com uma iGPU Radeon 8060S no mesmo encapsulamento da CPU. Nenhuma GPU dedicada em lugar nenhum.

Aqui está a parte que importa. O firmware reserva 64 GiB desses 128GB e entrega à iGPU como "VRAM" dedicada — o próprio log de inicialização do ComfyUI mostra Total VRAM 65536 MB, total RAM 63920 MB. Isso é mais VRAM do que qualquer placa NVIDIA de consumo vende, porque não é GDDR caro soldado numa placa de vídeo. É só memória do sistema que o firmware atribuiu à GPU, com mais ~31GB de GTT acessível pela GPU logo atrás, se necessário.

ComponenteEspecificação
CPUAMD Ryzen AI Max+ 395, 16 núcleos / 32 threads
iGPURadeon 8060S, arquitetura ROCm gfx1151
Memória128GB LPDDR5X unificada — 64GiB reservados como VRAM, ~62GiB restantes para o Linux
SOBazzite (imutável, baseado no Fedora Silverblue)
GPU dedicadaNenhuma

Os pesos do modelo para toda essa configuração somam cerca de 20,7GB. Confortável dentro de 64GB; sem esperança numa placa de consumo típica de 8–16GB, a menos que você descarregue camadas para a RAM do sistema e aceite a penalidade de velocidade.

Stack de software

As versões que fazem isso funcionar, como estão instaladas agora:

ComponenteVersão
ComfyUIv0.27.0 (checkout do git)
Python3.12.13, num venv 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, suporte nativo a gfx1151

O detalhe divertido: a build do PyTorch para ROCm se disfarça de CUDA. O log de inicialização diz literalmente Device: cuda:0 AMD Radeon 8060S : native. Python escrito para uma placa NVIDIA simplesmente roda, porque acha que está falando com uma. O ComfyUI também desativa automaticamente o cuDNN nesse hardware e recorre à atenção padrão do PyTorch (sem xformers, sem flash-attn), e funciona bem sem eles.

Fazendo o ROCm se comportar

A dor da configuração mora numa dúzia de 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 diz ao ROCm que a GPU é gfx1151. No ROCm 7.2 isso é redundante (o log já diz "native"), mas eu mantenho como salvaguarda, porque em builds mais antigas do ROCm exatamente esse override era obrigatório para iGPUs como essa sequer rodarem.
  • PYTORCH_HIP_ALLOC_CONF=expandable_segments:True impede que o alocador fragmente a VRAM em memória unificada. Sem isso, você pode bater em erros de falta de memória com bastante memória tecnicamente livre.
  • HIP_VISIBLE_DEVICES=0 fixa na única GPU existente. Nada empolgante, mas está lá caso você um dia adicione mais hardware.

Mais uma coisa: o endereço de escuta do servidor está fixado em 127.0.0.1 no script de inicialização — não é uma opção de configuração, é um valor fixo no código. O comentário ali chama isso de "todo o modelo de segurança", o que é preciso. Quer que fique acessível de outro dispositivo? Isso é seu próprio reverse proxy ou VPN, deliberadamente não uma flag que você pode simplesmente virar.

Como um prompt vira uma imagem

As pessoas imaginam essa parte como misteriosa, e não é. É um pipeline curto e fixo que o ComfyUI monta a partir do template oficial dele:

Configurações do Z-Image Turbo

Z-Image Turbo é a variante destilada e rápida do modelo Z-Image da Alibaba (pelo que entendo, saiu do Tongyi Lab deles, cerca de 6 bilhões de parâmetros, Apache-2.0). "Destilado" aqui tem um significado concreto: 8 steps e CFG 1.0 produzem uma imagem pronta, em vez dos 20–30+ steps que modelos mais antigos exigem. Estas são as configurações do meu workflow salvo, e são só os padrões do template oficial. Nenhuma combinação mágica para caçar.

ConfiguraçãoValor
Steps8
CFG1.0
Samplerres_multistep
Schedulersimple
Shift do ModelSamplingAuraFlow3
Resolução1024×1024
Tipo do CLIPLoaderlumina2
Prompt negativozerado (ConditioningZeroOut)

Vale a pena explicar essa última linha: em CFG 1.0, um prompt negativo não tem contra o que empurrar, então o workflow o zera com um nó ConditioningZeroOut em vez de codificar um texto que não faz nada. Digite um prompt negativo se isso te fizer sentir mais no controle. Não vai mudar a imagem.

Os três arquivos que fazem o trabalho de verdade:

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

Desempenho medido

Estes não são números de um post de blog de lançamento; são do journal desta máquina. Uma execução de 20 prompts consecutivos registrou tempos entre 26,62s e 30,41s, então "~27 segundos" é uma média entediante e repetível, não um melhor caso escolhido a dedo. Isso dá cerca de 2,5–3 segundos por step de amostragem, já incluindo a codificação de texto e a decodificação VAE.

A primeira imagem depois de um início "frio" do serviço levou 43,54 segundos, porque é nessa execução que ~20GB de pesos são carregados do disco. Tudo depois disso já está "aquecido". Se a primeira imagem do seu dia parecer lenta, é por isso, não um sinal de que algo está errado.

Rodando como serviço

Eu não quero ficar de babá de um processo Python num terminal toda vez que eu quiser uma imagem, então isso roda como uma unidade de usuário 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 ambiente mantém a porta e argumentos extras de inicialização num único lugar editável. Em cima disso fica um pequeno wrapper, o comfyctl, então o uso do dia a dia é:

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 morre, Restart=on-failure o traz de volta depois de 5 segundos, até 5 vezes por minuto antes de o systemd desistir (para um crash loop de verdade não girar para sempre). Um timer semanal puxa atualizações com git pull --ff-only, reinicia o serviço, e confere /system_stats antes de declarar sucesso. O ícone de desktop dessa coisa foi gerado pelo próprio modelo, o que eu gosto mais do que provavelmente deveria.

Fazendo sem interface (headless)

A interface web é boa para casos pontuais, mas o uso diário aqui é feito por script. Um script Python que usa só a stdlib monta o grafo como JSON, faz o POST, consulta o resultado periodicamente, e imprime o caminho do PNG pronto:

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 têm um artigo próprio e completo: ComfyUI sem Interface: Rode Como um Serviço, Use de Qualquer Lugar.

Ciladas

  • "cuda:0" nos logs é normal. O PyTorch do ROCm relata a GPU AMD como um dispositivo CUDA. Não é um erro de configuração, e não está secretamente usando uma placa NVIDIA.
  • A primeira imagem depois de um reinício é lenta. ~43 segundos enquanto os pesos carregam, depois se estabiliza em ~27. Não reinicie no meio de uma sessão e entre em pânico achando que quebrou algo.
  • Prompts negativos não fazem nada aqui. CFG 1.0 os zera por design. Se você está depurando uma imagem ruim, o prompt negativo não é onde está o problema.
  • Você não consegue simplesmente abrir isso no seu celular. O endereço de escuta está fixado em 127.0.0.1 de propósito. Acesso remoto significa configurar seu próprio reverse proxy ou VPN, não editar um arquivo de configuração.
  • Ele se atualiza sozinho toda semana. Prático até a semana em que não é. O pull fast-forward-only impede merges silenciosos, mas uma mudança quebradiça no upstream ainda pode chegar enquanto você não estava olhando.
  • 64GB parece muito até você carregar mais. Este workflow usa cerca de 20,7GB de pesos. Carregue vários modelos grandes de uma vez, ou rode outra coisa faminta por GPU ao lado, e a folga desaparece rápido.

← Mais de IA e LLM Local