3-2 Treinamento de LoRA (Avançado)
Domine a arte com IA com o treinamento avançado de LoRA! Este guia cobre tudo, desde princípios e processos até a otimização de parâmetros para resultados impressionantes e controláveis.
O Princípio de LoRA
Para que serve o LoRA?
O LoRA permite o ajuste fino de toda a imagem mantendo os pesos do Checkpoint inalterados. Nesse caso, basta ajustar o LoRA para gerar imagens específicas sem modificar todo o Checkpoint. Para algumas imagens que a IA nunca encontrou antes, o LoRA é usado para ajuste fino. Isso confere à arte com IA um certo grau de “controlabilidade”.
Treinamento de ImagensAtualmente, os modelos treinados são todos “refinamentos” feitos em modelos oficialmente treinados (SD1.5, SDXL). Claro, refinamentos também podem ser feitos em modelos criados por outros.
Treinamento de VídeosTreinamento de LoRA: A IA primeiro gera imagens com base nos prompts, depois compara essas imagens com o conjunto de dados do treinamento. Ao guiar a IA para ajustar continuamente os vetores de embedding com base nas diferenças geradas, os resultados vão gradualmente se aproximando do conjunto de dados. Eventualmente, o modelo ajustado pode produzir resultados completamente equivalentes ao conjunto de dados, formando uma associação entre as imagens geradas pela IA e o conjunto de dados, tornando-as cada vez mais semelhantes.

*Comparado ao Checkpoint, o LoRA tem um tamanho de arquivo menor, o que economiza tempo e recursos. Além disso, pode ajustar pesos em cima do Checkpoint, alcançando diferentes efeitos.
Processo de Treinamento de LoRA
Cinco etapas: Preparar o conjunto de dados - Pré-processamento de imagens - Definir parâmetros - Monitorar o processo de treinamento do LoRA - Conclusão do treinamento
*Tomando como exemplo o treinamento de um LoRA facial com o SeaArt.
Preparar o conjunto de dados
*Se quiser saber mais sobre como criar um conjunto de dados, leia o guia abaixo.
Como Criar um Conjunto de Dados para TreinamentoAo enviar o conjunto de dados, é essencial manter o princípio de “amostras diversificadas”. Isso significa que o conjunto de dados deve incluir imagens de diferentes ângulos, poses, condições de iluminação, etc., e garantir que as imagens sejam de alta resolução. Esta etapa visa principalmente ajudar a IA a entender as imagens.

Pré-processamento de imagens
I. Recorte de imagens II. Rotulagem III. Palavras de ativação.
I. Recorte de imagens
Para permitir que a IA reconheça melhor os objetos nas imagens, geralmente é melhor manter dimensões consistentes. Você pode escolher entre 512*512 (1:1), 512*768 (2:3) ou 768*512 (3:2) conforme o resultado desejado.
Modo de Recorte: Recorte Central (Center Crop) / Recorte por Foco (Focus Crop) / Sem Recorte (No Crop)
Recorte Central: Recorta a região central da imagem.
Recorte por Foco: Identifica automaticamente o principal objeto da imagem.


*Comparado ao recorte central, o recorte por foco tende a preservar melhor o objeto principal do conjunto de dados, sendo geralmente recomendado.
II. Rotulagem
Fornece descrições textuais para as imagens do conjunto de dados, permitindo que a IA aprenda a partir do texto.
Algoritmo de Rotulagem: BLIP/Deepbooru
BLIP: Rotulador em linguagem natural, por exemplo, “uma garota de cabelo preto”.
Deepbooru: Rótulos em frases, por exemplo, “uma garota, cabelo preto”.
Limite de Rotulagem: Quanto menor o valor, mais detalhada a descrição. Recomenda-se 0,6.

Processo de Rotulagem: Remova características fixas (como traços físicos...) para permitir que a IA aprenda essas características de forma autônoma. Da mesma forma, você pode adicionar características que deseja ajustar no futuro (roupas, acessórios, ações, fundo...).
*Por exemplo, se quiser que todas as imagens geradas tenham cabelo preto e olhos pretos, pode remover essas duas tags.

