Treinar LoRA em Hardware Limitado
Caminhos gratuitos no Colab, configurações AMD ROCm e orientação de VRAM para treinar LoRA.
On this page
- TL;DR
- O que significa "hardware limitado" para treinamento de LoRA?
- Posso treinar uma LoRA de graça no Google Colab?
- Alguém validou o treinamento de LoRAs em GPUs AMD?
- Quais níveis de VRAM existem e o que cada um consegue treinar?
- Quais configurações devo escolher para o meu nível de hardware?
- Para quantas etapas devo treinar?
- Erros comuns e correções
- Frequently asked questions (FAQ)
Treinar LoRA em Hardware Limitado
Treinar uma LoRA em hardware limitado significa escolher entre três caminhos: nuvem para potência bruta com limite de tempo, AMD para permanência com custo de configuração, ou local com controle estritamente limitado pela VRAM. Este guia mapeia o que cada nível realmente suporta.
TL;DR
- Colab gratuito: use GPUs em nuvem por algumas horas. Use o guia de dataset de LoRA para preparar os dados e depois treine sem custo.
- AMD ROCm: treine localmente em RX 6800 XT ou superior. Desinstale bitsandbytes e xformers primeiro — os scripts não iniciam caso contrário.
- Níveis de VRAM local: 6 GB para SD1.5 em 512×512. 12 GB desbloqueia SDXL. 24 GB dá liberdade total. Ative
--gradient_checkpointinge precisão mista.
O que significa "hardware limitado" para treinamento de LoRA?
O hardware é limitado quando a VRAM — e não o tempo de computação — é a restrição determinante. A documentação do kohya-ss observa que o treinamento de LoRA em SDXL "requer muita VRAM" e que "mesmo com 24GB de VRAM, você pode ficar sem memória dependendo das configurações" (fonte). O que parece "limitado" depende do modelo base: SD1.5 treina em 512×512, enquanto SDXL tem como padrão 1024×1024. Para instruções detalhadas passo a passo, veja o fluxo de trabalho de treinamento do kohya-ss.
Posso treinar uma LoRA de graça no Google Colab?
O Google Colab oferece acesso gratuito a GPUs em nuvem (~20 horas/semana, relatado pela comunidade). Use dois notebooks: o guia de dataset para baixar imagens e curar tags, e depois o notebook XL Trainer para o treinamento com kohya-ss (kohya_ss GUI). Um usuário da comunidade relatou ~10 horas no total, de ponta a ponta, para uma LoRA de SDXL, com a maior parte do tempo gasta na preparação do dataset (fonte).
Alguém validou o treinamento de LoRAs em GPUs AMD?
Uma configuração AMD usa os LoRA Easy Training Scripts do Derrian no Ubuntu 24.02 com ROCm 6.2 e Python 3.10.14. O autor relata uma LoRA de alta qualidade em ~40 minutos em uma RX 6900XT (70 imagens, 8 epochs, otimizador CAME) (fonte). Isso é competitivo com GPUs intermediárias em nuvem, embora a configuração tenha demorado significativamente mais.
Crítico: desinstale bitsandbytes e xformers antes de treinar. Se qualquer um deles estiver presente, os scripts não iniciam (fonte). O otimizador CAME fica em custom_scheduler/LoraEasyCustomOptimizer/came.py (fonte). Instale o Python 3.10.14 via pyenv (o Ubuntu 24.02 vem com 3.12). Use o PyTorch com o índice ROCm: pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.1 (fonte).
Quais níveis de VRAM existem e o que cada um consegue treinar?
A documentação do kohya-ss não publica uma tabela de VRAM versus tamanho de batch, mas parâmetros confirmados de relatos da comunidade dão isto: VRAM | Modelo | Resolução | Tamanho de batch | Flags necessárias | Fonte
|---|---|---|---|---|---
6 GB | SD1.5 | 512×512 | 1–2 | --gradient_checkpointing, --sdpa | kohya-ss 8–12 GB | SD1.5 / SDXL | 512–768 | 2–4 | --cache_latents, --mixed_precision bf16 | kohya-ss 16–24 GB | SDXL | 768–1024 | 4–8 | --cache_text_encoder_outputs, --mixed_precision bf16 | kohya-ss Cada flag de economia de memória tem um custo: --gradient_checkpointing reduz a VRAM à custa de um treinamento mais lento. --cache_latents desativa as augmentations de imagem. --cache_text_encoder_outputs elimina o cálculo do text encoder e exige --network_train_unet_only para manter o treinamento válido. Cada configuração é uma troca de recursos, não uma otimização gratuita.
Quais configurações devo escolher para o meu nível de hardware?
Os parâmetros centrais de treinamento seguem a mesma lógica em todos os caminhos. A tabela consolida os valores recomendados: Parâmetro | SD1.5 | SDXL | Por que importa | Fonte
|---|---|---|---|---
Resolução | 512 | 1024 | Resolução maior aumenta a VRAM de forma linear; use a resolução nativa a menos que você tenha folga | kohya-ss network_dim | 8–32 | 16–64 | Um dim maior adiciona expressividade, mas também tamanho de arquivo | comunidade network_alpha | dim/2 | dim/2 | Controla o escalonamento da taxa de aprendizado. A documentação do kohya-ss recomenda metade do dim como padrão | kohya-ss unet_lr | 1e-4 a 5e-4 | 1e-4 a 5e-4 | Valores maiores treinam mais rápido, mas arriscam artefatos | comunidade text_encoder_lr | 2e-5 a 1e-4 | 1e-5 a 2e-5 | Deve ser de metade a um quinto da taxa de aprendizado do unet | comunidade lr_scheduler | constant / cosine | constant / cosine | constant é o mais simples; cosine_with_restarts adiciona redefinições periódicas que alguns treinadores preferem | kohya-ss batch_size | 1–2 | 4–8 | Limitado pela VRAM. Aumente gradient_accumulation_steps para um batch efetivo maior | kohya-ss epochs | 8–10 | 6–8 | Menos repetições e mais epochs dão controle mais fino. Salve cada epoch para comparar checkpoints | comunidade Quando a VRAM está apertada, AdamW8bit é o otimizador mais comum. Prodigy ajusta automaticamente a taxa de aprendizado (defina em torno de 1.0), mas não pode ser combinado com LoRA+. Adafactor é descrito como "ainda mais eficiente em memória", mas exige configuração mais cuidadosa.
Para quantas etapas devo treinar?
Fluxos de trabalho testados pela comunidade convergem para 250–1000 etapas totais. A fórmula:
(imagens × repetições × epochs) ÷ batch_size = etapas totais
Exemplos para SDXL: 10 imagens × 10 repetições × 10 epochs ÷ 2 de batch = 500 etapas. 100 imagens × 1 repetição × 10 epochs ÷ 4 de batch = 250 etapas. SD1.5 geralmente precisa de aproximadamente o dobro das repetições para atingir contagens de etapas comparáveis (fonte).
Menos etapas deixam o treinamento subdesenvolvido; a LoRA não produz efeito visível. Etapas demais arriscam distorção. Estilos podem precisar de mais epochs em taxas de aprendizado mais baixas do que personagens. Salve cada epoch e depois escolha o melhor checkpoint a olho.
Erros comuns e correções
Sintoma | Causa | Correção
|---|---|---
O treinamento nunca inicia na AMD | bitsandbytes ou xformers no venv | pip uninstall xformers bitsandbytes antes de treinar Imagens geradas distorcidas | Taxa de aprendizado alta demais ou repetições demais | Baixe unet_lr para 1e-4, reduza as repetições, compare checkpoints anteriores A LoRA não tem efeito visível | Subtreinada — LR baixa demais ou etapas insuficientes | Aumente unet_lr até 5e-4, ou adicione mais epochs Perda NaN | Problema de precisão mista ou pico de LR | Com fp16, adicione --no_half_vae para SDXL. Com Prodigy, adicione safeguard_warmup=True Funciona só com um prompt exato | Overfitting por dataset pequeno ou tagging ruim | Expanda o dataset com poses/ângulos/fundos variados; reduza a poda de tags verbosas Sessão do Colab desconecta | Tempo limite por inatividade ou recuperação de recursos | Salve cada epoch. Use --lowram se RAM < VRAM Para um diagnóstico sistemático além desta tabela, veja o fluxo de trabalho de depuração do treinamento de LoRA e o guia de comparação de otimizadores.