Оптимизация диффузионных моделей с помощью MMD
К@quant_prune_distillAI-инженер
2 недОбзор метода использования Maximum Mean Discrepancy (MMD) для обучения дискретных и непрерывных диффузионных моделей, включая результаты на LLada-2.0-Mini.
Новый метод обучения позволяет ускорить генерацию текста диффузионными моделями без потери качества.
- Использование MMD помогает лучше настраивать распределение генерации.
- Метод позволяет сократить количество шагов инференса при сохранении точности.
- Обучение требует всего 2 часа на GPU H100, что делает его доступным для дообучения моделей.
⚙️ Метод
MMD есть мера различия между двумя распределениями P, Q. Задается некоторый положительно определенный кернел k, и MMD определяется как:
\[
k(P, Q) =
\mathbb{E}_{x,x'\sim P}[k(x,x')]
+ \mathbb{E}_{y,y'\sim Q}[k(y,y')]
- 2\mathbb{E}_{x\sim P,\,y\sim Q}[k(x,y)]
\]
Кернел k может быть линейным, RBF или чем-то еще.
Далее вопрос — что мы хотим туда подставлять и как?
Предлагается использовать признаки замороженной диффузионной модели. Берутся состояния из чистых сэмплов на вход, ибо использование зашумленных не дает профита. Кроме того, в кернел подаются потокенные признаки, а не усредненные, в зависимости от постановки:
- 🌐 Для безусловной генерации в непрерывном пространстве подаются все позиции.
- 💬 Для условной — только позиции ответа.
- 🎭 Для маскированной диффузии — только с позиций маскированных токенов.
И все попарно усредняется по всей последовательности.
MMD можно разбить на три члена:
- 🤝 real–generated — способствует тому, что признаки из распределения P похожи на Q.
- 🎲 generated–generated — способствует разнообразию внутри распределения P.
- 🗑️ real–real — нахрен не сдался, и его можно выкинуть.
Для дискретных диффузионных моделей дифференцировать через категорическое распределение не представляется возможным. Потому используется REINFORCE для оптимизации. Чтобы уменьшить дисперсию градиента, сэмплируется группа MMD-батчей для конкретного примера и оптимизируется policy-gradient суррогат.
Для непрерывных диффузионных моделей важно делать self-conditioning (обусловливание на прошлые выходы модели). В процессе обучения важно подавать такие примеры, backprop делается только через последний шаг генерации. Чтобы уменьшить число шагов на инференсе, дополнительно предлагается iterative refinement distillation (IRD), где студент в один шаг пытается воспроизвести несколькошагового MMD-учителя.
🧪 Эксперименты
Метод валидируется на предобученных MDLM для дискретных моделей и ELF поверх разных энкодеров в непрерывном случае.
• MDLM-MMD достигает лучшего качества, измеряемого по gPPL / Энтропия, против DiDi и IDLM бейзлайнов.
• ELF-MMD / ELF-MMD-IRD также оказывается лучше ELF\*, FMLM\* на разном числе шагов.
Кроме того, выводы обобщаются и на GSM8k для случая условной генерации.
Подход масштабируется и на более-менее серьезные модельки, в частности, DMax поверх LLada-2.0-Mini. MMD-модель на наборе математических и кодовых бенчей не уступает базовой модели и DMax, при этом выдавая больше tokens-per-forward — т. е. обещает более быструю генерацию. И учить недолго — порядка 2 H100 ГПУ-часов.
❤️ Выводы
Мораль сей басни такова — любите MMD, друзья.
Кратко (AI)
В посте описывается метод улучшения диффузионных моделей с помощью метрики MMD (Maximum Mean Discrepancy). Автор объясняет, как использовать признаки замороженных моделей для оптимизации генерации, применяя REINFORCE для дискретных моделей и self-conditioning для непрерывных. Метод показывает эффективность на моделях вроде LLada-2.0-Mini, обеспечивая высокую скорость генерации при низких затратах на обучение.
Обсуждение
0Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