PYTORCH_CUDA_ALLOC_CONF e Otimização de VRAM
Corriga CUDA OOM com PYTORCH_CUDA_ALLOC_CONF, otimize treinamento FLUX com blocks_to_swap e rode Wan2.1 e HunyuanVideo em GPUs de 12 GB.
On this page
TL;DR
- Adicione
PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.9,max_split_size_mb:512aowebui-user.batpara eliminar a maioria dos erros CUDA OOM. - Treine LoRAs FLUX em GPUs de 8–12 GB com
--blocks_to_swap 35 --fp8_basee checkpoints T5XXL fp8; espere ~4 GB em 512², ~6 GB em 768², ~7,5 GB em 1024². - Rode Wan2.1-T2V-1.3B (8,19 GB) e HunyuanVideo FP8 (13 B parâmetros) em placas de 12 GB; habilite ComfyUI
--enable-dynamic-vrampara offloading automático.
PYTORCH_CUDA_ALLOC_CONF e Otimização de VRAM para FLUX, Wan2.1 e HunyuanVideo
A variável de ambiente PYTORCH_CUDA_ALLOC_CONF controla o alocador CUDA do PyTorch através de garbage_collection_threshold e max_split_size_mb. Guias da comunidade para Stable Diffusion WebUI recomendam garbage_collection_threshold:0.9,max_split_size_mb:512, mas esta variável não aparece na documentação oficial de semântica CUDA do PyTorch (fonte). Trate isso como um workaround validado pela comunidade, não uma API suportada.
Modelos modernos de difusão e vídeo expõem alavancas específicas: troca de blocos para FLUX, quantização FP8 para Wan2.1 e HunyuanVideo, e modos de VRAM dinâmica no ComfyUI. Este artigo consolida números, flags e mecanismos verificados para que você possa combinar um modelo à sua GPU sem crashes de OOM por tentativa e erro.
Perguntas Frequentes
Questão | Resposta Rápida
|---|---
Quanta VRAM o FLUX.1 precisa para treinamento? | ~4 GB em 512², ~6 GB em 768², ~7,5 GB em 1024² (medições RTX 3060 12 GB, Civitai #9487) O que PYTORCH_CUDA_ALLOC_CONF realmente faz? | Configura o alocador CUDA do PyTorch: garbage_collection_threshold dispara varreduras do pool, max_split_size_mb limita o tamanho do bloco de alocação O ComfyUI suporta VRAM dinâmica? | Sim—--enable-dynamic-vram liga, --disable-dynamic-vram desliga; fallbacks: highvram, gpu_only, novram, cpu (cli_args.py) O Wan2.1 roda em RTX 3060 12 GB? | Sim—o modelo T2V-1.3B precisa de 8,19 GB VRAM segundo seu model card (Wan2.1 model card) O que blocks_to_swap faz no treinamento FLUX? | Move blocos do transformer entre RAM da CPU e VRAM da GPU; até 35 blocos trocáveis, trocando VRAM por tempo de iteração (Kohya docs)
Requisitos de VRAM por Modelo
Modelo | Tarefa | VRAM Necessária | Otimização Principal | Fonte
|---|---|---|---|---
FLUX.1-dev | Treino 512×512 | ~4 GB | --blocks_to_swap | Kohya sd-scripts FLUX.1-dev | Treino 768×768 | ~6 GB | --fp8_base | Kohya sd-scripts FLUX.1-dev | Treino 1024×1024 | ~7,5 GB | --fp8_base + T5XXL fp8 | Kohya sd-scripts Wan2.1-T2V-1.3B | Inferência | 8,19 GB | Compressão latente Wan-VAE | Hugging Face HunyuanVideo | Inferência (FP8) | 13 B+ params → ~6,5 GB pesos | run_sample_video_fp8.sh | Tencent/HunyuanVideo
Nota: Os números do FLUX vêm de um único benchmark comunitário em RTX 3060 12 GB (Civitai #9487). São amplamente citados, mas não reproduzidos independentemente. Mantenha ≥0,5 GB de folga acima dos valores listados.
Mecanismos Técnicos
Por que blocks_to_swap Reduz VRAM no Treinamento FLUX
--blocks_to_swap descarrega blocos do transformer da VRAM da GPU para a RAM do sistema. Cada bloco trocado economiza VRAM proporcional ao tamanho de suas ativações, mas adiciona latência de transferência CPU↔GPU. FLUX.1 expõe até 35 blocos trocáveis; a documentação Kohya afirma: "Números maiores economizam mais VRAM mas reduzem a velocidade de treino" (flux_train_network.md).
Por que Wan-VAE Corta VRAM de Vídeo
Wan-VAE usa uma convolução 3D causal (CausalConv3D) para comprimir vídeo no espaço de pixels em uma grade latente com razões 4× (temporal) / 8× (espacial) / 16× (canal). Isso permite geração 1080p de duração ilimitada sem escalar VRAM linearmente com a duração do clipe (Wan2.1 model card).
Por que FP8 Reduz à Metade a Memória de Pesos do HunyuanVideo
FP8 (E4M3FN) armazena cada parâmetro em 8 bits em vez de 16. Os 13 B+ parâmetros do HunyuanVideo caem de ~26 GB para ~13 GB de memória de pesos. O repo inclui run_sample_video_fp8.sh e fp8_optimization.py para inferência FP8 em um comando (Tencent/HunyuanVideo).
Por que PYTORCH_CUDA_ALLOC_CONF Afeta OOM
O alocador CUDA do PyTorch mantém blocos liberados em cache. garbage_collection_threshold define a fração de memória reservada que dispara uma varredura do cache; max_split_size_mb limita o tamanho de uma única alocação antes que o alocador a divida. A receita comunitária 0.9 / 512 mantém o cache enxuto e previne alocações monolíticas grandes que fragmentam a VRAM. Não documentado nas notas oficiais de CUDA do PyTorch (fonte).
Erros comuns e correções
Sintoma | Causa (verificada) | Correção
|---|---|---
CUDA OOM durante treino Stable Diffusion WebUI | Alocador CUDA do PyTorch retém blocos liberados | Adicione set PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.9,max_split_size_mb:512 ao webui-user.bat (dica comunitária, Civitai #194) VRAM não liberada após geração WebUI | GC do Python não devolve VRAM ao driver imediatamente | Clique Unload SD checkpoint to free VRAM em Settings → Actions (Civitai #194) OOM durante treino FLUX em resolução/batch maiores | VRAM do modelo base + ativações excedem capacidade da GPU | Reduza resolução, adicione --blocks_to_swap N, habilite --fp8_base, use checkpoints T5XXL fp8 em GPUs <10 GB (Kohya docs)
Flags de VRAM Dinâmica do ComfyUI
Flag | Efeito
|---|---
--enable-dynamic-vram | Habilita offloading automático do modelo para CPU quando a pressão de VRAM sobe --disable-dynamic-vram | Desabilita o acima --highvram | Mantém tudo na VRAM (mais rápido, maior VRAM) --gpu_only | Sem offload CPU, sem fatiamento de modelo --novram | Offload agressivo; VRAM mínima, mais lento --cpu | Roda inteiramente na CPU Fonte: comfy/cli_args.py no repo ComfyUI (GitHub).
Treinamento FLUX: Combinações Práticas de Flags
VRAM da GPU | Resolução | Flags Recomendadas
|---|---|---
8 GB | 512² | --blocks_to_swap 35 --fp8_base + T5XXL fp8 10–12 GB | 768² | --blocks_to_swap 20-25 --fp8_base 12–16 GB | 1024² | --blocks_to_swap 10-15 --fp8_base 24 GB+ | 1024² | --fp8_base (swap opcional) Baixe T5XXL fp8: t5xxl_fp8_e4m3fn.safetensors de comfyanonymous/flux_text_encoders (Hugging Face).
Lacunas e Claims Não Verificados
PYTORCH_CUDA_ALLOC_CONFna documentação oficial — Não encontrado na página de notas CUDA do PyTorch; pode existir apenas no código-fonte ou docs Docker.- VRAM FLUX 768² / 1024² — Benchmark comunitário de fonte única; nenhuma replicação independente encontrada.
- Precisão do plugin VRAM Estimator — Não validado independentemente.
- VRAM HunyuanVideo single-GPU — README cobre multi-GPU e FP8, mas não baseline single-GPU.
- Tamanho exato do arquivo FLUX.1-dev — Model card confirma safetensors com gate; contagem de bytes não fonteada.
- Detalhes de benchmark SageAttention — README alega 2–5× speedup com paridade de acurácia; tabelas completas não lidas.
FAQ
Quanta VRAM o FLUX.1-dev precisa para inferência? VRAM de inferência é menor que treino. Relatos comunitários ~10–12 GB para fp16/bf16 em 1024² com ComfyUI dynamic VRAM desligado; quantizações GGUF de city96/FLUX.1-dev-gguf reduzem para 6–8 GB (Hugging Face).
O que é PYTORCH_CUDA_ALLOC_CONF e como configurar? Variável de ambiente lida pelo alocador CUDA do PyTorch na inicialização do processo. No Windows: defina PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.9,max_split_size_mb:512 no webui-user.bat. No Linux/macOS: exporte PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.9,max_split_size_mb:512 no seu shell rc ou script de inicialização.
O ComfyUI suporta alocação dinâmica de VRAM? Sim. Inicie com --enable-dynamic-vram para permitir offloading automático do modelo quando VRAM estiver apertada. Flags complementares (--highvram, --gpu_only, --novram, --cpu) selecionam estratégias estáticas (ComfyUI cli_args.py).
O Wan2.1 roda em RTX 3060 12 GB? Sim. O modelo T2V-1.3B requer 8,19 GB VRAM segundo seu model card, deixando folga em placa de 12 GB (Wan2.1 model card).
O que blocks_to_swap faz no treino LoRA FLUX? Move até 35 blocos do transformer entre RAM da CPU e VRAM da GPU por iteração. Mais blocos trocados = menor pico de VRAM, maior tempo de passo. Comece em 35 para placas de 8 GB, reduza conforme VRAM permitir (Kohya flux_train_network.md).
Onde consigo checkpoints T5XXL fp8 para treino FLUX low-VRAM? comfyanonymous/flux_text_encoders hospeda t5xxl_fp8_e4m3fn.safetensors. Carregue via nó DualClipLoader do ComfyUI (Hugging Face).
Como SageAttention compara com FlashAttention? O kernel de atenção quantizado do SageAttention alega 2–5× speedup sobre FlashAttention com sem perda de métrica end-to-end em modelos de linguagem, imagem e vídeo (SageAttention GitHub). Integração requer nó customizado ou backend de atenção patchado.
Principais Conclusões
- Config de alocador funciona mas não é documentada —
PYTORCH_CUDA_ALLOC_CONFé fix padrão comunitário para OOM sem referência oficial do PyTorch. - Treino FLUX cabe em 8–12 GB — Combine
--blocks_to_swap,--fp8_basee T5XXL fp8 para atingir ~4 GB em 512². - Modelos de vídeo são VRAM-eficientes por design — Compressão 4/8/16 do Wan-VAE e pesos FP8 do HunyuanVideo miram GPUs consumer.
- VRAM dinâmica do ComfyUI é feature de primeira classe — Alterne via CLI; sem mudanças de código necessárias.
- Benchmarks comunitários preenchem lacunas de documentação — Trate números de fonte única como pontos de partida, não garantias.