Сколько информации реально хранит в себе один эмбеддинг LLM?
Вы когда-нибудь задумывались, сколько информации можно запихнуть в один вектор языковой модели? Мои знакомые недавно поставили рекорд — 1568 токенов в ОДНОМ эмбеддинге! И это при том, что другие методы компрессии еле-еле выдают сжатие в 10 раз.
Метод до безумия прост: берём [mem] вектор, добавляем его в начало инпута, а затем просто оптимизируем его, чтобы LLM могла по нему восстановить исходный текст. Никаких сложных энкодеров — просто SGD по входному эмбеддингу. Вот капасити некоторых моделей:
- Llama-3.1-8B: 1568 токенов
- Llama-3.2-1B: 512 токенов
- Pythia-160M: жалкие 80 токенов
Самое интересное, что всё упирается не в длину текста, а в его сложность. Если энтропия текста ниже определённого порога — модель восстановит его идеально, если выше — то уже с ошибками. А если добавить больше [mem] векторов, то ёмкость растёт почти линейно. Например Llama-3.2-1B может упаковать весь "Хоббит" в ~200 векторов.
И при всём этом модели используют только 10-30% теоретической ёмкости своих эмбеддингов. Причём новые модели (Llama, OLMo) гораздо эффективнее старых (Pythia, OPT).
Статья, GitHub
Post #328
13.6K

- 👍 100
- 🔥 32
- 🤯 25
- ❤ 3