Skip to content

Commit 807adea

Browse files
authored
Merge pull request #2518 from bghira/main
merge
2 parents af8f322 + b89d768 commit 807adea

147 files changed

Lines changed: 9211 additions & 813 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.

.github/workflows/docs.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ jobs:
3838

3939
- name: Install dependencies
4040
run: |
41-
pip install mkdocs mkdocs-material pymdown-extensions mkdocs-static-i18n
41+
pip install zensical
4242
4343
- name: Build documentation
44-
run: mkdocs build --strict
44+
run: zensical build
4545

4646
- name: Upload artifact
4747
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

documentation/DATALOADER.es.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -551,6 +551,24 @@ Esto es especialmente útil cuando:
551551
- Sin sobresuscripción: se lanza un error
552552
- Con `--allow_dataset_oversubscription`: repeats ajustado automáticamente a 1 (25 × 2 = 50 muestras)
553553

554+
### `max_num_samples`
555+
556+
- **Descripción:** Limita el dataset a un número máximo de muestras. Cuando se establece, se selecciona un subconjunto aleatorio determinista del tamaño especificado del dataset completo.
557+
- **Caso de uso:** Útil para grandes datasets de regularización donde deseas usar solo una parte de los datos para evitar dominar conjuntos de entrenamiento más pequeños.
558+
- **Selección determinista:** La selección aleatoria usa el `id` del dataset como semilla, asegurando que el mismo subconjunto sea seleccionado entre sesiones de entrenamiento para reproducibilidad.
559+
- **Por defecto:** `null` (sin límite, se usan todas las muestras)
560+
561+
#### Ejemplo
562+
```json
563+
{
564+
"id": "regularization-data",
565+
"max_num_samples": 1000,
566+
...
567+
}
568+
```
569+
570+
Esto seleccionará de forma determinista 1000 muestras del dataset, con la misma selección utilizada cada vez que se ejecute el entrenamiento.
571+
554572
### `start_epoch` / `start_step`
555573

556574
- Programa cuándo un dataset empieza a muestrear.
@@ -559,6 +577,38 @@ Esto es especialmente útil cuando:
559577
- Los datasets que nunca cumplen su condición de inicio (por ejemplo, `start_epoch` más allá de `--num_train_epochs`) se omitirán y se anotarán en la model card.
560578
- Las estimaciones de pasos en la barra de progreso son aproximadas cuando los datasets programados se activan a mitad de ejecución porque la longitud de la época puede aumentar cuando nuevos datos entran en línea.
561579

580+
### `end_epoch` / `end_step`
581+
582+
- Programa cuándo un dataset **deja** de muestrear (complementando `start_epoch`/`start_step`).
583+
- `end_epoch` (default: `null` = sin límite) detiene el muestreo después de esta época; `end_step` (default: `null` = sin límite) detiene el muestreo después de este paso de optimizador.
584+
- Cualquiera de las condiciones que termine detendrá el dataset; funcionan de forma independiente.
585+
- Útil para flujos de trabajo de **aprendizaje curricular** donde deseas:
586+
- Entrenar con datos de baja resolución primero, luego cambiar a datos de mayor resolución.
587+
- Eliminar gradualmente los datos de regularización después de cierto punto.
588+
- Crear entrenamiento multi-etapa dentro de un solo archivo de configuración.
589+
590+
**Ejemplo: Aprendizaje Curricular**
591+
```json
592+
[
593+
{
594+
"id": "lowres-512",
595+
"type": "local",
596+
"dataset_type": "image",
597+
"instance_data_dir": "/data/512",
598+
"end_step": 300
599+
},
600+
{
601+
"id": "highres-1024",
602+
"type": "local",
603+
"dataset_type": "image",
604+
"instance_data_dir": "/data/1024",
605+
"start_step": 300
606+
}
607+
]
608+
```
609+
610+
En este ejemplo, el dataset de 512px se usa para los pasos 1-300, luego el dataset de 1024px toma el control desde el paso 300 en adelante.
611+
562612
### `is_regularisation_data`
563613

564614
- También puede escribirse `is_regularization_data`
@@ -579,6 +629,32 @@ Esto es especialmente útil cuando:
579629
- **Advertencia:** Esto es destructivo y no se puede deshacer. Úsalo con cuidado.
580630
- **Default:** Usa el argumento `--delete_problematic_images` del trainer (default: `false`).
581631

