Este repositório fornece principalmente uma GUI Gradio para treinadores de difusão estável de Kohya. No entanto, o suporte para o sistema operacional Linux também é oferecido por meio de contribuições da comunidade. O suporte ao macOS não é ideal no momento, mas pode funcionar se as condições forem favoráveis.
A GUI permite definir os parâmetros de treinamento e gerar e executar os comandos CLI necessários para treinar o modelo.
GUI de Kohya
Limite de arquivo de página
Nenhum módulo chamado tkinter
Treinamento LORA em TESLA V100 - Problema de utilização de GPU
Resumo do problema
Soluções potenciais
Iniciando a GUI no Windows
Iniciando a GUI no Linux e macOS
Atualização do Windows
Atualização para Linux e macOS
Windows
Linux e macOS
Runpod
Docker
Pré-requisitos do Windows
Configurar janelas
Opcional: CUDNN 8.9.6.50
Pré-requisitos do Linux
Configurar Linux
Local de instalação
Instalação manual
Modelo Runpod pré-construído
Windows
Linux, OSX
Prepare seu Docker para suporte de GPU
Design do nosso Dockerfile
Use a imagem Docker pré-construída
Construção do docker local
compilações do docker runpod de ashleykleynhans
Índice
? Colab
Instalação
Atualizando
Iniciando o serviço GUI
Padrões de caminho personalizado
LoRA
Exemplo de geração de imagens durante o treinamento
Solução de problemas
Treinamento SDXL
Perda mascarada
Histórico de alterações
Este caderno do Colab não foi criado ou mantido por mim; no entanto, parece funcionar de forma eficaz. A fonte pode ser encontrada em: https://github.com/camenduru/kohya_ss-colab.
Gostaria de expressar a minha gratidão ao camendutu pela sua valiosa contribuição. Se você encontrar algum problema com o notebook Colab, relate-o em seu repositório.
Colab | Informações |
---|---|
kohya_ss_gui_colab |
Para instalar as dependências necessárias em um sistema Windows, siga estas etapas:
Instale o Python 3.10.11.
Durante o processo de instalação, certifique-se de selecionar a opção para adicionar Python à variável de ambiente ‘PATH’.
Instale o kit de ferramentas CUDA 11.8.
Instale o Git.
Instale o Visual Studio 2015, 2017, 2019 e 2022 redistribuível.
Para configurar o projeto, siga estas etapas:
Abra um terminal e navegue até o diretório de instalação desejado.
Clone o repositório executando o seguinte comando:
git clone --recursivo https://github.com/bmaltais/kohya_ss.git
Mude para o diretório kohya_ss
:
cd kohya_ss
Execute um dos seguintes scripts de configuração executando o seguinte comando:
Para sistemas com apenas python 3.10.11 instalado:
.setup.bat
Para sistemas com apenas mais de uma versão python instalada:
.setup-3.10.bat
Durante a etapa de aceleração de configuração, use os valores padrão propostos durante a configuração, a menos que você saiba que seu hardware exige outra coisa. A quantidade de VRAM na sua GPU não afeta os valores usados.
As etapas a seguir são opcionais, mas melhorarão a velocidade de aprendizado para proprietários de GPUs NVIDIA 30X0/40X0. Essas etapas permitem lotes de treinamento maiores e velocidades de treinamento mais rápidas.
Execute .setup.bat
e selecione 2. (Optional) Install cudnn files (if you want to use the latest supported cudnn version)
.
Para instalar as dependências necessárias em um sistema Linux, certifique-se de atender aos seguintes requisitos:
Certifique-se de que o suporte venv
esteja pré-instalado. Você pode instalá-lo no Ubuntu 22.04 usando o comando:
apto instalar python3.10-venv
Instale o CUDA 11.8 Toolkit seguindo as instruções fornecidas neste link.
Certifique-se de ter o Python versão 3.10.9 ou superior (mas inferior a 3.11.0) instalado em seu sistema.
Para configurar o projeto no Linux ou macOS, execute as seguintes etapas:
Abra um terminal e navegue até o diretório de instalação desejado.
Clone o repositório executando o seguinte comando:
git clone --recursivo https://github.com/bmaltais/kohya_ss.git
Mude para o diretório kohya_ss
:
cd kohya_ss
Se você encontrar problemas de permissão, torne o script setup.sh
executável executando o seguinte comando:
chmod +x./setup.sh
Execute o script de configuração executando o seguinte comando:
./setup.sh
Nota: Se precisar de opções ou informações adicionais sobre o ambiente runpod, você pode usar setup.sh -h
ou setup.sh --help
para exibir a mensagem de ajuda.
O local de instalação padrão no Linux é o diretório onde o script está localizado. Se uma instalação anterior for detectada nesse local, a configuração prosseguirá nesse local. Caso contrário, a instalação retornará para /opt/kohya_ss
. Se /opt
não for gravável, o local de fallback será $HOME/kohya_ss
. Por fim, caso nenhuma das opções anteriores seja viável, a instalação será realizada no diretório atual.
Para macOS e outros sistemas não Linux, o processo de instalação tentará detectar o diretório de instalação anterior com base no local onde o script foi executado. Se uma instalação anterior não for encontrada, o local padrão será $HOME/kohya_ss
. Você pode substituir esse comportamento especificando um diretório de instalação personalizado usando a opção -d
ou --dir
ao executar o script de configuração.
Se você optar por usar o modo interativo, os valores padrão para a tela de configuração acelerada serão “Esta máquina”, “Nenhum” e “Não” para as demais questões. Essas respostas padrão são iguais às da instalação do Windows.
Para instalar os componentes necessários para Runpod e executar kohya_ss, siga estas etapas:
Selecione o modelo Runpod pytorch 2.0.1. Isto é importante. Outros modelos podem não funcionar.
SSH no Runpod.
Clone o repositório executando o seguinte comando:
cd /espaço de trabalho git clone --recursivo https://github.com/bmaltais/kohya_ss.git
Execute o script de configuração:
cd kohya_ss ./setup-runpod.sh
Execute a GUI com:
./gui.sh --share --headless
ou com isso se você expor 7860 diretamente por meio da configuração do runpod:
./gui.sh --listen=0.0.0.0 --headless
Conecte-se ao URL público exibido após a conclusão do processo de instalação.
Para executar a partir de um modelo Runpod pré-construído, você pode:
Abra o modelo Runpod clicando em https://runpod.io/gsc?template=ya6013lj5a&ref=w18gds2n.
Implante o modelo no host desejado.
Depois de implantado, conecte-se ao Runpod no HTTP 3010 para acessar a GUI kohya_ss. Você também pode se conectar ao auto1111 em HTTP 3000.
Depois de instalar o Docker Desktop , CUDA Toolkit , NVIDIA Windows Driver e garantir que seu Docker esteja rodando com WSL2 , você estará pronto para começar.
Aqui está a documentação oficial para referência futura.
https://docs.nvidia.com/cuda/wsl-user-guide/index.html#nvidia-compute-software-support-on-wsl-2 https://docs.docker.com/desktop/wsl/use -wsl/#gpu-support
Instale um driver de GPU NVIDIA se ainda não tiver um instalado.
https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html
Instale o NVIDIA Container Toolkit com este guia.
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
É necessário que todos os dados de treinamento sejam armazenados no subdiretório dataset
, que é montado no contêiner em /dataset
.
Observe que a funcionalidade do seletor de arquivos não está disponível. Em vez disso, você precisará inserir manualmente o caminho da pasta e o caminho do arquivo de configuração.
O TensorBoard foi separado do projeto.
O TensorBoard não está incluído na imagem do Docker.
O botão "Iniciar TensorBoard" foi oculto.
O TensorBoard é iniciado a partir de um contêiner distinto, conforme mostrado aqui.
O navegador não será iniciado automaticamente. Você precisará abrir manualmente o navegador e navegar para http://localhost:7860/ e http://localhost:6006/
Este Dockerfile foi projetado para ser facilmente descartável. Você pode descartar o contêiner a qualquer momento e reiniciá-lo com a nova versão do código.
git clone --recursivo https://github.com/bmaltais/kohya_ss.gitcd kohya_ss docker compor -d
Para atualizar o sistema, faça docker compose down && docker compose up -d --pull always
Importante
Clone o repositório Git recursivamente para incluir submódulos:
git clone --recursive https://github.com/bmaltais/kohya_ss.git
git clone --recursivo https://github.com/bmaltais/kohya_ss.gitcd kohya_ss docker compor -d --build
Observação
A construção da imagem pode levar até 20 minutos para ser concluída.
Para atualizar o sistema, faça check-out para a nova versão do código e reconstrua usando docker compose down && docker compose up -d --build --pull always
Se você estiver executando no Linux, uma porta de contêiner Docker alternativa com menos limitações está disponível aqui.
Você pode querer usar os seguintes repositórios ao executar no runpod:
Modelo Kohya_ss independente: https://github.com/ashleykleynhans/kohya-docker
Modelo GUI Auto1111 + Kohya_ss: https://github.com/ashleykleynhans/stable-diffusion-docker
Para atualizar sua instalação para uma nova versão, siga as instruções abaixo.
Se uma nova versão estiver disponível, você poderá atualizar seu repositório executando os seguintes comandos no diretório raiz do projeto:
Extraia as alterações mais recentes do repositório:
puxa
Execute o script de configuração:
.setup.bat
Para atualizar sua instalação no Linux ou macOS, siga estas etapas:
Abra um terminal e navegue até o diretório raiz do projeto.
Extraia as alterações mais recentes do repositório:
puxa
Atualize e atualize tudo:
./setup.sh
Para iniciar o serviço GUI, você pode usar os scripts fornecidos ou executar o script kohya_gui.py
diretamente. Use os argumentos de linha de comando listados abaixo para configurar o serviço subjacente.
--listen: Specify the IP address to listen on for connections to Gradio.
--username: Set a username for authentication.
--password: Set a password for authentication.
--server_port: Define the port to run the server listener on.
--inbrowser: Open the Gradio UI in a web browser.
--share: Share the Gradio UI.
--language: Set custom language
No Windows, você pode usar o script gui.ps1
ou gui.bat
localizado no diretório raiz. Escolha o script que mais se adequa à sua preferência e execute-o em um terminal, fornecendo os argumentos de linha de comando desejados. Aqui está um exemplo:
gui.ps1 --listen 127.0.0.1 --server_port 7860 --inbrowser --share
ou
gui.bat --listen 127.0.0.1 --server_port 7860 --inbrowser --share
Para iniciar a GUI no Linux ou macOS, execute o script gui.sh
localizado no diretório raiz. Forneça os argumentos de linha de comando desejados da seguinte maneira:
gui.sh --listen 127.0.0.1 --server_port 7860 --inbrowser --share
O repositório agora fornece um arquivo de configuração padrão chamado config.toml
. Este arquivo é um modelo que você pode personalizar para atender às suas necessidades.
Para usar o arquivo de configuração padrão, siga estas etapas:
Copie o arquivo config example.toml
do diretório raiz do repositório para config.toml
.
Abra o arquivo config.toml
em um editor de texto.
Modifique os caminhos e configurações de acordo com seus requisitos.
Essa abordagem permite ajustar facilmente a configuração para atender às suas necessidades específicas para abrir as pastas padrão desejadas para cada tipo de entrada de pasta/arquivo suportada na GUI.
Você pode especificar o caminho para seu config.toml (ou qualquer outro nome que desejar) ao executar a GUI. Por exemplo: ./gui.bat --config c:my_config.toml
Para treinar um LoRA, atualmente você pode usar o código train_network.py
. Você pode criar uma rede LoRA usando a GUI multifuncional.
Depois de criar a rede LoRA, você pode gerar imagens usando auto1111 instalando esta extensão.
Um arquivo de prompt pode ter esta aparência, por exemplo:
# prompt 1obra-prima, melhor qualidade, (1girl), em camisas brancas, parte superior do corpo, olhando para o espectador, fundo simples --n baixa qualidade, pior qualidade, anatomia ruim, composição ruim, ruim, pouco esforço --w 768 --h 768 --d 1 --l 7,5 --s 28# prompt 2obra-prima, melhor qualidade, 1menino, de terno, parado na rua, olhando para trás --n (baixa qualidade, pior qualidade), anatomia ruim, composição ruim, pobre , baixo esforço --w 576 --h 832 --d 2 --l 5,5 --s 40
As linhas que começam com #
são comentários. Você pode especificar opções para a imagem gerada com opções como --n
após o prompt. As seguintes opções podem ser usadas:
--n
: prompt negativo até a próxima opção.
--w
: Especifica a largura da imagem gerada.
--h
: Especifica a altura da imagem gerada.
--d
: Especifica a semente da imagem gerada.
--l
: Especifica a escala CFG da imagem gerada.
--s
: especifica o número de etapas na geração.
A ponderação imediata, como ( )
e [ ]
está funcionando.
Se você encontrar algum problema, consulte as etapas de solução de problemas abaixo.
Se você encontrar um erro X relacionado ao arquivo de paginação, pode ser necessário aumentar o limite de tamanho do arquivo de paginação no Windows.
Se você encontrar um erro indicando que o módulo tkinter
não foi encontrado, tente reinstalar o Python 3.10 em seu sistema.
Ao treinar LORA em um TESLA V100, os usuários relataram baixa utilização da GPU. Além disso, houve dificuldade em especificar GPUs diferentes do padrão para treinamento.
Seleção de GPU: os usuários podem especificar IDs de GPU na configuração para selecionar as GPUs desejadas para treinamento.
Melhorando a carga da GPU: utilizar o otimizador adamW8bit
e aumentar o tamanho do lote pode ajudar a atingir 70-80% de utilização da GPU sem exceder os limites de memória da GPU.
A documentação nesta seção será movida posteriormente para um documento separado.
A perda mascarada é suportada em cada script de treinamento. Para ativar a perda mascarada, especifique a opção --masked_loss
.
O recurso não foi totalmente testado, portanto pode haver bugs. Se você encontrar algum problema, abra um problema.
O conjunto de dados ControlNet é usado para especificar a máscara. As imagens da máscara devem ser imagens RGB. O valor de pixel 255 no canal R é tratado como máscara (a perda é calculada apenas para os pixels com máscara) e 0 é tratado como não-máscara. Os valores de pixel 0-255 são convertidos em 0-1 (ou seja, o valor de pixel 128 é tratado como a metade do peso da perda). Veja detalhes para a especificação do conjunto de dados na documentação do LLLite.
Veja informações de lançamento.