III. Palavras de ativação
Palavras que ativam o LoRA, consolidando efetivamente as características do personagem em uma única palavra.

Configurações de Parâmetros
Modelo Base: Recomenda-se escolher um modelo base de alta qualidade e estável, que combine com o estilo do LoRA, facilitando para a IA a correspondência de características e registro de diferenças.
Modelos Base Recomendados:
Realista: SD1.5, ChilloutMix, MajicMIX Realistic, Realistic Vision
Anime: AnyLoRA, Anything | 万象熔炉, ReV Animated
Configuração Avançada
Parâmetros de Treinamento:

Repetição (Repetições de Imagem Única): Número de vezes que uma imagem é aprendida. Quanto mais repetições, melhor o aprendizado, mas repetições excessivas podem tornar a imagem rígida. Sugestão: Anime: 8; Realista: 15.
Época (Ciclos): Um ciclo equivale ao número de imagens do conjunto de dados multiplicado pela Repetição. Representa quantos passos o modelo foi treinado no conjunto de dados. Por exemplo, se há 20 imagens e Repetição é 10, o modelo aprende 20 * 10 = 200 passos. Se Época for 10, o treinamento terá 2000 passos. Sugestão: Anime: 20; Realista: 10.
Tamanho do Lote (Batch size): Número de imagens aprendidas simultaneamente. Por exemplo, se definido como 2, a IA aprende 2 imagens por vez, reduzindo a duração total do treinamento. Porém, aprender várias imagens ao mesmo tempo pode diminuir a precisão para cada imagem.
Precisão Mista: Recomenda-se fp16.
Configurações de Amostra:

Resolução: Determina o tamanho da imagem de pré-visualização do efeito final do modelo.
SD1.5: 512*512
Seed: Controla as imagens geradas aleatoriamente. Usando a mesma seed com prompts, provavelmente gerará imagens iguais/similares.
Sampler \ Prompts \ Negative Prompts: Principalmente para mostrar o efeito da imagem de pré-visualização do modelo final.
Configurações de Salvamento:

Determina o número final de LoRAs. Se definido como 2 e Época como 10, então 5 LoRAs serão salvos no final.
Precisão de Salvamento: Recomenda-se fp16.
Taxa de Aprendizado & Otimizador:

Taxa de Aprendizado: Indica a intensidade do aprendizado da IA. Quanto maior, mais a IA aprende, mas pode gerar imagens diferentes do esperado. Com conjuntos de dados maiores, tente reduzir a taxa de aprendizado. Recomenda-se começar com o valor padrão e ajustar conforme os resultados. Sugestão: começar baixo, recomendado 0,0001.
unet lr: Quando definido, a Taxa de Aprendizado não terá efeito. Recomenda-se 0,0001.
text encoder lr: Determina a sensibilidade às tags. Normalmente, é definido como 1/2 ou 1/10 do unet lr.
Lr scheduler: Controla a redução da taxa de aprendizado. Diferentes schedulers têm pouco impacto no resultado final. Geralmente, usa-se o padrão “cosine”, mas há a versão “Cosine with Restart”, que faz múltiplos reinícios e decai para aprender totalmente o conjunto de dados, evitando “soluções ótimas locais”. Se usar “Cosine with Restart”, defina Restart Times para 3-5.
Otimizador: Determina como a IA aprende durante o treinamento, impactando diretamente os resultados. Recomenda-se AdamW8bit.
Lion: Novo otimizador, normalmente com taxa de aprendizado cerca de 10 vezes menor que AdamW.
Prodigy: Se todas as taxas de aprendizado forem 1, o Prodigy ajusta automaticamente para obter os melhores resultados, ideal para iniciantes.
Rede:

