CoolFace
Apppublic

Allex21/Lora-trainer-all

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
lora_research_notes.md44 linesDownload Raw Back to root
1## LoRA (Low-Rank Adaptation)2 3LoRA é uma técnica de treinamento leve que reduz significativamente o número de parâmetros treináveis. Funciona inserindo um número menor de novos pesos no modelo e apenas estes são treinados. Isso torna o treinamento com LoRA muito mais rápido, eficiente em termos de memória e produz pesos de modelo menores (algumas centenas de MBs), que são mais fáceis de armazenar e compartilhar. LoRA também pode ser combinado com outras técnicas de treinamento como DreamBooth para acelerar o treinamento.4 5### Versatilidade do LoRA6LoRA é muito versátil e suportado para DreamBooth, Kandinsky 2.2, Stable Diffusion XL, text-to-image e Wuerstchen.7 8### Script de Treinamento9O guia explora o script `train_text_to_image_lora.py` para familiarização e adaptação. Antes de executar o script, é necessário instalar a biblioteca `diffusers` do GitHub e as dependências necessárias para o script (PyTorch ou Flax).10 11### Configuração do Ambiente12É necessário inicializar um ambiente `🤗 Accelerate` usando `accelerate config` ou `accelerate config default`. Para ambientes sem shell interativo, pode-se usar `from accelerate.utils import write_basic_config` e `write_basic_config()`.13 14### Preparação do Dataset15Para treinar um modelo com seu próprio dataset, é importante seguir o guia de criação de dataset para treinamento.16 17### Parâmetros do Script18O script de treinamento possui muitos parâmetros personalizáveis, encontrados na função `parse_args()`. Parâmetros importantes para LoRA incluem:19- `--rank`: a dimensão interna das matrizes de baixa patente a serem treinadas; um rank mais alto significa mais parâmetros treináveis.20- `--learning_rate`: a taxa de aprendizado padrão é 1e-4, mas com LoRA, pode-se usar uma taxa de aprendizado mais alta.21 22### Implementação no Script23O código de pré-processamento do dataset e o loop de treinamento são encontrados na função `main()`. O Diffusers usa `~peft.LoraConfig` da biblioteca PEFT para configurar os parâmetros do adaptador LoRA, como rank, alpha e quais módulos inserir os pesos LoRA. O adaptador é adicionado ao UNet, e apenas as camadas LoRA são filtradas para otimização.24 25Exemplo de configuração do `LoraConfig`:26```python27unet_lora_config = LoraConfig(28    r=args.rank,29    lora_alpha=args.rank,30    init_lora_weights="gaussian",31    target_modules=["to_k", "to_q", "to_v", "to_out.0"],32)33unet.add_adapter(unet_lora_config)34lora_layers = filter(lambda p: p.requires_grad, unet.parameters())35```36O otimizador é inicializado com `lora_layers`, pois são os únicos pesos a serem otimizados.37 38### Lançamento do Script39Para lançar o script de treinamento, é necessário definir variáveis de ambiente como `MODEL_NAME`, `OUTPUT_DIR`, `HUB_MODEL_ID` e `DATASET_NAME`. Um exemplo de comando de treinamento é fornecido, incluindo parâmetros como `mixed_precision`, `resolution`, `train_batch_size`, `learning_rate`, entre outros.40 41### Uso do Modelo Treinado42Após o treinamento, o modelo pode ser usado para inferência, carregando os pesos LoRA treinados (`pytorch_lora_weights.safetensors`) em um pipeline como `AutoPipelineForText2Image`.43 44