Neste exemplo, vamos treinar um modelo PixArt Sigma usando o SimpleTuner e o tipo de modelo full, já que por ser menor deve caber na VRAM.
Certifique-se de que você tem Python instalado; o SimpleTuner funciona bem com 3.10 até 3.12.
Você pode verificar executando:
python --versionSe você não tem o Python 3.12 instalado no Ubuntu, pode tentar o seguinte:
apt -y install python3.13 python3.13-venvPara Vast, RunPod e TensorDock (entre outros), o seguinte funciona em uma imagem CUDA 12.2-12.8 para habilitar a compilação de extensões CUDA:
apt -y install nvidia-cuda-toolkitInstale o SimpleTuner via pip:
pip install 'simpletuner[cuda]'
# CUDA 13 / Blackwell users (NVIDIA B-series GPUs)
pip install 'simpletuner[cuda13]' --extra-index-url https://download.pytorch.org/whl/cu130Para instalação manual ou setup de desenvolvimento, veja a documentação de instalação.
O seguinte deve ser executado para um AMD MI300X ser utilizável:
apt install amd-smi-lib
pushd /opt/rocm/share/amd_smi
python3 -m pip install --upgrade pip
python3 -m pip install .
popdPara rodar o SimpleTuner, você precisará configurar um arquivo de configuração, os diretórios de dataset e modelo, e um arquivo de configuração do dataloader.
Um script experimental, configure.py, pode permitir que você pule esta seção inteiramente por meio de uma configuração interativa passo a passo. Ele contém alguns recursos de segurança que ajudam a evitar armadilhas comuns.
Nota: Isso não configura seu dataloader. Você ainda precisará fazer isso manualmente depois.
Para executá-lo:
simpletuner configure
⚠️ Para usuários localizados em países onde o Hugging Face Hub não é facilmente acessível, você deve adicionarHF_ENDPOINT=https://hf-mirror.comao seu~/.bashrcou~/.zshrcdependendo de qual$SHELLseu sistema usa.
Se você preferir configurar manualmente:
Copie config/config.json.example para config/config.json:
cp config/config.json.example config/config.jsonLá, você precisará modificar as seguintes variáveis:
Ver exemplo de config
{
"model_type": "full",
"use_bitfit": false,
"pretrained_model_name_or_path": "pixart-alpha/pixart-sigma-xl-2-1024-ms",
"model_family": "pixart_sigma",
"output_dir": "/home/user/output/models",
"validation_resolution": "1024x1024,1280x768",
"validation_guidance": 3.5
}pretrained_model_name_or_path- Defina comoPixArt-alpha/PixArt-Sigma-XL-2-1024-MS.MODEL_TYPE- Defina comofull.USE_BITFIT- Defina comofalse.MODEL_FAMILY- Defina comopixart_sigma.OUTPUT_DIR- Defina como o diretório onde você quer armazenar seus checkpoints e imagens de validação. É recomendado usar um caminho completo aqui.VALIDATION_RESOLUTION- Como PixArt Sigma vem em formato 1024px ou 2048px, você deve definir com cuidado para1024x1024neste exemplo.- Além disso, o PixArt foi fine-tuned em buckets multi-aspect, e outras resoluções podem ser especificadas usando vírgulas:
1024x1024,1280x768
- Além disso, o PixArt foi fine-tuned em buckets multi-aspect, e outras resoluções podem ser especificadas usando vírgulas:
VALIDATION_GUIDANCE- PixArt se beneficia de um valor bem baixo. Defina entre3.6e4.4.
Há mais alguns ajustes se estiver usando um Mac M-series:
mixed_precisiondeve ser definido comono.
💡 Dica: Para datasets grandes em que o espaço em disco é uma preocupação, você pode usar
--vae_cache_disablepara fazer encoding do VAE online sem cachear os resultados em disco.
É crucial ter um dataset substancial para treinar seu modelo. Existem limitações no tamanho do dataset, e você precisa garantir que seu dataset seja grande o suficiente para treinar de forma eficaz. Note que o tamanho mínimo do dataset é TRAIN_BATCH_SIZE * GRADIENT_ACCUMULATION_STEPS. O dataset não será detectável pelo trainer se for pequeno demais.
Dependendo do dataset que você tem, será necessário configurar seu diretório de dataset e o arquivo de configuração do dataloader de forma diferente. Neste exemplo, usaremos pseudo-camera-10k como dataset.
No seu diretório /home/user/simpletuner/config, crie um multidatabackend.json:
Ver exemplo de config
[
{
"id": "pseudo-camera-10k-pixart",
"type": "local",
"crop": true,
"crop_aspect": "square",
"crop_style": "random",
"resolution": 1.0,
"minimum_image_size": 0.25,
"maximum_image_size": 1.0,
"target_downsample_size": 1.0,
"resolution_type": "area",
"cache_dir_vae": "cache/vae/pixart/pseudo-camera-10k",
"instance_data_dir": "/home/user/simpletuner/datasets/pseudo-camera-10k",
"disabled": false,
"skip_file_discovery": "",
"caption_strategy": "filename",
"metadata_backend": "discovery"
},
{
"id": "text-embeds",
"type": "local",
"dataset_type": "text_embeds",
"default": true,
"cache_dir": "cache/text/pixart/pseudo-camera-10k",
"disabled": false,
"write_batch_size": 128
}
]Veja opções e requisitos de caption_strategy em DATALOADER.md.
Depois, crie um diretório datasets:
mkdir -p datasets
pushd datasets
huggingface-cli download --repo-type=dataset bghira/pseudo-camera-10k --local-dir=pseudo-camera-10k
popdIsso vai baixar cerca de 10k amostras de fotografias para o diretório datasets/pseudo-camera-10k, que será criado automaticamente.
Você vai querer fazer login no WandB e no HF Hub antes de iniciar o treinamento, especialmente se estiver usando push_to_hub: true e --report_to=wandb.
Se você pretende enviar itens para um repositório Git LFS manualmente, também deve executar git config --global credential.helper store.
Execute os seguintes comandos:
wandb logine
huggingface-cli loginSiga as instruções para fazer login em ambos os serviços.
A partir do diretório do SimpleTuner, basta executar:
bash train.shIsso vai iniciar o cache em disco das embeddings de texto e saídas do VAE.
Para mais informações, veja os documentos do dataloader e do tutorial.
Se você quiser habilitar avaliações para pontuar o desempenho do modelo, veja este documento para informações sobre como configurar e interpretar scores CLIP.
Se você quiser usar perda MSE estável para pontuar o desempenho do modelo, veja este documento para informações sobre como configurar e interpretar a perda de avaliação.
SimpleTuner suporta streaming de prévias intermediárias de validação durante a geração usando modelos Tiny AutoEncoder. Isso permite ver imagens de validação sendo geradas passo a passo em tempo real via callbacks de webhook.
Para habilitar:
Ver exemplo de config
{
"validation_preview": true,
"validation_preview_steps": 1
}Requisitos:
- Configuração de webhook
- Validação habilitada
Defina validation_preview_steps para um valor maior (por exemplo, 3 ou 5) para reduzir o overhead do Tiny AutoEncoder. Com validation_num_inference_steps=20 e validation_preview_steps=5, você receberá imagens de prévia nos steps 5, 10, 15 e 20.
Ao usar --attention_mechanism=sageattention, a inferência pode ficar mais rápida durante a validação.
Nota: Isso não é compatível com todas as configurações de modelo, mas vale a tentativa.
Mostrar detalhes experimentais avançados
SimpleTuner inclui recursos experimentais que podem melhorar significativamente a estabilidade e o desempenho do treinamento.
- Scheduled Sampling (Rollout): reduz viés de exposição e melhora a qualidade ao permitir que o modelo gere suas próprias entradas durante o treinamento.
- Diff2Flow: permite treinar com um objetivo de Flow Matching, potencialmente melhorando linearidade e qualidade de geração.
⚠️ Esses recursos aumentam o overhead computacional do treinamento.