Ускорение нейронок: квантизация и сжатие эмбеддингов
Нейронные сети становятся все больше, и многие компании задумываются про то, как хранить и инференсить их без GPU-кластера стоимостью 300кк/сек
Тут на помощь нам приходит постпроцессинг эмбеддингов. Стандартный float32 эмбед размерности 1024 можно превратить в int8 (квантизация) или в эмбед размерности, скажем, 128 (сжатие)
Классические способы
Настолько классические, что не знать их на собеседовании миддлу - уже тревожный звоночек
Сжатие делают через PCA / TSNE / UMAP - есть их ускоренные х500 (не преувеличиваю) версии на CUDA. А квантизацию (иногда неявную) и приближенный поиск через библиотеки вроде FAISS. Можно поподробнее про них почитать в недавней статье по сжатию эмбеддингов от wildberries 🍒
Если вы впервые слышите эти названия - очень рекомендую ознакомиться:)
Более современные способы
Можно превращать float32 эмбеддинги в int8 (-128, ..., +127) или даже binary (0, 1) с минорным падением качества
Ребята из Яндекс.Алисы и YaGPT написали годную обзорную статью про квантование в int8
Недавно рисерчеры пошли еще дальше и придумали способ квантования в binary (0, 1)
с ускорением х45 🚀
Для сжатия эмбеддингов придумали Matryoshka Representation Learning - можно «откидывать» части эмбеддинга! Красивое и быстрое решение)
В общем, даешь мир легких нейронок, которые можно запустить на 1 GPU ❤️🔥
#articles_review
Post #298
5.07K

- 🔥 23
- 👍 5
- 🤷♂ 1