FLUX.2 32B на AMD 7900 XTX: как обучить гигантскую модель на 24 ГБ под Windows
Энтузиаст из Reddit обучил 32-миллиардную LoRA для FLUX.2 на потребительской видеокарте AMD с 24 ГБ памяти под нативным ROCm на Windows — на грани возможного. Пришлось преодолеть 14 багов: от крашей при загрузке 64 ГБ весов до мистических замедлений в 10 раз, которые лечились запуском второго процесса с GEMM-вычислениями. В итоге — 9–10 секунд на итерацию при разрешении 448×448.
Это редкий пример успешного fine-tuning SOTA-модели на потребительском AMD-железе без CUDA. Показывает границы возможного для исследователей без доступа к datacenter GPU и вскрывает критические недоработки ROCm.
Обучение FLUX.2 на AMD: путь через 14 багов
Постановка задачи
Автор поста на Reddit поставил себе задачу, которую сообщество считало невыполнимой: обучить LoRA-адаптер для FLUX.2 dev (32B параметров) на AMD Radeon RX 7900 XTX с 24 ГБ видеопамяти под нативным ROCm на Windows. Базовая модель весит 64 ГБ в bf16, текстовый энкодер (Mistral-Small-3.1-24B) — ещё 48 ГБ. Системная RAM — всего 32 ГБ, плюс файл подкачки ~100 ГБ.
Ключевые препятствия
Загрузка и квантование:
- Стандартный safetensors.load_file крашится на файлах >64 ГБ без трейсбека → написан ручной загрузчик через seek/read/frombuffer
- Трансформер занимает 38 ГБ на GPU до квантования → квантование в uint4 на CPU, только итоговые 20 ГБ загружаются на карту
- Крэш 0xC0000005 при загрузке текст-энкодера → принудительная очистка памяти через del и gc.collect()
Обучение на GPU:
- layer_offloading (подкачка слоёв) вызывает дедлок HIP-драйвера → отключено, вся модель резидентна в VRAM
- Сэмплинг во время обучения тоже дедлочит → отключён, оценка через ComfyUI
- Фрагментация памяти → PYTORCH_HIP_ALLOC_CONF=expandable_segments:True
Тайная проблема: Самое коварное — видеокарта входит в «режим торможения», работая на 1/8 скорости при высокой частоте (~3100 МГц) но низком энергопотреблении (~230 Вт вместо 385 Вт). Внешне выглядит как 100% загрузка GPU, но контроллер памяти простаивает. Решение абсурдное: запустить на 25 секунд второй процесс с тяжёлыми матричными операциями — это «будит» драйвер, и скорость взлетает в 10 раз.
Итоговая конфигурация
- Квантование uint4 через optimum-quanto (карта не поддерживает FP8)
- Разрешение 448×448, batch size 2 → 9–10 сек/итерацию
- Спилл в системную RAM ~0.8 ГБ (неустранимая константа аллокатора)
- Чекпоинты оцениваются в ComfyUI через GGUF-квантованные версии (Q3_K_M для unet, Q5 для Mistral)
Автор опубликовал полный конфиг и патчи к форку ai-toolkit-amd-rocm-support. Главный вывод: ROCm на Windows для сложных задач — минное поле, но проходимое.
Ключевые выводы
- 32B-модели можно обучать на 24 ГБ потребительской AMD-карты через агрессивное квантование (uint4) и CPU-офлоад промежуточных стадий
- ROCm на Windows имеет критические баги: дедлоки при layer offloading, некорректные отчёты VRAM через cuda.mem_get_info, скрытый режим торможения GPU
- Диагностика по энергопотреблению важнее метрик загрузки: 230 Вт при 100% load = стагнация, 385 Вт = реальная работа
- Квантование на CPU перед загрузкой на GPU решает проблему OOM при инициализации больших моделей
- «Лечение» дедлока драйвера запуском параллельного GEMM-процесса — воспроизводимый хак, намекающий на баг планировщика AMD
Автор: Анна Мельникова · Источник: reddit.com
Это тот случай, когда техническая героика граничит с мазохизмом — но результат впечатляет. Автор буквально reverse-engineer'ил весь pipeline обучения FLUX.2 на неподдерживаемом стеке (AMD/ROCm/Windows), документируя каждый крэш. Особенно показательна история с «ложной загрузкой GPU»: карта рапортует 100% утилизацию, а на деле жрёт в 1.5 раза меньше ватт и работает в 10 раз медленнее — баг где-то в недрах драйвера, и единственное лекарство — запустить второй процесс, который "пинает" планировщик.
Практическая ценность сомнительна (проще арендовать H100 на час), но как исследование границ возможного и документация багов ROCm — это золото. Если вы упёртый энтузиаст с AMD-картой или разработчик ROCm — читать обязательно. Всем остальным — развлекательное чтиво о том, как далеко может зайти человек с инженерным зудом.
Комментарии