Usada para construir uma base LoRA adequada para os dados de entrada da IA.
Network Rank Dim: Afeta diretamente o tamanho do LoRA. Quanto maior o Rank, mais dados precisam ser ajustados. 128=140MB+; 64=70MB+; 32=40MB+.
Recomendado:
Realista: 64/128
Anime: 8/16/32
Valores muito altos fazem a IA aprender detalhes irrelevantes, semelhante ao “overfitting”.
Network Alpha: Pode ser entendido como o grau de influência do LoRA nos pesos do modelo original. Quanto mais próximo do Rank, menor a influência; quanto mais próximo de 0, maior a influência. Alpha geralmente não excede o Rank. Atualmente, Alpha é definido como metade do Rank. Se definido como 1, maximiza a influência nos pesos.
Configurações de Rotulagem:

Em geral, quanto mais próximo do início, maior o peso da tag. Por isso, recomenda-se ativar Shuffle Caption.
Assuntos do Treinamento de LoRA
Overfitting (Sobreajuste) / Underfitting (Subajuste)
Sobreajuste: Quando há um conjunto de dados limitado ou a IA corresponde ao conjunto de dados com precisão excessiva, isso faz com que o Lora gere imagens que se assemelham muito ao conjunto de dados, resultando em uma capacidade de generalização ruim do modelo.

A imagem no canto superior direito se assemelha muito ao conjunto de dados à esquerda, tanto na aparência quanto na postura.
Motivos de Sobreajuste:
Conjunto de dados insuficiente.
Parâmetros incorretos (tags, taxa de aprendizado, passos, otimizador, etc.).
Prevenção de Sobreajuste:
Reduzir a taxa de aprendizado adequadamente.
Diminuir a Época.
Reduzir Rank e aumentar Alpha.
Diminuir Repetição.
Usar treinamento de regularização.
Aumentar o conjunto de dados.
Subajuste: O modelo não aprende adequadamente as características do conjunto de dados, gerando imagens que não correspondem bem ao conjunto.

Você pode ver que as imagens geradas pela Lora não conseguem preservar adequadamente as características do conjunto de dados - elas são diferentes.
Motivos de Subajuste:
Baixa complexidade do modelo.
Poucas características.
Prevenção de Subajuste:
Aumentar a taxa de aprendizado.
Aumentar a Época.
Aumentar Rank, reduzir Alpha.
Aumentar Repetição.
Reduzir restrições de regularização.
Adicionar mais características ao conjunto de dados (alta qualidade).
Conjunto de Dados de Regularização
Uma forma de evitar sobreajuste é adicionar imagens extras para melhorar a generalização do modelo. O conjunto de regularização não deve ser muito grande, senão a IA aprende demais dele, perdendo o objetivo original. Recomenda-se 10-20 imagens.

Por exemplo, em um conjunto de retratos com maioria de cabelos longos, adicione imagens de cabelos curtos ao conjunto de regularização. Se o conjunto for todo de um mesmo estilo artístico, adicione imagens de estilos diferentes para diversificar. O conjunto de regularização não precisa de tags.
*Em termos simples, treinar LoRA assim é como combinar o conjunto de dados principal com o de regularização.
Perda
A diferença entre o que a IA aprende e a realidade, guiada pela perda, pode otimizar a direção do aprendizado. Quando a perda é baixa, a diferença é pequena e a IA aprende com mais precisão. Desde que a perda diminua gradualmente, geralmente não há grandes problemas.
O valor de perda para imagens realistas geralmente varia de 0,1 a 0,12, enquanto para anime pode ser menor.
Use o valor de perda para avaliar problemas no treinamento do modelo.

Resumo
Atualmente, os “modelos ajustados” podem ser divididos em três tipos: o Checkpoint do Dreambooth, o LoRA e os Embeddings do Textual Inversion. Considerando tamanho, tempo de treinamento e requisitos de dados, o LoRA oferece o melhor “custo-benefício”. Seja para ajustar estilo, personagens ou poses, o LoRA é eficaz.

