Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 41 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ From raw images to test renders in a single browser window, including from your

<br>

<img src="docs/images/hero-en.png" alt="The training page on desktop and the training monitor on a phone" width="100%">
<img src="docs/images/projects-en.png" alt="Projects: every LoRA project with its current step, the running task and the queue" width="100%">

</div>

Expand All @@ -34,7 +34,7 @@ Dataset → curation → preprocess → tags → reg set → training → queue
<td width="50%" valign="top">

**📖 Every setting explains itself**<br>
All 182 training options carry a plain-language description and a recommended value, in English or Russian, right next to the field.
All 182 training options carry a plain-language description and a recommended value, in English or Russian: hover the setting name to see it.

</td>
</tr>
Expand All @@ -56,6 +56,43 @@ Block swap, fp8, latent and text-encoder caches, NaViT packing. Before you start

<br>

## A quick tour

<table>
<tr>
<td width="50%" valign="top">
<img src="docs/images/overview-en.png" alt="Project overview" width="100%"><br>
<b>Project overview</b> · The pipeline of the active version, KPIs, tasks and versions on one page.
</td>
<td width="50%" valign="top">
<img src="docs/images/dataset-en.png" alt="Dataset" width="100%"><br>
<b>Dataset</b> · Drag & drop or Booru scrape, with format and size stats.
</td>
</tr>
<tr>
<td width="50%" valign="top">
<img src="docs/images/curate-en.png" alt="Curation" width="100%"><br>
<b>Curation</b> · Dataset → train set, concept folders with repeats, validation set.
</td>
<td width="50%" valign="top">
<img src="docs/images/train-en.png" alt="Train" width="100%"><br>
<b>Train</b> · Config with a hover tip on every setting, step budget and a live preview.
</td>
</tr>
<tr>
<td width="50%" valign="top">
<img src="docs/images/task-en.png" alt="Task" width="100%"><br>
<b>Task</b> · Loss and LR curves, samples per epoch, logs and outputs.
</td>
<td width="50%" valign="top">
<img src="docs/images/queue-en.png" alt="Queue" width="100%"><br>
<b>Queue</b> · One GPU slot, a timeline to the end of the queue, pause and resume.
</td>
</tr>
</table>

<br>

## Features

### 🗂 Dataset
Expand All @@ -73,7 +110,7 @@ Block swap, fp8, latent and text-encoder caches, NaViT packing. Before you start
- **GPU queue**: pause with progress saved, resume, hold the queue, schedule a start.
- **Monitoring**: loss / LR curves, per-step samples, logs, output files with a zip export.

<img src="docs/images/monitor-en.png" alt="Training monitor: loss, learning rate, samples" width="100%">
<img src="docs/images/task-en.png" alt="Task page: progress, loss and learning rate, samples per epoch" width="100%">

### 🧪 Algorithms
| | |
Expand All @@ -91,8 +128,6 @@ Block swap, fp8, latent and text-encoder caches, NaViT packing. Before you start
- Prompts straight from dataset captions, several LoRAs with individual weights.
- **Checkpoint soup**: average several epochs or runs into one file and test it right away. Incompatible checkpoints are refused up front with the reason.

<img src="docs/images/soup-en.png" alt="Checkpoint soup" width="100%">

### ⚙️ Environment
- The first launch creates a `venv`, picks a PyTorch build for your driver (cu118–cu130) and installs dependencies.
- All caches (pip, HuggingFace, torch, npm) stay inside the project folder.
Expand All @@ -105,15 +140,10 @@ Outputs are saved as `lora_unet_*` and load into ComfyUI without conversion.

## From your phone

<img src="docs/images/phones-en.png" alt="Project overview, monitor and training page on a phone" width="100%">

Every page is laid out for a phone: columns stack, the monitor takes the full width, crop handles and thumbnail checkboxes work with a finger.

<table>
<tr>
<td width="46%" valign="top">
<img src="docs/images/remote-en.png" alt="Remote access settings" width="100%">
</td>
<td valign="top">

**Settings → Remote access**
Expand Down Expand Up @@ -146,7 +176,7 @@ Nothing is opened on your router. The link carries a persistent access key, and
<td width="33%" valign="top">