632+
### Ver Estadísticas de Filtrado
633+
634+
Cuando SimpleTuner procesa tu dataset, rastrea cuántos archivos fueron filtrados y por qué. Estas estadísticas se almacenan en el archivo de caché del dataset (`aspect_ratio_bucket_indices_*.json`) y pueden verse en la WebUI.
635+
636+
**Estadísticas rastreadas:**
637+
- **total_processed**: Número de archivos procesados
638+
- **too_small**: Archivos filtrados por estar debajo de `minimum_image_size`
639+
- **too_long**: Archivos filtrados por exceder límites de duración (audio/video)
640+
- **metadata_missing**: Archivos omitidos por falta de metadatos
641+
- **not_found**: Archivos que no se pudieron localizar
642+
- **already_exists**: Archivos ya en caché (no reprocesados)
643+
- **other**: Archivos filtrados por otras razones
644+
645+
**Ver en la WebUI:**
646+
647+
Al navegar por datasets en el explorador de archivos de la WebUI, seleccionar un directorio con un dataset existente mostrará estadísticas de filtrado si están disponibles. Esto ayuda a diagnosticar por qué tu dataset puede tener menos muestras utilizables de lo esperado.
648+
649+
**Solución de problemas de archivos filtrados:**
650+
651+
Si muchos archivos están siendo filtrados como `too_small`:
652+
1. Verifica tu configuración de `minimum_image_size` — debe coincidir con `resolution` y `resolution_type`
653+
2. Para `resolution_type=pixel`, `minimum_image_size` es la longitud mínima del borde más corto
654+
3. Para `resolution_type=area` o `pixel_area`, `minimum_image_size` es el área total mínima
655+
656+
Consulta la sección [Solución de Problemas](#solución-de-problemas-de-datasets-filtrados) a continuación para más detalles.
657+
582658
### `slider_strength`
583659

584660
- **Valores:** Cualquier valor float (positivo, negativo o cero)

documentation/DATALOADER.hi.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -551,6 +551,24 @@ effective_batch_size = train_batch_size × num_gpus × gradient_accumulation_ste
551551
- Oversubscription के बिना: Error आएगा
552552
- `--allow_dataset_oversubscription` के साथ: repeats स्वतः 1 पर सेट होंगे (25 × 2 = 50 samples)
553553

554+
### `max_num_samples`
555+
556+
- **विवरण:** Dataset को अधिकतम samples की संख्या तक सीमित करता है। सेट करने पर, पूर्ण dataset से निर्दिष्ट आकार का एक deterministic random subset चुना जाता है।
557+
- **उपयोग का मामला:** बड़े regularization datasets के लिए उपयोगी जहाँ आप छोटे training sets को overwhelm न करने के लिए डेटा का केवल एक हिस्सा उपयोग करना चाहते हैं।
558+
- **Deterministic selection:** Random selection dataset `id` को seed के रूप में उपयोग करता है, जिससे reproducibility के लिए training sessions में समान subset चुना जाना सुनिश्चित होता है।
559+
- **डिफ़ॉल्ट:** `null` (कोई सीमा नहीं, सभी samples उपयोग होते हैं)
560+
561+
#### उदाहरण
562+
```json
563+
{
564+
"id": "regularization-data",
565+
"max_num_samples": 1000,
566+
...
567+
}
568+
```
569+
570+
यह dataset से 1000 samples को deterministically select करेगा, जिसमें हर बार training चलाने पर समान selection उपयोग होगी।
571+
554572
### `start_epoch` / `start_step`
555573

556574
- यह schedule करता है कि dataset sampling कब शुरू होगी।
@@ -559,6 +577,38 @@ effective_batch_size = train_batch_size × num_gpus × gradient_accumulation_ste
559577
- जिन datasets की start condition कभी पूरी नहीं होती (उदा., `start_epoch` `--num_train_epochs` से आगे), उन्हें skip किया जाएगा और model card में नोट किया जाएगा।
560578
- जब scheduled datasets mid‑run में active होते हैं, तो progress‑bar step estimates approximate हो जाते हैं क्योंकि epoch length बढ़ सकती है।
561579

580+
### `end_epoch` / `end_step`
581+
582+
- यह schedule करता है कि dataset sampling कब **बंद** होगी (`start_epoch`/`start_step` का पूरक)।
583+
- `end_epoch` (डिफ़ॉल्ट: `null` = कोई सीमा नहीं) इस epoch के बाद sampling बंद कर देता है; `end_step` (डिफ़ॉल्ट: `null` = कोई सीमा नहीं) इस optimizer step के बाद sampling बंद कर देता है।
584+
- कोई भी condition समाप्त होने पर dataset बंद हो जाएगा; वे स्वतंत्र रूप से काम करते हैं।
585+
- **Curriculum learning** workflows के लिए उपयोगी जहाँ आप चाहते हैं:
586+
- पहले low-resolution data पर train करें, फिर high-resolution data पर switch करें।
587+
- एक निश्चित बिंदु के बाद regularisation data को धीरे-धीरे हटाएं।
588+
- एक single config file में multi-stage training बनाएं।
589+
590+
**उदाहरण: Curriculum Learning**
591+
```json
592+
[
593+
{
594+
"id": "lowres-512",
595+
"type": "local",
596+
"dataset_type": "image",
597+
"instance_data_dir": "/data/512",
598+
"end_step": 300
599+
},
600+
{
601+
"id": "highres-1024",
602+
"type": "local",
603+
"dataset_type": "image",
604+
"instance_data_dir": "/data/1024",
605+
"start_step": 300
606+
}
607+
]
608+
```
609+
610+
इस उदाहरण में, 512px dataset steps 1-300 के लिए उपयोग होता है, फिर 1024px dataset step 300 से आगे संभाल लेता है।
611+
562612
### `is_regularisation_data`
563613

564614
- इसे `is_regularization_data` भी लिखा जा सकता है
@@ -579,6 +629,32 @@ effective_batch_size = train_batch_size × num_gpus × gradient_accumulation_ste
579629
- **Warning:** यह destructive है और undo नहीं किया जा सकता। सावधानी से उपयोग करें।
580630
- **Default:** trainer के `--delete_problematic_images` argument पर fallback करता है (डिफ़ॉल्ट: `false`)।
581631

632+
### Filtering Statistics देखना
633+
634+
जब SimpleTuner आपके dataset को process करता है, यह track करता है कि कितनी files filter हुईं और क्यों। ये statistics dataset के cache file (`aspect_ratio_bucket_indices_*.json`) में store होती हैं और WebUI में देखी जा सकती हैं।
635+
636+
**Track की जाने वाली Statistics:**
637+
- **total_processed**: Process की गई files की संख्या
638+
- **too_small**: `minimum_image_size` से नीचे होने के कारण filter की गई files
639+
- **too_long**: duration limits से अधिक होने के कारण filter की गई files (audio/video)
640+
- **metadata_missing**: missing metadata के कारण skip की गई files
641+
- **not_found**: जो files locate नहीं हो सकीं
642+
- **already_exists**: cache में पहले से मौजूद files (reprocess नहीं हुईं)
643+
- **other**: अन्य कारणों से filter की गई files
644+
645+
**WebUI में देखना:**
646+
647+
WebUI file browser में datasets browse करते समय, किसी existing dataset वाली directory select करने पर filtering statistics दिखाई देंगी (यदि उपलब्ध हों)। यह diagnose करने में मदद करता है कि आपके dataset में expected से कम usable samples क्यों हैं।
648+
649+
**Filtered files का Troubleshooting:**
650+
651+
यदि बहुत सी files `too_small` के रूप में filter हो रही हैं:
652+
1. अपनी `minimum_image_size` setting check करें — यह `resolution` और `resolution_type` से match होनी चाहिए
653+
2. `resolution_type=pixel` के लिए, `minimum_image_size` minimum shorter edge length है
654+
3. `resolution_type=area` या `pixel_area` के लिए, `minimum_image_size` minimum total area है
655+
656+
अधिक details के लिए नीचे [Troubleshooting](#filtered-datasets-का-troubleshooting) section देखें।
657+
582658
### `slider_strength`
583659

584660
- **Values:** कोई भी float मान (positive, negative, या zero)

documentation/DATALOADER.ja.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,24 @@ effective_batch_size = train_batch_size × num_gpus × gradient_accumulation_ste
552552
- オーバーサブスクリプションなし: エラー
553553
- `--allow_dataset_oversubscription` あり: repeats が自動的に 1 へ設定(25 × 2 = 50 サンプル)
554554

555+
### `max_num_samples`
556+
557+
- **説明:** データセットの最大サンプル数を制限します。設定すると、完全なデータセットから指定されたサイズの決定論的なランダムサブセットが選択されます。
558+
- **使用例:** 大規模な正則化データセットで、小さなトレーニングセットを圧倒しないようにデータの一部のみを使用したい場合に便利です。
559+
- **決定論的選択:** ランダム選択はデータセット `id` をシードとして使用し、再現性のためにトレーニングセッション間で同じサブセットが選択されることを保証します。
560+
- **デフォルト:** `null`(制限なし、すべてのサンプルを使用)
561+
562+
####
563+
```json
564+
{
565+
"id": "regularization-data",
566+
"max_num_samples": 1000,
567+
...
568+
}
569+
```
570+
571+
これにより、データセットから 1000 サンプルが決定論的に選択され、トレーニングを実行するたびに同じ選択が使用されます。
572+
555573
### `start_epoch` / `start_step`
556574

557575
- データセットのサンプリング開始タイミングをスケジュールします。
@@ -560,6 +578,38 @@ effective_batch_size = train_batch_size × num_gpus × gradient_accumulation_ste
560578
- 開始条件を満たさないデータセット(例: `start_epoch``--num_train_epochs` を超える)はスキップされ、モデルカードに記載されます。
561579
- 進行中にスケジュールされたデータセットが有効になるとエポック長が増えるため、進捗バーのステップ見積もりは概算になります。
562580

581+
### `end_epoch` / `end_step`
582+
583+
- データセットのサンプリング**終了**タイミングをスケジュールします(`start_epoch`/`start_step` を補完)。
584+
- `end_epoch`(既定: `null` = 制限なし)はこのエポック後にサンプリングを停止;`end_step`(既定: `null` = 制限なし)はこの最適化ステップ後にサンプリングを停止。
585+
- どちらかの条件が終了するとデータセットは停止します。両者は独立して動作します。
586+
- **カリキュラム学習**ワークフローに有用です:
587+
- 早期に低解像度データで訓練し、その後高解像度データに切り替える。
588+
- ある時点以降、正則化データを段階的に廃止する。
589+
- 単一の設定ファイル内で多段階訓練を作成する。
590+
591+
**例:カリキュラム学習**
592+
```json
593+
[
594+
{
595+
"id": "lowres-512",
596+
"type": "local",
597+
"dataset_type": "image",
598+
"instance_data_dir": "/data/512",
599+
"end_step": 300
600+
},
601+
{
602+
"id": "highres-1024",
603+
"type": "local",
604+
"dataset_type": "image",
605+
"instance_data_dir": "/data/1024",
606+
"start_step": 300
607+
}
608+
]
609+
```
610+
611+
この例では、512px データセットはステップ 1-300 で使用され、その後ステップ 300 から 1024px データセットに引き継がれます。
612+
563613
### `is_regularisation_data`
564614

565615
- `is_regularization_data` と綴ることもできます。
@@ -580,6 +630,32 @@ effective_batch_size = train_batch_size × num_gpus × gradient_accumulation_ste
580630
- **警告:** 破壊的で元に戻せません。注意して使用してください。
581631
- **既定値:** トレーナーの `--delete_problematic_images` 引数(既定: `false`)にフォールバックします。
582632

633+
### フィルタリング統計の確認
634+
635+
SimpleTuner がデータセットを処理する際、フィルタで除外されたファイルの数と理由を追跡します。これらの統計はデータセットのキャッシュファイル(`aspect_ratio_bucket_indices_*.json`)に保存され、WebUI で確認できます。
636+
637+
**追跡される統計:**
638+
- **total_processed**: 処理されたファイル数
639+
- **too_small**: `minimum_image_size` 未満でフィルタされたファイル
640+
- **too_long**: 時間制限を超えたファイル(オーディオ/ビデオ)
641+
- **metadata_missing**: メタデータ不足でスキップされたファイル
642+
- **not_found**: 見つからなかったファイル
643+
- **already_exists**: キャッシュに既存のファイル(再処理なし)
644+
- **other**: その他の理由でフィルタされたファイル
645+
646+
**WebUI での確認:**
647+
648+
WebUI のファイルブラウザでデータセットを閲覧する際、既存のデータセットがあるディレクトリを選択すると、フィルタリング統計が表示されます(利用可能な場合)。これは、データセットの使用可能なサンプル数が予想より少ない理由を診断するのに役立ちます。
649+
650+
**フィルタされたファイルのトラブルシューティング:**
651+
652+
多くのファイルが `too_small` としてフィルタされている場合:
653+
1. `minimum_image_size` の設定を確認 — `resolution``resolution_type` に合わせる必要があります
654+
2. `resolution_type=pixel` の場合、`minimum_image_size` は最小短辺の長さです
655+
3. `resolution_type=area` または `pixel_area` の場合、`minimum_image_size` は最小総面積です
656+
657+
詳細は下記の[トラブルシューティング](#フィルタされたデータセットのトラブルシューティング)セクションを参照してください。
658+
583659
### `slider_strength`
584660

585661
- **値:** 任意の浮動小数値(正、負、または 0)

0 commit comments

Comments
 (0)