Недавно я провел донастройку модели FLUX 1-dev (12B) для создания характерной модели, которую заберу в сервис. Делюсь данными и опытом, полученными на DGX Spark, обучая 12 миллиардов параметров модели с низким потреблением энергии.

1. Обучающая среда и настройки



  • Аппаратное обеспечение: DGX Spark (120 ГБ объединенной памяти)

  • Модель: FLUX 1-dev (12B параметров)

  • Набор данных: 40 изображений персонажей (разрешение 1024 пикселя)

  • Настройки обучения:

    • Размер пакета: 1

    • Накопление градиента: 4

    • Эпохи: 100

    • Всего шагов: 1000

2. Ожидание vs реальность: неудача в управлении временем

В рекомендациях NVIDIA было указано: "Обучение с 13 изображениями займет около 90 минут при 1000 шагах". Исходя из этого, я предполагал, что обучение с 40 изображениями займет от 4 до 5 часов, возможно, от 2 до 3 часов при быстром обучении.

Но фактическое время составило около 8 часов.

Анализ: > Количество изображений и разрешение: Набор данных из 40 изображений с установкой высокого разрешения в 1024 пикселя увеличивал нагрузку.

  • Время на шаг: В среднем на 1 эпоху (10 шагов) уходило 28 секунд. Это значит, что обучение одного изображения заняло примерно 7 секунд.

3. OOM (Out Of Memory) и управление памятью



Доверившись 120 ГБ объединенной памяти, я совершил первую ошибку.

Существующие сервисы на сервере создали проблему.

  1. GPT-OSS (20B): Резерв 32 ГБ

  2. ComfyUI: Выделено 16 ГБ

Когда я начал обучение в таком состоянии, ядро Linux принудительно завершило процесс (Kill). Примерно 66 ГБ свободного пространства оказалось недостаточно для обучения модели в 12B (для вычисления градиента и т.д.). В итоге я смогла стабилизировать обучение только после остановки всех фоновых сервисов.

  • Фактическая использование памяти во время обучения: приблизительно 71.4 ГБ (поддерживалось на постоянной основе)

Состояние GPU во время тренировки LoRA

4. Удивительная энергетическая эффективность архитектуры ARM

Если бы это были высокопроизводительные GPU на базе x86, потребление энергии было бы значительно больше, но эффективность DGX Spark удивительна.

  • Пиковая мощность: 89–90 Вт

  • Температура: 84–86°C (после использования мини-вентилятора стабилизировалась на 81–83°C)

Обратите внимание, что, обучая модель 12B на полную мощность, потребление энергии было на уровне 90 Вт, что наглядно показывает потенциал как для edge, так и для серверов AI на устройстве.

5. Обнаружение узкого места: выход текстового кодировщика (TE) на CPU

Я обнаружил одну из решающих причин, по которой время обучения оказалось больше ожидаемого.

Модель FLUX использует два текстовых кодировщика: CLIP-L и T5-XXL. Результаты мониторинга показали, что один из них работал на CPU, а не на CUDA.

  • Явление: Один TE назначен на CUDA, другой - на CPU

  • Влияние: Узкое место, возникшее из-за разницы в скорости передачи и вычислений между CPU и GPU

Хотя не было ситуации нехватки памяти (OOM), необходимо проанализировать, почему был назначен CPU. В следующий раз я планирую принудительно назначить оба кодировщика на CUDA, чтобы попытаться улучшить скорость.

6. Заключение и планы на будущее

На этом тесте я поняла, что 100 эпох / 1000 шагов - это чрезмерные настройки.

  • Направление улучшений: Сократить количество изображений до около 30, или, несмотря на то, чтобы сохранить, регулировать объем обучения до 300–400 шагов.

  • Аппаратное обеспечение: Возможность настройки огромной модели на уровне 90 Вт - это очень привлекательно, но охлаждающее решение (мини-вентилятор и т.д.) обязательно. 86–87 градусов в течение 8 часов меня немного беспокоило.


Следующий шаг: Остается около 2 часов 30 минут до завершения обучения. Как только обучение закончится, я поделюсь результатами производительности при использовании созданного адаптера LoRA в FLUX. Ожидайте следующую публикацию.