⚙️ Метод
При низкоранговом сжатии можно пытаться приближать ошибку аппроксимации весов (SVD), учитывать как-то входные активации (ASVD, RRR), но подпространство, важное для L2-веса / слоя, может быть не оптимальным для решения целевой задачи. Были ещё метрики на основе аппроксимаций Фишера (FW-SVD, LLM-Surgeon, GFW-SWD), которые уже более явно учитывают лосс, но это всё ещё прокси.
Кроме того, непонятно, как оптимально выбрать ранг для каждого слоя.
Тут авторы предлагают не пытаться какими-то эвристиками и прокси искать оптимальное разложение, а напрямую учить ортогональную проекцию на нужное подпространство в духе SpinQuant. А конкретно, учат ортогональную матрицу U, для которой проектор — I − U Uᵀ.
Ранг распределяют на основе KL с исходной моделью. Там, где KL больше, там и ранг выделяют побольше. Ранги фиксируются и уже не меняются в процессе.
Чтобы это лучше сходилось и работало:
- 🧩 Инициализируют матрицы так, чтобы минимизировать послойную ошибку.
- 🔥 Проектор разогревают постепенно, чтобы модель не развалилась в начале.
🧪 Эксперименты
Тестируют на OPT (упаси Господь!), Llama-2 и даже Qwen3.
Показывают метрики на бенчах значимо лучше бейзлайнов (а как же?). И вроде при 50–70% сжатии модель даже не в полную труху улетает. Из бейзлайнов не хватает GFW-SWD и Basis Sharing.
Ещё сжатие ViT проверили.
Низкоранговое сжатие даже даёт некоторое ускорение инференса (в Торче?) — до 1,5× при 70% сжатии.
Q, K, V-проекции жмутся гораздо лучше, чем MLP-слои.
📝 Выводы
Математически интересная формулировка и неплохие результаты, но как будто существенное ускорение всё ещё достигается при серьёзных просадках, и вы у себя не будете заводить этот метод.
Post #869
626