Configuração SDXL LoRA
Parâmetros de Treinamento Recomendados:
Épocas e Repetições
Épocas:
Número de ciclos de treinamento das imagens do conjunto de dados. Sugerimos 10 para iniciantes. O valor pode ser aumentado se o conjunto for pequeno ou reduzido se for grande.
Repetições:
Número de vezes que uma imagem é aprendida. Valores maiores levam a melhores efeitos e composições mais complexas, mas aumentam o risco de overfitting. Sugerimos 10 para bons resultados e menor risco de overfitting.
Nota: Você pode aumentar épocas e repetições se os resultados não estiverem satisfatórios.
Taxa de Aprendizado e Otimizador:
learning_rate (Taxa de Aprendizado Geral):
Grau de mudança em cada repetição. Valores altos aprendem mais rápido, mas podem causar falhas ou não convergir. Valores baixos aprendem mais devagar, mas podem atingir o estado ideal. Este valor não tem efeito após definir taxas separadas para U-Net e Codificador de Texto.
unet_lr (Taxa de Aprendizado U-Net):
O U-Net orienta as imagens com ruído geradas por sementes aleatórias para determinar a direção da remoção de ruído, encontrar as áreas que precisam de alteração e fornecer os dados necessários. Valores mais altos significam um ajuste mais rápido, mas com risco de perder detalhes, enquanto valores mais baixos causam subajuste e falta de semelhança entre as imagens geradas e os materiais. O valor é definido de acordo com o tipo de modelo e o conjunto de dados. Sugerimos 0,0002 para o treinamento de personagens.
text_encoder_lr (Taxa de Aprendizado do Codificador de Texto):
Ele converte as tags para a forma de embedding para que o U-Net possa entender. Como o codificador de texto do SDXL já está bem treinado, geralmente não há necessidade de treinamento adicional, e os valores padrão são suficientes, a menos que haja necessidades especiais.
Otimizer (Otimização):
Um algoritmo em aprendizado profundo que ajusta os parâmetros do modelo para minimizar a função de perda. Durante o treinamento da rede neural, o otimizador atualiza os pesos do modelo com base nas informações do gradiente da função de perda, para que o modelo possa se ajustar melhor aos dados de treinamento. O otimizador padrão, AdamW, pode ser usado para o treinamento do SDXL, e outros otimizadores, como o Prodigy, que é fácil de usar e possui taxas de aprendizado adaptativas, também podem ser escolhidos conforme necessidades específicas.
lr_scheduler (Configurações do Agendador de Taxa de Aprendizado):
Refere-se a uma estratégia ou algoritmo para ajustar dinamicamente a taxa de aprendizado durante o treinamento. Escolher "Constant" é suficiente na maioria dos casos.
Configurações de Rede:
network_dim (Dimensão da Rede):
Está intimamente relacionada ao tamanho do LoRA treinado.
Para SDXL, um LoRA de 32dim tem 200M, um de 16dim tem 100M e um de 8dim tem 50M. Para personagens, selecionar 8dim é suficiente.
network_alpha:
Normalmente definido como metade ou um quarto do valor de dim. Se o dim for 8, o alpha pode ser definido como 4.
Outras configurações:
Resolution:
A resolução de treinamento pode não ser quadrada, mas deve ser múltipla de 64. Para SDXL, sugerimos 1024x1024 ou 1024x768.
enable_bucket (Bucket):
Se a resolução das imagens não for unificada, ative este parâmetro. Ele irá classificar automaticamente a resolução do conjunto de treinamento e criar um bucket para armazenar imagens de cada resolução ou resoluções semelhantes antes do início do treinamento. Isso economiza tempo na unificação da resolução na fase inicial. Se a resolução das imagens já estiver unificada, não é necessário ativar.
noise_offset and multires_noise_iterations:
Ambos os ajustes de ruído melhoram situações em que a imagem gerada fica excessivamente clara ou escura. Se não houver imagens excessivamente claras ou escuras no conjunto de treinamento, podem ser desativados. Se ativados, sugerimos usar multires_noise_iterations com valor entre 6 e 10.
multires_noise_discount:
Precisa ser ativado junto com o multires_noise_iterations mencionado acima, e um valor entre 0,3 e 0,8 é recomendado.
clip_skip:
Especifica qual camada de saída do codificador de texto usar, contando a partir da última. Normalmente, o valor padrão é suficiente.
Last updated