Jun. 12th, 2024

jayrandom: (Default)
Сижу сегодня на митинге про оптимизацию LLaMA2, и вдруг понимаю, что старинная идея использовать тандем Марковской модели языка и Арифметического кодера в качестве оптимального компрессора текстов наконец имеет все шансы стать полезной!

Поискали с коллегой по ключевым словам - опоздали ровно на год :)
LLMZip: Lossless Text Compression using Large Language Models .

Ребята молодцы, получили 0.7-0.85 бита на букву, это текущий рекорд. Причём я подозреваю (статью по диагонали читал), что они настоящий Арифметический кодер даже не гоняли - возни с ним много.

Для достаточно точной оценки длины получающегося кода можно просто циклически прогнать весь текст через токенизатор, поток токенов - через модель, выбирая на каждом шаге из выхлопного вектора of logits тот, который соответствует кодируемому токену, привести этот logit к отрицательному двоичному логарифму ожидаемой вероятности, и это уже даст длину кода в (нецелых!) битах для этого конкретного токена (свойство Арифметического кодера - вроде бы даже теорема про это доказана). Потом просто просуммировать все эти длины кода вместе, и соотнести с оригинальной длиной текста в буквах (а не токенах).

По крайней мере, я бы так сделал. Собственно, я так и сделал в своём дипломе, просто 30 лет назад ещё никаких LLM не существовало :)

Для практического применения нужно было бы использовать Chat-версию LLM, у которой есть специальный токен "текст закончился", а также какой-нибудь настоящий Арифметический кодер.

Profile

jayrandom: (Default)
jayrandom

January 2026

S M T W T F S
    1 23
45678910
111213141516 17
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 19th, 2026 10:58 am
Powered by Dreamwidth Studios