Скидка 5% при первом запуске GPU по промокоду Активировать скидку

Настройки обучения LoRA: rank, learning rate, шаги и чекпоинты

Первый конфиг нужен как точка сравнения. Если одновременно менять датасет, rank, learning rate и длительность, улучшенный результат не покажет, что именно помогло. Зафиксируйте базу и проверочные промпты, затем меняйте по одной существенной переменной.

Готовые SDXL-конфиг и FLUX.1 dev-конфиг используют несколько общих настроек. Это не универсальный оптимум.

Основные параметры

Параметр Начальное значение Как его понимать
network_dim 16 Rank влияет на ёмкость адаптера и число параметров; больше не всегда лучше
network_alpha 16 Масштабирование; сохраняйте значение при проверке другой переменной
learning_rate 0.0001 Размер обновления; нестабильный loss и быстрое переобучение требуют диагностики, но не доказывают, что причина только здесь
max_train_steps 1 000 Число обновлений оптимизатора; сравнивайте и ранние адаптеры
batch_size в dataset config 1 Изображения в микробатче; увеличение обычно повышает расход памяти активаций
gradient_accumulation_steps 4 Накопление градиентов перед обновлением; не помогает вместить один слишком большой микробатч
save_every_n_steps 200 Промежуточные адаптеры, чтобы можно было выбрать не последний
seed 42 Один из параметров воспроизводимости, без гарантии идентичности на другом ПО и железе

Для одной GPU номинальный эффективный batch:

effective_batch ≈ microbatch × gradient_accumulation × number_of_processes
1 × 4 × 1 = 4 images per optimizer update

Неполные batch и buckets по пропорциям усложняют точный подсчёт. За 1 000 обновлений получается примерно 4 000 предъявлений изображений, а не 4 000 разных файлов. Смотрите реальный отчёт trainer по датасету и шагам, а не вычисляйте эпохи только по количеству файлов.

Шаги, эпохи и repeats — разные настройки

Эпоха — проход по эффективному обучающему набору. Repeats меняют частоту появления поднабора внутри него. Steps считают обновления оптимизатора. На маленьком датасете даже умеренное число шагов означает многократное повторение тех же изображений.

В примерах заданы num_repeats = 1 и max_train_steps, а max_train_epochs отсутствует, чтобы не смешивать ограничения длительности. Buckets и неполные batch всё равно влияют на связь эпох и шагов. Не переносите рецепт с ограничением по эпохам в этот конфиг без пересчёта.

Ограничения кэширования

Latent-кэш убирает повторное кодирование изображений. Кэш выходов текстовых энкодеров — повторную обработку фиксированных подписей. Это снижает часть затрат, пока входные данные для кэша не меняются.

В примерах текстовые энкодеры заморожены через network_train_unet_only, хотя модель изображений FLUX является transformer, а не U-Net. Shuffle/dropout подписей и аугментации изображений также отключены. Для обучения текстовых адаптеров или меняющихся captions нужна другая конфигурация и оценка памяти, а не переключение одного флага.

После изменения подписей, обработки, разрешения или семейства модели используйте новые папки кэша. В руководстве по датасету описано, как хранить исходные пары отдельно от вычисленных данных.

Точность и память

mixed_precision = "bf16" требует подходящего железа и ПО. В SDXL параметр no_half_vae оставляет VAE в float32. Gradient checkpointing экономит память активаций ценой дополнительных вычислений; SDPA выбирает attention-механизм PyTorch.

В FLUX дополнительно используются FP8 для базы и block swapping. Они меняют точность и обмен CPU/GPU, поэтому являются частью эксперимента. Это не означает поддержку любого файла с «FP8» в названии. Offloading может потребовать больше RAM хоста; две небольшие GPU не складываются автоматически в один большой пул памяти.

Адаптер и состояние обучения

Файл адаптера .safetensors можно применять вместе с правильной базой. Он не содержит полного состояния оптимизатора, scheduler и генераторов случайных чисел. В примерах включены save_state и save_state_on_train_end: отдельные папки состояния могут быть заметно больше самого адаптера.

Параметр --resume принимает папку состояния, а --network_weights начинает новый запуск с весами адаптера. Это разные операции. Перед продолжением сохраните исходные папку и конфиг, оставьте ту же базу, данные и окружение, проверьте настройки восстановления шагов/эпох в закреплённой версии trainer. В логе проверьте восстановленные счётчики и оставшийся объём работы; автоматическое продолжение не означает ту же стоимость или порядок примеров. Копируемые команды в этом руководстве запускают обучение заново.

Незавершённая запись чекпоинта не годится для resume. Храните предыдущую полную копию состояния и скачивайте её с инстанса, если нужна возможность восстановления после потери сервера.

Последовательность экспериментов

Сначала сравните сохранённые шаги базового запуска. Если ранние чекпоинты лучше обобщают, сократите обучение до увеличения rank. Если все слабые, сперва проверьте подписи, разнообразие данных, базу для inference и загрузку адаптера. Затем сравните меньший learning rate или другую длительность на той же проверочной выборке. К rank переходите после проверки остальных причин.

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

Источники: параметры trainer, настройки SDXL, настройки FLUX.

Готовы запустить?

Запустить GPU-сервер