Skip to content

Commit 7c06348

Browse files
authored
Merge pull request #3162 from bghira/main
merge
2 parents 0a03ecf + bc3d59d commit 7c06348

395 files changed

Lines changed: 23975 additions & 5204 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ __pycache__
1212
# Large or generated artifacts
1313
cache
1414
datasets
15+
artifacts
1516
output
1617
dist
1718
build

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,4 @@ package-lock.json
9494
site/
9595
tunableop_results*.csv
9696
.cog/
97+
artifacts/

README.es.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ SimpleTuner es compatible con las siguientes familias de modelos. El soporte det
136136
- **Gradient checkpointing** - Intervalos configurables para optimización de memoria/velocidad
137137
- **Funciones de pérdida** - L2, Huber, Smooth L1 con soporte de scheduling
138138
- **Ponderación SNR** - Ponderación Min-SNR gamma para mejorar la dinámica de entrenamiento
139-
- **Group offloading** - Staging de módulos por grupo a CPU/disco en Diffusers v0.33+ con streams CUDA opcionales
140139
- **Barridos de adaptadores de validación** - Adjunta temporalmente adaptadores LoRA (individuales o presets JSON) durante la validación para medir renders solo de adaptador o comparativos sin tocar el training loop
141140
- **Hooks de validación externos** - Sustituye el pipeline de validación integrado o los pasos post-upload por tus scripts, para ejecutar checks en otra GPU o reenviar artefactos a cualquier proveedor cloud que elijas ([detalles](/documentation/OPTIONS.md#validation_method))
142141
- **Destilación AnyFlow** - Conditioning de intervalos FlowMap para modelos de flow matching con targets online del teacher ([guía](/documentation/experimental/ANYFLOW.es.md))

README.hi.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ SimpleTuner निम्नलिखित मॉडल families का सम
136136
- **Gradient checkpointing** - मेमोरी/स्पीड ऑप्टिमाइज़ेशन के लिए कॉन्फ़िगरेबल intervals
137137
- **Loss functions** - scheduling सपोर्ट के साथ L2, Huber, Smooth L1
138138
- **SNR weighting** - बेहतर प्रशिक्षण डायनेमिक्स के लिए Min‑SNR gamma weighting
139-
- **Group offloading** - Diffusers v0.33+ module‑group CPU/disk staging, वैकल्पिक CUDA streams के साथ
140139
- **Validation adapter sweeps** - validation के दौरान अस्थायी रूप से LoRA adapters (single या JSON presets) जोड़ें ताकि training loop को छुए बिना adapter‑only या comparison renders मापे जा सकें
141140
- **External validation hooks** - built‑in validation pipeline या post‑upload steps को अपने स्क्रिप्ट्स से बदलें, ताकि आप किसी अन्य GPU पर checks चला सकें या artifacts को किसी भी cloud provider पर भेज सकें ([details](/documentation/OPTIONS.md#validation_method))
142141
- **AnyFlow distillation** - online teacher targets के साथ flow-matching models के लिए FlowMap interval conditioning ([guide](/documentation/experimental/ANYFLOW.hi.md))

README.ja.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ SimpleTunerは以下のモデルファミリーをサポートしています。
136136
- **勾配チェックポイント** - メモリ/速度最適化のための設定可能な間隔
137137
- **損失関数** - スケジューリングサポート付きのL2、Huber、Smooth L1
138138
- **SNR重み付け** - トレーニングダイナミクスを改善するためのMin-SNRガンマ重み付け
139-
- **グループオフロード** - Diffusers v0.33+モジュールグループCPU/ディスクステージング(オプションのCUDAストリーム付き)
140139
- **検証アダプタースイープ** - 検証中に一時的にLoRAアダプター(単一またはJSONプリセット)を接続して、トレーニングループに触れることなくアダプターのみまたは比較レンダリングを測定
141140
- **外部検証フック** - 組み込みの検証パイプラインまたはアップロード後のステップを独自のスクリプトに交換して、別のGPUでチェックを実行したり、任意のクラウドプロバイダーにアーティファクトを転送したりできます([詳細](/documentation/OPTIONS.md#validation_method)
142141
- **AnyFlow distillation** - online teacher target を使う flow-matching モデル向けの FlowMap interval conditioning([ガイド](/documentation/experimental/ANYFLOW.ja.md)

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ SimpleTuner supports the following model families. Detailed training feature sup
136136
- **Gradient checkpointing** - Configurable intervals for memory/speed optimization
137137
- **Loss functions** - L2, Huber, Smooth L1 with scheduling support
138138
- **SNR weighting** - Min-SNR gamma weighting for improved training dynamics
139-
- **Group offloading** - Diffusers v0.33+ module-group CPU/disk staging with optional CUDA streams
140139
- **Validation adapter sweeps** - Temporarily attach LoRA adapters (single or JSON presets) during validation to measure adapter-only or comparison renders without touching the training loop
141140
- **External validation hooks** - Swap the built-in validation pipeline or post-upload steps for your own scripts, so you can run checks on another GPU or forward artifacts to any cloud provider of your choice ([details](/documentation/OPTIONS.md#validation_method))
142141
- **AnyFlow distillation** - FlowMap interval conditioning for flow-matching models with online teacher targets ([guide](/documentation/experimental/ANYFLOW.md))

README.pt-BR.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ SimpleTuner suporta as seguintes familias de modelos. O suporte detalhado a recu
136136
- **Gradient checkpointing** - Intervalos configuraveis para otimizacao de memoria/velocidade
137137
- **Funcoes de loss** - L2, Huber, Smooth L1 com suporte a scheduling
138138
- **SNR weighting** - Min-SNR gamma weighting para dinamica de treino melhor
139-
- **Group offloading** - Diffusers v0.33+ com staging de modulos em CPU/disco e streams CUDA opcionais
140139
- **Varreduras de validation adapter** - Anexe LoRAs temporariamente (single ou presets JSON) durante validacao para comparar renders sem tocar o loop de treino
141140
- **External validation hooks** - Troque o pipeline de validacao embutido ou passos pos-upload pelos seus scripts, rodando checks em outra GPU ou enviando artefatos para qualquer provedor cloud ([detalhes](/documentation/OPTIONS.pt-BR.md#validation_method))
142141
- **Destilacao AnyFlow** - Condicionamento de intervalos FlowMap para modelos flow-matching com targets teacher online ([guia](/documentation/experimental/ANYFLOW.pt-BR.md))

README.zh.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ SimpleTuner 支持以下模型系列。详细的训练功能支持请参阅[快
136136
- **梯度检查点** - 可配置间隔,优化内存/速度
137137
- **损失函数** - L2、Huber、Smooth L1,支持调度
138138
- **SNR 加权** - Min-SNR gamma 加权,改善训练动态
139-
- **分组卸载** - Diffusers v0.33+ 模块组 CPU/磁盘暂存,可选 CUDA 流
140139
- **验证适配器扫描** - 在验证期间临时附加 LoRA 适配器(单个或 JSON 预设),以测量仅适配器或对比渲染,而不影响训练循环
141140
- **外部验证钩子** - 将内置验证流程或上传后步骤替换为您自己的脚本,以便在另一个 GPU 上运行检查或将工件转发到您选择的任何云提供商([详情](/documentation/OPTIONS.md#validation_method)
142141
- **AnyFlow 蒸馏** - 为 flow-matching 模型提供带 online teacher target 的 FlowMap interval conditioning([指南](/documentation/experimental/ANYFLOW.zh.md)

cog.yaml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,21 @@ build:
44
cuda: "12.8"
55
python_version: "3.12"
66
system_packages:
7+
- ffmpeg
78
- git
9+
- libsndfile1
810
run:
911
- rm -rf SimpleTuner && git clone --depth 1 --branch main https://github.com/bghira/SimpleTuner.git SimpleTuner
12+
- python -c "from pathlib import Path; p=Path('SimpleTuner/simpletuner/helpers/multiaspect/dataset.py'); s=p.read_text(); old='if model_family != \"ace_step\" and \"target_size\" in image_metadata:'; new='if (\\n model_family != \"ace_step\"\\n and image_metadata.get(\"dataset_type\") != \"audio\"\\n and \"target_size\" in image_metadata\\n ):'; assert old in s or new in s; p.write_text(s.replace(old, new))"
13+
- python -c 'from pathlib import Path; import base64; p=Path("SimpleTuner/simpletuner/helpers/models/minimaxmusic/model.py"); s=p.read_text(); old=base64.b64decode("ICAgICAgICAgICAgY2FwdGlvbiA9IGV4YW1wbGUuZ2V0KCJwcm9tcHQiKSBvciBleGFtcGxlLmdldCgidGFncyIpCiAgICAgICAgICAgIGx5cmljcyA9IGV4YW1wbGUuZ2V0KCJseXJpY3MiKQogICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjYXB0aW9uLCBzdHIpIG9yIG5vdCBjYXB0aW9uLnN0cmlwKCk6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJNaW5pTWF4IE11c2ljIDMgbGFuZ3VhZ2UgbW9kZWwgdHJhaW5pbmcgcmVxdWlyZXMgJ3Byb21wdCcgKG9yICd0YWdzJykgbWV0YWRhdGEuIikKICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobHlyaWNzLCBzdHIpOgogICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAiTWluaU1heCBNdXNpYyAzIGxhbmd1YWdlIG1vZGVsIHRyYWluaW5nIHJlcXVpcmVzICdseXJpY3MnIG1ldGFkYXRhIChhbiBlbXB0eSBzdHJpbmcgaXMgIgogICAgICAgICAgICAgICAgICAgICJhbGxvd2VkIGZvciBpbnN0cnVtZW50YWwgb3IgcmVndWxhcmlzYXRpb24gdHJhY2tzKS4iCiAgICAgICAgICAgICAgICApCg==").decode(); new=base64.b64decode("ICAgICAgICAgICAgY2FwdGlvbiA9IE5vbmUKICAgICAgICAgICAgY2FwdGlvbl9wcmVzZW50ID0gRmFsc2UKICAgICAgICAgICAgZm9yIGtleSBpbiAoInByb21wdCIsICJ0YWdzIiwgImluc3RhbmNlX3Byb21wdF90ZXh0Iik6CiAgICAgICAgICAgICAgICBpZiBrZXkgbm90IGluIGV4YW1wbGU6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IGV4YW1wbGVba2V5XQogICAgICAgICAgICAgICAgaWYgY2FuZGlkYXRlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIGNhcHRpb24gPSBjYW5kaWRhdGUKICAgICAgICAgICAgICAgIGNhcHRpb25fcHJlc2VudCA9IFRydWUKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgIGx5cmljcyA9IGV4YW1wbGUuZ2V0KCJseXJpY3MiKQogICAgICAgICAgICBpZiBub3QgY2FwdGlvbl9wcmVzZW50IG9yIG5vdCBpc2luc3RhbmNlKGNhcHRpb24sIHN0cik6CiAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJNaW5pTWF4IE11c2ljIDMgbGFuZ3VhZ2UgbW9kZWwgdHJhaW5pbmcgcmVxdWlyZXMgJ3Byb21wdCcgKG9yICd0YWdzJykgbWV0YWRhdGEuIikKICAgICAgICAgICAgaWYgbHlyaWNzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICBseXJpY3MgPSAiIgogICAgICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGx5cmljcywgc3RyKToKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgIk1pbmlNYXggTXVzaWMgMyBsYW5ndWFnZSBtb2RlbCB0cmFpbmluZyByZXF1aXJlcyAnbHlyaWNzJyBtZXRhZGF0YSAoYW4gZW1wdHkgc3RyaW5nIGlzICIKICAgICAgICAgICAgICAgICAgICAiYWxsb3dlZCBmb3IgaW5zdHJ1bWVudGFsIG9yIHJlZ3VsYXJpc2F0aW9uIHRyYWNrcykuIgogICAgICAgICAgICAgICAgKQo=").decode(); assert old in s or new in s; p.write_text(s.replace(old, new))'
14+
- python -c "from pathlib import Path; p=Path('SimpleTuner/simpletuner/helpers/training/trainer.py'); s=p.read_text(); old=' self.ema_model = None\\n self.job_id = job_id'; new=' self.ema_model = None\\n self.lr = 0.0\\n self.job_id = job_id'; assert old in s or new in s; s=s.replace(old, new); old=' self.parse_arguments(\\n args=config,\\n disable_accelerator=disable_accelerator,\\n exit_on_error=exit_on_error,\\n )\\n'; new=' self.parse_arguments(\\n args=config,\\n disable_accelerator=disable_accelerator,\\n exit_on_error=exit_on_error,\\n )\\n parsed_config = getattr(self, \"config\", None)\\n if parsed_config is not None and \"learning_rate\" in vars(parsed_config):\\n self.lr = float(parsed_config.learning_rate)\\n'; assert old in s or new in s; p.write_text(s.replace(old, new))"
1015
- pip install --upgrade pip
11-
- printf '%s\n' 'torch==2.11.0+cu128' 'torchvision==0.26.0+cu128' 'torchaudio==2.11.0+cu128' > /tmp/constraints-cuda128.txt
12-
- pip install --index-url https://download.pytorch.org/whl/cu128 -c /tmp/constraints-cuda128.txt torch torchvision torchaudio
16+
- printf '%s\n' 'torch==2.11.0+cu128' 'torchvision==0.26.0+cu128' 'torchaudio==2.11.0+cu128' 'torchcodec==0.11.1+cu128' > /tmp/constraints-cuda128.txt
17+
- pip install --index-url https://download.pytorch.org/whl/cu128 -c /tmp/constraints-cuda128.txt torch torchvision torchaudio torchcodec
18+
- python -c "from pathlib import Path; import shutil, sysconfig; src=Path(sysconfig.get_paths()['purelib'])/'nvidia'/'cudnn'/'lib'; dst=Path('/usr/local/cuda/lib64'); [shutil.copy2(path, dst/path.name) for path in src.glob('libcudnn*.so*')]"
1319
- pip install --extra-index-url https://download.pytorch.org/whl/cu128 -c /tmp/constraints-cuda128.txt -e "./SimpleTuner[cuda,jxl]"
20+
- pip install "huggingface-hub-rvc>=0.1.4" "demucs>=4.0.1" "faiss-cpu>=1.13.0,<2" "praat-parselmouth>=0.4.5,<1"
21+
- pip install 'mup>=1.0.0'
1422
- python -c "from huggingface_hub import snapshot_download; models={'hf_falconsai':'Falconsai/nsfw_image_detection','hf_adamcodd':'AdamCodd/vit-base-nsfw-detector','hf_hoangtrung':'hoangtrung1801/nsfw-vit-model'}; [snapshot_download(repo_id=repo, allow_patterns=['*.json','*.safetensors','*.bin','*.txt'], local_dir=f'/opt/nsfw-classifier-comparison/{key}') for key, repo in models.items()]"
1523

1624
predict: "predict.py:Predictor"

documentation/DATALOADER.es.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,15 @@ Los backends de memoria requieren Linux o macOS y suficiente RAM o swap para la
258258
- **Nota:** Si tienes varios datasets de condicionamiento, puedes especificarlos como un arreglo de valores `id`. Al entrenar Flux Kontext, esto permite cambiar aleatoriamente entre condiciones o unir entradas para entrenar tareas avanzadas de composición multi-imagen.
259259
- **Flow-DPO:** Empareja aquí un dataset `reference_strict` cuando uses [`--distillation_method=flow_dpo`](experimental/FLOW_DPO.es.md).
260260

261+
### `data_transforms`
262+
263+
- **Valores:** un objeto de transform o un arreglo de objetos de transform
264+
- **Descripción:** Expande un dataset fuente en uno o más datasets de entrenamiento generados antes de que empiece la configuración normal del dataloader. Los datasets generados se tratan como datasets primarios normales salvo que el transform pida explícitamente clonar metadatos.
265+
- **Identity transfer de audio:** `{"task": "identity_transfer", "method": "rvc"}` está disponible para backends con `dataset_type: "audio"`. Prepara un split de audio generado para transferencia de identidad vocal y usa el directorio de salida para artefactos de voz cacheados y archivos generados. Consulta [Voice Cloning Data Transforms](experimental/VOICE_CLONING.es.md).
266+
- **Identity data:** Pon la musica a convertir en el `instance_data_dir` del backend de audio, los ejemplos de la voz objetivo en `model.identity_data_dir`, y la ruta del split generado en `target.instance_data_dir`.
267+
- **Debug de stems:** Define `model.identity_stem_debug_dir` para conservar previews `vocals.wav` y `no_vocals.wav` de la identidad separada que realmente usa el entrenamiento RVC. Sirve para revisar casos donde la salida suena como si los instrumentos se hubieran aprendido como parte de la voz.
268+
- **Estado:** La implementación experimental incluye comprobaciones de manifiestos de caché, reutilización/subida de artefactos a Hub mediante el layout `huggingface-hub-rvc`, sharding de inicio compatible con DDP, logs locales de RVC y un trainer/converter compacto de voice-transfer de SimpleTuner. El modo full-song remix usa Demucs para separar voces; el modo vocal-stem no necesita separación.
269+
261270
### `instance_data_dir` / `aws_data_prefix`
262271

263272
- **Local:** Ruta a los datos en el filesystem.
@@ -775,8 +784,9 @@ En este ejemplo, el dataset de 512px se usa para los pasos 1-300, luego el datas
775784
### `is_regularisation_data`
776785

777786
- También puede escribirse `is_regularization_data`
778-
- Habilita entrenamiento parent-teacher para adaptadores LyCORIS de modo que el objetivo de predicción prefiera el resultado del modelo base para un dataset dado.
779-
- LoRA estándar no está soportado actualmente.
787+
- Habilita entrenamiento parent-teacher para que el objetivo de predicción prefiera el resultado del modelo base congelado para un dataset dado.
788+
- La mayoría de familias de difusión requieren actualmente adaptadores LyCORIS.
789+
- El entrenamiento `language_model` de MiniMax Music 3 admite lotes de regularización con LoRA PEFT estándar, incluida la selección de rutas XM. Su objetivo es la distribución de siguiente token del planner base congelado.
780790

781791
### `delete_unwanted_images`
782792

0 commit comments

Comments
 (0)