**🎨 Interface**<br>
New design on [Tailark](https://tailark.com) (zinc + indigo, Geist). Fully in English and Russian, no Chinese left in the UI.
New design, ported page by page from an approved mockup: warm neutrals, a lime accent, Geist type. Every setting explains itself on hover. Fully in English and Russian, no Chinese left in the UI.

</td>
<td width="33%" valign="top">
Expand Down
52 changes: 41 additions & 11 deletions README.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

<br>

<img src="docs/images/hero-ru.png" alt="Страница тренировки на компьютере и монитор тренировки на телефоне" width="100%">
<img src="docs/images/projects-ru.png" alt="Проекты: все LoRA-проекты с текущим шагом, идущей тренировкой и очередью" width="100%">

</div>

Expand All @@ -34,7 +34,7 @@
<td width="50%" valign="top">

**📖 Каждая настройка объясняет себя**<br>
У всех 182 параметров тренировки есть понятное описание и рекомендуемое значение на русском или английском, прямо рядом с полем.
У всех 182 параметров тренировки есть понятное описание и рекомендуемое значение на русском или английском: наведите на название настройки.

</td>
</tr>
Expand All @@ -56,6 +56,43 @@ Block swap, fp8, кеши латентов и текстового энкоде

<br>

## Экскурсия по студии

<table>
<tr>
<td width="50%" valign="top">
<img src="docs/images/overview-ru.png" alt="Обзор проекта" width="100%"><br>
<b>Обзор проекта</b> · Конвейер активной версии, ключевые цифры, задачи и версии на одной странице.
</td>
<td width="50%" valign="top">
<img src="docs/images/dataset-ru.png" alt="Датасет" width="100%"><br>
<b>Датасет</b> · Перетаскивание файлов или сбор с Booru, статистика по форматам и объёму.
</td>
</tr>
<tr>
<td width="50%" valign="top">
<img src="docs/images/curate-ru.png" alt="Отбор в train" width="100%"><br>
<b>Отбор в train</b> · Датасет → train-набор, папки концептов с повторами, validation-набор.
</td>
<td width="50%" valign="top">
<img src="docs/images/train-ru.png" alt="Тренировка" width="100%"><br>
<b>Тренировка</b> · Конфиг с подсказкой у каждой настройки, бюджет шагов и живой предпросмотр.
</td>
</tr>
<tr>
<td width="50%" valign="top">
<img src="docs/images/task-ru.png" alt="Задача" width="100%"><br>
<b>Задача</b> · Кривые loss и LR, сэмплы по эпохам, логи и выходные файлы.
</td>
<td width="50%" valign="top">
<img src="docs/images/queue-ru.png" alt="Очередь" width="100%"><br>
<b>Очередь</b> · Один слот GPU, план до конца очереди, пауза и продолжение.
</td>
</tr>
</table>

<br>

## Возможности

### 🗂 Датасет
Expand All @@ -73,7 +110,7 @@ Block swap, fp8, кеши латентов и текстового энкоде
- **GPU-очередь**: пауза с сохранением прогресса, возобновление, заморозка очереди, отложенный старт.
- **Мониторинг**: кривые loss / LR, сэмплы по шагам, логи, файлы результатов с выгрузкой в zip.

<img src="docs/images/monitor-ru.png" alt="Монитор тренировки: loss, learning rate, сэмплы" width="100%">
<img src="docs/images/task-ru.png" alt="Страница задачи: прогресс, loss и learning rate, сэмплы по эпохам" width="100%">

### 🧪 Алгоритмы
| | |
Expand All @@ -91,8 +128,6 @@ Block swap, fp8, кеши латентов и текстового энкоде
- Промпты прямо из капшенов датасета, несколько LoRA с отдельными весами.
- **Суп из чекпоинтов**: усреднить несколько эпох или прогонов в один файл и сразу проверить. Несовместимые чекпоинты отсекаются заранее с объяснением.

<img src="docs/images/soup-ru.png" alt="Суп из чекпоинтов" width="100%">

### ⚙️ Окружение
- Первый запуск сам создаёт `venv`, подбирает сборку PyTorch под драйвер (cu118–cu130) и ставит зависимости.
- Все кеши (pip, HuggingFace, torch, npm) остаются в папке проекта.
Expand All @@ -105,15 +140,10 @@ Block swap, fp8, кеши латентов и текстового энкоде

## Доступ с телефона

<img src="docs/images/phones-ru.png" alt="Обзор проекта, монитор и страница тренировки на телефоне" width="100%">

Все страницы свёрстаны под телефон: колонки выстраиваются друг под другом, монитор занимает всю ширину, ручки кропа и галочки на миниатюрах работают пальцем.

<table>
<tr>
<td width="46%" valign="top">
<img src="docs/images/remote-ru.png" alt="Настройки удалённого доступа" width="100%">
</td>
<td valign="top">

**Настройки → Удалённый доступ**
Expand Down Expand Up @@ -146,7 +176,7 @@ Block swap, fp8, кеши латентов и текстового энкоде
<td width="33%" valign="top">

**🎨 Интерфейс**<br>
Новый дизайн на [Tailark](https://tailark.com) (zinc + indigo, Geist). Полностью на русском и английском, китайского в UI не осталось.
Новый дизайн, перенесённый постранично из утверждённого макета: тёплые нейтральные цвета, лаймовый акцент, шрифт Geist. У каждой настройки подсказка по наведению на название. Полностью на русском и английском, китайского в UI не осталось.

</td>
<td width="33%" valign="top">
Expand Down
Binary file added docs/images/curate-en.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/curate-ru.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/dataset-en.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/dataset-ru.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/images/hero-en.png
Binary file not shown.
Binary file removed docs/images/hero-ru.png
Binary file not shown.
Binary file removed docs/images/monitor-en.png
Binary file not shown.
Binary file removed docs/images/monitor-ru.png
Binary file not shown.
Binary file added docs/images/overview-en.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/overview-ru.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/images/phones-en.png
Binary file not shown.
Binary file removed docs/images/phones-ru.png
Binary file not shown.
Binary file added docs/images/presets-en.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/presets-ru.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/projects-en.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/projects-ru.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/queue-en.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/queue-ru.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/images/remote-en.png
Binary file not shown.
Binary file removed docs/images/remote-ru.png
Binary file not shown.
Binary file removed docs/images/soup-en.png
Binary file not shown.
Binary file removed docs/images/soup-ru.png
Binary file not shown.
Binary file added docs/images/task-en.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/task-ru.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/train-en.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/train-ru.png
10 changes: 5 additions & 5 deletions studio/web/src/i18n/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -348,10 +348,10 @@
"lrScheduler": {
"none": "Constant",
"cosine": "Cosine",
"cosineWithRestart": "Cosine with restart",
"cosineWithRestart": "Cosine with warm restarts",
"cosineWithWarmup": "Cosine with warmup",
"cosineCycles": "Custom cosine cycles",
"constantThenCosine": "Constant, then cosine decay"
"cosineCycles": "Cosine with equal cycles",
"constantThenCosine": "Constant with cosine decay"
},
"optimizerType": {
"adamw": "AdamW",
Expand Down Expand Up @@ -471,7 +471,7 @@
"grad_checkpoint": "Gradient checkpointing (saves VRAM, roughly +1/3 compute)",
"grad_accum": "Gradient accumulation steps (effective batch = batch_size × grad_accum)",
"learning_rate": "Learning rate. Automagic recommends 1e-6 (auto-applied on switch); Lion recommends AdamW lr / 3; Prodigy / PPSF require 1.0",
"lr_scheduler": "Learning-rate scheduler (none = constant; Prodigy / PPSF lock this to none)",
"lr_scheduler": "How the learning rate changes over the run. Constant: it stays the same. Cosine: it eases down to the end. Cosine with warmup: a ramp-up first, then a smooth decay. Cosine with warm restarts: decays and restarts, each cycle longer than the last. Cosine with equal cycles: N identical cosine cycles, each can have its own peak. Constant with cosine decay: flat learning rate, then a smooth decay at the end. Prodigy, PPSF, Automagic and SOAP-SF always use Constant.",
"lr_scheduler_t0": "First cosine_with_restart cycle length (unit: step)",
"lr_scheduler_t_mult": "cosine_with_restart cycle-length multiplier relative to the previous cycle (>1 = lengthening cycles)",
"lr_scheduler_eta_min": "LR decay floor for cosine schedules; should be much smaller than the initial lr (e.g. 1e-6 for an initial lr of 1e-4)",
Expand Down Expand Up @@ -648,7 +648,7 @@
"lora_module_dropout": "0.05–0.1 — cheap protection against copying",
"learning_rate": "1e-4 for LoKr with AdamW",
"grad_accum": "2–4",
"lr_scheduler": "cosine_with_warmup",
"lr_scheduler": "Cosine with warmup",
"lr_scheduler_warmup_steps": "100",
"grad_clip_max_norm": "1.0",
"optimizer_type": "adamw is the honest baseline; soap converges faster at the same lr",
Expand Down
12 changes: 8 additions & 4 deletions studio/web/src/i18n/locales/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -969,8 +969,12 @@
"schema": {
"enums": {
"lrScheduler": {
"cosineCycles": "Настраиваемые косинусные циклы",
"constantThenCosine": "Постоянная LR → плавное снижение"
"none": "Constant",
"cosine": "Cosine",
"cosineWithRestart": "Cosine with warm restarts",
"cosineWithWarmup": "Cosine with warmup",
"cosineCycles": "Cosine with equal cycles",
"constantThenCosine": "Constant with cosine decay"
},
"timestepSampling": {
"dualPeak": "Dual Peak — два пика для стиля"
Expand Down Expand Up @@ -1078,7 +1082,7 @@
"grad_checkpoint": "Градиентный чекпоинтинг (экономит видеопамять, примерно +1/3 вычислений)",
"grad_accum": "Число шагов накопления градиента (эффективный батч = batch_size × grad_accum)",
"learning_rate": "Скорость обучения. Для automagic рекомендуется 1e-6 (подставляется автоматически); для lion — lr AdamW делённая на 3; prodigy и PPSF требуют 1.0",
"lr_scheduler": "Расписание скорости обучения (none — постоянная; prodigy и PPSF жёстко требуют none)",
"lr_scheduler": "Как меняется скорость обучения по ходу тренировки. Constant — не меняется. Cosine — плавно снижается к концу. Cosine with warmup — сначала разгон, потом плавный спад. Cosine with warm restarts — спад с перезапусками, каждый цикл длиннее предыдущего. Cosine with equal cycles — N одинаковых косинусных циклов, у каждого можно задать свой пик. Constant with cosine decay — постоянная lr, а в конце плавный спад. Prodigy, PPSF, Automagic и SOAP-SF всегда используют Constant.",
"lr_scheduler_t0": "Длина первого цикла cosine_with_restart (в шагах)",
"lr_scheduler_t_mult": "Во сколько раз каждый следующий цикл cosine_with_restart длиннее предыдущего (>1 — циклы растут)",
"lr_scheduler_eta_min": "Нижний предел затухания для косинусных расписаний; должен быть сильно меньше стартовой lr (например 1e-6 при старте 1e-4)",
Expand Down Expand Up @@ -1195,7 +1199,7 @@
"lora_module_dropout": "0.05–0.1 — дешёвая защита от копирования",
"learning_rate": "1e-4 для LoKr с AdamW",
"grad_accum": "2–4",
"lr_scheduler": "cosine_with_warmup",
"lr_scheduler": "Cosine with warmup",
"lr_scheduler_warmup_steps": "100",
"grad_clip_max_norm": "1.0",
"optimizer_type": "adamw — честная база; soap сходится быстрее при той же lr",
Expand Down
6 changes: 3 additions & 3 deletions studio/web/src/i18n/locales/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -309,10 +309,10 @@
"lrScheduler": {
"none": "常数",
"cosine": "Cosine",
"cosineWithRestart": "Cosine 重启",
"cosineWithRestart": "Cosine 热重启",
"cosineWithWarmup": "Cosine 预热",
"cosineCycles": "自定义 Cosine 周期",
"constantThenCosine": "常数后 Cosine 衰减"
"cosineCycles": "Cosine 等长周期",
"constantThenCosine": "常数 + Cosine 衰减"
},
"optimizerType": {
"adamw": "AdamW",
Expand Down
Loading