Как эффективно и информативно провести группировку слоев диффузионных трансформеров посредством разложения весовых матриц диффузионных трансформеров в виде тензорного поезда (Tensor Train)?
Краткое содержание
Привет всем, работаю над низкоразрядной пост-тренировочной квантизацией (PTQ) типа W4A8/W4A4 для трансформеров-диффузоров семейства DiT, уже реализовал довольно сложную конвейеризацию с использованием тензоризации и разложения TT-SVD, однако застрял на одном ключевом проектном решении: как получить группировку для квантования строго обоснованным способом исходя из структуры TT, а не использовать произвольные формулы. Очень коротко опишу текущее состояние дел: Модель: семейство DiT (например, DiT-XL/2), с корректной тенсоризацией, учитывающей особенности архитектуры DiT: **QKV**: преобразование формы `[hidden, 3*hidden]` → `(num_heads, head_dim, 3, num_heads, head_dim)` **Проекция внимания**: `[hidden, hidden]` → `(num_heads, head_dim, num_heads, head_dim)` **MLP fc1/fc2**: `[hidden, 4*hidden]/[4*hidden, hidden]` → `(num_heads, head_dim, 4, num_heads, head_dim)` **AdaLN**: `[hidden, 6*hidden]` → `(num_heads, head_dim, 2, 3, num_heads, head_dim)` На каждом таком тензоризованном весе выполняю точное разложение TT-SVD (по методике Оседеца, 2011): — Получаю ядра TT и ранги (`(r_1=1, r_2, ..., r_{D+1}=1)`). Использую это для: — Структурного анализа модели DiT, — Компандера TT-ASINH (с параметром $\lambda$ для каждой группы), — Глобального решателя смешанной точности (баланс памяти и искажений).
Полный текст статьи пока не загружен.