Treine modelos LoRA com Kohya_ss no EAS e aplique-os ao Stable Diffusion para geração de imagens.
Pré-requisitos
Ative o EAS e crie um workspace padrão. Activate PAI and create a default workspace.
Se um usuário do RAM for fazer o deploy do modelo, gerencie as permissões do EAS. Cloud product dependencies and permissions: EAS.
Crie um bucket e pastas no OSS na mesma região para armazenar materiais de treinamento, arquivos de modelo e logs. Upload files.
Configure o armazenamento do OSS
Faça login no OSS console e acesse o caminho de um bucket na mesma região. Por exemplo,
oss://kohya-demo/kohya/.-
Crie uma pasta de projeto (exemplo:
KaraDetroit_loar) com três subpastas:Image,LogeModel. Opcionalmente, faça o upload de um arquivo de configuração json para essa pasta.Image: arquivos de source para os materiais de treinamento.
Model: arquivos de modelo após a conclusão do treinamento.
Log: logs de treinamento.
SS_config.json: arquivo json para configuração de parâmetros em lote (opcional). Configure os caminhos das pastas, os nomes dos modelos de saída e outros parâmetros. GitHub. Exemplo: SS_config.json.
-
Faça o upload das imagens preparadas para a pasta
Image. Este exemplo usa um pacote de amostra: 100_pic.zip. Baixe, descompacte e faça o upload da pasta para o OSS.ImportanteOs formatos de imagem suportados são
.png,.jpg,.jpeg,.webpe.bmp.Cada imagem deve ter um arquivo de descrição com o mesmo nome e a extensão de arquivo
.txt. A descrição deve estar na primeira linha. Se uma imagem tiver várias descrições, separe-as por vírgulas.-
Os nomes das pastas de imagens devem seguir o formato: número_nome (exemplo: 100_pic). O número define as repetições por imagem durante o treinamento (geralmente mais de 100). O total de iterações de treinamento deve ultrapassar 1.500.
Se a pasta contiver 10 imagens, cada uma será treinada
1500/10=150vezes. Defina o número do nome da pasta como "150".Se a pasta contiver 20 imagens, cada uma será treinada
1500/20=75 (<100)vezes. Defina o número do nome da pasta como "100".
Faça o deploy do Kohya_ss
Faça login no PAI console. Selecione uma região na parte superior da página. Em seguida, selecione o workspace desejado e clique em Enter Elastic Algorithm Service (EAS).
Clique em Deploy Service. Na seção Inference Service, clique em Custom Deployment na seção Custom Model Deployment.
-
Na página Custom Deployment, configure os parâmetros usando o formulário ou especificando configurações json.
Configuração por formulário
Parâmetro
Descrição
Basic Information
Service Name
Nome personalizado. Exemplo: kohya_ss_demo.
Environment Information
Deployment Method
Selecione Image-based Deployment e selecione Enable Web App.
Image Configuration
Na lista Alibaba Cloud Image, selecione kohya_ss > kohya_ss:2.2.
NotaSelecione a versão mais recente durante o deploy.
Storage Mount
Selecione OSS como tipo de montagem e configure estes parâmetros:
-
Uri: caminho do OSS na mesma região. Exemplo:
oss://kohya-demo/kohya/. -
Mount Path: caminho personalizado. Exemplo:
/workspace.ImportanteDesative a opção Read-Only. Caso contrário, os arquivos de modelo não poderão ser gravados no OSS.
Command to Run
Configurado automaticamente após a seleção da imagem. Exemplo:
python -u kohya_gui.py --listen=0.0.0.0 --server_port=8000 --headless.-
--listen: vincula ao endereço IP especificado para requisições externas. -
--server_port: número da porta de escuta.
Resource Information
Resource Type
Selecione Public Resources.
Deployment
Recomendado: ml.gu7i.c16m60.1-gu30 para melhor custo-benefício. Este exemplo usa ml.gu7i.c8m30.1-gu30.
Configuração json
Na seção Service Configurations, clique em Edit e edite a configuração no formato json.
Exemplo de configuração json:
ImportanteNo exemplo a seguir, modifique as configurações na linha 4 ("name") e na linha 18 ("oss") de acordo com suas necessidades.
{ "metadata": { "name": "kohya_ss_demo", "instance": 1, "enable_webservice": true }, "cloud": { "computing": { "instance_type": "ecs.gn6e-c12g1.12xlarge", "instances": null } }, "storage": [ { "oss": { "path": "oss://kohya-demo/kohya/", "readOnly": false }, "properties": { "resource_type": "model" }, "mount_path": "/workspace" }], "containers": [ { "image": "eas-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai-eas/kohya_ss:1.2", "script": "python -u kohya_gui.py --listen=0.0.0.0 --server_port=8000 --headless", "port": 8000 }] } -
Revise a configuração, salve e clique em Deploy. O deploy leva alguns minutos. O serviço estará pronto quando o Service Status mudar para Running.
Treine o modelo LoRA
Na página Overview do serviço, clique em Web applications para abrir a página do serviço Kohya_ss.
Selecione LoRA (LoRA).
-
(Opcional) Defina o Configuration file. Pule esta etapa se não houver um arquivo
SS_config.jsondisponível.NotaO caminho combina o Mount Path de Form configuration, o caminho da pasta no OSS e o nome do arquivo. Exemplo:
/workspace/KaraDetroit_loar/SS_config.json. -
Defina o SourceModel. O formato safetensors é recomendado em vez de checkpoint para maior segurança.
Na aba Source model, defina Model Quick Pick como
runwayml/stable-diffusion-v1-5e defina Save trained model as comosafetensors. -
Defina Folders. Insira os caminhos de
Image,LogeModeldo OSS e especifique o nome do arquivo de saída.Parâmetro
Descrição
Image folder
Pasta de imagens de treinamento. Combine o Mount Path de Form configuration com o caminho
Imageno OSS. Exemplo:/workspace/KaraDetroit_loar/Image.Logging folder
Pasta de saída de logs. Combine o Mount Path de Form configuration com o caminho
Logno OSS. Exemplo:/workspace/KaraDetroit_loar/Log.Output folder
Pasta de saída do modelo. Combine o Mount Path de Form configuration com o caminho
Modelno OSS. Exemplo:/workspace/KaraDetroit_loar/Model.Model output name
Nome de saída do modelo. Por exemplo, my_model.
-
Defina Parameters. Para valores de exemplo, consulte o conteúdo do arquivo
SS_config.jsonna etapa Prepare OSS storage structure.Parâmetro
Descrição
LoRA Type
Tipo de LoRA. Opções:
-
LoCON: ajusta todas as camadas do SD, comoRes,BlockeTransformer. -
LoHA: processa mais informações com o mesmo tamanho.
LoRA network weights
Pesos do LoRA. Para retomar o treinamento, selecione a saída anterior do LoRA (opcional).
Train batch size
Tamanho do lote de treinamento. Valores maiores exigem mais VRAM.
Epoch
Número de épocas (uma passagem completa por todos os dados de treinamento). Calcule manualmente:
-
Total training iterations in Kohya = Number of training images × Repetitions × Number of epochs / Training batch size. -
Total training iterations in WebUI = Number of training images × Repetitions.
Com imagens de classe, o total de iterações dobra tanto no Kohya quanto no WebUI, e os salvamentos de modelo no Kohya são reduzidos pela metade.
Save every N epochs
Salva o modelo a cada N épocas. Exemplo: defina como 2 para salvar a cada 2 épocas.
Caption Extension
Extensão de arquivo para arquivos de legenda, por exemplo, .txt (opcional).
Mixed precision
Precisão mista. Opções: no, fp16, bf16. Use bf16 para GPUs com mais de 30 GB de VRAM.
Save precision
Precisão de salvamento. Igual à opção acima.
Number of CPU threads per core
Threads de CPU por núcleo. Afeta o uso de VRAM. Ajuste com base nas especificações da sua instância.
Learning rate
Taxa de aprendizado. Padrão: 0,0001.
LR Scheduler
Agendador de taxa de aprendizado. Selecione uma função como
cosineoucosine with restartconforme necessário.LR Warmup (% of steps)
Etapas de aquecimento. Padrão: 10. Defina como 0 para pular o aquecimento.
Optimizer
Otimizador. Padrão:
AdamW8bit.DAdaptationativa o ajuste automático.Max Resolution
Resolução máxima. Defina com base nas propriedades da imagem.
Network Rank (Dimension)
Complexidade do modelo. Um valor de 128 é suficiente para a maioria dos cenários.
Network Alpha
Não deve exceder o Network Rank (Dimension). Configuração comum: Rank 128, Alpha 64.
Convolution Rank (Dimension)
& Convolution Alpha
Grau de convolução. Controla o escopo do ajuste fino. Ajuste com base no tipo de LoRA.
Recomendações oficiais do Kohya:
-
LoCon:dim <= 64,alpha = 1(ou menor). -
LoHA:dim <= 32,alpha = 1.
clip skip
Contagem de salto do CLIP. Intervalo: 1 a 12. Valores menores produzem imagens mais próximas do prompt de entrada.
-
Para modelos realistas, selecione 1.
-
Para modelos no estilo anime, selecione 2.
Sample every n epoch
Gera uma imagem de amostra a cada N épocas.
Sample Prompts
Prompts de amostra. Use um comando com parâmetros:
-
--n: prompt, prompt negativo. -
--w: largura da imagem. -
--h: altura da imagem. -
--d: seed da imagem. -
--l: relevância do prompt (cfg). -
--s: etapas de iteração (steps).
-
Na parte inferior da página, clique em Start training.
-
Clique no nome do serviço na lista de serviços do EAS para abrir a página de detalhes e, em seguida, clique em Log e visualize o progresso do treinamento.
A página de log exibe a saída da barra de progresso da tarefa de inferência do modelo, incluindo a porcentagem de conclusão, o número de itens processados do total e a velocidade de processamento.
Quando
model savedaparecer no log, o treinamento estará concluído.steps: 100%|██████████| 2998/3000 [11:39<00:00, 4.29it/s, loss=0.16] steps: 100%|██████████| 2998/3000 [11:39<00:00, 4.29it/s, loss=0.16] steps: 100%|██████████| 2999/3000 [11:39<00:00, 4.29it/s, loss=0.16] steps: 100%|██████████| 2999/3000 [11:39<00:00, 4.29it/s, loss=0.16] steps: 100%|██████████| 3000/3000 [11:39<00:00, 4.29it/s, loss=0.16] steps: 100%|██████████| 3000/3000 [11:39<00:00, 4.29it/s, loss=0.16] steps: 100%|██████████| 3000/3000 [11:39<00:00, 4.29it/s, loss=0.16] [2023-08-07 20:34:01] epoch 1/1 [2023-08-07 20:34:01] saving checkpoint: /workspace/KaraDetroit_loar/Model/my_model.safetensors [2023-08-07 20:34:01] model saved. Recupere o modelo LoRA treinado da pasta
Model. Exemplo:my_model.safetensors.
Gere imagens com o modelo LoRA treinado
Faça o upload do modelo LoRA treinado para o diretório LoRA do SD WebUI para geração de imagens. Deploy a Stable Diffusion service with EAS in 5 minutes to enable text-to-image generation.
Faça o upload do arquivo de modelo LoRA para o diretório LoRA do SD WebUI usando um dos métodos a seguir.
Stable Diffusion WebUI Cluster Edition
Selecione uma imagem de tempo de execução de cluster (exemplo: stable-diffusion-webui:4.2-cluster-webui). Após o serviço iniciar, o sistema cria automaticamente o caminho
/data-{current_user_ID}/models/Lorano caminho montado do OSS.-
Na seção Command to Run, adicione os seguintes parâmetros:
-
--lora-dir: parâmetro opcional.Se o parâmetro
--lora-dirnão for especificado, os arquivos de modelo para todos os usuários serão isolados. Apenas os arquivos de modelo em{OSS_path}/data-{current_user_ID}/models/Loraserão carregados.Se o parâmetro
--lora-dirfor especificado, todos os usuários carregarão arquivos de modelo do diretório especificado e de{OSS_path}/data-{current_user_ID}/models/Lora. Por exemplo,--lora-dir /code/stable-diffusion-webui/data-oss/models/Lora.
--data-dir {OSS_mount_path}, por exemplo,--data-dir /code/stable-diffusion-webui/data-oss.
-
-
Faça o upload do arquivo de modelo LoRA para
{OSS_path}/data-{current_user_ID}/models/Lora. Por exemplo,oss://bucket-test/data-oss/data-1596******100/models/Lora.NotaO caminho
/data-{current_user_ID}/models/Loraé criado automaticamente após o início do serviço. Faça o upload do arquivo de modelo LoRA depois disso.Para encontrar o
{current_user_ID}, clique em sua foto de perfil no canto superior direito.
Stable Diffusion WebUI Basic Edition
Selecione uma imagem de tempo de execução sem
-cluster(exemplo: stable-diffusion-webui:4.2-standard). Após o serviço iniciar, o sistema cria automaticamente o caminho/models/Lorano caminho montado do OSS.Na seção Command to Run, adicione o parâmetro
--data-dir {OSS_mount_path}. Por exemplo,--data-dir /code/stable-diffusion-webui/data-oss.-
Faça o upload do arquivo de modelo LoRA para
{OSS_path}/models/Lora. Por exemplo,oss://bucket-test/data-oss/models/Lora.NotaO caminho
/models/Loraé criado automaticamente após o início do serviço. Faça o upload do arquivo de modelo LoRA depois disso.