TGViewer
Data Science | Machinelearning [ru] Data Science | Machinelearning [ru] @devsp · 19.8K subscribers
Post #5699 1.41K
⁣Как сжать embedding-таблицы в 4 раза без loss-aware pruning? Кватернионные представления для high-cardinality фич

Работа с категориальными признаками, имеющими миллионы уникальных значений (user_id, video_id, search_query), создает классическую проблему: embedding-таблицы занимают больше памяти, чем сами веса модели. Стандартный подход — loss-aware pruning — часто приводит к необратимой потере информации для редких категорий. Элегантная альтернатива — кватернионные представления, которые снижают память в 4 раза без отбрасывания данных.

Базовая идея
Вместо full-rank вектора размерности d для каждой категории хранится всего 4 компоненты — кватернион (a, b, c, d). Выходной вектор восстанавливается через кватернионное умножение на learnable вес. Категория описывается вращением и гомотетией в 4D пространстве, что дает сильную геометрическую регуляризацию.

Реализация в production
Пример lookup для PyTorch-like inference:
class QuaternionEmbedding(nn.Module):
def __init__(self, num_ids, dim=64):
super().__init__()
self.emb = nn.Embedding(num_ids, 4)
self.w = nn.Parameter(torch.randn(4, dim // 4))

def forward(self, ids):
q = self.emb(ids)
q = q / (q.norm(dim=-1, keepdim=True) + 1e-8)
return torch.matmul(q, self.w)

Память падает с O(num_ids * d) до O(4 * num_ids + d). Lookup ускоряется за счет меньшего объема загружаемых параметров — до 40% снижения latency на high-cardinality фичах.

Скрытые trade-offs и когда это выгодно
Кватернионные embeddings работают при dim >= 8. Для меньших размерностей сжатие теряет expressiveness, и модель начинает проседать по метрикам (ROC-AUC падает на 2-5% на моих A/B-тестах с dim=4). Ключевое преимущество для rare categories: кватернионная нормализация предотвращает выучивание случайных шумовых векторов, стабилизируя градиенты. Но этого не происходит без явной norm-constraint — градиенты на низкочастотных ID взрываются, добавляя 10% outliers в распределении норм эмбеддингов.

Практический совет
Для production систем с ограничением GPU памяти (например, 200+ embedding-слоев в recommendation engine) используйте кватернионы как альтернативу hashing trick или adaptive embedding (e.g., Albert). Перед rollout обязателен offline тест: сравните distributional shift эмбеддингов на validation set и проверьте, что кватернионные представления не ухудшают recall@k для long-tail запросов более чем на 0.5%.

Вывод:
Кватернионные embedding-таблицы — инженерный прием, снижающий memory footprint в 4 раза без потери категорий, но требующий тщательной настройки нормализации и проверки минимальной размерности для сохранения качества.
  • ❤ 4
  • 🔥 1
More from @devsp
  1. Sep 26, 2026Тем, кто только лезет в ML Начинаешь щупать машинное обучение и хочешь нормально въехать в…
  2. Sep 26, 2026NVIDIA тоже подтянулась к тренду: LeetCode-собесы — на выход И весь замес — вокруг трёх те…
  3. Sep 26, 2026От готовых реплик до памяти о контексте: как AI-чаты дошли до нынешнего уровня В первой ча…
  4. Sep 26, 2026Post #5961
  5. Sep 25, 2026[Перевод] Jev за 25 строк на Python Про Jev галдят все, кому не лень. Jev там, Jev сям. Тв…
  6. Sep 25, 2026Что под капотом у рекомендаций Авито на главной Они решают две задачи: 1️⃣ Показывают поль…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →